diff options
Diffstat (limited to 'src/osd/modules/debugger')
-rw-r--r-- | src/osd/modules/debugger/win/debugwininfo.cpp | 20 | ||||
-rw-r--r-- | src/osd/modules/debugger/win/debugwininfo.h | 1 |
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, |