--- freem/src/xecline.c 2025/04/28 19:38:55 1.17 +++ freem/src/xecline.c 2025/04/29 18:46:17 1.18 @@ -1,5 +1,5 @@ /* - * $Id: xecline.c,v 1.17 2025/04/28 19:38:55 snw Exp $ + * $Id: xecline.c,v 1.18 2025/04/29 18:46:17 snw Exp $ * freem interpreter proper * * @@ -24,6 +24,9 @@ * along with FreeM. If not, see . * * $Log: xecline.c,v $ + * Revision 1.18 2025/04/29 18:46:17 snw + * Begin work on interactive debugger + * * Revision 1.17 2025/04/28 19:38:55 snw * Add trace mode * @@ -240,6 +243,9 @@ int xecline(int typ) next_line: /* entry point for next command line */ + if (debug_mode) { + debug_mode = debugger (); + } job_set_status (pid, JSTAT_INTERPRETER); @@ -5143,24 +5149,37 @@ open_socket: expr (STRING); if (merr () > OK) break; - switch (intexpr (argptr)) { - - case 2: - DSM2err = TRUE; - break; /* enable DSM V 2 error processing */ - - case -2: - DSM2err = FALSE; - break; /* enable normal error processing */ - - case 0: - breakon = FALSE; - break; /* disable CTRL/C */ - - default: - breakon = TRUE; - break; /* enable CTRL/C */ + { + char brkstr[256]; + + stcpy (brkstr, argptr); + stcnv_m2c (brkstr); + + if (strcmp (brkstr, "DEBUG") == 0) { + debug_mode = TRUE; + } + else { + switch (intexpr (argptr)) { + + case 2: + DSM2err = TRUE; + break; /* enable DSM V 2 error processing */ + + case -2: + DSM2err = FALSE; + break; /* enable normal error processing */ + + case 0: + breakon = FALSE; + break; /* disable CTRL/C */ + + default: + breakon = TRUE; + break; /* enable CTRL/C */ + } + } } + break; case VIEW: @@ -7289,13 +7308,6 @@ direct_mode: } } - else if (strcmp (fmrl_buf, "step") == 0) { - debug_mode = TRUE; - goto zgo; - } - else if ((strcmp (fmrl_buf, "cont") == 0) || (strcmp (fmrl_buf, "continue") == 0)) { - debug_mode = FALSE; - } else if (strcmp (fmrl_buf, "rbuf") == 0) { rbuf_dump (); }