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;
|
return SCPE_IERR;
|
||||||
}
|
}
|
||||||
for (i = start; (dptr = sim_devices[i]) != NULL; i++) {
|
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) {
|
if (dptr->reset != NULL) {
|
||||||
reason = dptr->reset (dptr);
|
reason = dptr->reset (dptr);
|
||||||
if (reason != SCPE_OK)
|
if (reason != SCPE_OK)
|
||||||
|
@ -6414,6 +6416,45 @@ static DEBTAB scp_debug[] = {
|
||||||
{0}
|
{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
|
/* Reset to powerup state
|
||||||
|
|
||||||
Inputs:
|
Inputs:
|
||||||
|
@ -6430,42 +6471,8 @@ int32 old_sw = sim_switches;
|
||||||
sim_switches = SWMASK ('P');
|
sim_switches = SWMASK ('P');
|
||||||
r = reset_all (start);
|
r = reset_all (start);
|
||||||
sim_switches = old_sw;
|
sim_switches = old_sw;
|
||||||
if (sim_dflt_dev) { /* Make sure that SCP debug options are available */
|
if (sim_dflt_dev) /* Make sure that SCP debug options are available */
|
||||||
sim_dflt_dev->flags |= DEV_DEBUG;
|
sim_add_debug_flags (sim_dflt_dev, scp_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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return r;
|
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 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 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 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);
|
const char *sim_error_text (t_stat stat);
|
||||||
t_stat sim_string_to_stat (const char *cptr, t_stat *cond);
|
t_stat sim_string_to_stat (const char *cptr, t_stat *cond);
|
||||||
t_stat sim_cancel_step (void);
|
t_stat sim_cancel_step (void);
|
||||||
|
|
21
sim_tmxr.c
21
sim_tmxr.c
|
@ -3804,6 +3804,27 @@ else
|
||||||
return SCPE_OK;
|
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 */
|
/* 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_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(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)
|
#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)
|
#if defined(SIM_ASYNCH_MUX) && !defined(SIM_ASYNCH_IO)
|
||||||
#undef SIM_ASYNCH_MUX
|
#undef SIM_ASYNCH_MUX
|
||||||
|
|
Loading…
Add table
Reference in a new issue