UNPKG

mz700-js

Version:
79 lines (77 loc) 3.1 kB
describe("TRANSPORT", ()=>{ const UnitTest = require("./lib/UnitTest"); const Z80Tester = require('./lib/Z80Tester'); const Z80 = require('../Z80/Z80'); const cpu = new Z80(); const tester = new Z80Tester(); function report(cpu, name, result) { if(result === true) { UnitTest.report(name, true); } else { UnitTest.report(name, false, ""); cpu.reg.debugDump(); } } var test_set = [ { name: "LDI", test: function() { cpu.reg.setBC(0x0028); cpu.reg.setDE(0xD000); cpu.reg.setHL(0xD028); cpu.memory.poke(0xD000, 0); cpu.memory.poke(0xD028, 1); tester.runMnemonics(cpu, ["LDI"]); report(cpu, "LDI inc DE", cpu.reg.getDE() == 0xD001); report(cpu, "LDI inc HL", cpu.reg.getHL() == 0xD029); report(cpu, "LDI dec BC", cpu.reg.getBC() == 0x0027); report(cpu, "LDI memory", cpu.memory.peek(0xD000) == 1); }}, { name: "LDIR", test: function() { cpu.reg.setBC(0x0028); cpu.reg.setDE(0xD000); cpu.reg.setHL(0xD028); for(var i = 0; i < 0x28; i++) { cpu.memory.poke(0xD000 + i, ~i & 0xff); cpu.memory.poke(0xD028 + i, i); } tester.runMnemonics(cpu, ["LDIR"]); report(cpu, "LDIR inc DE", cpu.reg.getDE() == 0xD028); report(cpu, "LDIR inc HL", cpu.reg.getHL() == 0xD050); report(cpu, "LDIR dec BC", cpu.reg.getBC() == 0x0000); for(var i = 0; i < 0x28; i++) { report(cpu, "LDI memory", cpu.memory.peek(0xD000 + i) == i); } }}, { name: "LDD", test: function() { cpu.reg.setBC(0x0028); cpu.reg.setDE(0xD000); cpu.reg.setHL(0xD028); cpu.memory.poke(0xD000, 0); cpu.memory.poke(0xD028, 1); tester.runMnemonics(cpu, ["LDD"]); report(cpu, "LDD dec DE", cpu.reg.getDE() == 0xCFFF); report(cpu, "LDD dec HL", cpu.reg.getHL() == 0xD027); report(cpu, "LDD dec BC", cpu.reg.getBC() == 0x0027); report(cpu, "LDD memory", cpu.memory.peek(0xD000) == 1); }}, { name: "LDDR", test: function() { cpu.reg.setBC(0x0028); cpu.reg.setDE(0xD027); cpu.reg.setHL(0xD04F); for(var i = 0; i < 0x28; i++) { cpu.memory.poke(0xD028 - 0x28 + i, ~i & 0xff); cpu.memory.poke(0xD050 - 0x28 + i, i); } tester.runMnemonics(cpu, ["LDDR"]); report(cpu, "LDDR dec DE", cpu.reg.getDE() == 0xCFFF); report(cpu, "LDDR dec HL", cpu.reg.getHL() == 0xD027); report(cpu, "LDDR dec BC", cpu.reg.getBC() == 0x0000); for(var i = 0; i < 0x28; i++) { report(cpu, "LDI memory", cpu.memory.peek(0xD000 + i) == i); } }}, ]; UnitTest.test({ name: "block transfer", test_set: test_set }); });