Clean up output formatting for SHOW DEVICE, SHOW CONFIG and changed SHOW SYSTEM to SHOW FEATURES

This commit is contained in:
Mark Pizzolato 2013-01-26 10:20:31 -08:00
parent 7ceba3715c
commit 7a9db0fe64
4 changed files with 47 additions and 27 deletions

View file

@ -1284,7 +1284,7 @@ t_stat cr_show_trans ( FILE *st,
int32 val, int32 val,
void *desc ) void *desc )
{ {
fprintf (st, "translation %s", trans[table]); fprintf (st, "translation=%s", trans[table]);
return (SCPE_OK); return (SCPE_OK);
} }

View file

@ -1628,7 +1628,7 @@ return SCPE_OK;
t_stat cpu_print_model (FILE *st) t_stat cpu_print_model (FILE *st)
{ {
fprintf (st, "VAX 3900"); fprintf (st, "MicroVAX 3900");
return SCPE_OK; return SCPE_OK;
} }

64
scp.c
View file

@ -371,7 +371,7 @@ t_stat show_break (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr);
t_stat show_on (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat show_on (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr);
t_stat show_device (FILE *st, DEVICE *dptr, int32 flag); t_stat show_device (FILE *st, DEVICE *dptr, int32 flag);
t_stat show_unit (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag); t_stat show_unit (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag);
int show_all_mods (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flg); t_stat show_all_mods (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flg, int32 *toks);
t_stat show_one_mod (FILE *st, DEVICE *dptr, UNIT *uptr, MTAB *mptr, char *cptr, int32 flag); t_stat show_one_mod (FILE *st, DEVICE *dptr, UNIT *uptr, MTAB *mptr, char *cptr, int32 flag);
t_stat sim_check_console (int32 sec); t_stat sim_check_console (int32 sec);
t_stat sim_save (FILE *sfile); t_stat sim_save (FILE *sfile);
@ -404,6 +404,7 @@ t_value strtotv (const char *inptr, char **endptr, uint32 radix);
void fprint_help (FILE *st); void fprint_help (FILE *st);
void fprint_stopped (FILE *st, t_stat r); void fprint_stopped (FILE *st, t_stat r);
void fprint_capac (FILE *st, DEVICE *dptr, UNIT *uptr); void fprint_capac (FILE *st, DEVICE *dptr, UNIT *uptr);
void fprint_sep (FILE *st, int32 *tokens);
char *read_line (char *ptr, int32 size, FILE *stream); char *read_line (char *ptr, int32 size, FILE *stream);
char *read_line_p (char *prompt, char *ptr, int32 size, FILE *stream); char *read_line_p (char *prompt, char *ptr, int32 size, FILE *stream);
REG *find_reg_glob (char *ptr, char **optr, DEVICE **gdptr); REG *find_reg_glob (char *ptr, char **optr, DEVICE **gdptr);
@ -2338,7 +2339,7 @@ SHTAB *shtb, *shptr;
static SHTAB show_glob_tab[] = { static SHTAB show_glob_tab[] = {
{ "CONFIGURATION", &show_config, 0 }, { "CONFIGURATION", &show_config, 0 },
{ "DEVICES", &show_config, 1 }, { "DEVICES", &show_config, 1 },
{ "SYSTEM", &show_config, 2 }, { "FEATURES", &show_config, 2 },
{ "QUEUE", &show_queue, 0 }, { "QUEUE", &show_queue, 0 },
{ "TIME", &show_time, 0 }, { "TIME", &show_time, 0 },
{ "MODIFIERS", &show_mod_names, 0 }, { "MODIFIERS", &show_mod_names, 0 },
@ -2450,7 +2451,7 @@ t_stat show_device (FILE *st, DEVICE *dptr, int32 flag)
{ {
uint32 j, udbl, ucnt; uint32 j, udbl, ucnt;
UNIT *uptr; UNIT *uptr;
int mods; int32 toks = 0;
fprintf (st, "%s", sim_dname (dptr)); /* print dev name */ fprintf (st, "%s", sim_dname (dptr)); /* print dev name */
if ((flag == 2) && dptr->description) { if ((flag == 2) && dptr->description) {
@ -2467,18 +2468,24 @@ for (j = ucnt = udbl = 0; j < dptr->numunits; j++) { /* count units */
else if (uptr->flags & UNIT_DISABLE) else if (uptr->flags & UNIT_DISABLE)
udbl++; /* count user-disabled */ udbl++; /* count user-disabled */
} }
mods = show_all_mods (st, dptr, dptr->units, MTAB_VDV); /* show dev mods */ show_all_mods (st, dptr, dptr->units, MTAB_VDV, &toks); /* show dev mods */
if (dptr->numunits == 0) { if (dptr->numunits == 0) {
if (mods) if (toks)
fprintf (st, "\n"); fprintf (st, "\n");
} }
else { else {
if (ucnt == 0) if (ucnt == 0) {
fprintf (st, "%sall units disabled\n", mods ? ", " : "\t"); fprint_sep (st, &toks);
else if ((ucnt > 1) || (udbl > 0)) fprintf (st, "all units disabled\n");
fprintf (st, "%s%d units\n", mods ? ", " : "\t", ucnt + udbl); }
else if (mods || (flag == 1) || ((flag == 2) && !dptr->description)) else if ((ucnt > 1) || (udbl > 0)) {
fprint_sep (st, &toks);
fprintf (st, "%d units\n", ucnt + udbl);
}
else
if ((flag != 2) || !dptr->description || toks)
fprintf (st, "\n"); fprintf (st, "\n");
toks = 0;
} }
if (flag) /* dev only? */ if (flag) /* dev only? */
return SCPE_OK; return SCPE_OK;
@ -2490,26 +2497,39 @@ for (j = 0; j < dptr->numunits; j++) { /* loop thru units */
return SCPE_OK; return SCPE_OK;
} }
void fprint_sep (FILE *st, int32 *tokens)
{
fprintf (st, (*tokens > 0) ? ", " : "\t");
*tokens += 1;
}
t_stat show_unit (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag) t_stat show_unit (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag)
{ {
int32 u = (int32)(uptr - dptr->units); int32 u = (int32)(uptr - dptr->units);
int32 toks = 0;
if (flag > 1) if (flag > 1)
fprintf (st, " %s%d", sim_dname (dptr), u); fprintf (st, " %s%d", sim_dname (dptr), u);
else if (flag < 0) else if (flag < 0)
fprintf (st, "%s%d", sim_dname (dptr), u); fprintf (st, "%s%d", sim_dname (dptr), u);
if (uptr->flags & UNIT_FIX) { if (uptr->flags & UNIT_FIX) {
fprintf (st, ", "); fprint_sep (st, &toks);
fprint_capac (st, dptr, uptr); fprint_capac (st, dptr, uptr);
} }
if (uptr->flags & UNIT_ATT) { if (uptr->flags & UNIT_ATT) {
fprintf (st, ", attached to %s", uptr->filename); fprint_sep (st, &toks);
fprintf (st, "attached to %s", uptr->filename);
if (uptr->flags & UNIT_RO) if (uptr->flags & UNIT_RO)
fprintf (st, ", read only"); fprintf (st, ", read only");
} }
else if (uptr->flags & UNIT_ATTABLE) else {
fprintf (st, ", not attached"); if (uptr->flags & UNIT_ATTABLE) {
show_all_mods (st, dptr, uptr, MTAB_VUN); /* show unit mods */ fprint_sep (st, &toks);
fprintf (st, "not attached");
}
}
show_all_mods (st, dptr, uptr, MTAB_VUN, &toks); /* show unit mods */
if (toks || (flag < 0) || (flag > 1))
fprintf (st, "\n"); fprintf (st, "\n");
return SCPE_OK; return SCPE_OK;
} }
@ -2815,11 +2835,9 @@ if ((dptr->flags & DEV_DEBUG) && dptr->debflags) {
return SCPE_OK; return SCPE_OK;
} }
int show_all_mods (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag) t_stat show_all_mods (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, int32 *toks)
{ {
MTAB *mptr; MTAB *mptr;
t_bool first_mod = TRUE;
int mods_shown = 0;
if (dptr->modifiers == NULL) if (dptr->modifiers == NULL)
return SCPE_OK; return SCPE_OK;
@ -2827,13 +2845,15 @@ for (mptr = dptr->modifiers; mptr->mask != 0; mptr++) {
if (mptr->pstring && ((mptr->mask & MTAB_XTD)? if (mptr->pstring && ((mptr->mask & MTAB_XTD)?
((mptr->mask & flag) && !(mptr->mask & MTAB_NMO)): ((mptr->mask & flag) && !(mptr->mask & MTAB_NMO)):
((MTAB_VUN & flag) && ((uptr->flags & mptr->mask) == mptr->match)))) { ((MTAB_VUN & flag) && ((uptr->flags & mptr->mask) == mptr->match)))) {
fputs (first_mod ? "\t" : ", ", st); if (*toks > 2) {
first_mod = FALSE; fprintf (st, "\n");
*toks = 0;
}
fprint_sep (st, toks);
show_one_mod (st, dptr, uptr, mptr, NULL, 0); show_one_mod (st, dptr, uptr, mptr, NULL, 0);
++mods_shown;
} }
} }
return mods_shown; return SCPE_OK;
} }
t_stat show_one_mod (FILE *st, DEVICE *dptr, UNIT *uptr, MTAB *mptr, t_stat show_one_mod (FILE *st, DEVICE *dptr, UNIT *uptr, MTAB *mptr,