Skip to content

Commit d77084f

Browse files
committed
DISK: add RQDX1 model and make it default for MV1.
Now MV1 can boot Standalone Backup 4.0 from RX50. See issue open-simh#215, open-simh#271, open-simh#277.
1 parent 487ae4b commit d77084f

File tree

1 file changed

+31
-23
lines changed

1 file changed

+31
-23
lines changed

PDP11/pdp11_rq.c

+31-23
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,12 @@ extern int32 MMR2;
122122
#error "Assertion failure: RQ_NUMCT exceeds 4"
123123
#endif
124124

125+
#if defined (VAX_610)
126+
#define MICROVAX1 1
127+
#else
128+
#define MICROVAX1 0
129+
#endif
130+
125131
#include "pdp11_uqssp.h"
126132
#include "pdp11_mscp.h"
127133
#include "sim_disk.h"
@@ -137,13 +143,7 @@ extern int32 MMR2;
137143
#define RQ_SH_UN 010 /* show unit q's */
138144
#define RQ_SH_ALL 017 /* show all */
139145

140-
#define RQ_CLASS 1 /* RQ class */
141-
#define RQU_UQPM 6 /* UB port model */
142-
#define RQQ_UQPM 19 /* QB port model */
143-
#define RQ_UQPM (UNIBUS? RQU_UQPM: RQQ_UQPM)
144-
#define RQU_MODEL 6 /* UB MSCP ctrl model (UDA50A) */
145-
#define RQQ_MODEL 19 /* QB MSCP ctrl model (RQDX3) */
146-
#define RQ_MODEL (UNIBUS? RQU_MODEL: RQQ_MODEL)
146+
#define RQ_CLASS 1 /* RQ class: Mass storage controllers */
147147
#define RQ_HVER 1 /* hardware version */
148148
#define RQ_SVER 3 /* software version */
149149
#define RQ_DHTMO 60 /* def host timeout */
@@ -753,31 +753,35 @@ x RA73 70(+1) 21 2667+ 21 1 ? 3920490
753753

754754
// AFAIK the UNIBUS KLESI and QBUS KLESI used the same controller type ...
755755
#define KLESI_CTYPE 1 // RC25 controller (UNIBUS and QBUS both)
756-
#define KLESI_UQPM 1
757-
#define KLESI_MODEL 1
756+
#define KLESI_UQPM 1 // Mass_Storage_Control_Protocol_Ver_2.4.0_Jun92.txt Appendix C:
757+
#define KLESI_MODEL 1 // 1 | HSC50; 3 | RC25 integrated controller
758758

759759
#define RUX50_CTYPE 2 // UNIBUS RX50-only controller
760-
#define RUX50_UQPM 2
761-
#define RUX50_MODEL 2
760+
#define RUX50_UQPM 10
761+
#define RUX50_MODEL 10
762762

763763
#define UDA50_CTYPE 3 // UNIBUS SDI (RAxx) controller
764-
#define UDA50_UQPM 6
764+
#define UDA50_UQPM 6 // really type of UDA50A; UDA50 is 2
765765
#define UDA50_MODEL 6
766766

767-
#define RQDX3_CTYPE 4 // QBUS RX50/RDxx controller
767+
#define RQDX1_CTYPE 4 // QBUS RX50/RDxx controller,
768+
#define RQDX1_UQPM 7 // first version; RQDX2 has the same id
769+
#define RQDX1_MODEL 7
770+
771+
#define RQDX3_CTYPE 5 // QBUS RX50/RDxx controller
768772
#define RQDX3_UQPM 19
769773
#define RQDX3_MODEL 19
770774

771-
#define KDA50_CTYPE 5 // QBUS SDI (RAxx) controller
772-
#define KDA50_UQPM 13
775+
#define KDA50_CTYPE 6 // QBUS SDI (RAxx) controller
776+
#define KDA50_UQPM 13 // KDA50-Q
773777
#define KDA50_MODEL 13
774778

775-
#define KRQ50_CTYPE 6 // QBUS RRD40/50 CDROM controller
779+
#define KRQ50_CTYPE 7 // QBUS RRD40/50 CDROM controller
776780
#define KRQ50_UQPM 16
777781
#define KRQ50_MODEL 16
778782

