TMXR: Make sure all MUX devices can leverage all debug selectors
This commit is contained in:
parent
ce5c3f0ff5
commit
06654d1ff5
4 changed files with 66 additions and 36 deletions
79
scp.c
79
scp.c
|
@ -6389,6 +6389,8 @@ for (i = 0; i < start; i++) {
|
|||
return SCPE_IERR;
|
||||
}
|
||||
for (i = start; (dptr = sim_devices[i]) != NULL; i++) {
|
||||
if (sim_switches & SWMASK('P'))
|
||||
tmxr_add_debug (dptr); /* Add TMXR debug to MUX devices */
|
||||
if (dptr->reset != NULL) {
|
||||
reason = dptr->reset (dptr);
|
||||
if (reason != SCPE_OK)
|
||||
|
@ -6414,6 +6416,45 @@ static DEBTAB scp_debug[] = {
|
|||
{0}
|
||||
};
|
||||
|
||||
t_stat sim_add_debug_flags (DEVICE *dptr, DEBTAB *debflags)
|
||||
{
|
||||
dptr->flags |= DEV_DEBUG;
|
||||
if (!dptr->debflags)
|
||||
dptr->debflags = debflags;
|
||||
else {
|
||||
DEBTAB *cdptr, *sdptr, *ndptr;
|
||||
|
||||
for (sdptr = debflags; sdptr->name; sdptr++) {
|
||||
for (cdptr = dptr->debflags; cdptr->name; cdptr++) {
|
||||
if (sdptr->mask == cdptr->mask)
|
||||
break;
|
||||
}
|
||||
if (sdptr->mask != cdptr->mask) {
|
||||
int i, dcount = 0;
|
||||
|
||||
for (cdptr = dptr->debflags; cdptr->name; cdptr++)
|
||||
dcount++;
|
||||
for (cdptr = debflags; cdptr->name; cdptr++)
|
||||
dcount++;
|
||||
ndptr = (DEBTAB *)calloc (1 + dcount, sizeof (*ndptr));
|
||||
for (dcount = 0, cdptr = dptr->debflags; cdptr->name; cdptr++)
|
||||
ndptr[dcount++] = *cdptr;
|
||||
for (cdptr = debflags; cdptr->name; cdptr++) {
|
||||
for (i = 0; i < dcount; i++) {
|
||||
if (cdptr->mask == ndptr[i].mask)
|
||||
break;
|
||||
}
|
||||
if (i == dcount)
|
||||
ndptr[dcount++] = *cdptr;
|
||||
}
|
||||
dptr->debflags = ndptr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
/* Reset to powerup state
|
||||
|
||||
Inputs:
|
||||
|
@ -6430,42 +6471,8 @@ int32 old_sw = sim_switches;
|
|||
sim_switches = SWMASK ('P');
|
||||
r = reset_all (start);
|
||||
sim_switches = old_sw;
|
||||
if (sim_dflt_dev) { /* Make sure that SCP debug options are available */
|
||||
sim_dflt_dev->flags |= DEV_DEBUG;
|
||||
if (!sim_dflt_dev->debflags)
|
||||
sim_dflt_dev->debflags = scp_debug;
|
||||
else {
|
||||
DEBTAB *cdptr, *sdptr, *ndptr;
|
||||
|
||||
for (sdptr = scp_debug; sdptr->name; sdptr++) {
|
||||
for (cdptr = sim_dflt_dev->debflags; cdptr->name; cdptr++) {
|
||||
if (sdptr->mask == cdptr->mask)
|
||||
break;
|
||||
}
|
||||
if (sdptr->mask != cdptr->mask) {
|
||||
int i, dcount = 0;
|
||||
|
||||
for (cdptr = sim_dflt_dev->debflags; cdptr->name; cdptr++)
|
||||
dcount++;
|
||||
for (cdptr = scp_debug; cdptr->name; cdptr++)
|
||||
dcount++;
|
||||
ndptr = (DEBTAB *)calloc (1 + dcount, sizeof (*ndptr));
|
||||
for (dcount = 0, cdptr =sim_dflt_dev->debflags; cdptr->name; cdptr++)
|
||||
ndptr[dcount++] = *cdptr;
|
||||
for (cdptr = scp_debug; cdptr->name; cdptr++) {
|
||||
for (i = 0; i < dcount; i++) {
|
||||
if (cdptr->mask == ndptr[i].mask)
|
||||
break;
|
||||
}
|
||||
if (i == dcount)
|
||||
ndptr[dcount++] = *cdptr;
|
||||
}
|
||||
sim_dflt_dev->debflags = ndptr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sim_dflt_dev) /* Make sure that SCP debug options are available */
|
||||
sim_add_debug_flags (sim_dflt_dev, scp_debug);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
|
1
scp.h
1
scp.h
|
@ -305,6 +305,7 @@ CONST char *match_ext (CONST char *fnam, const char *ext);
|
|||
t_stat show_version (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, CONST char *cptr);
|
||||
t_stat set_dev_debug (DEVICE *dptr, UNIT *uptr, int32 flag, CONST char *cptr);
|
||||
t_stat show_dev_debug (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, CONST char *cptr);
|
||||
t_stat sim_add_debug_flags (DEVICE *dptr, DEBTAB *debflags);
|
||||
const char *sim_error_text (t_stat stat);
|
||||
t_stat sim_string_to_stat (const char *cptr, t_stat *cond);
|
||||
t_stat sim_cancel_step (void);
|
||||
|
|
21
sim_tmxr.c
21
sim_tmxr.c
|
@ -3804,6 +3804,27 @@ else
|
|||
return SCPE_OK;
|
||||
}
|
||||
|
||||
static DEBTAB tmxr_debug[] = {
|
||||
{"XMT", TMXR_DBG_XMT, "Transmit Data"},
|
||||
{"RCV", TMXR_DBG_RCV, "Received Data"},
|
||||
{"RET", TMXR_DBG_RET, "Returned Received Data"},
|
||||
{"MODEM", TMXR_DBG_MDM, "Modem Signals"},
|
||||
{"CONNECT", TMXR_DBG_CON, "Connection Activities"},
|
||||
{"ASYNC", TMXR_DBG_ASY, "Asynchronous Activities"},
|
||||
{"TRACE", TMXR_DBG_TRC, "trace routine calls"},
|
||||
{"XMTPKT", TMXR_DBG_PXMT, "Transmit Packet Data"},
|
||||
{"RCVPKT", TMXR_DBG_PRCV, "Received Packet Data"},
|
||||
{"EXPECT", TMXR_DBG_EXP, "Expect Activities"},
|
||||
{"SEND", TMXR_DBG_SEND, "Send Activities"},
|
||||
{0}
|
||||
};
|
||||
|
||||
t_stat tmxr_add_debug (DEVICE *dptr)
|
||||
{
|
||||
if (!(dptr->flags & DEV_MUX))
|
||||
return SCPE_OK;
|
||||
return sim_add_debug_flags (dptr, tmxr_debug);
|
||||
}
|
||||
|
||||
/* Attach unit to master socket */
|
||||
|
||||
|
|
|
@ -309,6 +309,7 @@ void _tmxr_debug (uint32 dbits, TMLN *lp, const char *msg, char *buf, int bufsiz
|
|||
#define tmxr_debug_trace_line(lp, msg) do {if (sim_deb && (lp)->mp && (lp)->mp->dptr && (TMXR_DBG_TRC & (lp)->mp->dptr->dctrl)) sim_debug (TMXR_DBG_TRC, (lp)->mp->dptr, "Ln%d:%s\n", (int)((lp)-(lp)->mp->ldsc), (msg)); } while (0)
|
||||
#define tmxr_debug_connect(mp, msg) do {if (sim_deb && (mp)->dptr && (TMXR_DBG_CON & (mp)->dptr->dctrl)) sim_debug (TMXR_DBG_CON, mp->dptr, "%s\n", (msg)); } while (0)
|
||||
#define tmxr_debug_connect_line(lp, msg) do {if (sim_deb && (lp)->mp && (lp)->mp->dptr && (TMXR_DBG_CON & (lp)->mp->dptr->dctrl)) sim_debug (TMXR_DBG_CON, (lp)->mp->dptr, "Ln%d:%s\n", (int)((lp)-(lp)->mp->ldsc), (msg)); } while (0)
|
||||
t_stat tmxr_add_debug (DEVICE *dptr);
|
||||
|
||||
#if defined(SIM_ASYNCH_MUX) && !defined(SIM_ASYNCH_IO)
|
||||
#undef SIM_ASYNCH_MUX
|
||||
|
|
Loading…
Add table
Reference in a new issue