public static DataTable getRegisterTable(Cpu cpu)
        {
            DataTable table = new DataTable();
            table.Columns.Add("Register");
            table.Columns.Add("Hex Value");
            table.Columns.Add("Value");

            string[] registers =
                new[]{
                    "A",
                    "B",
                    "C",
                    "X",
                    "Y",
                    "Z",
                    "I",
                    "J",
                };

            for (int i = 0; i < registers.Length; i++)
            {
                string register = registers[i];
                Register reg;
                Enum.TryParse(register, false, out reg);
                ushort value = cpu.register[(int) reg];

                table.Rows.Add();
                table.Rows[i][0] = string.Format("{0}", register);
                table.Rows[i][1] = string.Format("0x{0:X4}", value);
                table.Rows[i][2] = string.Format("{0}", value);
            }

            table.Rows.Add();
            table.Rows[registers.Length][0] = string.Format("{0}", "PC");
            table.Rows[registers.Length][1] = string.Format("0x{0:X4}", cpu.PC);
            table.Rows[registers.Length][2] = string.Format("{0}", cpu.PC);
            return table;
        }
        public static void updateTables(DataGridView registerTable, DataGridView memoryTable, Cpu cpu, Main comInterface)
        {
            registerTable.DataSource = null;
            registerTable.RowTemplate.Height = 16;
            registerTable.DataSource = TableFactory.getRegisterTable(cpu);

            dataGridHelper.showChanged(registerTable);

            memoryTable.DataSource = null;
            memoryTable.RowTemplate.Height = 16;
            memoryTable.DataSource = TableFactory.getMemoryTable(comInterface.Host);

            int curRow = (int) Math.Floor((double) (cpu.PC/0x10)), curCell = (cpu.PC%0x10) + 1;

            if (memoryTable.ColumnCount == 0x10 + 1)
            {
                memoryTable.CurrentCell = memoryTable.Rows[curRow].Cells[curCell];
                memoryTable.ClearSelection();
            }
            memoryTable.Rows[curRow].Cells[curCell].Style.BackColor = Color.Yellow;
            if (lastCell != null) lastCell.Style = lastRow.DefaultCellStyle;
            lastRow = memoryTable.Rows[curRow];
            lastCell = lastRow.Cells[curCell];
        }
 public DebuggerForm(Main comInterface)
 {
     this.comInterface = comInterface;
     cpu = new Cpu(comInterface.Host);
     InitializeComponent();
 }