diff --git a/PDP11/pdp11_hk.c b/PDP11/pdp11_hk.c index a6611af3..4f902572 100644 --- a/PDP11/pdp11_hk.c +++ b/PDP11/pdp11_hk.c @@ -1647,7 +1647,7 @@ t_stat hk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr fprintf (st, "RK611/RK06,RK07 Cartridge Disk (HK)\n\n"); fprintf (st, "RK611 options include the ability to set units write enabled or write locked,\n"); fprintf (st, "to set the drive type to RK06, RK07, or autosize, and to write a DEC standard\n"); -fprintf (st, "044 compliant bad block table on the last track:\n\n"); +fprintf (st, "144 compliant bad block table on the last track:\n\n"); fprint_set_help (st, dptr); fprint_show_help (st, dptr); fprintf (st, "\nThe type options can be used only when a unit is not attached to a file.\n"); diff --git a/PDP11/pdp11_rl.c b/PDP11/pdp11_rl.c index 8fbdb641..d3b722b9 100644 --- a/PDP11/pdp11_rl.c +++ b/PDP11/pdp11_rl.c @@ -1269,7 +1269,7 @@ t_stat rl_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr fprintf (st, "RL11/RL01/RL02 Cartridge Disk (RL)\n\n"); fprintf (st, "RL11 options include the ability to set units write enabled or write locked,\n"); fprintf (st, "to set the drive type to RL01, RL02, or autosize, and to write a DEC standard\n"); -fprintf (st, "044 compliant bad block table on the last track:\n\n"); +fprintf (st, "144 compliant bad block table on the last track:\n\n"); fprint_set_help (st, dptr); fprint_show_help (st, dptr); fprintf (st, "\nThe type options can be used only when a unit is not attached to a file.\n"); diff --git a/PDP11/pdp11_rp.c b/PDP11/pdp11_rp.c index 40ee6e6a..1d3c6e17 100644 --- a/PDP11/pdp11_rp.c +++ b/PDP11/pdp11_rp.c @@ -472,6 +472,7 @@ BITFIELD *rp_reg_bits[] = { RM02/3 32 5 823 =67MB RP04/5 22 19 411 =88MB RM80 31 14 559 =124MB + RP05 22 19 411 =88MB RP06 22 19 815 =176MB RM05 32 19 823 =256MB RP07 50 32 630 =516MB @@ -487,6 +488,7 @@ BITFIELD *rp_reg_bits[] = { #define RM03_SECT 32 #define RM03_SURF 5 #define RM03_CYL 823 +#define RM03_DEC144 1 #define RM03_DEV 020024 #define RM03_SIZE (RM03_SECT * RM03_SURF * RM03_CYL * RP_NUMWD) @@ -494,34 +496,47 @@ BITFIELD *rp_reg_bits[] = { #define RP04_SECT 22 #define RP04_SURF 19 #define RP04_CYL 411 +#define RP04_DEC144 0 #define RP04_DEV 020020 #define RP04_SIZE (RP04_SECT * RP04_SURF * RP04_CYL * RP_NUMWD) -#define RM80_DTYPE 2 +#define RP05_DTYPE 2 +#define RP05_SECT 22 +#define RP05_SURF 19 +#define RP05_CYL 411 +#define RP05_DEC144 0 +#define RP05_DEV 020021 +#define RP05_SIZE (RP05_SECT * RP05_SURF * RP05_CYL * RP_NUMWD) + +#define RM80_DTYPE 3 #define RM80_SECT 31 #define RM80_SURF 14 #define RM80_CYL 559 +#define RM80_DEC144 1 #define RM80_DEV 020026 #define RM80_SIZE (RM80_SECT * RM80_SURF * RM80_CYL * RP_NUMWD) -#define RP06_DTYPE 3 +#define RP06_DTYPE 4 #define RP06_SECT 22 #define RP06_SURF 19 #define RP06_CYL 815 +#define RP06_DEC144 0 #define RP06_DEV 020022 #define RP06_SIZE (RP06_SECT * RP06_SURF * RP06_CYL * RP_NUMWD) -#define RM05_DTYPE 4 +#define RM05_DTYPE 5 #define RM05_SECT 32 #define RM05_SURF 19 #define RM05_CYL 823 +#define RM05_DEC144 1 #define RM05_DEV 020027 #define RM05_SIZE (RM05_SECT * RM05_SURF * RM05_CYL * RP_NUMWD) -#define RP07_DTYPE 5 +#define RP07_DTYPE 6 #define RP07_SECT 50 #define RP07_SURF 32 #define RP07_CYL 630 +#define RP07_DEC144 1 #define RP07_DEV 020042 #define RP07_SIZE (RP07_SECT * RP07_SURF * RP07_CYL * RP_NUMWD) @@ -531,17 +546,19 @@ struct drvtyp { int32 cyl; /* cylinders */ int32 size; /* #blocks */ int32 devtype; /* device type */ + int32 dec144; /* DEC Std 144 bad block */ int32 ctrl; /* ctrl type */ const char *name; /* device type name */ }; static struct drvtyp drv_tab[] = { - { RM03_SECT, RM03_SURF, RM03_CYL, RM03_SIZE, RM03_DEV, RM_CTRL, "RM03" }, - { RP04_SECT, RP04_SURF, RP04_CYL, RP04_SIZE, RP04_DEV, RP_CTRL, "RP04" }, - { RM80_SECT, RM80_SURF, RM80_CYL, RM80_SIZE, RM80_DEV, RM_CTRL, "RM80" }, - { RP06_SECT, RP06_SURF, RP06_CYL, RP06_SIZE, RP06_DEV, RP_CTRL, "RP06" }, - { RM05_SECT, RM05_SURF, RM05_CYL, RM05_SIZE, RM05_DEV, RM_CTRL, "RM05" }, - { RP07_SECT, RP07_SURF, RP07_CYL, RP07_SIZE, RP07_DEV, RM_CTRL, "RP07" }, + { RM03_SECT, RM03_SURF, RM03_CYL, RM03_SIZE, RM03_DEV, RM03_DEC144, RM_CTRL, "RM03" }, + { RP04_SECT, RP04_SURF, RP04_CYL, RP04_SIZE, RP04_DEV, RP04_DEC144, RP_CTRL, "RP04" }, + { RP05_SECT, RP05_SURF, RP05_CYL, RP05_SIZE, RP05_DEV, RP05_DEC144, RP_CTRL, "RP05" }, + { RM80_SECT, RM80_SURF, RM80_CYL, RM80_SIZE, RM80_DEV, RM80_DEC144, RM_CTRL, "RM80" }, + { RP06_SECT, RP06_SURF, RP06_CYL, RP06_SIZE, RP06_DEV, RP06_DEC144, RP_CTRL, "RP06" }, + { RM05_SECT, RM05_SURF, RM05_CYL, RM05_SIZE, RM05_DEV, RM05_DEC144, RM_CTRL, "RM05" }, + { RP07_SECT, RP07_SURF, RP07_CYL, RP07_SIZE, RP07_DEV, RP07_DEC144, RM_CTRL, "RP07" }, { 0 } }; @@ -650,6 +667,8 @@ MTAB rp_mod[] = { &rp_set_type, NULL, NULL, "Set RM03 Disk Type" }, { MTAB_XTD|MTAB_VUN, RP04_DTYPE, NULL, "RP04", &rp_set_type, NULL, NULL, "Set RP04 Disk Type" }, + { MTAB_XTD|MTAB_VUN, RP05_DTYPE, NULL, "RP05", + &rp_set_type, NULL, NULL, "Set RP05 Disk Type" }, { MTAB_XTD|MTAB_VUN, RM80_DTYPE, NULL, "RM80", &rp_set_type, NULL, NULL, "Set RM80 Disk Type" }, { MTAB_XTD|MTAB_VUN, RP06_DTYPE, NULL, "RP06", @@ -1352,12 +1371,14 @@ t_stat rp_attach (UNIT *uptr, CONST char *cptr) int32 drv; t_stat r; DEVICE *dptr = find_dev_from_unit (uptr); -static const char *drives[] = {"RM03", "RP04", "RM80", "RP06", "RM05", "RP07", NULL}; +static const char *drives[] = {"RM03", "RP04", "RP05", "RM80", "RP06", "RM05", "RP07", NULL}; uptr->capac = drv_tab[GET_DTYPE (uptr->flags)].size; r = sim_disk_attach_ex (uptr, cptr, RP_NUMWD * sizeof (uint16), sizeof (uint16), TRUE, DBG_DSK, - drv_tab[GET_DTYPE (uptr->flags)].name, drv_tab[GET_DTYPE (uptr->flags)].sect, 0, (uptr->flags & UNIT_AUTO) ? drives : NULL); + drv_tab[GET_DTYPE (uptr->flags)].name, + drv_tab[GET_DTYPE (uptr->flags)].dec144 ? drv_tab[GET_DTYPE (uptr->flags)].sect : 0, + 0, (uptr->flags & UNIT_AUTO) ? drives : NULL); if (r != SCPE_OK) /* error? */ return r; drv = (int32) (uptr - dptr->units); /* get drv number */ @@ -1409,7 +1430,10 @@ return SCPE_OK; t_stat rp_set_bad (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { -return pdp11_bad_block (uptr, drv_tab[GET_DTYPE (uptr->flags)].sect, RP_NUMWD); +if (drv_tab[GET_DTYPE (uptr->flags)].dec144) + return pdp11_bad_block (uptr, drv_tab[GET_DTYPE (uptr->flags)].sect, RP_NUMWD); +return sim_messagef (SCPE_ARG, "%s: %s disk drives did not have a DEC Standard 144 bad block table\n", + sim_uname (uptr), drv_tab[GET_DTYPE (uptr->flags)].name); } /* Boot routine */ @@ -1478,7 +1502,7 @@ fprintf (st, "RP04/05/06/07, RM02/03/05/80 Disk Pack Drives (RP)\n\n"); fprintf (st, "The RP controller implements the Massbus family of large disk drives. RP\n"); fprintf (st, "options include the ability to set units write enabled or write locked, to\n"); fprintf (st, "set the drive type to one of six disk types or autosize, and to write a DEC\n"); -fprintf (st, "standard 044 compliant bad block table on the last track.\n\n"); +fprintf (st, "standard 144 compliant bad block table on the last track.\n\n"); fprint_set_help (st, dptr); fprint_show_help (st, dptr); fprintf (st, "\nThe type options can be used only when a unit is not attached to a file.\n"); diff --git a/doc/pdp11_doc.doc b/doc/pdp11_doc.doc index 950bdbcf..8bd4e79f 100644 Binary files a/doc/pdp11_doc.doc and b/doc/pdp11_doc.doc differ diff --git a/doc/vax780_doc.doc b/doc/vax780_doc.doc index e3f0cca2..525840de 100644 Binary files a/doc/vax780_doc.doc and b/doc/vax780_doc.doc differ