779-
#define KRU50_CTYPE 7 // UNIBUS RRD40/50 CDROM controller
780-
#define KRU50_UQPM 26
783+
#define KRU50_CTYPE 8 // UNIBUS RRD40/50 CDROM controller
784+
#define KRU50_UQPM 26 // unassigned in appendix C
781785
#define KRU50_MODEL 26
782786

783787
struct drvtyp {
@@ -884,6 +888,7 @@ static struct ctlrtyp ctlr_tab[] = {
884888
RQ_CTLR (KLESI),
885889
RQ_CTLR (RUX50),
886890
RQ_CTLR (UDA50),
891+
RQ_CTLR (RQDX1),
887892
RQ_CTLR (RQDX3),
888893
RQ_CTLR (KDA50),
889894
RQ_CTLR (KRQ50),
@@ -1120,10 +1125,12 @@ MTAB rq_mod[] = {
11201125
NULL, &rq_show_ctrl, NULL, "Display all unit queues" },
11211126
{ MTAB_XTD|MTAB_VDV|MTAB_NMO, RQ_SH_ALL, "ALL", NULL,
11221127
NULL, &rq_show_ctrl, NULL, "Display complete controller state" },
1128+
{ MTAB_XTD|MTAB_VDV, RQDX1_CTYPE, NULL, "RQDX1",
1129+
&rq_set_ctype, NULL, NULL, "Set RQDX1/2 (QBUS RX50/RDnn) Controller Type" },
11231130
{ MTAB_XTD|MTAB_VDV, RQDX3_CTYPE, NULL, "RQDX3",
11241131
&rq_set_ctype, NULL, NULL, "Set RQDX3 (QBUS RX50/RDnn) Controller Type" },
11251132
{ MTAB_XTD|MTAB_VDV, UDA50_CTYPE, NULL, "UDA50",
1126-
&rq_set_ctype, NULL, NULL, "Set UDA50 (UNIBUS SDI RAnn) Controller Type" },
1133+
&rq_set_ctype, NULL, NULL, "Set UDA50A (UNIBUS SDI RAnn) Controller Type" },
11271134
{ MTAB_XTD|MTAB_VDV, KDA50_CTYPE, NULL, "KDA50",
11281135
&rq_set_ctype, NULL, NULL, "Set KDA50 (QBUS SDI RAnn) Controller Type" },
11291136
{ MTAB_XTD|MTAB_VDV, KRQ50_CTYPE, NULL, "KRQ50",
@@ -3100,7 +3107,8 @@ if (cidx < 0) /* not found??? */
31003107
cp = rq_ctxmap[cidx]; /* get context */
31013108
cp->cnum = cidx; /* init index */
31023109
if (cp->ctype == DEFAULT_CTYPE)
3103-
cp->ctype = (UNIBUS? UDA50_CTYPE : RQDX3_CTYPE);
3110+
cp->ctype = (UNIBUS ? UDA50_CTYPE :
3111+
MICROVAX1 ? RQDX1_CTYPE : RQDX3_CTYPE);
31043112

31053113
if (!plugs_inited ) {
31063114
#if !defined (VM_VAX)
@@ -3419,9 +3427,9 @@ fprintf (st, "UDA50 MSCP Disk Controller (%s)\n\n", dptr->name);
34193427
fprintf (st, "The simulator implements four MSCP disk controllers, RQ, RQB, RQC, RQD.\n");
34203428
fprintf (st, "Initially, RQB, RQC, and RQD are disabled. Each RQ controller simulates\n");
34213429
fprintf (st, "an MSCP disk controller with four drives. The MSCP controller type can be\n");
3422-
fprintf (st, "specified as one of RQDX3, UDA50, KDA50, KRQ50, KLESI or RUX50. RQ options\n");
3423-
fprintf (st, "include the ability to set units write enabled or write locked, and to set\n");
3424-
fprintf (st, "the drive type to one of many disk types:\n");
3430+
fprintf (st, "specified as one of RQDX1, RQDX3, UDA50, KDA50, KRQ50, KLESI or RUX50.\n");
3431+
fprintf (st, "RQ options include the ability to set units write enabled or write locked,\n");
3432+
fprintf (st, "and to set the drive type to one of many disk types:\n");
34253433
fprint_set_help (st, dptr);
34263434
fprintf (st, "set RQn RAUSER{=n} Set disk type to RA82 with n MB's\n");
34273435
fprintf (st, " (1MB is 1000000 bytes)\n");

0 commit comments

Comments
 (0)