SCP: Allow all HELP command arguments to be provided at the sim> prompt

This commit is contained in:
Mark Pizzolato 2019-02-06 10:00:27 -08:00
parent a1ecce16bf
commit 25ab8de55d

25
scp.c
View file

@ -3205,7 +3205,7 @@ return SCPE_OK;
t_stat help_cmd (int32 flag, CONST char *cptr) t_stat help_cmd (int32 flag, CONST char *cptr)
{ {
char gbuf[CBUFSIZE]; char gbuf[CBUFSIZE], gbuf2[CBUFSIZE];
CTAB *cmdp; CTAB *cmdp;
GET_SWITCHES (cptr); /* get switches */ GET_SWITCHES (cptr); /* get switches */
@ -3244,8 +3244,6 @@ if (*cptr) {
} }
return SCPE_ARG; return SCPE_ARG;
} }
else
return SCPE_2MARG;
} }
if (cmdp->help) { if (cmdp->help) {
if (strcmp (cmdp->name, "HELP") == 0) { if (strcmp (cmdp->name, "HELP") == 0) {
@ -3285,7 +3283,12 @@ if (*cptr) {
sim_dflt_dev->help (sim_log, sim_dflt_dev, sim_dflt_dev->units, 0, cmdp->name); sim_dflt_dev->help (sim_log, sim_dflt_dev, sim_dflt_dev->units, 0, cmdp->name);
} }
} }
help_cmd_output (flag, cmdp->help, cmdp->help_base); strlcpy (gbuf2, cmdp->help, sizeof (gbuf2));
if (*cptr) {
strlcat (gbuf2, " ", sizeof (gbuf2));
strlcat (gbuf2, cptr, sizeof (gbuf2));
}
help_cmd_output (flag, gbuf2, cmdp->help_base);
} }
else { /* no help so it is likely a command alias */ else { /* no help so it is likely a command alias */
CTAB *cmdpa; CTAB *cmdpa;
@ -3304,14 +3307,18 @@ if (*cptr) {
DEVICE *dptr; DEVICE *dptr;
UNIT *uptr; UNIT *uptr;
t_stat r; t_stat r;
t_bool explicit_device = FALSE;
if (0 == strcmp (gbuf, "DEVICE")) if (0 == strcmp (gbuf, "DEVICE")) {
explicit_device = TRUE;
cptr = get_glyph (cptr, gbuf, 0); cptr = get_glyph (cptr, gbuf, 0);
}
dptr = find_unit (gbuf, &uptr); dptr = find_unit (gbuf, &uptr);
if (dptr == NULL) { if (dptr == NULL) {
dptr = find_dev (gbuf); dptr = find_dev (gbuf);
if (dptr == NULL) if (dptr == NULL)
return SCPE_ARG; return sim_messagef (SCPE_ARG, "No HELP available for %s%s %s\n",
explicit_device ? "DEVICE " : "", gbuf, cptr);
if (dptr->flags & DEV_DISABLE) if (dptr->flags & DEV_DISABLE)
sim_printf ("Device %s is currently disabled\n", dptr->name); sim_printf ("Device %s is currently disabled\n", dptr->name);
} }
@ -13602,8 +13609,12 @@ while (TRUE) {
free (pstring); free (pstring);
} }
if (!cptr) /* EOF, exit help */ if (!cptr) { /* EOF, exit help */
#if !defined(_WIN32)
printf ("\n");
#endif
break; break;
}
cptr = get_glyph (cptr, gbuf, 0); cptr = get_glyph (cptr, gbuf, 0);
if (!strcmp (gbuf, "*")) { /* Wildcard */ if (!strcmp (gbuf, "*")) { /* Wildcard */