1
0
mirror of https://github.com/simh/simh.git synced 2026-03-04 18:44:11 +00:00

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.
This commit is contained in:
Timothe Litt
2013-07-08 18:46:52 -04:00
parent 317efadcdc
commit 066e192db2
3 changed files with 20 additions and 13 deletions

View File

@@ -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;
}

View File

@@ -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 */

View File

@@ -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,