UNPKG

mz700-js

Version:
98 lines (96 loc) 3.9 kB
describe("SEARCH", ()=>{ 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: "CPI", test: function() { cpu.reg.setBC(0x0028); cpu.reg.setA( 0x27 ); cpu.reg.setHL(0xD000); for(var i = 0; i < 0x28; i++) { cpu.memory.poke(0xD000 + i, i); } for(var i = 0; i < 0x28; i++) { tester.runMnemonics(cpu, ["CPI"]); report(cpu, "CPI inc HL", cpu.reg.getHL() == 0xD001 + i); report(cpu, "CPI dec BC", cpu.reg.getBC() == 0x0027 - i); report(cpu, "CPI memory", cpu.memory.peek(0xD000 + i) == i); report(cpu, "CPI Z flag", cpu.reg.flagZ() == (i == 0x27)); } }}, { name: "CPIR", test: function() { cpu.reg.setBC(0x0028); cpu.reg.setA( 0x27 ); cpu.reg.setHL(0xD000); for(var i = 0; i < 0x28; i++) { cpu.memory.poke(0xD000 + i, i); } tester.runMnemonics(cpu, ["CPIR"]); report(cpu, "CPIR inc HL", cpu.reg.getHL() == 0xD028); report(cpu, "CPIR dec BC", cpu.reg.getBC() == 0x0000); for(var i = 0; i < 0x28; i++) { report(cpu, "CPIR memory", cpu.memory.peek(0xD000 + i) == i); } report(cpu, "CPIR Z flag", cpu.reg.flagZ() == true); }}, { name: "CPIR 2", test: function() { cpu.reg.setBC(0x0028); cpu.reg.setA( 0x10 ); cpu.reg.setHL(0xD000); for(var i = 0; i < 0x28; i++) { cpu.memory.poke(0xD000 + i, i); } tester.runMnemonics(cpu, ["CPIR"]); report(cpu, "CPIR inc HL", cpu.reg.getHL() == 0xD011); report(cpu, "CPIR dec BC", cpu.reg.getBC() == 0x0017); for(var i = 0; i < 0x28; i++) { report(cpu, "CPIR memory", cpu.memory.peek(0xD000 + i) == i); } report(cpu, "CPIR Z flag", cpu.reg.flagZ() == true); }}, { name: "CPD", test: function() { cpu.reg.setBC(0x0028); cpu.reg.setA( 0x27 ); cpu.reg.setHL(0xD027); for(var i = 0; i < 0x28; i++) { cpu.memory.poke(0xD027 - i, i); } for(var i = 0; i < 0x28; i++) { tester.runMnemonics(cpu, ["CPD"]); report(cpu, "CPD #" + i + " dec HL", cpu.reg.getHL() == 0xD026 - i); report(cpu, "CPD #" + i + " dec BC", cpu.reg.getBC() == 0x0027 - i); report(cpu, "CPD #" + i + " memory", cpu.memory.peek(0xD027 - i) == i); report(cpu, "CPD #" + i + " Z flag", cpu.reg.flagZ() == (i == 0x27)); } }}, { name: "CPDR", test: function() { cpu.reg.setBC(0x0028); cpu.reg.setA( 0x27 ); cpu.reg.setHL(0xD027); for(var i = 0; i < 0x28; i++) { cpu.memory.poke(0xD027 - i, i); } tester.runMnemonics(cpu, ["CPDR"]); report(cpu, "CPDR dec HL", cpu.reg.getHL() == 0xCFFF); report(cpu, "CPDR dec BC", cpu.reg.getBC() == 0x0000); for(var i = 0; i < 0x28; i++) { report(cpu, "CPDR memory", cpu.memory.peek(0xD027 - i) == i); } report(cpu, "CPDR Z flag", cpu.reg.flagZ() == true); }}, ]; UnitTest.test({ name: "search", test_set: test_set }); });