mirror of
https://github.com/simh/simh.git
synced 2026-01-13 23:35:57 +00:00
VAXen without console ROMs: Issue meaningful messages for bad boot arguments
This commit is contained in:
parent
0d0d4a0525
commit
5d779942d9
@ -467,13 +467,8 @@ t_stat r;
|
||||
if ((ptr = get_sim_sw (ptr)) == NULL) /* get switches */
|
||||
return SCPE_INVSW;
|
||||
r = vax730_boot_parse (flag, ptr); /* parse the boot cmd */
|
||||
if (r != SCPE_OK) { /* error? */
|
||||
if (r >= SCPE_BASE) { /* message available? */
|
||||
sim_printf ("%s\n", sim_error_text (r));
|
||||
r |= SCPE_NOMESSAGE;
|
||||
}
|
||||
if (r != SCPE_OK) /* error? */
|
||||
return r;
|
||||
}
|
||||
strncpy (cpu_boot_cmd, ptr, CBUFSIZE-1); /* save for reboot */
|
||||
return run_cmd (flag, "CPU");
|
||||
}
|
||||
@ -493,7 +488,7 @@ uint32 ba;
|
||||
t_stat r;
|
||||
|
||||
if (!ptr || !*ptr)
|
||||
return SCPE_2FARG;
|
||||
return sim_messagef (SCPE_2FARG, "Missing boot device/unit specifier\n");
|
||||
regptr = get_glyph (ptr, gbuf, 0); /* get glyph */
|
||||
if ((slptr = strchr (gbuf, '/'))) { /* found slash? */
|
||||
regptr = strchr (ptr, '/'); /* locate orig */
|
||||
@ -501,7 +496,7 @@ if ((slptr = strchr (gbuf, '/'))) { /* found slash? */
|
||||
}
|
||||
dptr = find_unit (gbuf, &uptr); /* find device */
|
||||
if ((dptr == NULL) || (uptr == NULL))
|
||||
return SCPE_ARG;
|
||||
return sim_messagef (SCPE_NXUN, "Non existant Device or Unit: %s\n", gbuf);
|
||||
dibp = (DIB *) dptr->ctxt; /* get DIB */
|
||||
if (dibp == NULL)
|
||||
ba = 0;
|
||||
@ -516,17 +511,17 @@ if ((strncmp (regptr, "/R5:", 4) == 0) ||
|
||||
(strncmp (regptr, "/r5=", 4) == 0)) {
|
||||
r5v = (int32) get_uint (regptr + 4, 16, LMASK, &r);
|
||||
if (r != SCPE_OK)
|
||||
return r;
|
||||
return sim_messagef (r, "Can't parse R5 value from: %s\n", regptr + 4);
|
||||
}
|
||||
else
|
||||
if (*regptr == '/') {
|
||||
r5v = (int32) get_uint (regptr + 1, 16, LMASK, &r);
|
||||
if (r != SCPE_OK)
|
||||
return r;
|
||||
return sim_messagef (r, "Can't parse R5 value from: %s\n", regptr + 1);
|
||||
}
|
||||
else {
|
||||
if (*regptr != 0)
|
||||
return SCPE_ARG;
|
||||
return sim_messagef (SCPE_ARG, "Invalid boot argument: %s\n", regptr);
|
||||
}
|
||||
for (i = 0; boot_tab[i].name != NULL; i++) {
|
||||
if (strcmp (dptr->name, boot_tab[i].name) == 0) {
|
||||
@ -543,7 +538,7 @@ for (i = 0; boot_tab[i].name != NULL; i++) {
|
||||
return SCPE_OK;
|
||||
}
|
||||
}
|
||||
return SCPE_NOFNC;
|
||||
return sim_messagef (SCPE_NOFNC, "Non bootable device: %s\n", gbuf);
|
||||
}
|
||||
|
||||
/* Bootstrap - finish up bootstrap process */
|
||||
|
||||
@ -608,13 +608,8 @@ t_stat r;
|
||||
if ((ptr = get_sim_sw (ptr)) == NULL) /* get switches */
|
||||
return SCPE_INVSW;
|
||||
r = vax750_boot_parse (flag, ptr); /* parse the boot cmd */
|
||||
if (r != SCPE_OK) { /* error? */
|
||||
if (r >= SCPE_BASE) { /* message available? */
|
||||
sim_printf ("%s\n", sim_error_text (r));
|
||||
r |= SCPE_NOMESSAGE;
|
||||
}
|
||||
if (r != SCPE_OK) /* error? */
|
||||
return r;
|
||||
}
|
||||
strncpy (cpu_boot_cmd, ptr, CBUFSIZE-1); /* save for reboot */
|
||||
return run_cmd (flag, "CPU");
|
||||
}
|
||||
@ -632,7 +627,7 @@ UNIT *uptr;
|
||||
t_stat r;
|
||||
|
||||
if (!ptr || !*ptr)
|
||||
return SCPE_2FARG;
|
||||
return sim_messagef (SCPE_2FARG, "Missing boot device/unit specifier\n");
|
||||
if (ptr && (*ptr == '/')) { /* handle "BOOT /R5:n DEV" format */
|
||||
ptr = get_glyph (ptr, rbuf, 0); /* get glyph */
|
||||
regptr = rbuf;
|
||||
@ -654,15 +649,18 @@ if ((strncmp (regptr, "/R5:", 4) == 0) ||
|
||||
(strncmp (regptr, "/r5=", 4) == 0)) {
|
||||
r5v = (int32) get_uint (regptr + 4, 16, LMASK, &r);
|
||||
if (r != SCPE_OK)
|
||||
return r;
|
||||
return sim_messagef (r, "Can't parse R5 value from: %s\n", regptr + 4);
|
||||
}
|
||||
else if (*regptr == '/') {
|
||||
r5v = (int32) get_uint (regptr + 1, 16, LMASK, &r);
|
||||
if (r != SCPE_OK)
|
||||
return r;
|
||||
}
|
||||
else if (*regptr != 0)
|
||||
return SCPE_ARG;
|
||||
else
|
||||
if (*regptr == '/') {
|
||||
r5v = (int32) get_uint (regptr + 1, 16, LMASK, &r);
|
||||
if (r != SCPE_OK)
|
||||
return sim_messagef (r, "Can't parse R5 value from: %s\n", regptr + 1);
|
||||
}
|
||||
else {
|
||||
if (*regptr != 0)
|
||||
return sim_messagef (SCPE_ARG, "Invalid boot argument: %s\n", regptr);
|
||||
}
|
||||
if (gbuf[0]) {
|
||||
unitno = -1;
|
||||
for (i = 0; boot_tab[i].devname != NULL; i++) {
|
||||
@ -671,7 +669,7 @@ if (gbuf[0]) {
|
||||
if (memcmp (gbuf, ((char *)rom) + (0x100 * boot_tab[i].bootdev), 2)) {
|
||||
r = mctl_populate_rom (boot_tab[i].bootcodefile);
|
||||
if (r != SCPE_OK)
|
||||
return r;
|
||||
return sim_messagef (r, "Can't load ROM file: %s\n", boot_tab[i].bootcodefile);
|
||||
vax750_bootdev = boot_tab[i].bootdev;
|
||||
}
|
||||
sprintf(dbuf, "%s%s", boot_tab[i].devname, gbuf + strlen(boot_tab[i].romdevalias));
|
||||
@ -743,7 +741,7 @@ else {
|
||||
PC = 0xFA02 + 0x100*vax750_bootdev;
|
||||
return SCPE_OK;
|
||||
}
|
||||
return SCPE_NOFNC;
|
||||
return sim_messagef (SCPE_NOFNC, "Non bootable device: %s\n", gbuf);
|
||||
}
|
||||
|
||||
/* Bootstrap - finish up bootstrap process */
|
||||
|
||||
@ -619,13 +619,8 @@ t_stat vax780_boot (int32 flag, CONST char *ptr)
|
||||
t_stat r;
|
||||
|
||||
r = vax780_boot_parse (flag, ptr); /* parse the boot cmd */
|
||||
if (r != SCPE_OK) { /* error? */
|
||||
if (r >= SCPE_BASE) { /* message available? */
|
||||
sim_printf ("%s\n", sim_error_text (r));
|
||||
r |= SCPE_NOMESSAGE;
|
||||
}
|
||||
if (r != SCPE_OK) /* error? */
|
||||
return r;
|
||||
}
|
||||
strncpy (cpu_boot_cmd, ptr, CBUFSIZE-1); /* save for reboot */
|
||||
return run_cmd (flag, "CPU");
|
||||
}
|
||||
@ -645,9 +640,9 @@ DIB *dibp;
|
||||
t_stat r;
|
||||
|
||||
if (!ptr || !*ptr)
|
||||
return SCPE_2FARG;
|
||||
return sim_messagef (SCPE_2FARG, "Missing boot device/unit specifier\n");
|
||||
if ((ptr = get_sim_sw (ptr)) == NULL) /* get switches */
|
||||
return SCPE_INVSW;
|
||||
return sim_messagef (SCPE_INVSW, "Invalid Switch specified\n");
|
||||
regptr = get_glyph (ptr, gbuf, 0); /* get glyph */
|
||||
if ((slptr = strchr (gbuf, '/'))) { /* found slash? */
|
||||
regptr = strchr (ptr, '/'); /* locate orig */
|
||||
@ -655,7 +650,7 @@ if ((slptr = strchr (gbuf, '/'))) { /* found slash? */
|
||||
}
|
||||
dptr = find_unit (gbuf, &uptr); /* find device */
|
||||
if ((dptr == NULL) || (uptr == NULL))
|
||||
return SCPE_ARG;
|
||||
return sim_messagef (SCPE_NXUN, "Non existant Device or Unit: %s\n", gbuf);
|
||||
dibp = (DIB *) dptr->ctxt; /* get DIB */
|
||||
if (dibp == NULL)
|
||||
ba = 0;
|
||||
@ -670,17 +665,17 @@ if ((strncmp (regptr, "/R5:", 4) == 0) ||
|
||||
(strncmp (regptr, "/r5=", 4) == 0)) {
|
||||
r5v = (int32) get_uint (regptr + 4, 16, LMASK, &r);
|
||||
if (r != SCPE_OK)
|
||||
return r;
|
||||
return sim_messagef (r, "Can't parse R5 value from: %s\n", regptr + 4);
|
||||
}
|
||||
else
|
||||
if (*regptr == '/') {
|
||||
r5v = (int32) get_uint (regptr + 1, 16, LMASK, &r);
|
||||
if (r != SCPE_OK)
|
||||
return r;
|
||||
return sim_messagef (r, "Can't parse R5 value from: %s\n", regptr + 1);
|
||||
}
|
||||
else {
|
||||
if (*regptr != 0)
|
||||
return SCPE_ARG;
|
||||
return sim_messagef (SCPE_ARG, "Invalid boot argument: %s\n", regptr);
|
||||
}
|
||||
for (i = 0; boot_tab[i].name != NULL; i++) {
|
||||
if (strcmp (dptr->name, boot_tab[i].name) == 0) {
|
||||
@ -699,7 +694,7 @@ for (i = 0; boot_tab[i].name != NULL; i++) {
|
||||
return SCPE_OK;
|
||||
}
|
||||
}
|
||||
return SCPE_NOFNC;
|
||||
return sim_messagef (SCPE_NOFNC, "Non bootable device: %s\n", gbuf);
|
||||
}
|
||||
|
||||
/* Bootstrap - finish up bootstrap process */
|
||||
|
||||
@ -617,13 +617,8 @@ t_stat vax820_boot (int32 flag, CONST char *ptr)
|
||||
t_stat r;
|
||||
|
||||
r = vax820_boot_parse (flag, ptr); /* parse the boot cmd */
|
||||
if (r != SCPE_OK) { /* error? */
|
||||
if (r >= SCPE_BASE) { /* message available? */
|
||||
sim_printf ("%s\n", sim_error_text (r));
|
||||
r |= SCPE_NOMESSAGE;
|
||||
}
|
||||
if (r != SCPE_OK) /* error? */
|
||||
return r;
|
||||
}
|
||||
strncpy (cpu_boot_cmd, ptr, CBUFSIZE-1); /* save for reboot */
|
||||
return run_cmd (flag, "CPU");
|
||||
}
|
||||
@ -640,9 +635,9 @@ DIB *dibp;
|
||||
t_stat r;
|
||||
|
||||
if (!ptr || !*ptr)
|
||||
return SCPE_2FARG;
|
||||
return sim_messagef (SCPE_2FARG, "Missing boot device/unit specifier\n");
|
||||
if ((ptr = get_sim_sw (ptr)) == NULL) /* get switches */
|
||||
return SCPE_INVSW;
|
||||
return sim_messagef (SCPE_INVSW, "Invalid Switch specified\n");
|
||||
regptr = get_glyph (ptr, gbuf, 0); /* get glyph */
|
||||
if ((slptr = strchr (gbuf, '/'))) { /* found slash? */
|
||||
regptr = strchr (ptr, '/'); /* locate orig */
|
||||
@ -650,10 +645,10 @@ if ((slptr = strchr (gbuf, '/'))) { /* found slash? */
|
||||
}
|
||||
dptr = find_unit (gbuf, &uptr); /* find device */
|
||||
if ((dptr == NULL) || (uptr == NULL))
|
||||
return SCPE_ARG;
|
||||
return sim_messagef (SCPE_NXUN, "Non existant Device or Unit: %s\n", gbuf);
|
||||
dibp = (DIB *) dptr->ctxt; /* get DIB */
|
||||
if (dibp == NULL)
|
||||
return SCPE_ARG;
|
||||
return sim_messagef (SCPE_NOFNC, "Non bootable device: %s\n", gbuf);
|
||||
unitno = (int32) (uptr - dptr->units);
|
||||
r5v = 0;
|
||||
/* coverity[NULL_RETURNS] */
|
||||
@ -663,10 +658,12 @@ if ((strncmp (regptr, "/R5:", 4) == 0) ||
|
||||
(strncmp (regptr, "/r5=", 4) == 0)) {
|
||||
r5v = (int32) get_uint (regptr + 4, 16, LMASK, &r);
|
||||
if (r != SCPE_OK)
|
||||
return r;
|
||||
return sim_messagef (r, "Can't parse R5 value from: %s\n", regptr + 4);
|
||||
}
|
||||
else {
|
||||
if (*regptr != 0)
|
||||
return sim_messagef (SCPE_ARG, "Invalid boot argument: %s\n", regptr);
|
||||
}
|
||||
else if (*regptr != 0)
|
||||
return SCPE_ARG;
|
||||
for (i = 0; boot_tab[i].name != NULL; i++) {
|
||||
if (strcmp (dptr->name, boot_tab[i].name) == 0) {
|
||||
R[0] = boot_tab[i].code;
|
||||
@ -678,7 +675,7 @@ for (i = 0; boot_tab[i].name != NULL; i++) {
|
||||
return SCPE_OK;
|
||||
}
|
||||
}
|
||||
return SCPE_NOFNC;
|
||||
return sim_messagef (SCPE_NOFNC, "Non bootable device: %s\n", gbuf);
|
||||
}
|
||||
|
||||
/* Bootstrap - finish up bootstrap process */
|
||||
|
||||
@ -685,13 +685,8 @@ t_stat r;
|
||||
if ((ptr = get_sim_sw (ptr)) == NULL) /* get switches */
|
||||
return SCPE_INVSW;
|
||||
r = vax860_boot_parse (flag, ptr); /* parse the boot cmd */
|
||||
if (r != SCPE_OK) { /* error? */
|
||||
if (r >= SCPE_BASE) { /* message available? */
|
||||
sim_printf ("%s\n", sim_error_text (r));
|
||||
r |= SCPE_NOMESSAGE;
|
||||
}
|
||||
if (r != SCPE_OK) /* error? */
|
||||
return r;
|
||||
}
|
||||
strncpy (cpu_boot_cmd, ptr, CBUFSIZE-1); /* save for reboot */
|
||||
return run_cmd (flag, "CPU");
|
||||
}
|
||||
@ -711,7 +706,7 @@ uint32 ba;
|
||||
t_stat r;
|
||||
|
||||
if (!ptr || !*ptr)
|
||||
return SCPE_2FARG;
|
||||
return sim_messagef (SCPE_2FARG, "Missing boot device/unit specifier\n");
|
||||
regptr = get_glyph (ptr, gbuf, 0); /* get glyph */
|
||||
if ((slptr = strchr (gbuf, '/'))) { /* found slash? */
|
||||
regptr = strchr (ptr, '/'); /* locate orig */
|
||||
@ -719,7 +714,7 @@ if ((slptr = strchr (gbuf, '/'))) { /* found slash? */
|
||||
}
|
||||
dptr = find_unit (gbuf, &uptr); /* find device */
|
||||
if ((dptr == NULL) || (uptr == NULL))
|
||||
return SCPE_ARG;
|
||||
return sim_messagef (SCPE_NXUN, "Non existant Device or Unit: %s\n", gbuf);
|
||||
dibp = (DIB *) dptr->ctxt; /* get DIB */
|
||||
if (dibp == NULL)
|
||||
ba = 0;
|
||||
@ -734,13 +729,13 @@ if ((strncmp (regptr, "/R5:", 4) == 0) ||
|
||||
(strncmp (regptr, "/r5=", 4) == 0)) {
|
||||
r5v = (int32) get_uint (regptr + 4, 16, LMASK, &r);
|
||||
if (r != SCPE_OK)
|
||||
return r;
|
||||
return sim_messagef (r, "Can't parse R5 value from: %s\n", regptr + 4);
|
||||
}
|
||||
else
|
||||
if (*regptr == '/') {
|
||||
r5v = (int32) get_uint (regptr + 1, 16, LMASK, &r);
|
||||
if (r != SCPE_OK)
|
||||
return r;
|
||||
return sim_messagef (r, "Can't parse R5 value from: %s\n", regptr + 1);
|
||||
}
|
||||
else {
|
||||
if (*regptr != 0)
|
||||
@ -763,7 +758,7 @@ for (i = 0; boot_tab[i].name != NULL; i++) {
|
||||
return SCPE_OK;
|
||||
}
|
||||
}
|
||||
return SCPE_NOFNC;
|
||||
return sim_messagef (SCPE_NOFNC, "Non bootable device: %s\n", gbuf);
|
||||
}
|
||||
|
||||
/* Bootstrap - finish up bootstrap process */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user