From 066e192db295584ce092b6f34b8e74b86a382e9b Mon Sep 17 00:00:00 2001 From: Timothe Litt Date: Mon, 8 Jul 2013 18:46:52 -0400 Subject: [PATCH] KDP infrastructure Add # units/devices to show iospace. For the devices that use units to represent multiple CSR allocations, that helps make sense of the table. Correct the KDP and DMC autoconfigure table for the 11/VAX. Correct the DMC device entries in pdp11_sys to match Mark's versions. --- PDP10/pdp10_ksio.c | 6 +++--- PDP11/pdp11_io_lib.c | 20 +++++++++++++++----- PDP11/pdp11_sys.c | 7 ++----- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/PDP10/pdp10_ksio.c b/PDP10/pdp10_ksio.c index 019aa99d..a61b3a7a 100644 --- a/PDP10/pdp10_ksio.c +++ b/PDP10/pdp10_ksio.c @@ -1129,8 +1129,8 @@ while (done == 0) { /* sort ascending */ } } } /* end while */ -fprintf (st, " Address Vector BR Device\n" - "----------------- -------- -- ------\n"); +fprintf (st, " Address Vector BR # Device\n" + "----------------- -------- -- -- ------\n"); for (i = 0; dib_tab[i] != NULL; i++) { /* print table */ for (j = 0, dptr = NULL; sim_devices[j] != NULL; j++) { if (((DIB*) sim_devices[j]->ctxt) == dib_tab[i]) { @@ -1156,7 +1156,7 @@ for (i = 0; dib_tab[i] != NULL; i++) { /* print table */ (dib_tab[i]->vloc<=19)? 5: 4); else fprintf (st, " "); - fprintf (st, " %s\n", dptr? sim_dname (dptr): "CPU"); + fprintf (st, " %2u %s\n", (dptr? dptr->numunits: 1), dptr? sim_dname (dptr): "CPU"); } return SCPE_OK; } diff --git a/PDP11/pdp11_io_lib.c b/PDP11/pdp11_io_lib.c index 2f3ca19d..b9395ca2 100644 --- a/PDP11/pdp11_io_lib.c +++ b/PDP11/pdp11_io_lib.c @@ -298,7 +298,7 @@ t_stat show_iospace (FILE *st, UNIT *uptr, int32 val, void *desc) uint32 i, j; DEVICE *dptr; DIB *dibp; -uint32 maxaddr, maxname; +uint32 maxaddr, maxname, maxdev; int32 maxvec, vecwid; char valbuf[40]; @@ -308,6 +308,7 @@ if (build_dib_tab ()) /* build IO page */ maxaddr = 0; maxvec = 0; maxname = 0; +maxdev = 1; for (i = 0, dibp = NULL; i < (IOPAGESIZE >> 1); i++) { /* loop thru entries */ size_t l; @@ -326,6 +327,9 @@ for (i = 0, dibp = NULL; i < (IOPAGESIZE >> 1); i++) { /* loop thru entries */ l = strlen (dptr? sim_dname (dptr): "CPU"); if (l>maxname) maxname = (int32)l; + j = (dptr? dptr->numunits: 1); + if (j > maxdev) + maxdev = j; } /* end if */ } /* end for i */ maxaddr = fprint_val (NULL, (t_value) dibp->ba, DEV_RDX, 32, PV_LEFT); @@ -333,6 +337,8 @@ sprintf (valbuf, "%03o", maxvec); vecwid = maxvec = (int32) strlen (valbuf); if (vecwid < 3) vecwid = 3; +sprintf (valbuf, "%u", maxdev); +maxdev = (uint32)strlen (valbuf); j = strlen ("Address"); i = (maxaddr*2)+3+1; @@ -352,7 +358,7 @@ else maxvec = i+j; fprintf (st, " %*.*sVector%*.*s", i/2, i/2, " ", (i/2)+i%2, (i/2)+i%2, " "); -fprintf (st, " BR Device\n"); +fprintf (st, " BR %*.*s# Device\n", (maxdev -1), (maxdev-1)); for (i = 0; i < maxaddr; i++) fputc ('-', st); fprintf (st, " "); @@ -360,6 +366,10 @@ for (i = 0; i < (uint32)maxvec; i++) fputc ('-', st); fprintf (st, " -- "); +for (i=0; i < maxdev; i++) { + fputc ('-', st); +} +fputc (' ', st); i = strlen ("Device"); if (maxname < i) @@ -397,7 +407,7 @@ for (i = 0, dibp = NULL; i < (IOPAGESIZE >> 1); i++) { /* loop thru entries */ fprintf (st, " %2u", dibp->vloc/32); else fprintf (st, " "); - fprintf (st, " %s\n", dptr? sim_dname (dptr): "CPU"); + fprintf (st, " %*u %s\n", maxdev, (dptr? dptr->numunits: 1), dptr? sim_dname (dptr): "CPU"); } /* end if */ } /* end for i */ return SCPE_OK; @@ -526,10 +536,10 @@ AUTO_CON auto_tab[] = {/*c #v am vm fxa fxv */ { { NULL }, 1, 3, 0, 8, {015000, 015040, 015100, 015140, }}, /* DV11 */ { { NULL }, 1, 2, 8, 8 }, /* LK11A */ - { { "DMC0", "DMC1", "DMC2", "DMC3" }, + { { "DMC" }, 1, 2, 8, 8 }, /* DMC11 */ { { "DZ" }, 1, 2, 8, 8 }, /* DZ11 */ - { { "KMC" }, 1, 2, 8, 8 }, /* KMC11 */ + { { "KDP" }, 1, 2, 8, 8 }, /* KMC11 */ { { NULL }, 1, 2, 8, 8 }, /* LPP11 */ { { NULL }, 1, 2, 8, 8 }, /* VMV21 */ { { NULL }, 1, 2, 16, 8 }, /* VMV31 */ diff --git a/PDP11/pdp11_sys.c b/PDP11/pdp11_sys.c index 44dc1da3..6d3ae09a 100644 --- a/PDP11/pdp11_sys.c +++ b/PDP11/pdp11_sys.c @@ -102,7 +102,7 @@ extern DEVICE xq_dev, xqb_dev; extern DEVICE xu_dev, xub_dev; extern DEVICE ke_dev; extern DEVICE kg_dev; -extern DEVICE dmc_dev[]; +extern DEVICE dmc_dev; extern DEVICE dup_dev; extern DEVICE dpv_dev; extern DEVICE kmc_dev; @@ -170,10 +170,7 @@ DEVICE *sim_devices[] = { &xub_dev, &ke_dev, &kg_dev, - &dmc_dev[0], - &dmc_dev[1], - &dmc_dev[2], - &dmc_dev[3], + &dmc_dev, &dup_dev, &dpv_dev, &kmc_dev,