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.