X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=emulator.c;h=06aa179694a839d35aff4cf4cea64845958d8389;hb=a118265cb81c2f56105ce0b0569acd27ef09959e;hp=acf6a1f18d31db910e3e935fb6e1207744f464be;hpb=3b91ccdbc93d5b503f2f958dd00439e25f00958b;p=pistorm diff --git a/emulator.c b/emulator.c index acf6a1f..06aa179 100644 --- a/emulator.c +++ b/emulator.c @@ -61,6 +61,8 @@ uint8_t realtime_disassembly, int2_enabled = 0; uint32_t do_disasm = 0, old_level; uint32_t last_irq = 8, last_last_irq = 8; +uint8_t end_signal = 0; + char disasm_buf[4096]; #define KICKBASE 0xF80000 @@ -255,6 +257,10 @@ cpu_loop: // dampen the scroll wheel until next while loop iteration mouse_extra = 0x00; } + + if (end_signal) + goto stop_cpu_emulation; + goto cpu_loop; //stop_cpu_emulation: @@ -342,11 +348,11 @@ key_loop: //m68k_pulse_reset(); printf("CPU emulation reset.\n"); } - // @todo work out how to signal the main process that we want to quit - // if (c == 'q') { - // printf("Quitting and exiting emulator.\n"); - // goto stop_cpu_emulation; - // } + if (c == 'q') { + printf("Quitting and exiting emulator.\n"); + end_signal = 1; + goto key_end; + } if (c == 'd') { realtime_disassembly ^= 1; do_disasm = 1; @@ -374,6 +380,10 @@ key_loop: key_end: printf("[KBD] Keyboard thread ending\n"); + if (cfg->keyboard_grab) { + printf(ungrab_message); + release_device(keyboard_fd); + } return (void*)NULL; }