mirror of
https://github.com/open-simh/simh.git
synced 2026-05-01 22:16:21 +00:00
Added initial KDP implementation
This commit is contained in:
@@ -658,6 +658,12 @@ typedef struct pdp_dib DIB;
|
|||||||
#define IOLN_UBMNT3 001
|
#define IOLN_UBMNT3 001
|
||||||
#define IOBA_XU (IO_UBA3 + 0774510) /* DEUNA/DELUA */
|
#define IOBA_XU (IO_UBA3 + 0774510) /* DEUNA/DELUA */
|
||||||
#define IOLN_XU 010
|
#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 IOBA_CR (IO_UBA3 + 0777160) /* CD/CR/CM */
|
||||||
#define IOLN_CR 010
|
#define IOLN_CR 010
|
||||||
#define IOBA_RY (IO_UBA3 + 0777170) /* RX211 */
|
#define IOBA_RY (IO_UBA3 + 0777170) /* RX211 */
|
||||||
@@ -696,6 +702,10 @@ typedef struct pdp_dib DIB;
|
|||||||
|
|
||||||
#define INT_V_RP 6 /* RH11/RP,RM drives */
|
#define INT_V_RP 6 /* RH11/RP,RM drives */
|
||||||
#define INT_V_TU 7 /* RH11/TM03/TU45 */
|
#define INT_V_TU 7 /* RH11/TM03/TU45 */
|
||||||
|
#define INT_V_KMCA 8 /* KMC11 */
|
||||||
|
#define INT_V_KMCB 9
|
||||||
|
#define INT_V_DMRA 10 /* DMR11 */
|
||||||
|
#define INT_V_DMRB 11
|
||||||
#define INT_V_DMCRX 13
|
#define INT_V_DMCRX 13
|
||||||
#define INT_V_DMCTX 14
|
#define INT_V_DMCTX 14
|
||||||
#define INT_V_XU 15 /* DEUNA/DELUA */
|
#define INT_V_XU 15 /* DEUNA/DELUA */
|
||||||
@@ -709,6 +719,10 @@ typedef struct pdp_dib DIB;
|
|||||||
|
|
||||||
#define INT_RP (1u << INT_V_RP)
|
#define INT_RP (1u << INT_V_RP)
|
||||||
#define INT_TU (1u << INT_V_TU)
|
#define INT_TU (1u << INT_V_TU)
|
||||||
|
#define INT_KMCA (1u << INT_V_KMCA)
|
||||||
|
#define INT_KMCB (1u << INT_V_KMCB)
|
||||||
|
#define INT_DMRA (1u << INT_V_DMRA)
|
||||||
|
#define INT_DMRB (1u << INT_V_DMRB)
|
||||||
#define INT_DMCRX (1u << INT_V_DMCRX)
|
#define INT_DMCRX (1u << INT_V_DMCRX)
|
||||||
#define INT_DMCTX (1u << INT_V_DMCTX)
|
#define INT_DMCTX (1u << INT_V_DMCTX)
|
||||||
#define INT_XU (1u << INT_V_XU)
|
#define INT_XU (1u << INT_V_XU)
|
||||||
@@ -722,6 +736,10 @@ typedef struct pdp_dib DIB;
|
|||||||
|
|
||||||
#define IPL_RP 6 /* int levels */
|
#define IPL_RP 6 /* int levels */
|
||||||
#define IPL_TU 6
|
#define IPL_TU 6
|
||||||
|
#define IPL_KMCA 5
|
||||||
|
#define IPL_KMCB 5
|
||||||
|
#define IPL_DMRA 5
|
||||||
|
#define IPL_DMRB 5
|
||||||
#define IPL_DMCRX 5
|
#define IPL_DMCRX 5
|
||||||
#define IPL_DMCTX 5
|
#define IPL_DMCTX 5
|
||||||
#define IPL_XU 5
|
#define IPL_XU 5
|
||||||
@@ -751,6 +769,10 @@ typedef struct pdp_dib DIB;
|
|||||||
#define VEC_RY 0264
|
#define VEC_RY 0264
|
||||||
#define VEC_DZRX 0340
|
#define VEC_DZRX 0340
|
||||||
#define VEC_DZTX 0344
|
#define VEC_DZTX 0344
|
||||||
|
#define VEC_KMCA 0540
|
||||||
|
#define VEC_KMCB 0544
|
||||||
|
#define VEC_DMRA 0610
|
||||||
|
#define VEC_DMRB 0614
|
||||||
#define VEC_LP20 0754
|
#define VEC_LP20 0754
|
||||||
#define VEC_AUTO 0 /* Set by Auto Configure */
|
#define VEC_AUTO 0 /* Set by Auto Configure */
|
||||||
|
|
||||||
|
|||||||
@@ -512,7 +512,7 @@ d10 val;
|
|||||||
|
|
||||||
ba = ba & ~01; /* align start */
|
ba = ba & ~01; /* align start */
|
||||||
lim = ba + (bc & ~01);
|
lim = ba + (bc & ~01);
|
||||||
for ( ; ba < lim; ba++) { /* by bytes */
|
for ( ; ba < lim; ba += 2) { /* by bytes */
|
||||||
pa10 = Map_Addr10 (ba, 1); /* map addr */
|
pa10 = Map_Addr10 (ba, 1); /* map addr */
|
||||||
if ((pa10 < 0) || MEM_ADDR_NXM (pa10)) { /* inv map or NXM? */
|
if ((pa10 < 0) || MEM_ADDR_NXM (pa10)) { /* inv map or NXM? */
|
||||||
ubcs[1] = ubcs[1] | UBCS_TMO; /* UBA times out */
|
ubcs[1] = ubcs[1] | UBCS_TMO; /* UBA times out */
|
||||||
@@ -520,8 +520,8 @@ for ( ; ba < lim; ba++) { /* by bytes */
|
|||||||
}
|
}
|
||||||
val = *buf++; /* get data */
|
val = *buf++; /* get data */
|
||||||
if (ba & 2)
|
if (ba & 2)
|
||||||
M[pa10] = (M[pa10] & INT64_C(0777777600000)) | val;
|
M[pa10] = (M[pa10] & INT64_C(0777777000000)) | val;
|
||||||
else M[pa10] = (M[pa10] & INT64_C(0600000777777)) | (val << 18);
|
else M[pa10] = (M[pa10] & INT64_C(0000000777777)) | (val << 18);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ extern DEVICE dz_dev;
|
|||||||
extern DEVICE ry_dev;
|
extern DEVICE ry_dev;
|
||||||
extern DEVICE cr_dev;
|
extern DEVICE cr_dev;
|
||||||
extern DEVICE lp20_dev;
|
extern DEVICE lp20_dev;
|
||||||
|
extern DEVICE kmc_dev;
|
||||||
|
extern DEVICE dup_dev[];
|
||||||
extern UNIT cpu_unit;
|
extern UNIT cpu_unit;
|
||||||
extern REG cpu_reg[];
|
extern REG cpu_reg[];
|
||||||
extern d10 *M;
|
extern d10 *M;
|
||||||
@@ -90,6 +92,9 @@ DEVICE *sim_devices[] = {
|
|||||||
&rp_dev,
|
&rp_dev,
|
||||||
&tu_dev,
|
&tu_dev,
|
||||||
&dz_dev,
|
&dz_dev,
|
||||||
|
&kmc_dev,
|
||||||
|
&dup_dev[0],
|
||||||
|
&dup_dev[1],
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
1314
PDP11/pdp11_kdp.c
Normal file
1314
PDP11/pdp11_kdp.c
Normal file
File diff suppressed because it is too large
Load Diff
24
PDP11/pdp11_kdp.h
Normal file
24
PDP11/pdp11_kdp.h
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/* pdp11_kdp.h: KMC11/DUP11 Emulation
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Written 2002 by Johnny Eriksson <bygg@stacken.kth.se>
|
||||||
|
|
||||||
|
Adapted to SIMH 3.? by Robert M. A. Jarratt in 2013
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Modification history:
|
||||||
|
|
||||||
|
14-Apr-13 RJ Took original sources into latest source code.
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "pdp10_defs.h"
|
||||||
|
|
||||||
|
#ifndef PDP11_KDP_H
|
||||||
|
#define PDP11_KDP_H
|
||||||
|
|
||||||
|
#define KMC_RDX 8 /* Octal in this incarnation. */
|
||||||
|
#define DUP_RDX 8
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user