Ejemplo n.º 1
0
        public void Nop()
        {
            var cpuZ80 = new CpuZ80();
            var model  = cpuZ80.Initialize(new byte[] { 0x00 });

            cpuZ80.FillRegisters(pc: 0);

            model.ClockGen.SquareWave(4);

            Console.WriteLine(model.LogicAnalyzer.ToWaveJson());

            cpuZ80.AssertRegisters(pc: 1);
        }
Ejemplo n.º 2
0
        public void ExDE_HL()
        {
            var ob = OpcodeByte.New(x: 3, z: 3, y: 5);

            var cpuZ80 = new CpuZ80();
            var model  = cpuZ80.Initialize(new byte[] { ob.Value });

            cpuZ80.FillRegisters(de: 0x1234, hl: 0x9876);

            model.ClockGen.SquareWave(4);

            cpuZ80.AssertRegisters(hl: 0x1234, de: 0x9876);
        }
Ejemplo n.º 3
0
        public void ExAFAF()
        {
            var ob = OpcodeByte.New(x: 0, z: 0, y: 1);

            var cpuZ80 = new CpuZ80();
            var model  = cpuZ80.Initialize(new byte[] { ob.Value });

            cpuZ80.FillRegisters(a: 0x55, a_a: 0xAA);

            model.ClockGen.SquareWave(4);

            cpuZ80.AssertRegisters(a: 0xAA, a_a: 0x55);
        }
Ejemplo n.º 4
0
        private SimulationModel ExecuteTest(OpcodeByte ob)
        {
            var cpu   = new CpuZ80();
            var model = cpu.Initialize(new byte[] { ob.Value });

            cpu.FillRegisters();

            model.ClockGen.SquareWave(4);

            Console.WriteLine(model.LogicAnalyzer.ToWaveJson());

            cpu.AssertRegisters();

            return(model);
        }
Ejemplo n.º 5
0
        private void AssertRegisters(CpuZ80 cpu, Register8Table reg, ushort value)
        {
            switch (reg)
            {
            case Register8Table.B:
            case Register8Table.C:
                cpu.AssertRegisters(pc: 2, bc: value);
                break;

            case Register8Table.D:
            case Register8Table.E:
                cpu.AssertRegisters(pc: 2, de: value);
                break;

            case Register8Table.H:
            case Register8Table.L:
                cpu.AssertRegisters(pc: 2, hl: value);
                break;

            case Register8Table.A:
                cpu.AssertRegisters(pc: 2, a: (byte)value);
                break;
            }
        }
Ejemplo n.º 6
0
        public void Exx()
        {
            var ob = OpcodeByte.New(x: 3, z: 1, q: 1, p: 1);

            var cpuZ80 = new CpuZ80();
            var model  = cpuZ80.Initialize(new byte[] { ob.Value });

            cpuZ80.FillRegisters(bc: 0x1234, de: 0x5678, hl: 0x9ABC,
                                 a_bc: 0x4321, a_de: 8765, a_hl: 0xCBA9);

            model.ClockGen.SquareWave(4);

            Console.WriteLine(model.LogicAnalyzer.ToWaveJson());

            cpuZ80.AssertRegisters(a_bc: 0x1234, a_de: 0x5678, a_hl: 0x9ABC,
                                   bc: 0x4321, de: 8765, hl: 0xCBA9);
        }