public static void Main(string[] args)
        {
            i8080Cpu cpu = new i8080Cpu();

            loadMemory(cpu);

            displayRegs(cpu);

            Console.WriteLine("***BEGIN***");

            while (cpu.running)
            {
                cpu.execute();

                displayRegs(cpu);
                displayFlags(cpu);
                Console.WriteLine();
            }

            Console.WriteLine("***END***");
            displayRegs(cpu);

            displayFlags(cpu);
            Console.Read();
            //dumpMemory(cpu);
        }
 public static void displayRegs(i8080Cpu cpu)
 {
     Console.WriteLine("A:0x{0}    B:0x{1}", cpu.reg_a.ToString("X2"), cpu.reg_b.ToString("X2"));
     Console.WriteLine("C:0x{0:X2}    D:0x{1}", cpu.reg_c, cpu.reg_d.ToString("X2"));
     Console.WriteLine("E:0x{0}    H:0x{1}", cpu.reg_e.ToString("X2"), cpu.reg_h.ToString("X2"));
     Console.WriteLine("L:0x{0}    FLAGS:0x{1}", cpu.reg_l.ToString("X2"), cpu.reg_flags.ToString("X2"));
 }
        public static void loadMemory(i8080Cpu cpu)
        {
            BinaryReader binReader = new BinaryReader(File.OpenRead("mem.bin"));

            for (int i = 0x0; i <= 0xffff; i++)
            {
                cpu.memory[i] = binReader.ReadByte();
            }
            binReader.Close();
        }
        public static void dumpMemory(i8080Cpu cpu)
        {
            StreamWriter dumpfile    = new StreamWriter("mem.txt");
            BinaryWriter binDumpFile = new BinaryWriter(File.Open("mem.bin", FileMode.Create));

            for (int i = 0x0; i <= 0xFFFF; i++)
            {
                dumpfile.WriteLine("0x{0} 0x{1}", i.ToString("X4"), cpu.memory[i].ToString("X2"));
                binDumpFile.Write(cpu.memory[i]);
            }

            dumpfile.Close();
            binDumpFile.Close();
        }
 public static void displayFlags(i8080Cpu cpu)
 {
     Console.WriteLine("CF: {0} PF: {1} ZF: {2} SF: {3}", cpu.getCF(), cpu.getPF(), cpu.getZF(), cpu.getSF());
 }