示例#1
0
        public void TestDisassembler()
        {
            var Memory = new Memory();
            Memory.WriteBytes(0, new byte[] { 0xAF, 0x21, 0xFF, 0xDF, 0x0E, 0x10, 0x06, 0x00, 0x32, 0x05, 0x20, 0xFC, 0x0D, 0x20, 0xF9, 0x3E });
            var Z80Disassembler = new Z80Disassembler(Memory);
            Z80Disassembler.Address = 0;

            for (int n = 0; n < 7; n++)
            {
                Console.WriteLine("{0:X4}: {1}", Z80Disassembler.Address, Z80Disassembler.DecodeNext());
            }
        }
示例#2
0
        public void Run(bool Dynarec)
        {
            Running = true;

            if (Dynarec)
            {
                throw(new NotImplementedException("Z80 Dynarec"));
            }
            else
            {
                var Disassembler = new Z80Disassembler(this.Memory);
                Marshal.PrelinkAll(typeof(Z80InterpreterImplementation));
                var ExecuteStep = this.ExecuteStepLazy.Value;

                int ICount = 0;
                while (Running)
                {
                    ushort PC2 = PC;
                    //Console.WriteLine("{0:X4}[IF:{1}{2}]: {3}", PC2, IFF1 ? 1 : 0, IFF2 ? 1 : 0, Disassembler.DecodeAt(PC2));
                    ExecuteStep(ReadInstruction, this);
                    ICount++;
                    if (ICount >= 1000)
                    {
                        ICount = 0;
                        Interrupt();
                    }
                }
            }
        }