MSCP Disks
This is a short guide on how to add more MSCP disks to the RQ device in Simh. Although the UDA50/KDA50 which Simh simulates can only physically support 4 drives, the driver does not enforce this restriction. The MSCP standard specifies a maximum of 256 drives per controller.
All the changes required are in pdp11_rq.c. Find the definition for RQ_NUMDR, which will be:
#define RQ_NUMDR 4 /* # drives */
Change this value to the desired number of drives (This will affect all 4 controllers: RQ, RQB, RQC and RQD). Next find the unit data structure for the first controller. This will look something like:
UNIT rq_unit[] = { { UDATA (&rq_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_ROABLE+ (RD54_DTYPE << UNIT_V_DTYPE), RQ_SIZE (RD54)) }, { UDATA (&rq_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_ROABLE+ (RD54_DTYPE << UNIT_V_DTYPE), RQ_SIZE (RD54)) }, { UDATA (&rq_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_ROABLE+ (RD54_DTYPE << UNIT_V_DTYPE), RQ_SIZE (RD54)) }, { UDATA (&rq_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+UNIT_ROABLE+ (RX50_DTYPE << UNIT_V_DTYPE), RQ_SIZE (RX50)) }, { UDATA (&rq_tmrsvc, UNIT_IDLE|UNIT_DIS, 0) }, { UDATA (&rq_quesvc, UNIT_DIS, 0) } };
As you can see the first 4 UDATA blocks correspond to the 4 drives for this controller. Add more of these blocks to match the number specified in RQ_NUMDR.Repeat the process for rqb_unit, rqc_unit and rqd_unit.