summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/debugger
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/debugger')
-rw-r--r--src/osd/modules/debugger/win/debugwininfo.cpp20
-rw-r--r--src/osd/modules/debugger/win/debugwininfo.h1
2 files changed, 20 insertions, 1 deletions
diff --git a/src/osd/modules/debugger/win/debugwininfo.cpp b/src/osd/modules/debugger/win/debugwininfo.cpp
index 2f2b43a429a..ac60b980439 100644
--- a/src/osd/modules/debugger/win/debugwininfo.cpp
+++ b/src/osd/modules/debugger/win/debugwininfo.cpp
@@ -201,8 +201,10 @@ bool debugwin_info::handle_key(WPARAM wparam, LPARAM lparam)
return true;
case VK_F11:
- if (GetAsyncKeyState(VK_SHIFT) & 0x8000)
+ if ((GetAsyncKeyState(VK_SHIFT) & 0x8000) && ((GetAsyncKeyState(VK_CONTROL) & 0x8000) == 0))
SendMessage(m_wnd, WM_COMMAND, ID_STEP_OUT, 0);
+ else if (GetAsyncKeyState(VK_CONTROL) & 0x8000)
+ SendMessage(m_wnd, WM_COMMAND, ID_REWIND_STEP, 0);
else
SendMessage(m_wnd, WM_COMMAND, ID_STEP, 0);
return true;
@@ -325,6 +327,21 @@ bool debugwin_info::handle_command(WPARAM wparam, LPARAM lparam)
machine().debugger().cpu().get_visible_cpu()->debug()->single_step_out();
return true;
+ case ID_REWIND_STEP:
+ machine().rewind_step();
+
+ // clear all PC & memory tracks
+ for (device_t &device : device_iterator(machine().root_device()))
+ {
+ device.debug()->track_pc_data_clear();
+ device.debug()->track_mem_data_clear();
+ }
+
+ // update debugger and emulator window
+ machine().debug_view().update_all();
+ machine().debugger().refresh_display();
+ return true;
+
case ID_HARD_RESET:
machine().schedule_hard_reset();
return true;
@@ -533,6 +550,7 @@ HMENU debugwin_info::create_standard_menubar()
AppendMenu(debugmenu, MF_ENABLED, ID_STEP, TEXT("Step Into\tF11"));
AppendMenu(debugmenu, MF_ENABLED, ID_STEP_OVER, TEXT("Step Over\tF10"));
AppendMenu(debugmenu, MF_ENABLED, ID_STEP_OUT, TEXT("Step Out\tShift+F11"));
+ AppendMenu(debugmenu, MF_ENABLED, ID_REWIND_STEP, TEXT("Rewind Step\tCtrl+F11"));
AppendMenu(debugmenu, MF_DISABLED | MF_SEPARATOR, 0, TEXT(""));
AppendMenu(debugmenu, MF_ENABLED, ID_SOFT_RESET, TEXT("Soft Reset\tF3"));
AppendMenu(debugmenu, MF_ENABLED, ID_HARD_RESET, TEXT("Hard Reset\tShift+F3"));
diff --git a/src/osd/modules/debugger/win/debugwininfo.h b/src/osd/modules/debugger/win/debugwininfo.h
index c967329447b..0d871f79b6f 100644
--- a/src/osd/modules/debugger/win/debugwininfo.h
+++ b/src/osd/modules/debugger/win/debugwininfo.h
@@ -70,6 +70,7 @@ protected:
ID_STEP,
ID_STEP_OVER,
ID_STEP_OUT,
+ ID_REWIND_STEP,
ID_HARD_RESET,
ID_SOFT_RESET,
ID_EXIT,