54 lines
1.7 KiB
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")
|
|
}
|