To (partially) answer my own question, there is some info in the NETBSD rd
driver. (rd.h and rd.c)
I guess no one has tried coding up a SS-80 or CS-80 drive simulator yet..
rd.c
/*
* Misc. HW description, indexed by sc_type.
* Used for mapping 256-byte sectors for 512-byte sectors
*/
const struct rdidentinfo {
u_int16_t ri_hwid; /* 2 byte HW id */
u_int16_t ri_maxunum; /* maximum allowed unit number */
char *ri_desc; /* drive type description */
int ri_nbpt; /* DEV_BSIZE blocks per track */
int ri_ntpc; /* tracks per cylinder */
int ri_ncyl; /* cylinders per unit */
int ri_nblocks; /* DEV_BSIZE blocks on disk */
} rdidentinfo[] = {
{ RD7946AID, 0, "7945A", NRD7945ABPT,
NRD7945ATRK, 968, 108416 },
{ RD9134DID, 1, "9134D", NRD9134DBPT,
NRD9134DTRK, 303, 29088 },
{ RD9134LID, 1, "9122S", NRD9122SBPT,
NRD9122STRK, 77, 1232 },
{ RD7912PID, 0, "7912P", NRD7912PBPT,
NRD7912PTRK, 572, 128128 },
{ RD7914PID, 0, "7914P", NRD7914PBPT,
NRD7914PTRK, 1152, 258048 },
{ RD7958AID, 0, "7958A", NRD7958ABPT,
NRD7958ATRK, 1013, 255276 },
{ RD7957AID, 0, "7957A", NRD7957ABPT,
NRD7957ATRK, 1036, 159544 },
{ RD7933HID, 0, "7933H", NRD7933HBPT,
NRD7933HTRK, 1321, 789958 },
{ RD9134LID, 1, "9134L", NRD9134LBPT,
NRD9134LTRK, 973, 77840 },
{ RD7936HID, 0, "7936H", NRD7936HBPT,
NRD7936HTRK, 698, 600978 },
{ RD7937HID, 0, "7937H", NRD7937HBPT,
NRD7937HTRK, 698, 1116102 },
{ RD7914CTID, 0, "7914CT", NRD7914PBPT,
NRD7914PTRK, 1152, 258048 },
{ RD7946AID, 0, "7946A", NRD7945ABPT,
NRD7945ATRK, 968, 108416 },
{ RD9134LID, 1, "9122D", NRD9122SBPT,
NRD9122STRK, 77, 1232 },
{ RD7957BID, 0, "7957B", NRD7957BBPT,
NRD7957BTRK, 1269, 159894 },
{ RD7958BID, 0, "7958B", NRD7958BBPT,
NRD7958BTRK, 786, 297108 },
{ RD7959BID, 0, "7959B", NRD7959BBPT,
NRD7959BTRK, 1572, 594216 },
{ RD2200AID, 0, "2200A", NRD2200ABPT,
NRD2200ATRK, 1449, 654948 },
{ RD2203AID, 0, "2203A", NRD2203ABPT,
NRD2203ATRK, 1449, 1309896 }
};
rd.h/* HW ids */
#define RD7946AID 0x220 /* also 7945A */
#define RD9134DID 0x221 /* also 9122S */
#define RD9134LID 0x222 /* also 9122D */
#define RD7912PID 0x209
#define RD7914CTID 0x20A
#define RD7914PID 0x20B
#define RD7958AID 0x22B
#define RD7957AID 0x22A
#define RD7933HID 0x212
#define RD7936HID 0x213 /* just guessing -- as of yet unknown */
#define RD7937HID 0x214
#define RD7957BID 0x22C /* another guess based on 7958B */
#define RD7958BID 0x22D
#define RD7959BID 0x22E /* another guess based on 7958B */
#define RD2200AID 0x22F
#define RD2203AID 0x230 /* yet another guess */
/* SW ids -- indicies into rdidentinfo, order is arbitrary */
#define RD7945A 0
#define RD9134D 1
#define RD9122S 2
#define RD7912P 3
#define RD7914P 4
#define RD7958A 5
#define RD7957A 6
#define RD7933H 7
#define RD9134L 8
#define RD7936H 9
#define RD7937H 10
#define RD7914CT 11
#define RD7946A 12
#define RD9122D 13
#define RD7957B 14
#define RD7958B 15
#define RD7959B 16
#define NRD7945ABPT 16
#define NRD7945ATRK 7
#define NRD9134DBPT 16
#define NRD9134DTRK 6
#define NRD9122SBPT 8
#define NRD9122STRK 2
#define NRD7912PBPT 32
#define NRD7912PTRK 7
#define NRD7914PBPT 32
#define NRD7914PTRK 7
#define NRD7933HBPT 46
#define NRD7933HTRK 13
#define NRD9134LBPT 16
#define NRD9134LTRK 5
/*
* Several HP drives have an odd number of 256 byte sectors per track.
* This makes it rather difficult to break them into 512 and 1024 byte blocks.
* So...we just do like HPUX and don't bother to respect hardware track/head
* boundries -- we just mold the disk so that we use the entire capacity.
* HPUX also sometimes doesn't abide by cylinder boundries, we attempt to
* whenever possible.
*
* DISK REAL (256 BPS) HPUX (1024 BPS) BSD (512 BPS)
* SPT x HD x CYL SPT x HD x CYL SPT x HD x CYL
* ----- --------------- --------------- --------------
* 7936: 123 x 7 x 1396 25 x 7 x 1716 123 x 7 x 698
* 7937: 123 x 13 x 1396 25 x 16 x 1395 123 x 13 x 698
*
* 7957A: 63 x 5 x 1013 11 x 7 x 1036 22 x 7 x 1036
* 7958A: 63 x 8 x 1013 21 x 6 x 1013 36 x 7 x 1013
*
* 7957B: 63 x 4 x 1269 9 x 7 x 1269 18 x 7 x 1269
* 7958B: 63 x 6 x 1572 21 x 9 x 786 42 x 9 x 786
* 7959B: 63 x 12 x 1572 21 x 9 x 1572 42 x 9 x 1572
*
* 2200A: 113 x 8 x 1449 113 x 2 x 1449 113 x 4 x 1449
* 2203A: 113 x 16 x 1449 113 x 4 x 1449 113 x 8 x 1449
*/
#define NRD7936HBPT 123
#define NRD7936HTRK 7
#define NRD7937HBPT 123
#define NRD7937HTRK 13
#define NRD7957ABPT 22
#define NRD7957ATRK 7
#define NRD7958ABPT 36
#define NRD7958ATRK 7
#define NRD7957BBPT 18
#define NRD7957BTRK 7
#define NRD7958BBPT 42
#define NRD7958BTRK 9
#define NRD7959BBPT 42
#define NRD7959BTRK 9
#define NRD2200ABPT 113
#define NRD2200ATRK 4
#define NRD2203ABPT 113
#define NRD2203ATRK 8