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()); } }
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(); } } } }