]> git.sesse.net Git - pistorm/commitdiff
send nmi/int7 when pause pressed
authornine <nine@aphlor.org>
Sun, 21 Feb 2021 01:55:03 +0000 (01:55 +0000)
committerjust nine <nine@aphlor.org>
Mon, 22 Feb 2021 11:18:03 +0000 (11:18 +0000)
emulator.c
input/input.c

index 04fe15e3f6c62d335d6e7c312ec170954b3ce360..b46a64cc0f5112243591949a3f906a8ad3043e69 100644 (file)
@@ -415,6 +415,11 @@ int main(int argc, char *argv[]) {
         if (c == 'S' && realtime_disassembly) {
           do_disasm = 128;
         }
+
+        // pause pressed; trigger nmi (int level 7)
+        if (c == 0x01) {
+          m68k_set_irq(7);
+        }
       }
     }
   }
index d4d17f2fd63d09cc20fa7043931e44bc77b4473b..1acb7227d46a1e934232b5633c7b2746cea4d281 100644 (file)
@@ -65,6 +65,12 @@ int handle_modifier(struct input_event *ev) {
 
 #define KEYCASE(a, b, c)case a: return (lshift || rshift) ? c : b;
 
+/**
+ * translates keycodes back into a simpler enumerable value for handling emulator command events
+ *
+ * @param *struct/input_event  ev  pointer to input layer event structure
+ * @return char
+ */
 char char_from_input_event(struct input_event *ev) {
   switch(ev->code) {
     KEYCASE(KEY_A, 'a', 'A');
@@ -104,6 +110,7 @@ char char_from_input_event(struct input_event *ev) {
     KEYCASE(KEY_9, '9', '(');
     KEYCASE(KEY_0, '0', ')');
     KEYCASE(KEY_F12, 0x1B, 0x1B);
+    KEYCASE(KEY_PAUSE, 0x01, 0x01);
     default:
       return 0;
   }