Example #1
0
        public static void Check_FourBytesOpCodes()
        {
            StringBuilder testProgram = new StringBuilder();

            testProgram.AppendLine("LD IX,100");
            testProgram.AppendLine("LD (IX+0),1000000B");
            testProgram.AppendLine("DEFB 0DDH");
            testProgram.AppendLine("INC B");
            testProgram.AppendLine("INC IY");
            testProgram.AppendLine("BIT 0,(IX+0)");
            testProgram.AppendLine("LD IY,200");
            testProgram.AppendLine("LD (IY+0),0000001B");
            testProgram.AppendLine("DEFB 0FDH");
            testProgram.AppendLine("INC C");
            testProgram.AppendLine("INC IX");
            testProgram.AppendLine("BIT 0,(IY+0)");

            int[][] startAfterTStatesAndActivateDuringTStates = new int[][] {
                new int[] { 51, 18 }
            };

            TestSystemWithTestSignals testSystem = new TestSystemWithTestSignals(null, null, startAfterTStatesAndActivateDuringTStates, null, null);

            testSystem.LoadProgramInMemory(testProgram.ToString());

            CPUStateLogger logger = new CPUStateLogger(testSystem.CPU);

            logger.StartLogging(
                CPUStateLogger.CPUStateElements.InternalState |
                CPUStateLogger.CPUStateElements.Registers |
                CPUStateLogger.CPUStateElements.ControlPins,
                new Z80CPU.LifecycleEventType[] {
                Z80CPU.LifecycleEventType.MachineCycleEnd
            });
            testSystem.ExecuteInstructionCount(10);
            logger.StopLogging();

            if (!logger.CompareWithSavedLog("MachineCycles/Logs/Check_FourBytesOpCodes"))
            {
                throw new Exception("Log compare failed");
            }
        }