Fixes. Debugger improved.
This commit is contained in:
28
main.cpp
28
main.cpp
@@ -45,6 +45,7 @@ int main(int argc, char** argv) {
|
||||
vm_register_in_port(21, input_data_out);
|
||||
|
||||
debug_init(vm_get_memory());
|
||||
const bool* breakpoints = debug_get_breakpoints();
|
||||
|
||||
bool running = false;
|
||||
|
||||
@@ -56,19 +57,36 @@ int main(int argc, char** argv) {
|
||||
while (!should_quit) {
|
||||
just_pressed = SDL_SCANCODE_UNKNOWN;
|
||||
while (SDL_PollEvent(&sdlEvent)) {
|
||||
if (sdlEvent.type == SDL_WINDOWEVENT_CLOSE) { should_quit = true; break; }
|
||||
if (sdlEvent.type == SDL_QUIT) { should_quit = true; break; }
|
||||
else if (sdlEvent.type == SDL_KEYDOWN) {
|
||||
switch (sdlEvent.type) {
|
||||
case SDL_WINDOWEVENT:
|
||||
switch (sdlEvent.window.event) {
|
||||
case SDL_WINDOWEVENT_CLOSE:
|
||||
should_quit = true; break;
|
||||
}
|
||||
break;
|
||||
case SDL_QUIT:
|
||||
should_quit = true; break;
|
||||
case SDL_KEYDOWN:
|
||||
//anykey = true;
|
||||
just_pressed = sdlEvent.key.keysym.scancode;
|
||||
if (sdlEvent.key.keysym.scancode == SDL_SCANCODE_SPACE) { anykey = true; }
|
||||
if (sdlEvent.key.keysym.scancode == SDL_SCANCODE_ESCAPE) { should_quit = true; }
|
||||
if (sdlEvent.key.keysym.scancode == SDL_SCANCODE_F10) { vm_big_step(); debug_update(); }
|
||||
if (sdlEvent.key.keysym.scancode == SDL_SCANCODE_F11) { vm_step(); debug_update(); }
|
||||
if (sdlEvent.key.keysym.scancode == SDL_SCANCODE_F5) { running = !running; if (!running) debug_update(); }
|
||||
if (sdlEvent.key.keysym.scancode == SDL_SCANCODE_F5) { running = !running; if (!running) debug_update(); else debug_hide(); }
|
||||
break;
|
||||
case SDL_KEYUP:
|
||||
if (sdlEvent.key.keysym.scancode == SDL_SCANCODE_SPACE) { anykey = false; }
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
debug_mouse_event(sdlEvent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (running) vm_step();
|
||||
|
||||
if (running) {
|
||||
unsigned short pc = vm_step();
|
||||
if (breakpoints[pc]) { running = false; debug_update(); }
|
||||
}
|
||||
//if (SDL_GetTicks() - ticks >= 15) { vdp_flip(); ticks = SDL_GetTicks(); }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user