Beispiel #1
0
        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");
        }
Beispiel #3
0
        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());
            }
        }