1
0
mirror of https://github.com/rcornwell/sims.git synced 2026-01-13 23:35:30 +00:00

SCP: Updated to current.

This commit is contained in:
Richard Cornwell 2020-06-29 22:11:50 -04:00
parent b6a46fc650
commit 88ae60a11e
2 changed files with 73 additions and 16 deletions

76
scp.c
View File

@ -5871,22 +5871,63 @@ return NULL;
/* Show device and unit */
static size_t dev_name_len;
const char *_sim_name_prefix (const char *name, const char *prefix)
{
static char nambuf[CBUFSIZE];
size_t prefix_len = prefix ? strlen (prefix) : 0;
size_t name_len = name ? strlen (name) : 0;
size_t string_len = prefix_len + name_len;
snprintf (nambuf, sizeof (nambuf), "%s%*s", prefix ? prefix : "",
((string_len <= 6) && (dev_name_len <= 6)) ? -((int)(8 - prefix_len)) :
-((int)(dev_name_len + 2)),
name ? name : "");
return nambuf;
}
const char *_sim_dname_prefix (DEVICE *dptr, const char *prefix)
{
return _sim_name_prefix (sim_dname (dptr), prefix);
}
const char *_sim_uname_prefix (UNIT *uptr, const char *prefix)
{
return _sim_name_prefix (sim_uname (uptr), prefix);
}
const char *_sim_dname (DEVICE *dptr)
{
return _sim_dname_prefix (dptr, "");
}
const char *_sim_uname (UNIT *uptr)
{
return _sim_uname_prefix (uptr, "");
}
const char *_sim_dname_space ()
{
return _sim_dname_prefix (NULL, "");
}
t_stat show_device (FILE *st, DEVICE *dptr, int32 flag)
{
uint32 j, udbl, ucnt;
UNIT *uptr;
int32 toks = 0;
int32 toks = -1;
fprintf (st, "%s", sim_dname (dptr)); /* print dev name */
fprintf (st, "%s", _sim_dname (dptr)); /* print dev name */
if ((flag == 2) && dptr->description) {
fprintf (st, "\t%s\n", dptr->description(dptr));
fprintf (st, "%s\n", dptr->description(dptr));
}
else {
if ((sim_switches & SWMASK ('D')) && dptr->description)
fprintf (st, "\t%s\n", dptr->description(dptr));
fprintf (st, "%s\n", dptr->description(dptr));
}
if (qdisable (dptr)) { /* disabled? */
fprintf (st, "\tdisabled\n");
fprintf (st, "%s\n", "disabled");
return SCPE_OK;
}
for (j = ucnt = udbl = 0; j < dptr->numunits; j++) { /* count units */
@ -5927,19 +5968,23 @@ return SCPE_OK;
void fprint_sep (FILE *st, int32 *tokens)
{
fprintf (st, (*tokens > 0) ? ", " : "\t");
fprintf (st, "%s", (*tokens > 0) ? ", " : ((*tokens < 0) ? "" : _sim_dname_space ()));
*tokens += 1;
if (*tokens == 0)
*tokens = 1;
}
t_stat show_unit (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag)
{
int32 u = (int32)(uptr - dptr->units);
int32 toks = 0;
int32 toks = -1;
if (flag > 1)
fprintf (st, " %s%d", sim_dname (dptr), u);
else if (flag < 0)
fprintf (st, "%s%d", sim_dname (dptr), u);
fprintf (st, "%s", _sim_uname_prefix (uptr, " "));
else
if (flag < 0)
fprintf (st, "%s", _sim_uname (uptr));
else
toks = 0;
if (uptr->flags & UNIT_FIX) {
fprint_sep (st, &toks);
fprint_capac (st, dptr, uptr);
@ -6257,15 +6302,24 @@ t_bool only_enabled = (sim_switches & SWMASK ('E'));
if (cptr && (*cptr != 0))
return SCPE_2MARG;
fprintf (st, "%s simulator configuration%s\n\n", sim_name, only_enabled ? " (enabled devices)" : "");
for (i = dev_name_len = 0; (dptr = sim_devices[i]) != NULL; i++)
if (!only_enabled || !qdisable (dptr))
if (dev_name_len < strlen (dptr->name))
dev_name_len = strlen (dptr->name);
for (i = 0; (dptr = sim_devices[i]) != NULL; i++)
if (!only_enabled || !qdisable (dptr))
show_device (st, dptr, flag);
if (sim_switches & SWMASK ('I')) {
for (i = dev_name_len = 0; sim_internal_device_count && (dptr = sim_internal_devices[i]); ++i)
if (!only_enabled || !qdisable (dptr))
if (dev_name_len < strlen (dptr->name))
dev_name_len = strlen (dptr->name);
fprintf (st, "\nInternal Devices%s\n\n", only_enabled ? " (enabled devices)" : "");
for (i = 0; sim_internal_device_count && (dptr = sim_internal_devices[i]); ++i)
if (!only_enabled || !qdisable (dptr))
show_device (st, dptr, flag);
}
dev_name_len = 0;
return SCPE_OK;
}

View File

@ -868,9 +868,10 @@ if (tptr == NULL) /* no more mem? */
return tptr;
if (mp->port) /* copy port */
sprintf (growstring(&tptr, 13 + strlen (mp->port)), "%s%s%s", mp->port,
mp->notelnet ? ";notelnet" : "",
mp->nomessage ? ";nomessage" : "");
sprintf (growstring(&tptr, 33 + strlen (mp->port)), "%s%s", mp->port,
mp->notelnet ? ";notelnet" :
(mp->nomessage ? ";nomessage" :
""));
if (mp->logfiletmpl[0]) /* logfile info */
sprintf (growstring(&tptr, 7 + strlen (mp->logfiletmpl)), ",Log=%s", mp->logfiletmpl);
if (mp->buffered)
@ -940,7 +941,7 @@ if (lp->destination || lp->port || lp->txlogname || (lp->conn == TMXR_LINE_DISAB
if (lp->mp->packet != lp->packet)
sprintf (growstring(&tptr, 8), ",Packet");
if (lp->port)
sprintf (growstring(&tptr, 12 + strlen (lp->port)), ",%s%s%s", lp->port,
sprintf (growstring(&tptr, 32 + strlen (lp->port)), ",%s%s%s", lp->port,
((lp->mp->notelnet != lp->notelnet) && (!lp->datagram)) ? (lp->notelnet ? ";notelnet" : ";telnet") : "",
((lp->mp->nomessage != lp->nomessage) && (!lp->datagram)) ? (lp->nomessage ? ";nomessage" : ";message") : "");
if (lp->destination) {
@ -2734,6 +2735,8 @@ for (i = 0; i < mp->lines; i++) { /* initialize lines */
if (lp->bpsfactor == 0.0)
lp->bpsfactor = 1.0;
}
notelnet = listennotelnet = mp->notelnet;
nomessage = listennomessage = mp->nomessage;
mp->ring_sock = INVALID_SOCKET;
free (mp->ring_ipad);
mp->ring_ipad = NULL;
@ -2748,7 +2751,7 @@ while (*tptr) {
memset(port, '\0', sizeof(port));
memset(option, '\0', sizeof(option));
memset(speed, '\0', sizeof(speed));
nolog = notelnet = listennotelnet = nomessage = listennomessage = loopback = disabled = FALSE;
nolog = loopback = disabled = FALSE;
datagram = mp->datagram;
packet = mp->packet;
if (mp->buffered)