Files
emuz80go/rp_loads_incdec_test.go

54 lines
1.7 KiB
Go

package z80
import "testing"
// 16-bit loads and increments/decrements.
func TestLD_rp_nn_AND_INC_DEC_rp(t *testing.T) {
cpu, mem, _ := testCPU()
loadProgram(cpu, mem, 0x0000,
0x01, 0x34, 0x12, // LD BC,1234
0x11, 0x78, 0x56, // LD DE,5678
0x21, 0xCD, 0xAB, // LD HL,ABCD
0x31, 0xFE, 0xFF, // LD SP,FFFE
0x03, // INC BC
0x13, // INC DE
0x23, // INC HL
0x33, // INC SP
0x0B, // DEC BC
0x1B, // DEC DE
0x2B, // DEC HL
0x3B, // DEC SP
)
c := mustStep(t, cpu)
assertEq(t, c, 10, "LD BC,nn cycles")
assertEq(t, cpu.GetBC(), uint16(0x1234), "LD BC")
c = mustStep(t, cpu)
assertEq(t, c, 10, "LD DE,nn cycles")
assertEq(t, cpu.GetDE(), uint16(0x5678), "LD DE")
c = mustStep(t, cpu)
assertEq(t, c, 10, "LD HL,nn cycles")
assertEq(t, cpu.GetHL(), uint16(0xABCD), "LD HL")
c = mustStep(t, cpu)
assertEq(t, c, 10, "LD SP,nn cycles")
assertEq(t, cpu.SP, uint16(0xFFFE), "LD SP")
assertEq(t, mustStep(t, cpu), 6, "INC BC cycles")
assertEq(t, cpu.GetBC(), uint16(0x1235), "INC BC")
assertEq(t, mustStep(t, cpu), 6, "INC DE cycles")
assertEq(t, cpu.GetDE(), uint16(0x5679), "INC DE")
assertEq(t, mustStep(t, cpu), 6, "INC HL cycles")
assertEq(t, cpu.GetHL(), uint16(0xABCE), "INC HL")
assertEq(t, mustStep(t, cpu), 6, "INC SP cycles")
assertEq(t, cpu.SP, uint16(0xFFFF), "INC SP")
assertEq(t, mustStep(t, cpu), 6, "DEC BC cycles")
assertEq(t, cpu.GetBC(), uint16(0x1234), "DEC BC")
assertEq(t, mustStep(t, cpu), 6, "DEC DE cycles")
assertEq(t, cpu.GetDE(), uint16(0x5678), "DEC DE")
assertEq(t, mustStep(t, cpu), 6, "DEC HL cycles")
assertEq(t, cpu.GetHL(), uint16(0xABCD), "DEC HL")
assertEq(t, mustStep(t, cpu), 6, "DEC SP cycles")
assertEq(t, cpu.SP, uint16(0xFFFE), "DEC SP")
}