static void DisassembleThings() { string dasm = Disassemble8086.Disassemble(File.ReadAllBytes("C:\\Users\\adam\\Downloads\\XUBR580\\pcxtbios.bin"), 0); StreamWriter sw = new StreamWriter("C:\\Users\\adam\\Downloads\\XUBR580\\pcxtbios.txt"); sw.Write(dasm); sw.Close(); }
private void TestDasm(byte[] buffer, string expected_result, int expected_bytes_read) { string output = ""; uint bytes_read; bytes_read = Disassemble8086.DisassembleNext(buffer, 0x00, 0, out output); Assert.AreEqual(expected_result, output, expected_result + " failed"); Assert.AreEqual(expected_bytes_read, (int)bytes_read, expected_result + " size failed"); }
static void DisplayDebug() { Console.WriteLine(string.Format("AX: {0:X4}\tBX: {1:X4}\tCX: {2:X4}\tDX: {3:X4}", cpu.EU.Registers.AX, cpu.EU.Registers.BX, cpu.EU.Registers.CX, cpu.EU.Registers.DX)); Console.WriteLine(string.Format("SP: {0:X4}\tBP: {1:X4}\tSI: {2:X4}\tDI: {3:X4}", cpu.EU.Registers.SP, cpu.EU.Registers.BP, cpu.EU.Registers.SI, cpu.EU.Registers.DI)); Console.WriteLine(string.Format("CS: {0:X4}\tDS: {1:X4}\tSS: {2:X4}\tES: {3:X4}", cpu.Bus.CS, cpu.Bus.DS, cpu.Bus.SS, cpu.Bus.ES)); Console.WriteLine("\t\tTF DF IF OF SF ZF AF PF CF"); Console.WriteLine(string.Format("\t\t{0} {1} {2} {3} {4} {5} {6} {7} {8}", FlagToInt(cpu.EU.CondReg.TrapFlag), FlagToInt(cpu.EU.CondReg.DirectionFlag), FlagToInt(cpu.EU.CondReg.InterruptEnable), FlagToInt(cpu.EU.CondReg.OverflowFlag), FlagToInt(cpu.EU.CondReg.SignFlag), FlagToInt(cpu.EU.CondReg.ZeroFlag), FlagToInt(cpu.EU.CondReg.AuxCarryFlag), FlagToInt(cpu.EU.CondReg.ParityFlag), FlagToInt(cpu.EU.CondReg.CarryFlag))); Console.WriteLine(); string dasm; int bytes = (int)Disassemble8086.DisassembleNext(cpu.Bus.GetNext6Bytes(), 0, 0, out dasm); Console.WriteLine("IP {0:X4}:{1:X4}: {2}", cpu.Bus.CS, cpu.Bus.IP, dasm); byte[] data = cpu.Bus.GetNextIPBytes(bytes); string opstring = ""; for (int ii = 0; ii < bytes; ii++) { opstring += string.Format("{0:X2}", data[ii]); opstring += " "; } Console.WriteLine("Op Code: " + opstring); if (cpu.EU.Halted) { Console.WriteLine("Halted! Executed " + count.ToString() + " instructions"); Console.WriteLine("Execution Time: " + sw.ElapsedMilliseconds.ToString()); } }