From 926721d7c978ecf3623c86a838371412e0f9bc2d Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Tue, 19 Sep 2023 03:11:24 -1000 Subject: [PATCH] DISK: Add geometry values to SCSI DRVTYP initializer - Add geometry values to 3b2-700 SCSI drive types --- 3B2/3b2_scsi.h | 14 ++++++++++++++ sim_disk.c | 7 +++++-- sim_disk.h | 10 +++++----- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/3B2/3b2_scsi.h b/3B2/3b2_scsi.h index 2a3ffb80..147746c0 100644 --- a/3B2/3b2_scsi.h +++ b/3B2/3b2_scsi.h @@ -140,6 +140,9 @@ #define SD155_PQUAL 0x00 #define SD155_SCSI 1 #define SD155_BLK 512 +#define SD155_SECT 35 +#define SD155_SURF 9 +#define SD155_CYL 964 #define SD155_LBN 303660 #define SD155_TEXT "Set 155MB Disk Type" #define SD155_MANU "AT&T" @@ -150,6 +153,9 @@ #define SD300_PQUAL 0x00 #define SD300_SCSI 1 #define SD300_BLK 512 +#define SD300_SECT 43 +#define SD300_SURF 9 +#define SD300_CYL 1515 #define SD300_LBN 585937 #define SD300_TEXT "Set 300MB Disk Type" #define SD300_MANU "AT&T" @@ -160,6 +166,9 @@ #define SD327_PQUAL 0x00 #define SD327_SCSI 1 #define SD327_BLK 512 +#define SD327_SECT 46 +#define SD327_SURF 9 +#define SD327_CYL 1547 #define SD327_LBN 640458 #define SD327_TEXT "Set 327MB Disk Type" #define SD327_MANU "AT&T" @@ -170,6 +179,9 @@ #define SD630_PQUAL 0x00 #define SD630_SCSI 1 #define SD630_BLK 512 +#define SD630_SECT 56 +#define SD630_SURF 16 +#define SD630_CYL 1447 #define SD630_LBN 1296512 #define SD630_TEXT "Set 630MB Disk Type" #define SD630_MANU "AT&T" @@ -188,12 +200,14 @@ #define HA_DISK(d) { DRV_SCSI( \ SCSI_DISK, d##_PQUAL, d##_SCSI, FALSE, d##_BLK, \ + d##_SECT, d##_SURF, d##_CYL, \ d##_LBN, d##_MANU, d##_DESC, d##_REV, #d, 0, \ d##_TEXT) \ } #define HA_TAPE(d) { DRV_SCSI( \ SCSI_TAPE, d##_PQUAL, d##_SCSI, TRUE, d##_BLK, \ + 0, 0, 0, \ d##_LBN, d##_MANU, d##_DESC, d##_REV, #d, 0, \ d##_TEXT) \ } diff --git a/sim_disk.c b/sim_disk.c index 02ba913c..9ed4b1e0 100644 --- a/sim_disk.c +++ b/sim_disk.c @@ -7412,7 +7412,10 @@ for (i = 0; NULL != (dptr = sim_devices[i]); i++) { if (drive[drives].name_alias != NULL) ++aliases; /* Validate Geometry parameters */ - if (((drive[drives].size & DRVFL_SETSIZE) == 0) && + if (((drive[drives].flags & DRVFL_SETSIZE) == 0) && + ((DRVFL_GET_IFTYPE(&drive[drives]) != DRVFL_TYPE_SCSI) || + (drive[drives].devtype != SCSI_TAPE)) && + ((drive[drives].flags & DRVFL_QICTAPE) == 0) && (drive[drives].size > (drive[drives].sect * drive[drives].surf * drive[drives].cyl))) { stat = sim_messagef (SCPE_IERR, "Device %s drive type %s has unreasonable geometry values:\n", dptr->name, drive[drives].name); @@ -8044,7 +8047,7 @@ fprintf (st, "%s", uptr->drvtyp->name); if ((uptr->flags & UNIT_ATT) != 0) { if (sim_disk_get_mediaid (uptr)) fprintf (st, ", MediaID=(%s)", sim_disk_decode_mediaid (sim_disk_get_mediaid (uptr))); - fprintf (st, "%ssectorspertrack=%u, heads=%u, cylinders=%u, sectorsize=%u", SEP, + fprintf (st, "%ssectors=%u, heads=%u, cylinders=%u, sectorsize=%u", SEP, uptr->drvtyp->sect, uptr->drvtyp->surf, uptr->drvtyp->cyl, uptr->drvtyp->sectsize); toks += 3; if (sim_switches & SWMASK ('D')) { diff --git a/sim_disk.h b/sim_disk.h index b9004cc5..e20bdb10 100644 --- a/sim_disk.h +++ b/sim_disk.h @@ -215,11 +215,11 @@ struct DRVTYP { #define DRVFL_QICTAPE (1u << DRVFL_V_QICTAPE) /* drive is a QIC (Quarter Inch Cartridge) tape */ /* DRVTYP Initializer for SCSI disk and/or tape */ -#define DRV_SCSI(typ, pq, ver, rmv, bsz, lbn, man, prd, rev, nm, gap, txt) \ - 46, 9, 1549, lbn, nm, bsz, \ - DRVFL_TYPE_SCSI | ((rmv == TRUE) ? DRVFL_RMV|DRVFL_QICTAPE : 0), \ - NULL, 0, 0, NULL, txt, \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +#define DRV_SCSI(typ, pq, ver, rmv, bsz, sect, surf, cyl, lbn, man, prd, rev, nm, gap, txt) \ + sect, surf, cyl, lbn, nm, bsz, \ + DRVFL_TYPE_SCSI | ((rmv == TRUE) ? DRVFL_RMV|DRVFL_QICTAPE : 0), \ + NULL, 0, 0, NULL, txt, \ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ typ, pq, ver, man, prd, rev, gap #define DRV_MINC 512 /* min cap LBNs */