// // Created by william on 1/6/24. // #include #include #include #include "debugger.h" #include "memory_view.h" #include "dialog.h" #define CTRL_KEY_EXIT 3 #define CTRL_KEY_G 103 MemoryView view; void create_window() { setenv("TERMINFO", "/usr/share/terminfo", 1); setenv("TERM", "xterm", 1); initscr(); raw(); noecho(); curs_set(0); keypad(stdscr, true); } void start_debugger(System *system) { create_window(); memory_view_init(&view, system->ram); update_panels(); doupdate(); int keycode; while ((keycode = getch()) != CTRL_KEY_EXIT) { if (keycode == KEY_UP) { memory_view_move_cursor(&view, 0, MEMORY_VIEW_DIRECTION_DOWN); } if (keycode == KEY_DOWN) { memory_view_move_cursor(&view, 0, MEMORY_VIEW_DIRECTION_UP); } if (keycode == KEY_LEFT) { memory_view_move_cursor(&view, MEMORY_VIEW_DIRECTION_LEFT, 0); } if (keycode == KEY_RIGHT) { memory_view_move_cursor(&view, MEMORY_VIEW_DIRECTION_RIGHT, 0); } if (keycode == CTRL_KEY_G) { Dialog dialog = dialog_create("Goto Address"); bool cancelled = false; address input = dialog_get_address(&dialog, &cancelled); dialog_remove(&dialog); if (!cancelled) { memory_view_goto(&view, input); memory_view_set_cursor_addr(&view, input); } } update_panels(); doupdate(); } endwin(); }