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