import CPU6502, { FLAVOR_ROCKWELL_65C02 } from '../js/cpu6502'; // From https://github.com/Klaus2m5/6502_65C02_functional_tests import Test6502 from './roms/6502test'; import Test65C02 from './roms/65C02test'; import { toHex } from '../js/util'; describe('CPU', function () { let cpu: CPU6502; let lastPC = 0; let done = false; function traceCB() { const pc = cpu.getPC(); done = lastPC === pc; lastPC = pc; } describe('6502', function () { it('completes the test ROM', function () { cpu = new CPU6502(); const test = new Test6502(); cpu.addPageHandler(test); cpu.setPC(0x400); do { cpu.stepCyclesDebug(1000, traceCB); } while (!done); expect(toHex(lastPC)).toEqual(toHex(0x3469)); }); }); describe('65C02', function () { it('completes the test ROM', function () { cpu = new CPU6502({ flavor: FLAVOR_ROCKWELL_65C02 }); const test = new Test65C02(); cpu.addPageHandler(test); cpu.setPC(0x400); do { cpu.stepCyclesDebug(1000, traceCB); } while (!done); expect(toHex(lastPC)).toEqual(toHex(0x24f1)); }); }); });