Compare commits

..

3 Commits

Author SHA1 Message Date
3b05332d28 fix relative jump disasm 2026-04-15 15:57:33 +03:00
16e7d1dfb6 fix npe 2026-04-02 11:54:47 +03:00
b8094cd1b3 lower golang version 2026-04-01 20:23:18 +03:00
4 changed files with 26 additions and 5 deletions

3
cpu.go
View File

@ -16,10 +16,9 @@ func NewCPU(core MemIoRW) *CPU {
z.core = core
z.cycleCount = 0
z.codeCoverageEnabled = false
// z.codeCoverage = make(map[uint16]bool)
// z.memAccess =
z.codeCoverageEnabled = false
// z.codeCoverage map[uint16]bool
z.codeCoverage = map[uint16]bool{}
z.extendedStackEnabled = false
//z.extendedStack [65536]uint8
z.extendedStack = map[uint16]PushValueType{}

View File

@ -39,12 +39,12 @@ func (d *Disassembler) jp(op, cond string) string {
}
func (d *Disassembler) jr(op, cond string) string {
addr := d.pc
addr := d.pc + 1
offset := d.getByte()
if offset&0x80 != 0 {
addr += 0xFF00 | uint16(offset)
} else {
addr += d.pc + uint16(offset)
addr += uint16(offset)
}
if cond != "" {
cond += sep

View File

@ -90,3 +90,25 @@ func Test_JP_nn(t *testing.T) {
t.Errorf("Error disassm JP nn, result '%s', expected '%s'", res, expected)
}
}
var testJRf = []byte{0x28, 0x09} // JR Z,+9
func Test_JR_Z_nn(t *testing.T) {
expected := " 31EF JR Z, 0x31FA" // PC+2+9
setMemory(0x31EF, testJRf)
res := disasm.Disassm(0x31EF)
if res != expected {
t.Errorf("Error disassm JR Z,nn, result '%s', expected '%s'", res, expected)
}
}
var testJRb = []byte{0x18, 0xf1} // JR Z,+9
func Test_JR_mnn(t *testing.T) {
expected := " 31F8 JR 0x31EB" // JR back
setMemory(0x31F8, testJRb)
res := disasm.Disassm(0x31F8)
if res != expected {
t.Errorf("Error disassm JR -nn, result '%s', expected '%s'", res, expected)
}
}

2
go.mod
View File

@ -1,6 +1,6 @@
module github.com/romychs/z80go
go 1.25
go 1.24
require github.com/sirupsen/logrus v1.9.4