Addition of DUP11 simulation to all Unibus simulators (PDP11, PDP10, and all Unibus VAXen)

This commit is contained in:
Mark Pizzolato 2013-05-27 16:24:18 -07:00
parent f30d43209e
commit 89bd58a6fa
21 changed files with 1215 additions and 3 deletions

View file

@ -619,6 +619,7 @@ typedef struct pdp_dib DIB;
#define DZ_MUXES 4 /* max # of muxes */
#define DZ_LINES 8 /* lines per mux */
#define DUP_LINES 4 /* max # of DUP11's */
#define DIB_MAX 100 /* max DIBs */
#define DEV_V_UBUS (DEV_V_UF + 0) /* Unibus */
@ -706,6 +707,9 @@ typedef struct pdp_dib DIB;
#define INT_V_PTP 25
#define INT_V_LP20 26 /* LPT20 */
#define INT_V_CR 27 /* CD20 (CD11) */
#define INT_V_CR 27 /* CD20 (CD11) */
#define INT_V_DUPRX 28 /* DUP11 */
#define INT_V_DUPTX 29
#define INT_RP (1u << INT_V_RP)
#define INT_TU (1u << INT_V_TU)
@ -719,6 +723,8 @@ typedef struct pdp_dib DIB;
#define INT_PTP (1u << INT_V_PTP)
#define INT_LP20 (1u << INT_V_LP20)
#define INT_CR (1u << INT_V_CR)
#define INT_DUPRX (1u << INT_V_DUPRX)
#define INT_DUPTX (1u << INT_V_DUPTX)
#define IPL_RP 6 /* int levels */
#define IPL_TU 6
@ -728,6 +734,8 @@ typedef struct pdp_dib DIB;
#define IPL_DZRX 5
#define IPL_DZTX 5
#define IPL_RY 5
#define IPL_DUPRX 5
#define IPL_DUPTX 5
#define IPL_PTR 4
#define IPL_PTP 4
#define IPL_LP20 4

View file

@ -961,6 +961,8 @@ AUTO_CON auto_tab[] = {/*c #v am vm fxa fxv */
{0017550}, {0070} }, /* PC11 reader - fx CSR, fx VEC */
{ { "PTP" }, 1, 1, 0, 0,
{0017554}, {0074} }, /* PC11 punch - fx CSR, fx VEC */
{ { "DUP" }, 1, 2, 0, 0,
{0000100}, {0300} }, /* DUP11 sync lines - fx CSR, fx VEC */
#else
{ { "QBA" }, 1, 0, 0, 0,
{017500} }, /* doorbell - fx CSR, no VEC */

View file

@ -55,6 +55,7 @@ extern DEVICE dz_dev;
extern DEVICE ry_dev;
extern DEVICE cr_dev;
extern DEVICE lp20_dev;
extern DEVICE dup_dev;
extern UNIT cpu_unit;
extern REG cpu_reg[];
extern d10 *M;
@ -90,6 +91,7 @@ DEVICE *sim_devices[] = {
&rp_dev,
&tu_dev,
&dz_dev,
&dup_dev,
NULL
};

View file

