From e8da772de6f3ed78c3d188ed599778639ce7478f Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Sat, 1 Jun 2013 06:37:05 -0700 Subject: [PATCH] Added KDP to PDP11 simulator --- PDP10/pdp10_defs.h | 4 --- PDP10/pdp10_ksio.c | 6 +++++ PDP11/pdp11_defs.h | 6 +++++ PDP11/pdp11_io_lib.c | 4 +-- PDP11/pdp11_kdp.c | 38 ++++++++++++++++++++++------- PDP11/pdp11_sys.c | 5 ++++ Visual Studio Projects/PDP11.vcproj | 4 +++ 7 files changed, 52 insertions(+), 15 deletions(-) diff --git a/PDP10/pdp10_defs.h b/PDP10/pdp10_defs.h index c12756f3..e42b0e2f 100644 --- a/PDP10/pdp10_defs.h +++ b/PDP10/pdp10_defs.h @@ -660,10 +660,6 @@ typedef struct pdp_dib DIB; #define IOLN_XU 010 #define IOBA_DMR (IO_UBA3 + 0764000) /* DMR11 */ #define IOLN_DMR 010 -#define IOBA_DUP (IO_UBA3 + 0760300) /* DUP11 */ -#define IOLN_DUP 010 -#define IOBA_KMC (IO_UBA3 + 0760540) /* KMC11 */ -#define IOLN_KMC 010 #define IOBA_CR (IO_UBA3 + 0777160) /* CD/CR/CM */ #define IOLN_CR 010 #define IOBA_RY (IO_UBA3 + 0777170) /* RX211 */ diff --git a/PDP10/pdp10_ksio.c b/PDP10/pdp10_ksio.c index 4d7478ec..3743d262 100644 --- a/PDP10/pdp10_ksio.c +++ b/PDP10/pdp10_ksio.c @@ -961,6 +961,12 @@ 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 */ + { { "KMC" }, 1, 2, 0, 0, + {0000540}, {0540} }, /* KMC11 - fx CSR, fx VEC */ + { { "DUP0" }, 1, 2, 0, 0, + {0000300}, {0300} }, /* DUP11 sync - fx CSR, fx VEC */ + { { "DUP1" }, 1, 2, 0, 0, + {0000310}, {0310} }, /* DUP11 sync - fx CSR, fx VEC */ #else { { "QBA" }, 1, 0, 0, 0, {017500} }, /* doorbell - fx CSR, no VEC */ diff --git a/PDP11/pdp11_defs.h b/PDP11/pdp11_defs.h index 75b77bb5..3c681c93 100644 --- a/PDP11/pdp11_defs.h +++ b/PDP11/pdp11_defs.h @@ -599,6 +599,8 @@ typedef struct pdp_dib DIB; #define INT_V_RC 17 #define INT_V_DMCRX 18 #define INT_V_DMCTX 19 +#define INT_V_KMCA 20 +#define INT_V_KMCB 21 #define INT_V_PIR4 0 /* BR4 */ #define INT_V_TTI 1 @@ -644,6 +646,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_KMCA (1u << INT_V_KMCA) +#define INT_KMCB (1u << INT_V_KMCB) #define INT_PIR4 (1u << INT_V_PIR4) #define INT_TTI (1u << INT_V_TTI) #define INT_TTO (1u << INT_V_TTO) @@ -692,6 +696,8 @@ typedef struct pdp_dib DIB; #define IPL_RC 5 #define IPL_DMCRX 5 #define IPL_DMCTX 5 +#define IPL_KMCA 5 +#define IPL_KMCB 5 #define IPL_PTR 4 #define IPL_PTP 4 #define IPL_TTI 4 diff --git a/PDP11/pdp11_io_lib.c b/PDP11/pdp11_io_lib.c index 2e4dd412..e53b870c 100644 --- a/PDP11/pdp11_io_lib.c +++ b/PDP11/pdp11_io_lib.c @@ -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 */ + { { "DUP0", "DUP1" },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 */ diff --git a/PDP11/pdp11_kdp.c b/PDP11/pdp11_kdp.c index 92d7a8eb..3cdbe3e5 100644 --- a/PDP11/pdp11_kdp.c +++ b/PDP11/pdp11_kdp.c @@ -29,7 +29,24 @@ ** We don't implement buffer flushing. */ -#include "pdp11_kdp.h" +#if defined (VM_PDP10) /* PDP10 version */ +#include "pdp10_defs.h" + +#elif defined (VM_VAX) /* VAX version */ +#include "vax_defs.h" + +#else /* PDP-11 version */ +#include "pdp11_defs.h" +#endif + +#define KMC_RDX 8 +#define DUP_RDX 8 + +extern int32 IREQ (HLVL); +extern int32 tmxr_poll; /* calibrated delay */ +extern int32 clk_tps; /* clock ticks per second */ +extern int32 tmr_poll; /* instructions per tick */ + #include "sim_tmxr.h" #define DF_CMD 0001 /* Print commands. */ @@ -40,8 +57,6 @@ #define DF_TRC 0040 /* Detailed trace. */ #define DF_INF 0100 /* Info */ -extern int32 int_req; - //t_stat sync_open(int* retval, char* cptr) //{ // return SCPE_OK; @@ -291,7 +306,9 @@ DEBTAB kmc_debug[] = { /* KMC11 data structs: */ -DIB kmc_dib = { IOBA_KMC, IOLN_KMC, &kmc_rd, &kmc_wr, 2, IVCL (KMCA), VEC_KMCA, {&kmc_rxint, &kmc_txint} }; +#define IOLN_KMC 010 + +DIB kmc_dib = { IOBA_AUTO, IOLN_KMC, &kmc_rd, &kmc_wr, 2, IVCL (KMCA), VEC_AUTO, {&kmc_rxint, &kmc_txint} }; UNIT kmc_unit = { UDATA (&kmc_svc, 0, 0) }; @@ -327,13 +344,15 @@ DEVICE kmc_dev = 1, KMC_RDX, 13, 1, KMC_RDX, 8, NULL, NULL, &kmc_reset, NULL, NULL, NULL, &kmc_dib, - DEV_UBUS | DEV_DEBUG, 0, kmc_debug + DEV_UBUS | DEV_DISABLE | DEV_DIS | DEV_DEBUG, 0, kmc_debug }; /* DUP11 data structs: */ -DIB dup0_dib = { IOBA_DUP, IOLN_DUP, &dup_rd, &dup_wr, 0 }; -DIB dup1_dib = { IOBA_DUP + IOLN_DUP, IOLN_DUP, &dup_rd, &dup_wr, 0 }; +#define IOLN_DUP 010 + +DIB dup0_dib = { IOBA_AUTO, IOLN_DUP, &dup_rd, &dup_wr, 0 }; +DIB dup1_dib = { IOBA_AUTO, IOLN_DUP, &dup_rd, &dup_wr, 0 }; UNIT dup_unit[MAXDUP] = { { UDATA (&dup_svc, UNIT_ATTABLE, 0) }, @@ -1247,7 +1266,8 @@ t_stat dup_reset(DEVICE* dptr) // } // firsttime = FALSE; /* Once-only init done now. */ //} - return SCPE_OK; + + return auto_config (dptr->name, (dptr->flags & DEV_DIS)? 0: 1 ); /* auto config */ } /* @@ -1261,7 +1281,7 @@ t_stat kmc_reset(DEVICE* dptr) kmc_sel4 = 0; kmc_sel6 = 0; - return SCPE_OK; + return auto_config (dptr->name, (dptr->flags & DEV_DIS)? 0: 1 ); /* auto config */ } /* diff --git a/PDP11/pdp11_sys.c b/PDP11/pdp11_sys.c index 6743d117..ebb2a554 100644 --- a/PDP11/pdp11_sys.c +++ b/PDP11/pdp11_sys.c @@ -103,6 +103,8 @@ extern DEVICE xu_dev, xub_dev; extern DEVICE ke_dev; extern DEVICE kg_dev; extern DEVICE dmc_dev[]; +extern DEVICE kmc_dev; +extern DEVICE dup_dev[]; extern UNIT cpu_unit; extern REG cpu_reg[]; extern uint16 *M; @@ -171,6 +173,9 @@ DEVICE *sim_devices[] = { &dmc_dev[1], &dmc_dev[2], &dmc_dev[3], + &kmc_dev, + &dup_dev[0], + &dup_dev[1], NULL }; diff --git a/Visual Studio Projects/PDP11.vcproj b/Visual Studio Projects/PDP11.vcproj index 82269ec9..88b22ab3 100644 --- a/Visual Studio Projects/PDP11.vcproj +++ b/Visual Studio Projects/PDP11.vcproj @@ -239,6 +239,10 @@ RelativePath="..\PDP11\pdp11_io_lib.c" > + +