]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
uaeenforcer breakpoint support.
authorToni Wilen <twilen@winuae.net>
Sat, 21 Mar 2015 14:11:56 +0000 (16:11 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 21 Mar 2015 14:11:56 +0000 (16:11 +0200)
debug.cpp
enforcer.cpp
include/debug.h

index 7c6614b64adb162a6e68900da41b0cfa7c374974..ad451065a705e60c3b0f4c93a7a0d7f48c62df34 100644 (file)
--- a/debug.cpp
+++ b/debug.cpp
@@ -60,6 +60,7 @@ int debug_sprite_mask = 0xff;
 int debug_illegal = 0;
 uae_u64 debug_illegal_mask;
 static int debug_mmu_mode;
+static bool break_if_enforcer;
 
 static uaecptr processptr;
 static uae_char *processname;
@@ -90,6 +91,14 @@ void activate_debugger (void)
        mmu_triggered = 0;
 }
 
+bool debug_enforcer(void)
+{
+       if (!break_if_enforcer)
+               return false;
+       activate_debugger();
+       return true;
+}
+
 int firsthist = 0;
 int lasthist = 0;
 static struct regstruct history[MAX_HIST];
@@ -4405,6 +4414,9 @@ static BOOL debug_line (TCHAR *input)
                        } else if (inptr[0] == 'c' || inptr[0] == 's') {
                                if (cycle_breakpoint(&inptr))
                                        return true;
+                       } else if (inptr[0] == 'e' && inptr[1] == 'n') {
+                               break_if_enforcer = break_if_enforcer ? false : true;
+                               console_out_f(_T("Break when enforcer hit: %s\n"), break_if_enforcer ? _T("enabled") : _T("disabled"));
                        } else {
                                if (instruction_breakpoint (&inptr))
                                        return true;
index c5a0a4003dba21615ed807f3975e7bf3013ab049..f61da4ca0539a93bd7db93aec6e627f93a717824 100644 (file)
@@ -18,6 +18,7 @@
 #include "uae.h"
 #include "xwin.h"
 #include "enforcer.h"
+#include "debug.h"
 
 #ifdef AHI
 
@@ -411,8 +412,10 @@ static void enforcer_display_hit (const TCHAR *addressmode, uae_u32 pc, uaecptr
 
        console_out (enforcer_buf);
        write_log (_T("%s"), enforcer_buf);
-       sleep_millis (5);
-       doflashscreen ();
+       if (!debug_enforcer()) {
+               sleep_millis (5);
+               doflashscreen ();
+       }
 
 end:
        xfree (native_task_name);
index 99b55e335ad619fbea61f79d646c3dc5f554b2d2..6c00de7d55ae36cb5170177edd4a6f339bf2344d 100644 (file)
@@ -50,6 +50,7 @@ extern int debug_read_memory_8 (uaecptr addr);
 extern int debug_peek_memory_8 (uaecptr addr);
 extern int debug_write_memory_16 (uaecptr addr, uae_u16 v);
 extern int debug_write_memory_8 (uaecptr addr, uae_u8 v);
+extern bool debug_enforcer(void);
 
 #define BREAKPOINT_TOTAL 20
 struct breakpoint_node {