UNPKG

mz700-js

Version:
73 lines (71 loc) 2.95 kB
describe("RES", ()=>{ const UnitTest = require("./lib/UnitTest"); const Z80Tester = require('./lib/Z80Tester'); const Z80 = require('../Z80/Z80'); const NumberUtil = require("../lib/number-util"); const tester = new Z80Tester(); const cpu = new Z80(); var tests = [ function() { ["B","C","D","E","H","L","A"].forEach(function(r) { for(var b = 0; b < 8; b++) { var mnemonic = "RES " + b + "," + r; var init = 0xff; var expect = 0xff & ~(1 << b); cpu.reg["set" + r]( init ); tester.runMnemonics(cpu, [mnemonic]); UnitTest.report( "" + mnemonic + ": to " + NumberUtil.HEX(init, 2) + "H must be " + NumberUtil.HEX(expect, 2) + "H", cpu.reg["get" + r]() == expect, NumberUtil.HEX(cpu.reg["get" + r](), 2) + "H"); } }); }, function() { for(var b = 0; b < 8; b++) { var mnemonic = "RES " + b + ", (HL)"; var init = 0xff; var expect = 0xff & ~(1 << b); var addr = 0x1200; cpu.reg.setHL(addr); cpu.memory.poke(addr, init); tester.runMnemonics(cpu, [mnemonic]); var result = cpu.memory.peek(addr); UnitTest.report( "" + mnemonic + ": to " + NumberUtil.HEX(init, 2) + "H must be " + NumberUtil.HEX(expect, 2) + "H", result == expect, NumberUtil.HEX(result, 2) + "H"); } }, function() { ["IX","IY"].forEach(function(idx) { [0, 1, 127, -128, -1].forEach( d => { for(let b = 0; b < 8; b++) { const mnemonic = `RES ${b},(${idx}${d>=0?"+":""}${d})`; const init = 0xff; const expect = 0xff & ~(1 << b); const addr = 0x100; cpu.reg[idx] = addr; cpu.memory.poke(addr + d, init); tester.runMnemonics(cpu, [mnemonic]); const result = cpu.memory.peek(addr + d); UnitTest.report( "" + mnemonic + ": to " + NumberUtil.HEX(init, 2) + "H must be " + NumberUtil.HEX(expect, 2) + "H", result == expect, NumberUtil.HEX(result, 2) + "H"); } }); }); } ]; var test_set = [ ]; UnitTest.test({ name: "RES b,r", test: function() { for(var i = 0; i < tests.length; i++) { tests[i](); } }, test_set: test_set }); });