@ -482,6 +482,7 @@ typedef struct {
#define VH_MUXES 4 /* max # of VH muxes */
#define DLX_LINES 16 /* max # of KL11/DL11's */
#define DCX_LINES 16 /* max # of DC11's */
#define DUP_LINES 8 /* max # of DUP11/DPV11's */
#define MT_MAXFR (1 << 16) /* magtape max rec */
#define AUTO_LNT 34 /* autoconfig ranks */
#define DIB_MAX 100 /* max DIBs */
@ -599,6 +600,8 @@ typedef struct pdp_dib DIB;
#define INT_V_RC 17
#define INT_V_DMCRX 18
#define INT_V_DMCTX 19
#define INT_V_DUPRX 20
#define INT_V_DUPTX 21
#define INT_V_PIR4 0 /* BR4 */
#define INT_V_TTI 1
@ -644,6 +647,8 @@ typedef struct pdp_dib DIB;
#define INT_RC (1u << INT_V_RC)
#define INT_DMCRX (1u << INT_V_DMCRX)
#define INT_DMCTX (1u << INT_V_DMCTX)
#define INT_DUPRX (1u << INT_V_DUPRX)
#define INT_DUPTX (1u << INT_V_DUPTX)
#define INT_PIR4 (1u << INT_V_PIR4)
#define INT_TTI (1u << INT_V_TTI)
#define INT_TTO (1u << INT_V_TTO)
@ -692,6 +697,8 @@ typedef struct pdp_dib DIB;
#define IPL_RC 5
#define IPL_DMCRX 5
#define IPL_DMCTX 5
#define IPL_DUPRX 5
#define IPL_DUPTX 5
#define IPL_PTR 4
#define IPL_PTP 4
#define IPL_TTI 4

1129
PDP11/pdp11_dup.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -440,14 +440,14 @@ AUTO_CON auto_tab[] = {/*c #v am vm fxa fxv */
{ { NULL }, 1, 2, 0, 8,
{012400} }, /* KW11W */
{ { NULL }, 1, 2, 8, 8 }, /* DU11 */
{ { NULL }, 1, 2, 8, 8 }, /* DUP11 */
{ { "DUP" }, 1, 2, 8, 8 }, /* DUP11 */
{ { NULL }, 1, 3, 0, 8,
{015000, 015040, 015100, 015140, }}, /* DV11 */
{ { NULL }, 1, 2, 8, 8 }, /* LK11A */
{ { "DMC0", "DMC1", "DMC2", "DMC3" },
1, 2, 8, 8 }, /* DMC11 */
{ { "DZ" }, 1, 2, 8, 8 }, /* DZ11 */
{ { NULL }, 1, 2, 8, 8 }, /* KMC11 */
{ { "KMC" }, 1, 2, 8, 8 }, /* KMC11 */
{ { NULL }, 1, 2, 8, 8 }, /* LPP11 */
{ { NULL }, 1, 2, 8, 8 }, /* VMV21 */
{ { NULL }, 1, 2, 16, 8 }, /* VMV31 */
@ -468,7 +468,7 @@ AUTO_CON auto_tab[] = {/*c #v am vm fxa fxv */
{ { NULL }, 1, 1, 8, 4,
{012410, 012410}, {0124} }, /* DR11B - fx CSRs,vec */
{ { "DMP" }, 1, 2, 8, 8 }, /* DMP11 */
{ { NULL }, 1, 2, 8, 8 }, /* DPV11 */
{ { "DPV" }, 1, 2, 8, 8 }, /* DPV11 */
{ { NULL }, 1, 2, 8, 8 }, /* ISB11 */
{ { NULL }, 1, 2, 16, 8 }, /* DMV11 */
{ { "XU", "XUB" }, 1, 1, 8, 4,

View file

@ -103,6 +103,8 @@ extern DEVICE xu_dev, xub_dev;
extern DEVICE ke_dev;
extern DEVICE kg_dev;
extern DEVICE dmc_dev[];
extern DEVICE dup_dev;
extern DEVICE dpv_dev;
extern UNIT cpu_unit;
extern REG cpu_reg[];
extern uint16 *M;
@ -171,6 +173,8 @@ DEVICE *sim_devices[] = {
&dmc_dev[1],
&dmc_dev[2],
&dmc_dev[3],
&dup_dev,
&dpv_dev,
NULL
};

View file

@ -205,6 +205,7 @@ extern t_stat cpu_show_memory (FILE* st, UNIT* uptr, int32 val, void* desc);
#define VH_MUXES 4 /* max # of DHQ muxes */
#define DLX_LINES 16 /* max # of KL11/DL11's */
#define DCX_LINES 16 /* max # of DC11's */
#define DUP_LINES 8 /* max # of DUP11's */
#define MT_MAXFR (1 << 16) /* magtape max rec */
#define DEV_V_UBUS (DEV_V_UF + 0) /* Unibus */
@ -256,6 +257,8 @@ typedef struct {
#define INT_V_XU 9
#define INT_V_DMCRX 10
#define INT_V_DMCTX 11
#define INT_V_DUPRX 12
#define INT_V_DUPTX 13
#define INT_V_LPT 0 /* BR4 */
#define INT_V_PTR 1
@ -282,6 +285,8 @@ typedef struct {
#define INT_CR (1u << INT_V_CR)
#define INT_DMCRX (1u << INT_V_DMCRX)
#define INT_DMCTX (1u << INT_V_DMCTX)
#define INT_DUPRX (1u << INT_V_DUPRX)
#define INT_DUPTX (1u << INT_V_DUPTX)
#define IPL_DZRX (0x15 - IPL_HMIN)
#define IPL_DZTX (0x15 - IPL_HMIN)
@ -301,6 +306,8 @@ typedef struct {
#define IPL_VHTX (0x14 - IPL_HMIN)
#define IPL_DMCRX (0x15 - IPL_HMIN)
#define IPL_DMCTX (0x15 - IPL_HMIN)
#define IPL_DUPRX (0x15 - IPL_HMIN)
#define IPL_DUPTX (0x15 - IPL_HMIN)
/* Device vectors */

View file

@ -53,6 +53,7 @@ extern DEVICE dz_dev;
extern DEVICE vh_dev;
extern DEVICE xu_dev, xub_dev;
extern DEVICE dmc_dev[];
extern DEVICE dup_dev;
extern UNIT cpu_unit;
extern void WriteB (uint32 pa, int32 val);
@ -88,6 +89,7 @@ DEVICE *sim_devices[] = {
&dmc_dev[1],
&dmc_dev[2],
&dmc_dev[3],
&dup_dev,
NULL
};

View file

@ -295,6 +295,8 @@ typedef struct {
#define INT_V_XU 8
#define INT_V_DMCRX 9
#define INT_V_DMCTX 10
#define INT_V_DUPRX 11
#define INT_V_DUPTX 12
#define INT_V_LPT 0 /* BR4 */
#define INT_V_PTR 1
@ -320,6 +322,8 @@ typedef struct {
#define INT_CR (1u << INT_V_CR)
#define INT_DMCRX (1u << INT_V_DMCRX)
#define INT_DMCTX (1u << INT_V_DMCTX)
#define INT_DUPRX (1u << INT_V_DUPRX)
#define INT_DUPTX (1u << INT_V_DUPTX)
#define IPL_DZRX (0x15 - IPL_HMIN)
#define IPL_DZTX (0x15 - IPL_HMIN)
@ -338,6 +342,8 @@ typedef struct {
#define IPL_VHTX (0x14 - IPL_HMIN)
#define IPL_DMCRX (0x15 - IPL_HMIN)
#define IPL_DMCTX (0x15 - IPL_HMIN)
#define IPL_DUPRX (0x15 - IPL_HMIN)
#define IPL_DUPTX (0x15 - IPL_HMIN)
/* Device vectors */

View file

@ -55,6 +55,7 @@ extern DEVICE dz_dev;
extern DEVICE vh_dev;
extern DEVICE xu_dev, xub_dev;
extern DEVICE dmc_dev[];
extern DEVICE dup_dev;
extern UNIT cpu_unit;
extern void WriteB (uint32 pa, int32 val);
@ -93,6 +94,7 @@ DEVICE *sim_devices[] = {
&dmc_dev[1],
&dmc_dev[2],
&dmc_dev[3],
&dup_dev,
NULL
};

View file

@ -247,6 +247,7 @@ extern t_stat cpu_show_memory (FILE* st, UNIT* uptr, int32 val, void* desc);
#define VH_MUXES 4 /* max # of DHU muxes */
#define DLX_LINES 16 /* max # of KL11/DL11's */
#define DCX_LINES 16 /* max # of DC11's */
#define DUP_LINES 8 /* max # of DUP11's */
#define MT_MAXFR (1 << 16) /* magtape max rec */
#define DEV_V_UBUS (DEV_V_UF + 0) /* Unibus */
@ -306,6 +307,8 @@ typedef struct {
#define INT_V_XU 8
#define INT_V_DMCRX 9
#define INT_V_DMCTX 10
#define INT_V_DUPRX 11
#define INT_V_DUPTX 12
#define INT_V_LPT 0 /* BR4 */
#define INT_V_PTR 1
@ -331,6 +334,8 @@ typedef struct {
#define INT_CR (1u << INT_V_CR)
#define INT_DMCRX (1u << INT_V_DMCRX)
#define INT_DMCTX (1u << INT_V_DMCTX)
#define INT_DUPRX (1u << INT_V_DUPRX)
#define INT_DUPTX (1u << INT_V_DUPTX)
#define IPL_DZRX (0x15 - IPL_HMIN)
#define IPL_DZTX (0x15 - IPL_HMIN)
@ -349,6 +354,8 @@ typedef struct {
#define IPL_VHTX (0x14 - IPL_HMIN)
#define IPL_DMCRX (0x15 - IPL_HMIN)
#define IPL_DMCTX (0x15 - IPL_HMIN)
#define IPL_DUPRX (0x15 - IPL_HMIN)
#define IPL_DUPTX (0x15 - IPL_HMIN)
/* Device vectors */

View file

@ -55,6 +55,7 @@ extern DEVICE dz_dev;
extern DEVICE vh_dev;
extern DEVICE xu_dev, xub_dev;
extern DEVICE dmc_dev[];
extern DEVICE dup_dev;
extern UNIT cpu_unit;
extern void WriteB (uint32 pa, int32 val);
@ -95,6 +96,7 @@ DEVICE *sim_devices[] = {
&dmc_dev[1],
&dmc_dev[2],
&dmc_dev[3],
&dup_dev,
NULL
};

View file

@ -342,6 +342,9 @@ typedef struct {
#define INT_V_XU 8
#define INT_V_DMCRX 9
#define INT_V_DMCTX 10
#define INT_V_DUPRX 11
#define INT_V_DUPTX 12
#define INT_V_LPT 0 /* BR4 */
#define INT_V_PTR 1
#define INT_V_PTP 2
@ -366,6 +369,9 @@ typedef struct {
#define INT_CR (1u << INT_V_CR)
#define INT_DMCRX (1u << INT_V_DMCRX)
#define INT_DMCTX (1u << INT_V_DMCTX)
#define INT_DUPRX (1u << INT_V_DUPRX)
#define INT_DUPTX (1u << INT_V_DUPTX)
#define IPL_DZRX (0x15 - IPL_HMIN)
#define IPL_DZTX (0x15 - IPL_HMIN)
#define IPL_HK (0x15 - IPL_HMIN)
@ -383,6 +389,8 @@ typedef struct {
#define IPL_VHTX (0x14 - IPL_HMIN)
#define IPL_DMCRX (0x15 - IPL_HMIN)
#define IPL_DMCTX (0x15 - IPL_HMIN)
#define IPL_DUPRX (0x15 - IPL_HMIN)
#define IPL_DUPTX (0x15 - IPL_HMIN)
/* Device vectors */

View file

@ -55,6 +55,7 @@ extern DEVICE dz_dev;
extern DEVICE vh_dev;
extern DEVICE xu_dev, xub_dev;
extern DEVICE dmc_dev[];
extern DEVICE dup_dev;
extern UNIT cpu_unit;
extern void WriteB (uint32 pa, int32 val);
@ -93,6 +94,7 @@ DEVICE *sim_devices[] = {
&dmc_dev[1],
&dmc_dev[2],
&dmc_dev[3],
&dup_dev,
NULL
};

View file

@ -239,6 +239,10 @@
RelativePath="..\PDP11\pdp11_cr.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dup.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dz.c"
>

View file

@ -219,6 +219,10 @@
RelativePath="..\PDP11\pdp11_dmc.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dup.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dz.c"
>

View file

@ -206,6 +206,10 @@
RelativePath="..\PDP11\pdp11_dmc.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dup.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dz.c"
>

View file

@ -206,6 +206,10 @@
RelativePath="..\PDP11\pdp11_dmc.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dup.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dz.c"
>

View file

@ -209,6 +209,10 @@
RelativePath="..\PDP11\pdp11_dmc.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dup.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dz.c"
>

View file

@ -209,6 +209,10 @@
RelativePath="..\PDP11\pdp11_dmc.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dup.c"
>
</File>
<File
RelativePath="..\PDP11\pdp11_dz.c"
>