private void ReturnTrueForNOP() { var cpu = new Z80(); var isSupported = cpu.IsOpCodeSupported("00"); Assert.True(isSupported); }
private void ReturnFalseForED() { var cpu = new Z80(); var isSupported = cpu.IsOpCodeSupported("ED"); Assert.False(isSupported); }
private void ReturnTrueForFDCBO206() { var cpu = new Z80(); // FDCB instructions are in the format FDCB{displacement}{opcode} var isSupported = cpu.IsOpCodeSupported("FDCB0206"); Assert.True(isSupported); }
private void ReturnTrueForFDCB06() { var cpu = new Z80(); // FDCB instructions are in the format FDCB{opcode} in FUSE tester var isSupported = cpu.IsOpCodeSupported("fdcb06"); Assert.True(isSupported); }
public Results RunTests() { ReadFuseTestsFile(); ReadFuseExpectedFile(); _cpu = new Z80(); foreach (var test in _tests) { var testName = test.Key; var opCode = testName.Split('_')[0]; _cpu.Reset(true); var isExtendedNopTest = opCode == "dd00" || opCode == "fddd00"; if (_cpu.IsOpCodeSupported(opCode) || isExtendedNopTest) { // Run test var testToRun = test.Value; var registers = testToRun.Registers; var memory = testToRun.Memory; var states = testToRun.States; InitialiseRegisters(registers); InitialiseMemory(memory); InitialiseStates(states); _cpu.ConnectToBus(_bus); var runToAddress = _expected[testName].Registers[11]; do { _cpu.Step(); } while (_cpu.PC < runToAddress); var(pass, details) = CompareActualWithExpected(_expected[testName]); if (pass) { _passing.Add(testName); } else { _failing.Add(testName, details); } } else { _notImplemented.Add(testName); } } return(new Results(_passing, _failing, _notImplemented)); }