SCP: Fix to have sim_printf expand newlines to CRLF when writing to stdout with the simulator running. Allow sim_debug to be called with a NULL device pointer and return producing no output.
This commit is contained in:
parent
899b7a654e
commit
b8dc8f01b5
2 changed files with 14 additions and 5 deletions
15
scp.c
15
scp.c
|
@ -1696,7 +1696,6 @@ else if (*argv[0]) { /* sim name arg? */
|
||||||
}
|
}
|
||||||
|
|
||||||
stat = SCPE_BARE_STATUS(stat); /* remove possible flag */
|
stat = SCPE_BARE_STATUS(stat); /* remove possible flag */
|
||||||
|
|
||||||
while (stat != SCPE_EXIT) { /* in case exit */
|
while (stat != SCPE_EXIT) { /* in case exit */
|
||||||
if ((cptr = sim_brk_getact (cbuf, sizeof(cbuf)))) /* pending action? */
|
if ((cptr = sim_brk_getact (cbuf, sizeof(cbuf)))) /* pending action? */
|
||||||
printf ("%s%s\n", sim_prompt, cptr); /* echo */
|
printf ("%s%s\n", sim_prompt, cptr); /* echo */
|
||||||
|
@ -7906,7 +7905,7 @@ for (i = fields-1; i >= 0; i--) { /* print xlation, transition
|
||||||
void sim_debug_bits(uint32 dbits, DEVICE* dptr, BITFIELD* bitdefs,
|
void sim_debug_bits(uint32 dbits, DEVICE* dptr, BITFIELD* bitdefs,
|
||||||
uint32 before, uint32 after, int terminate)
|
uint32 before, uint32 after, int terminate)
|
||||||
{
|
{
|
||||||
if (sim_deb && (dptr->dctrl & dbits)) {
|
if (sim_deb && dptr && (dptr->dctrl & dbits)) {
|
||||||
if (!debug_unterm)
|
if (!debug_unterm)
|
||||||
fprintf(sim_deb, "%s", sim_debug_prefix(dbits, dptr)); /* print prefix if required */
|
fprintf(sim_deb, "%s", sim_debug_prefix(dbits, dptr)); /* print prefix if required */
|
||||||
fprint_fields (sim_deb, (t_value)before, (t_value)after, bitdefs); /* print xlation, transition */
|
fprint_fields (sim_deb, (t_value)before, (t_value)after, bitdefs); /* print xlation, transition */
|
||||||
|
@ -7965,6 +7964,16 @@ while (1) { /* format passed string, arg
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sim_is_running) {
|
||||||
|
char *c, *remnant = buf;
|
||||||
|
|
||||||
|
while ((c = strchr(remnant, '\n'))) {
|
||||||
|
printf("%.*s\r\n", (int)(c-remnant), remnant);
|
||||||
|
remnant = c + 1;
|
||||||
|
}
|
||||||
|
printf("%s", remnant);
|
||||||
|
}
|
||||||
|
else
|
||||||
printf("%s", buf);
|
printf("%s", buf);
|
||||||
if (sim_log && (sim_log != stdout))
|
if (sim_log && (sim_log != stdout))
|
||||||
fprintf (sim_log, "%s", buf);
|
fprintf (sim_log, "%s", buf);
|
||||||
|
@ -7986,7 +7995,7 @@ if (buf != stackbuf)
|
||||||
|
|
||||||
void _sim_debug (uint32 dbits, DEVICE* dptr, const char* fmt, ...)
|
void _sim_debug (uint32 dbits, DEVICE* dptr, const char* fmt, ...)
|
||||||
{
|
{
|
||||||
if (sim_deb && (dptr->dctrl & dbits)) {
|
if (sim_deb && dptr && (dptr->dctrl & dbits)) {
|
||||||
|
|
||||||
char stackbuf[STACKBUFSIZE];
|
char stackbuf[STACKBUFSIZE];
|
||||||
int32 bufsize = sizeof(stackbuf);
|
int32 bufsize = sizeof(stackbuf);
|
||||||
|
|
2
scp.h
2
scp.h
|
@ -156,7 +156,7 @@ void sim_debug_bits (uint32 dbits, DEVICE* dptr, BITFIELD* bitdefs,
|
||||||
void sim_debug (uint32 dbits, DEVICE* dptr, const char* fmt, ...);
|
void sim_debug (uint32 dbits, DEVICE* dptr, const char* fmt, ...);
|
||||||
#else
|
#else
|
||||||
void _sim_debug (uint32 dbits, DEVICE* dptr, const char* fmt, ...);
|
void _sim_debug (uint32 dbits, DEVICE* dptr, const char* fmt, ...);
|
||||||
#define sim_debug(dbits, dptr, ...) if (sim_deb && ((dptr)->dctrl & dbits)) _sim_debug (dbits, dptr, __VA_ARGS__); else (void)0
|
#define sim_debug(dbits, dptr, ...) if (sim_deb && dptr && ((dptr)->dctrl & dbits)) _sim_debug (dbits, dptr, __VA_ARGS__); else (void)0
|
||||||
#endif
|
#endif
|
||||||
void fprint_stopped_gen (FILE *st, t_stat v, REG *pc, DEVICE *dptr);
|
void fprint_stopped_gen (FILE *st, t_stat v, REG *pc, DEVICE *dptr);
|
||||||
#define SCP_HELP_FLAT (1u << 31) /* Force flat help when prompting is not possible */
|
#define SCP_HELP_FLAT (1u << 31) /* Force flat help when prompting is not possible */
|
||||||
|
|
Loading…
Add table
Reference in a new issue