]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Keep CPU in reset when pressing reset keys
authorToni Wilen <twilen@winuae.net>
Mon, 10 Mar 2025 17:30:20 +0000 (19:30 +0200)
committerToni Wilen <twilen@winuae.net>
Mon, 10 Mar 2025 17:30:20 +0000 (19:30 +0200)
inputdevice.cpp
newcpu.cpp

index 10d3a1a335014cf42a0a963238e37a580b4eb57d..447bafbf2479fd35f8e2898470f16b836900867e 100644 (file)
@@ -4681,6 +4681,7 @@ void inputdevice_do_kb_reset(void)
                        uae_reset(0, 1);
                } else {
                        keyboard_reset_seq_mode = 4;
+                       cpu_inreset();
                }
        } else {
                uae_reset(0, 1);
index a4cfb9413f2d2bf18a3f02516d1b20ab1f737e5b..515d9fa0b197c27dc910063535ff882bef44941d 100644 (file)
@@ -4636,6 +4636,15 @@ static int do_specialties (int cycles)
        if (spcflags & SPCFLAG_MODE_CHANGE)
                return 1;
        
+       while (spcflags & SPCFLAG_CPUINRESET) {
+               regs.halted = 0;
+               x_do_cycles(4 * CYCLE_UNIT);
+               spcflags = regs.spcflags;
+               if (!(spcflags & SPCFLAG_CPUINRESET) || (spcflags & SPCFLAG_BRK) || (spcflags & SPCFLAG_MODE_CHANGE)) {
+                       break;
+               }
+       }
+
        if (spcflags & SPCFLAG_CHECK) {
                if (regs.halted) {
                        if (regs.halted == CPU_HALT_ACCELERATOR_CPU_FALLBACK) {
@@ -4700,14 +4709,6 @@ static int do_specialties (int cycles)
        }
 #endif
 
-       while (spcflags & SPCFLAG_CPUINRESET) {
-               x_do_cycles(4 * CYCLE_UNIT);
-               spcflags = regs.spcflags;
-               if (!(spcflags & SPCFLAG_CPUINRESET) || (spcflags & SPCFLAG_BRK) || (spcflags & SPCFLAG_MODE_CHANGE)) {
-                       break;
-               }
-       }
-
        while ((spcflags & SPCFLAG_BLTNASTY) && dmaen (DMA_BLITTER) && cycles > 0 && ((currprefs.waiting_blits && currprefs.cpu_model >= 68020) || !currprefs.blitter_cycle_exact)) {
                int c = blitnasty();
                if (c < 0) {