From 49b6e52d48527dc47ef88bf0e957bee3d70a6e4e Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Fri, 11 Feb 2022 15:26:21 -0800 Subject: [PATCH] PDP11, VAX scsi systems: Migrate DEV_DISK devices using common autosize code --- PDP10/pdp10_rp.c | 28 ++++++++++++++-------------- PDP11/pdp11_hk.c | 27 +++++++++++++-------------- PDP11/pdp11_rk.c | 3 +-- PDP11/pdp11_rl.c | 23 +++++++++-------------- PDP11/pdp11_rq.c | 3 +-- VAX/vax4xx_rd.c | 3 +-- sim_disk.h | 4 +++- sim_scsi.h | 2 +- 8 files changed, 43 insertions(+), 50 deletions(-) diff --git a/PDP10/pdp10_rp.c b/PDP10/pdp10_rp.c index 85c19404..68031b27 100644 --- a/PDP10/pdp10_rp.c +++ b/PDP10/pdp10_rp.c @@ -87,11 +87,11 @@ #define UNIT_V_DTYPE (DKUF_V_UF + 0) /* disk type */ #define UNIT_W_DTYPE 3 /* 3b disk type */ #define UNIT_M_DTYPE 7 -#define UNIT_V_AUTO (UNIT_V_DTYPE + UNIT_W_DTYPE) /* autosize */ -#define UNIT_V_UTS (UNIT_V_AUTO + 1) /* Up to speed */ +#define UNIT_V_UTS (UNIT_V_DTYPE + 1) /* Up to speed */ +#define UNIT_V_NOAUTO DKUF_V_NOAUTOSIZE /* noautosize */ #define UNIT_UTS (1u << UNIT_V_UTS) #define UNIT_DTYPE (UNIT_M_DTYPE << UNIT_V_DTYPE) -#define UNIT_AUTO (1 << UNIT_V_AUTO) +#define UNIT_NOAUTO (1 << UNIT_V_NOAUTO) #define GET_DTYPE(x) (((x) >> UNIT_V_DTYPE) & UNIT_M_DTYPE) /* Parameters in the unit descriptor */ @@ -395,21 +395,21 @@ DIB rp_dib = { }; UNIT rp_unit[] = { - { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+(RP06_DTYPE << UNIT_V_DTYPE), RP06_SIZE) }, - { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+(RP06_DTYPE << UNIT_V_DTYPE), RP06_SIZE) }, - { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+(RP06_DTYPE << UNIT_V_DTYPE), RP06_SIZE) }, - { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+(RP06_DTYPE << UNIT_V_DTYPE), RP06_SIZE) }, - { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+(RP06_DTYPE << UNIT_V_DTYPE), RP06_SIZE) }, - { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+(RP06_DTYPE << UNIT_V_DTYPE), RP06_SIZE) }, - { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+(RP06_DTYPE << UNIT_V_DTYPE), RP06_SIZE) }, - { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&rp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+(RP06_DTYPE << UNIT_V_DTYPE), RP06_SIZE) } }; @@ -464,9 +464,9 @@ MTAB rp_mod[] = { &rp_set_type, NULL, NULL, "Set RP07 Disk Type" }, { MTAB_XTD|MTAB_VUN, 0, "TYPE", NULL, NULL, &rp_show_type, NULL, "Display device type" }, - { UNIT_AUTO, UNIT_AUTO, "autosize", "AUTOSIZE", + { UNIT_NOAUTO, 0, "autosize", "AUTOSIZE", NULL, NULL, NULL, "Set type based on file size at attach" }, - { UNIT_AUTO, 0, "noautosize", "NOAUTOSIZE", + { UNIT_NOAUTO, UNIT_NOAUTO, "noautosize", "NOAUTOSIZE", NULL, NULL, NULL, "Disable disk autosize on attach" }, { MTAB_XTD|MTAB_VUN|MTAB_VALR, 0, "FORMAT", "FORMAT={AUTO|SIMH|VHD|RAW}", &sim_disk_set_fmt, &sim_disk_show_fmt, NULL, "Display disk format" }, @@ -1152,7 +1152,7 @@ static const char *drives[] = {"RM03", "RP04", "RM80", "RP06", "RM05", "RP07", N uptr->capac = drv_tab[GET_DTYPE (uptr->flags)].size; r = sim_disk_attach_ex (uptr, cptr, RP_NUMWD * sizeof (d10), sizeof (d10), TRUE, DBG_DSK, drv_tab[GET_DTYPE (uptr->flags)].name, - 0, 0, (uptr->flags & UNIT_AUTO) ? drives : NULL); + 0, 0, (uptr->flags & UNIT_NOAUTO) ? NULL : drives); if (r != SCPE_OK) return r; sim_cancel (uptr); diff --git a/PDP11/pdp11_hk.c b/PDP11/pdp11_hk.c index bd60eded..42131348 100644 --- a/PDP11/pdp11_hk.c +++ b/PDP11/pdp11_hk.c @@ -99,14 +99,13 @@ static struct drvtyp drv_tab[] = { /* Flags in the unit flags word */ #define UNIT_V_DTYPE (DKUF_V_UF + 0) /* disk type */ -#define UNIT_V_AUTO (UNIT_V_DTYPE + 1) /* autosize */ -#define UNIT_V_DUMMY (UNIT_V_AUTO + 1) /* dummy flag */ +#define UNIT_V_DUMMY (UNIT_V_DTYPE + 1) /* dummy flag */ #define UNIT_DTYPE (1 << UNIT_V_DTYPE) #define UNIT_RK06 (0 << UNIT_V_DTYPE) #define UNIT_RK07 (1 << UNIT_V_DTYPE) -#define UNIT_AUTO (1 << UNIT_V_AUTO) #define UNIT_DUMMY (1 << UNIT_V_DUMMY) #define GET_DTYPE(x) (((x) >> UNIT_V_DTYPE) & 1) +#define UNIT_NOAUTO DKUF_NOAUTOSIZE /* Parameters in the unit descriptor */ @@ -603,21 +602,21 @@ DIB hk_dib = { }; UNIT hk_unit[] = { - { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+UNIT_RK06, RK06_SIZE) }, - { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+UNIT_RK06, RK06_SIZE) }, - { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+UNIT_RK06, RK06_SIZE) }, - { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+UNIT_RK06, RK06_SIZE) }, - { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+UNIT_RK06, RK06_SIZE) }, - { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+UNIT_RK06, RK06_SIZE) }, - { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+UNIT_RK06, RK06_SIZE) }, - { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_AUTO+ + { UDATA (&hk_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ UNIT_ROABLE+UNIT_RK06, RK06_SIZE) } }; @@ -673,9 +672,9 @@ MTAB hk_mod[] = { &hk_set_type, NULL, NULL, "Set RK07 Disk Type" }, { MTAB_XTD|MTAB_VUN, 0, "TYPE", NULL, NULL, &hk_show_type, NULL, "Display device type" }, - { UNIT_AUTO, UNIT_AUTO, "autosize", "AUTOSIZE", + { UNIT_NOAUTO, 0, "autosize", "AUTOSIZE", NULL, NULL, NULL, "Set type based on file size at attach" }, - { UNIT_AUTO, 0, "noautosize", "NOAUTOSIZE", + { UNIT_NOAUTO, UNIT_NOAUTO, "noautosize", "NOAUTOSIZE", NULL, NULL, NULL, "Disable disk autosize on attach" }, { MTAB_XTD|MTAB_VUN|MTAB_VALR, 0, "FORMAT", "FORMAT={AUTO|SIMH|VHD|RAW}", &sim_disk_set_fmt, &sim_disk_show_fmt, NULL, "Set/Display disk format" }, @@ -1510,7 +1509,7 @@ uptr->capac = HK_SIZE (uptr); r = sim_disk_attach_ex (uptr, cptr, HK_NUMWD * sizeof (uint16), sizeof (uint16), TRUE, 0, (uptr->capac == RK06_SIZE) ? "RK06" : "RK07", HK_NUMSC, 0, - (uptr->flags & UNIT_AUTO) ? drives : NULL); + (uptr->flags & UNIT_NOAUTO) ? NULL : drives); if (r != SCPE_OK) /* error? */ return r; drv = (uint32) (uptr - hk_dev.units); /* get drv number */ diff --git a/PDP11/pdp11_rk.c b/PDP11/pdp11_rk.c index 111fae48..8d8db493 100644 --- a/PDP11/pdp11_rk.c +++ b/PDP11/pdp11_rk.c @@ -129,10 +129,9 @@ static struct drvtyp drv_tab[] = { /* Flags in the unit flags word */ #define UNIT_V_SWLK (DKUF_V_UF + 0) /* swre write lock */ -#define UNIT_V_NOAUTO (UNIT_V_SWLK + 1) /* autosize */ #define UNIT_HWLK UNIT_WPRT #define UNIT_SWLK (1u << UNIT_V_SWLK) -#define UNIT_NOAUTO (1u << UNIT_V_NOAUTO) +#define UNIT_NOAUTO DKUF_NOAUTOSIZE /* autosize disabled */ #define GET_DTYPE(x) (0) /* Parameters in the unit descriptor */ diff --git a/PDP11/pdp11_rl.c b/PDP11/pdp11_rl.c index d3b722b9..a76592cc 100644 --- a/PDP11/pdp11_rl.c +++ b/PDP11/pdp11_rl.c @@ -133,15 +133,14 @@ static struct drvtyp drv_tab[] = { /* Flags in the unit flags word */ #define UNIT_V_RL02 (DKUF_V_UF + 0) /* RL01 vs RL02 */ -#define UNIT_V_AUTO (UNIT_V_RL02 + 1) /* autosize enable */ -#define UNIT_V_DUMMY (UNIT_V_AUTO + 1) /* dummy flag, for SET BADBLOCK */ +#define UNIT_V_DUMMY (UNIT_V_RL02 + 1) /* dummy flag, for SET BADBLOCK */ #define UNIT_V_OFFL (UNIT_V_DUMMY + 1) /* unit off line */ #define UNIT_V_BRUSH (UNIT_V_OFFL + 1) /* unit has brushes */ #define UNIT_BRUSH (1u << UNIT_V_BRUSH) #define UNIT_OFFL (1u << UNIT_V_OFFL) #define UNIT_DUMMY (1u << UNIT_V_DUMMY) #define UNIT_RL02 (1u << UNIT_V_RL02) -#define UNIT_AUTO (1u << UNIT_V_AUTO) +#define UNIT_NOAUTO DKUF_NOAUTOSIZE /* autosize disable */ #define GET_DTYPE(x) (((x) >> UNIT_V_RL02) & 1) /* Parameters in the unit descriptor */ @@ -313,14 +312,10 @@ static DIB rl_dib = { 1, IVCL (RL), VEC_AUTO, { NULL }, IOLN_RL }; static UNIT rl_unit[] = { - { UDATA (&rl_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ - UNIT_ROABLE+UNIT_AUTO, RL01_SIZE) }, - { UDATA (&rl_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ - UNIT_ROABLE+UNIT_AUTO, RL01_SIZE) }, - { UDATA (&rl_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ - UNIT_ROABLE+UNIT_AUTO, RL01_SIZE) }, - { UDATA (&rl_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ - UNIT_ROABLE+UNIT_AUTO, RL01_SIZE) } + { UDATA (&rl_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_ROABLE, RL01_SIZE) }, + { UDATA (&rl_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_ROABLE, RL01_SIZE) }, + { UDATA (&rl_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_ROABLE, RL01_SIZE) }, + { UDATA (&rl_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_ROABLE, RL01_SIZE) } }; static const REG rl_reg[] = { @@ -383,9 +378,9 @@ static const MTAB rl_mod[] = { &rl_set_type, NULL, NULL, "Set RL02 Disk Type" }, { MTAB_XTD|MTAB_VUN, 0, "TYPE", NULL, NULL, &rl_show_type, NULL, "Display device type" }, - { UNIT_AUTO, UNIT_AUTO, "autosize", "AUTOSIZE", + { UNIT_NOAUTO, 0, "autosize", "AUTOSIZE", NULL, NULL, NULL, "Set type based on file size at attach" }, - { UNIT_AUTO, 0, "noautosize", "NOAUTOSIZE", + { UNIT_NOAUTO, UNIT_NOAUTO, "noautosize", "NOAUTOSIZE", NULL, NULL, NULL, "Disable disk autosize on attach" }, { MTAB_XTD|MTAB_VUN|MTAB_VALR, 0, "FORMAT", "FORMAT={AUTO|SIMH|VHD|RAW}", &sim_disk_set_fmt, &sim_disk_show_fmt, NULL, "Set/Display disk format" }, @@ -1033,7 +1028,7 @@ uptr->capac = (uptr->flags & UNIT_RL02)? RL02_SIZE: RL01_SIZE; r = sim_disk_attach_ex (uptr, cptr, RL_NUMWD * sizeof (uint16), sizeof (uint16), TRUE, 0, (uptr->capac == RL02_SIZE) ? "RL02" : "RL01", RL_NUMSC, 0, - (uptr->flags & UNIT_AUTO) ? drives : NULL); + (uptr->flags & UNIT_NOAUTO) ? NULL : drives); if (r != SCPE_OK) /* error? */ return r; /* diff --git a/PDP11/pdp11_rq.c b/PDP11/pdp11_rq.c index a7c9c425..9e75a992 100644 --- a/PDP11/pdp11_rq.c +++ b/PDP11/pdp11_rq.c @@ -160,10 +160,9 @@ extern int32 MMR2; #define UNIT_V_DTYPE (UNIT_V_ATP + 1) /* drive type */ #define UNIT_W_DTYPE 5 /* 5b drive type encode */ #define UNIT_M_DTYPE ((1u << UNIT_W_DTYPE) - 1) -#define UNIT_V_NOAUTO (UNIT_V_DTYPE + UNIT_W_DTYPE) /* noautosize */ #define UNIT_ONL (1 << UNIT_V_ONL) #define UNIT_ATP (1 << UNIT_V_ATP) -#define UNIT_NOAUTO (1 << UNIT_V_NOAUTO) +#define UNIT_NOAUTO DKUF_NOAUTOSIZE /* noautosize */ #define UNIT_DTYPE (UNIT_M_DTYPE << UNIT_V_DTYPE) #define GET_DTYPE(x) (((x) >> UNIT_V_DTYPE) & UNIT_M_DTYPE) #define cpkt us9 /* current packet */ diff --git a/VAX/vax4xx_rd.c b/VAX/vax4xx_rd.c index d855e4d2..f84d5ad6 100644 --- a/VAX/vax4xx_rd.c +++ b/VAX/vax4xx_rd.c @@ -229,9 +229,8 @@ #define UNIT_V_DTYPE (DKUF_V_UF + 0) /* drive type */ #define UNIT_W_DTYPE 3 /* 3b drive type encode */ #define UNIT_M_DTYPE ((1u << UNIT_W_DTYPE) - 1) -#define UNIT_V_NOAUTO (UNIT_V_DTYPE + UNIT_W_DTYPE) /* noautosize */ #define UNIT_DTYPE (UNIT_M_DTYPE << UNIT_V_DTYPE) -#define UNIT_NOAUTO (1 << UNIT_V_NOAUTO) +#define UNIT_NOAUTO DKUF_NOAUTOSIZE struct drvtyp { int32 sect; /* sectors */ diff --git a/sim_disk.h b/sim_disk.h index 5b265dd8..78a97c11 100644 --- a/sim_disk.h +++ b/sim_disk.h @@ -48,10 +48,12 @@ typedef uint32 t_lba; /* disk logical block ad #define DKUF_F_STD 1 /* SIMH format */ #define DKUF_F_RAW 2 /* Raw Physical Disk Access */ #define DKUF_F_VHD 3 /* VHD format */ -#define DKUF_V_UF (DKUF_V_FMT + DKUF_W_FMT) +#define DKUF_V_NOAUTOSIZE (DKUF_V_FMT + DKUF_W_FMT) /* Don't Autosize disk option */ +#define DKUF_V_UF (DKUF_V_NOAUTOSIZE + 1) #define DKUF_WLK UNIT_WLK #define DKUF_FMT (DKUF_M_FMT << DKUF_V_FMT) #define DKUF_WRP (DKUF_WLK | UNIT_RO) +#define DKUF_NOAUTOSIZE (1 << DKUF_V_NOAUTOSIZE) #define DK_F_STD (DKUF_F_STD << DKUF_V_FMT) #define DK_F_RAW (DKUF_F_RAW << DKUF_V_FMT) diff --git a/sim_scsi.h b/sim_scsi.h index 8dff7579..21eb021b 100644 --- a/sim_scsi.h +++ b/sim_scsi.h @@ -70,7 +70,7 @@ #define SCSI_V_NOAUTO ((DKUF_V_UF > MTUF_V_UF) ? DKUF_V_UF : MTUF_V_UF)/* noautosize */ #define SCSI_V_UF (SCSI_V_NOAUTO + 1) #define SCSI_WLK (UNIT_WLK|UNIT_RO) /* hwre write lock */ -#define SCSI_NOAUTO (1 << SCSI_V_NOAUTO) +#define SCSI_NOAUTO DKUF_NOAUTOSIZE struct scsi_dev_t {