Previous 199869 Revisions Next

r35162 Friday 20th February, 2015 at 20:11:58 UTC by Vasantha Crabb
Add enable/disable breakpoint from disasm window menus
[src/osd/modules/debugger/win]debugwininfo.h disasmbasewininfo.c

trunk/src/osd/modules/debugger/win/debugwininfo.h
r243673r243674
8989      ID_DECREASE_MEM_WIDTH,
9090
9191      ID_TOGGLE_BREAKPOINT,
92      ID_DISABLE_BREAKPOINT,
9293      ID_RUN_TO_CURSOR,
9394      ID_SHOW_RAW,
9495      ID_SHOW_ENCRYPTED,
trunk/src/osd/modules/debugger/win/disasmbasewininfo.c
r243673r243674
3434   // create the options menu
3535   HMENU const optionsmenu = CreatePopupMenu();
3636   AppendMenu(optionsmenu, MF_ENABLED, ID_TOGGLE_BREAKPOINT, TEXT("Toggle breakpoint at cursor\tF9"));
37   AppendMenu(optionsmenu, MF_ENABLED, ID_DISABLE_BREAKPOINT, TEXT("Disable breakpoint at cursor\tShift+F9"));
3738   AppendMenu(optionsmenu, MF_ENABLED, ID_RUN_TO_CURSOR, TEXT("Run to cursor\tF4"));
3839   AppendMenu(optionsmenu, MF_DISABLED | MF_SEPARATOR, 0, TEXT(""));
3940   AppendMenu(optionsmenu, MF_ENABLED, ID_SHOW_RAW, TEXT("Raw opcodes\tCtrl+R"));
r243673r243674
7475
7576   switch (wparam)
7677   {
77   /* ajg - steals the F4 from the global key handler - but ALT+F4 didn't work anyways ;) */
78   // ajg - steals the F4 from the global key handler - but ALT+F4 didn't work anyways ;)
7879   case VK_F4:
7980      SendMessage(window(), WM_COMMAND, ID_RUN_TO_CURSOR, 0);
8081      return true;
8182
8283   case VK_F9:
83      SendMessage(window(), WM_COMMAND, ID_TOGGLE_BREAKPOINT, 0);
84      if (GetAsyncKeyState(VK_SHIFT) & 0x8000)
85         SendMessage(window(), WM_COMMAND, ID_DISABLE_BREAKPOINT, 0);
86      else
87         SendMessage(window(), WM_COMMAND, ID_TOGGLE_BREAKPOINT, 0);
8488      return true;
8589
8690   case VK_RETURN:
87      if (m_views[0]->cursor_visible())
91      if (m_views[0]->cursor_visible() && m_views[0]->source_is_visible_cpu())
8892      {
8993         SendMessage(window(), WM_COMMAND, ID_STEP, 0);
9094         return true;
r243673r243674
108112   {
109113      offs_t const address = dasmview->selected_address();
110114      device_debug *const debug = dasmview->source_device()->debug();
111      INT32 bpindex = -1;
112115
113116      // first find an existing breakpoint at this address
114      for (device_debug::breakpoint *bp = debug->breakpoint_first(); bp != NULL; bp = bp->next())
117      device_debug::breakpoint *bp = debug->breakpoint_first();
118      while ((bp != NULL) && (bp->address() != address))
119         bp = bp->next();
120
121      if (bp == NULL)
115122      {
116         if (address == bp->address())
117         {
118            bpindex = bp->index();
119            break;
120         }
123         ModifyMenu(menu, ID_TOGGLE_BREAKPOINT, MF_BYCOMMAND, ID_TOGGLE_BREAKPOINT, TEXT("Set breakpoint at cursor\tF9"));
124         ModifyMenu(menu, ID_DISABLE_BREAKPOINT, MF_BYCOMMAND, ID_DISABLE_BREAKPOINT, TEXT("Disable breakpoint at cursor\tShift+F9"));
121125      }
122
123      if (bpindex == -1)
124         ModifyMenu(menu, ID_TOGGLE_BREAKPOINT, MF_BYCOMMAND, ID_TOGGLE_BREAKPOINT, TEXT("Set breakpoint at cursor\tF9"));
125126      else
127      {
126128         ModifyMenu(menu, ID_TOGGLE_BREAKPOINT, MF_BYCOMMAND, ID_TOGGLE_BREAKPOINT, TEXT("Clear breakpoint at cursor\tF9"));
129         if (bp->enabled())
130            ModifyMenu(menu, ID_DISABLE_BREAKPOINT, MF_BYCOMMAND, ID_DISABLE_BREAKPOINT, TEXT("Disable breakpoint at cursor\tShift+F9"));
131         else
132            ModifyMenu(menu, ID_DISABLE_BREAKPOINT, MF_BYCOMMAND, ID_DISABLE_BREAKPOINT, TEXT("Enable breakpoint at cursor\tShift+F9"));
133      }
134      EnableMenuItem(menu, ID_DISABLE_BREAKPOINT, MF_BYCOMMAND | (bp != NULL ? MF_ENABLED : MF_GRAYED));
127135   }
128136   else
129137   {
130138      ModifyMenu(menu, ID_TOGGLE_BREAKPOINT, MF_BYCOMMAND, ID_TOGGLE_BREAKPOINT, TEXT("Toggle breakpoint at cursor\tF9"));
139      ModifyMenu(menu, ID_DISABLE_BREAKPOINT, MF_BYCOMMAND, ID_DISABLE_BREAKPOINT, TEXT("Disable breakpoint at cursor\tShift+F9"));
140      EnableMenuItem(menu, ID_DISABLE_BREAKPOINT, MF_BYCOMMAND | MF_GRAYED);
131141   }
132142   EnableMenuItem(menu, ID_TOGGLE_BREAKPOINT, MF_BYCOMMAND | (disasm_cursor_visible ? MF_ENABLED : MF_GRAYED));
133143   EnableMenuItem(menu, ID_RUN_TO_CURSOR, MF_BYCOMMAND | (disasm_cursor_visible ? MF_ENABLED : MF_GRAYED));
r243673r243674
194204         }
195205         return true;
196206
207      case ID_DISABLE_BREAKPOINT:
208         if (dasmview->cursor_visible())
209         {
210            offs_t const address = dasmview->selected_address();
211            device_debug *const debug = dasmview->source_device()->debug();
212
213            // first find an existing breakpoint at this address
214            device_debug::breakpoint *bp = debug->breakpoint_first();
215            while ((bp != NULL) && (bp->address() != address))
216               bp = bp->next();
217
218            // if it doesn't exist, add a new one
219            if (bp != NULL)
220            {
221               if (dasmview->source_is_visible_cpu())
222               {
223                  astring command;
224                  command.printf(bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", (UINT32)bp->index());
225                  debug_console_execute_command(machine(), command, 1);
226               }
227               else
228               {
229                  debug->breakpoint_enable(bp->index(), !bp->enabled());
230                  debug_console_printf(machine(), "Breakpoint %X %s\n", (UINT32)bp->index(), bp->enabled() ? "enabled" : "disabled");
231                  machine().debug_view().update_all();
232                  debugger_refresh_display(machine());
233               }
234            }
235         }
236         return true;
237
197238      case ID_RUN_TO_CURSOR:
198239         if (dasmview->cursor_visible())
199240         {


Previous 199869 Revisions Next


© 1997-2024 The MAME Team