Exemple #1
0
        private void ReturnTrueForNOP()
        {
            var cpu = new Z80();

            var isSupported = cpu.IsOpCodeSupported("00");

            Assert.True(isSupported);
        }
Exemple #2
0
        private void ReturnFalseForED()
        {
            var cpu = new Z80();

            var isSupported = cpu.IsOpCodeSupported("ED");

            Assert.False(isSupported);
        }
Exemple #3
0
        private void ReturnTrueForFDCBO206()
        {
            var cpu = new Z80();

            // FDCB instructions are in the format FDCB{displacement}{opcode}
            var isSupported = cpu.IsOpCodeSupported("FDCB0206");

            Assert.True(isSupported);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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));
        }