diff --git a/PDP11/pdp11_dup.c b/PDP11/pdp11_dup.c
index 3f6dbd52..ea5f08e3 100644
--- a/PDP11/pdp11_dup.c
+++ b/PDP11/pdp11_dup.c
@@ -36,6 +36,7 @@
characters both initially and between DDCMP packets.
15-May-13 MP Initial implementation
+
*/
#if defined (VM_PDP10) /* PDP10 version */
@@ -316,7 +317,8 @@ static BITFIELD dup_txdbuf_bits[] = {
#define TXDBUF_MBZ ((1<<15)|(1<<13))
#define TXDBUF_WRITEABLE (TXDBUF_M_TABRT|TXDBUF_M_TEOM|TXDBUF_M_TSOM|TXDBUF_M_TXDBUF)
-
+#define TRAILING_SYNS 8
+const uint8 tsyns[TRAILING_SYNS] = {0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96};
/* DUP data structures
@@ -576,7 +578,7 @@ switch ((PA >> 1) & 03) { /* case on PA<2:1> */
if ((!(dup_rxcsr[dup] & RXCSR_M_RCVEN)) &&
(orig_val & RXCSR_M_RCVEN)) { /* Downward transition of receiver enable */
dup_rxdbuf[dup] &= ~RXDBUF_M_RXDBUF;
- dup_rxcsr[dup] &= ~RXCSR_M_RXACT;
+ dup_rxcsr[dup] &= ~(RXCSR_M_RXACT|RXCSR_M_RXDONE); /* also clear RXDONE per DUP11 spec. */
if ((dup_rcvpkinoff[dup] != 0) ||
(dup_rcvpkbytes[dup] != 0))
dup_rcvpkinoff[dup] = dup_rcvpkbytes[dup] = 0;
@@ -598,6 +600,8 @@ switch ((PA >> 1) & 03) { /* case on PA<2:1> */
dup_txcsr[dup] |= (data & TXCSR_WRITEABLE);
if (dup_txcsr[dup] & TXCSR_M_DRESET) {
dup_clear(dup, dup_W3[dup]);
+ /* must also clear loopback if it was set */
+ tmxr_set_line_loopback (&dup_desc.ldsc[dup], FALSE);
break;
}
if (TXCSR_GETMAISEL(dup_txcsr[dup]) != TXCSR_GETMAISEL(orig_val)) { /* Maint Select Changed */
@@ -967,8 +971,8 @@ dup_rxdbuf[dup] &= ~RXDBUF_M_RCRCER;
dup_rxdbuf[dup] &= ~RXDBUF_M_RXDBUF;
dup_rxdbuf[dup] |= dup_rcvpacket[dup][dup_rcvpkinoff[dup]++];
dup_rxcsr[dup] |= RXCSR_M_RXDONE;
-if (((dup_rcvpkinoff[dup] == 8) ||
- (dup_rcvpkinoff[dup] >= dup_rcvpkbytes[dup])) &&
+if ( ((dup_rcvpkinoff[dup] == 8) ||
+ (dup_rcvpkinoff[dup] >= dup_rcvpkbytes[dup]-TRAILING_SYNS)) && /* don't include trailing SYNs in CRC calc */
(0 == ddcmp_crc16 (0, dup_rcvpacket[dup], dup_rcvpkinoff[dup])))
dup_rxdbuf[dup] |= RXDBUF_M_RCRCER;
else
@@ -1070,13 +1074,19 @@ for (dup=active=attached=0; dup < dup_desc.lines; dup++) {
r = tmxr_get_packet_ln (lp, &buf, &size_t_size);
size = (uint16)size_t_size;
}
+ /* in DEC mode add some SYN bytes to the end to deal with host drivers that
+ implement the DDCMP CRC performance optimisation (DDCMP V4.0 section 5.1.2) */
if ((r == SCPE_OK) && (buf)) {
- if (dup_rcvpksize[dup] < size) {
- dup_rcvpksize[dup] = size;
+ if (dup_rcvpksize[dup] < size + TRAILING_SYNS) {
+ dup_rcvpksize[dup] = size + TRAILING_SYNS;
dup_rcvpacket[dup] = (uint8 *)realloc (dup_rcvpacket[dup], dup_rcvpksize[dup]);
}
memcpy (dup_rcvpacket[dup], buf, size);
dup_rcvpkbytes[dup] = size;
+ if (dup_parcsr[dup] & PARCSR_M_DECMODE) {
+ memcpy(&(dup_rcvpacket[dup][size]), tsyns, TRAILING_SYNS);
+ dup_rcvpkbytes[dup] += TRAILING_SYNS ;
+ }
dup_rcvpkinoff[dup] = 0;
dup_rxcsr[dup] |= RXCSR_M_RXACT;
dup_rcv_byte (dup);
diff --git a/VAX/vax630_defs.h b/VAX/vax630_defs.h
index b55d8ef8..90786157 100644
--- a/VAX/vax630_defs.h
+++ b/VAX/vax630_defs.h
@@ -340,8 +340,10 @@ typedef struct {
#define INT_V_QVSS 21 /* QVSS */
#define INT_V_DMCRX 22
#define INT_V_DMCTX 23
-#define INT_V_TDRX 24 /* TU58 */
-#define INT_V_TDTX 25
+#define INT_V_DUPRX 24 /* DPV11 */
+#define INT_V_DUPTX 25
+#define INT_V_TDRX 26 /* TU58 */
+#define INT_V_TDTX 27
#define INT_CLK (1u << INT_V_CLK)
#define INT_RQ (1u << INT_V_RQ)
@@ -368,6 +370,8 @@ typedef struct {
#define INT_QVSS (1u << INT_V_QVSS)
#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_TDRX (1u << INT_V_TDRX)
#define INT_TDTX (1u << INT_V_TDTX)
@@ -396,6 +400,8 @@ typedef struct {
#define IPL_QVSS (0x14 - IPL_HMIN)
#define IPL_DMCRX (0x14 - IPL_HMIN)
#define IPL_DMCTX (0x14 - IPL_HMIN)
+#define IPL_DUPRX (0x14 - IPL_HMIN)
+#define IPL_DUPTX (0x14 - IPL_HMIN)
#define IPL_TDRX (0x14 - IPL_HMIN)
#define IPL_TDTX (0x14 - IPL_HMIN)
diff --git a/VAX/vax630_syslist.c b/VAX/vax630_syslist.c
index a02f81d9..de0ba4e2 100644
--- a/VAX/vax630_syslist.c
+++ b/VAX/vax630_syslist.c
@@ -68,6 +68,7 @@ extern DEVICE va_dev;
extern DEVICE vc_dev;
extern DEVICE lk_dev;
extern DEVICE vs_dev;
+extern DEVICE dpv_dev;
DEVICE *sim_devices[] = {
&cpu_dev,
@@ -100,6 +101,9 @@ DEVICE *sim_devices[] = {
&tq_dev,
&xq_dev,
&xqb_dev,
+#if !defined(VAX_620)
+ &dpv_dev,
+#endif
NULL
};
diff --git a/VAX/vax730_syslist.c b/VAX/vax730_syslist.c
index cc80141d..c3976a0b 100644
--- a/VAX/vax730_syslist.c
+++ b/VAX/vax730_syslist.c
@@ -61,6 +61,7 @@ extern DEVICE dz_dev;
extern DEVICE vh_dev;
extern DEVICE xu_dev, xub_dev;
extern DEVICE dmc_dev;
+extern DEVICE dup_dev;
extern DEVICE ch_dev;
DEVICE *sim_devices[] = {
@@ -94,6 +95,7 @@ DEVICE *sim_devices[] = {
&xu_dev,
&xub_dev,
&dmc_dev,
+ &dup_dev,
&ch_dev,
NULL
};
diff --git a/VAX/vax750_syslist.c b/VAX/vax750_syslist.c
index 8cb5afa0..3861431e 100644
--- a/VAX/vax750_syslist.c
+++ b/VAX/vax750_syslist.c
@@ -63,6 +63,7 @@ extern DEVICE dz_dev;
extern DEVICE vh_dev;
extern DEVICE xu_dev, xub_dev;
extern DEVICE dmc_dev;
+extern DEVICE dup_dev;
extern DEVICE ch_dev;
DEVICE *sim_devices[] = {
@@ -99,6 +100,7 @@ DEVICE *sim_devices[] = {
&xu_dev,
&xub_dev,
&dmc_dev,
+ &dup_dev,
&ch_dev,
NULL
};
diff --git a/VAX/vax780_syslist.c b/VAX/vax780_syslist.c
index 45eb151d..133c3604 100644
--- a/VAX/vax780_syslist.c
+++ b/VAX/vax780_syslist.c
@@ -63,6 +63,7 @@ extern DEVICE dz_dev;
extern DEVICE vh_dev;
extern DEVICE xu_dev, xub_dev;
extern DEVICE dmc_dev;
+extern DEVICE dup_dev;
extern DEVICE ch_dev;
DEVICE *sim_devices[] = {
@@ -100,6 +101,7 @@ DEVICE *sim_devices[] = {
&xu_dev,
&xub_dev,
&dmc_dev,
+ &dup_dev,
&ch_dev,
NULL
};
diff --git a/VAX/vax820_syslist.c b/VAX/vax820_syslist.c
index 3597a8b5..6d8f37ea 100644
--- a/VAX/vax820_syslist.c
+++ b/VAX/vax820_syslist.c
@@ -60,6 +60,7 @@ extern DEVICE dz_dev;
extern DEVICE vh_dev;
extern DEVICE xu_dev, xub_dev;
extern DEVICE dmc_dev;
+extern DEVICE dup_dev;
extern DEVICE ch_dev;
extern UNIT cpu_unit;
@@ -100,6 +101,7 @@ DEVICE *sim_devices[] = {
&xu_dev,
&xub_dev,
&dmc_dev,
+ &dup_dev,
&ch_dev,
NULL
};
diff --git a/VAX/vax860_syslist.c b/VAX/vax860_syslist.c
index b4008856..c02520f4 100644
--- a/VAX/vax860_syslist.c
+++ b/VAX/vax860_syslist.c
@@ -63,6 +63,7 @@ extern DEVICE dz_dev;
extern DEVICE vh_dev;
extern DEVICE xu_dev, xub_dev;
extern DEVICE dmc_dev;
+extern DEVICE dup_dev;
extern DEVICE ch_dev;
DEVICE *sim_devices[] = {
@@ -99,6 +100,7 @@ DEVICE *sim_devices[] = {
&xu_dev,
&xub_dev,
&dmc_dev,
+ &dup_dev,
&ch_dev,
NULL
};
diff --git a/VAX/vax_syslist.c b/VAX/vax_syslist.c
index b31995e3..bc26fa52 100644
--- a/VAX/vax_syslist.c
+++ b/VAX/vax_syslist.c
@@ -59,6 +59,7 @@ extern DEVICE vh_dev;
extern DEVICE vc_dev;
extern DEVICE lk_dev;
extern DEVICE vs_dev;
+extern DEVICE dpv_dev;
extern UNIT cpu_unit;
@@ -93,6 +94,7 @@ DEVICE *sim_devices[] = {
&tq_dev,
&xq_dev,
&xqb_dev,
+ &dpv_dev,
NULL
};
diff --git a/VAX/vaxmod_defs.h b/VAX/vaxmod_defs.h
index 5ce0f5f8..59e441d0 100644
--- a/VAX/vaxmod_defs.h
+++ b/VAX/vaxmod_defs.h
@@ -368,8 +368,10 @@ typedef struct {
#define INT_V_QVSS 21 /* QVSS */
#define INT_V_DMCRX 22 /* DMC11 */
#define INT_V_DMCTX 23
-#define INT_V_TDRX 24 /* TU58 */
-#define INT_V_TDTX 25
+#define INT_V_DUPRX 24 /* DPV11 */
+#define INT_V_DUPTX 25
+#define INT_V_TDRX 26 /* TU58 */
+#define INT_V_TDTX 27
#define INT_CLK (1u << INT_V_CLK)
#define INT_RQ (1u << INT_V_RQ)
@@ -396,6 +398,8 @@ typedef struct {
#define INT_QVSS (1u << INT_V_QVSS)
#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_TDRX (1u << INT_V_TDRX)
#define INT_TDTX (1u << INT_V_TDTX)
@@ -424,6 +428,8 @@ typedef struct {
#define IPL_QVSS (0x14 - IPL_HMIN)
#define IPL_DMCRX (0x14 - IPL_HMIN)
#define IPL_DMCTX (0x14 - IPL_HMIN)
+#define IPL_DUPRX (0x14 - IPL_HMIN)
+#define IPL_DUPTX (0x14 - IPL_HMIN)
#define IPL_TDRX (0x14 - IPL_HMIN)
#define IPL_TDTX (0x14 - IPL_HMIN)
diff --git a/Visual Studio Projects/MicroVAX2.vcproj b/Visual Studio Projects/MicroVAX2.vcproj
index 849569bd..bf8c664e 100644
--- a/Visual Studio Projects/MicroVAX2.vcproj
+++ b/Visual Studio Projects/MicroVAX2.vcproj
@@ -200,6 +200,10 @@
RelativePath="..\PDP11\pdp11_cr.c"
>
+
+
@@ -560,6 +564,10 @@
RelativePath="..\PDP11\pdp11_cr_dat.h"
>
+
+
diff --git a/Visual Studio Projects/VAX.vcproj b/Visual Studio Projects/VAX.vcproj
index d03128b3..24aaceb5 100644
--- a/Visual Studio Projects/VAX.vcproj
+++ b/Visual Studio Projects/VAX.vcproj
@@ -95,7 +95,7 @@
@@ -200,6 +200,10 @@
RelativePath="..\PDP11\pdp11_cr.c"
>
+
+
@@ -548,6 +552,10 @@
RelativePath="..\PDP11\pdp11_cr_dat.h"
>
+
+
diff --git a/Visual Studio Projects/VAX730.vcproj b/Visual Studio Projects/VAX730.vcproj
index cca0f88d..a37917cb 100644
--- a/Visual Studio Projects/VAX730.vcproj
+++ b/Visual Studio Projects/VAX730.vcproj
@@ -206,6 +206,10 @@
RelativePath="..\PDP11\pdp11_dmc.c"
>
+
+
diff --git a/Visual Studio Projects/VAX750.vcproj b/Visual Studio Projects/VAX750.vcproj
index a01add38..386a0c8a 100644
--- a/Visual Studio Projects/VAX750.vcproj
+++ b/Visual Studio Projects/VAX750.vcproj
@@ -206,6 +206,10 @@
RelativePath="..\PDP11\pdp11_dmc.c"
>
+
+
diff --git a/Visual Studio Projects/VAX780.vcproj b/Visual Studio Projects/VAX780.vcproj
index de7d682c..04ba7fb6 100644
--- a/Visual Studio Projects/VAX780.vcproj
+++ b/Visual Studio Projects/VAX780.vcproj
@@ -206,6 +206,10 @@
RelativePath="..\PDP11\pdp11_dmc.c"
>
+
+
diff --git a/Visual Studio Projects/VAX8200.vcproj b/Visual Studio Projects/VAX8200.vcproj
index d4c2e1a7..8c2b54bf 100644
--- a/Visual Studio Projects/VAX8200.vcproj
+++ b/Visual Studio Projects/VAX8200.vcproj
@@ -206,6 +206,10 @@
RelativePath="..\PDP11\pdp11_dmc.c"
>
+
+
diff --git a/Visual Studio Projects/VAX8600.vcproj b/Visual Studio Projects/VAX8600.vcproj
index 139b18be..03835b26 100644
--- a/Visual Studio Projects/VAX8600.vcproj
+++ b/Visual Studio Projects/VAX8600.vcproj
@@ -206,6 +206,10 @@
RelativePath="..\PDP11\pdp11_dmc.c"
>
+
+
diff --git a/descrip.mms b/descrip.mms
index 2119b06d..f51d924c 100644
--- a/descrip.mms
+++ b/descrip.mms
@@ -805,7 +805,7 @@ VAX_SOURCE2 = $(PDP11_DIR)PDP11_IO_LIB.C,\
$(PDP11_DIR)PDP11_TS.C,$(PDP11_DIR)PDP11_DZ.C,\
$(PDP11_DIR)PDP11_LP.C,$(PDP11_DIR)PDP11_TD.C,$(PDP11_DIR)PDP11_TQ.C,\
$(PDP11_DIR)PDP11_XQ.C,$(PDP11_DIR)PDP11_VH.C,\
- $(PDP11_DIR)PDP11_CR.C,\
+ $(PDP11_DIR)PDP11_CR.C,$(PDP11_DIR)PDP11_DUP.C,\
$(VAX_DIR)VAX_VC.C,$(VAX_DIR)VAX_LK.C,\
$(VAX_DIR)VAX_VS.C,$(VAX_DIR)VAX_2681.C
.IFDEF ALPHA_OR_IA64
@@ -1157,7 +1157,7 @@ VAX610_SOURCE2 = $(PDP11_DIR)PDP11_IO_LIB.C,\
$(PDP11_DIR)PDP11_XQ.C,$(PDP11_DIR)PDP11_VH.C,\
$(PDP11_DIR)PDP11_CR.C,$(VAX610_DIR)VAX_VC.C,\
$(VAX610_DIR)VAX_LK.C,$(VAX610_DIR)VAX_VS.C,\
- $(VAX610_DIR)VAX_2681.C
+ $(VAX610_DIR)VAX_2681.C,$(PDP11_DIR)PDP11_DUP.C
.IFDEF ALPHA_OR_IA64
VAX610_OPTIONS = /INCL=($(SIMH_DIR),$(VAX610_DIR),$(PDP11_DIR)$(PCAP_INC))\
/DEF=($(CC_DEFS),"VM_VAX=1","USE_ADDR64=1","USE_INT64=1"$(PCAP_DEFS),"VAX_610=1")
@@ -1185,7 +1185,7 @@ VAX630_SOURCE2 = $(PDP11_DIR)PDP11_IO_LIB.C,$(PDP11_DIR)PDP11_CR.C,\
$(PDP11_DIR)PDP11_TS.C,$(PDP11_DIR)PDP11_DZ.C,\
$(PDP11_DIR)PDP11_LP.C,$(PDP11_DIR)PDP11_TD.C,\
$(PDP11_DIR)PDP11_TQ.C,$(PDP11_DIR)PDP11_XQ.C,\
- $(PDP11_DIR)PDP11_VH.C,\
+ $(PDP11_DIR)PDP11_VH.C,$(PDP11_DIR)PDP11_DUP.C,\
$(VAX630_DIR)VAX_VA.C,$(VAX630_DIR)VAX_VC.C,\
$(VAX630_DIR)VAX_LK.C,$(VAX630_DIR)VAX_VS.C,\
$(VAX630_DIR)VAX_2681.C,$(VAX630_DIR)VAX_GPX.C
@@ -1218,7 +1218,7 @@ VAX620_SOURCE2 = $(PDP11_DIR)PDP11_IO_LIB.C,\
$(PDP11_DIR)PDP11_XQ.C,$(PDP11_DIR)PDP11_VH.C,\
$(PDP11_DIR)PDP11_CR.C,$(VAX620_DIR)VAX_VC.C,\
$(VAX620_DIR)VAX_LK.C,$(VAX620_DIR)VAX_VS.C,\
- $(VAX620_DIR)VAX_2681.C
+ $(VAX620_DIR)VAX_2681.C,$(PDP11_DIR)PDP11_DUP.C
.IFDEF ALPHA_OR_IA64
VAX620_OPTIONS = /INCL=($(SIMH_DIR),$(VAX620_DIR),$(PDP11_DIR)$(PCAP_INC))\
/DEF=($(CC_DEFS),"VM_VAX=1","USE_ADDR64=1","USE_INT64=1"$(PCAP_DEFS),"VAX_620=1")
@@ -1249,7 +1249,8 @@ VAX730_SOURCE2 = $(PDP11_DIR)PDP11_RL.C,$(PDP11_DIR)PDP11_RQ.C,\
$(PDP11_DIR)PDP11_CR.C,$(PDP11_DIR)PDP11_HK.C,\
$(PDP11_DIR)PDP11_VH.C,$(PDP11_DIR)PDP11_DMC.C,\
$(PDP11_DIR)PDP11_TC.C,$(PDP11_DIR)PDP11_RK.C,\
- $(PDP11_DIR)PDP11_CH.C,$(PDP11_DIR)PDP11_IO_LIB.C
+ $(PDP11_DIR)PDP11_CH.C,$(PDP11_DIR)PDP11_IO_LIB.C,\
+ $(PDP11_DIR)PDP11_DUP.C
.IFDEF ALPHA_OR_IA64
VAX730_OPTIONS = /INCL=($(SIMH_DIR),$(VAX730_DIR),$(PDP11_DIR)$(PCAP_INC))\
/DEF=($(CC_DEFS),"VM_VAX=1","USE_ADDR64=1","USE_INT64=1"$(PCAP_DEFS),"VAX_730=1")
@@ -1281,7 +1282,8 @@ VAX750_SOURCE2 = $(PDP11_DIR)PDP11_RL.C,$(PDP11_DIR)PDP11_RQ.C,\
$(PDP11_DIR)PDP11_RP.C,$(PDP11_DIR)PDP11_TU.C,\
$(PDP11_DIR)PDP11_VH.C,$(PDP11_DIR)PDP11_DMC.C,\
$(PDP11_DIR)PDP11_TC.C,$(PDP11_DIR)PDP11_RK.C,\
- $(PDP11_DIR)PDP11_CH.C,$(PDP11_DIR)PDP11_IO_LIB.C
+ $(PDP11_DIR)PDP11_CH.C,$(PDP11_DIR)PDP11_IO_LIB.C,\
+ $(PDP11_DIR)PDP11_DUP.C
.IFDEF ALPHA_OR_IA64
VAX750_OPTIONS = /INCL=($(SIMH_DIR),$(VAX750_DIR),$(PDP11_DIR)$(PCAP_INC))\
/DEF=($(CC_DEFS),"VM_VAX=1","USE_ADDR64=1","USE_INT64=1"$(PCAP_DEFS),"VAX_750=1")
@@ -1313,7 +1315,8 @@ VAX780_SOURCE2 = $(PDP11_DIR)PDP11_RL.C,$(PDP11_DIR)PDP11_RQ.C,\
$(PDP11_DIR)PDP11_TU.C,$(PDP11_DIR)PDP11_HK.C,\
$(PDP11_DIR)PDP11_VH.C,$(PDP11_DIR)PDP11_DMC.C,\
$(PDP11_DIR)PDP11_TC.C,$(PDP11_DIR)PDP11_RK.C,\
- $(PDP11_DIR)PDP11_CH.C,$(PDP11_DIR)PDP11_IO_LIB.C
+ $(PDP11_DIR)PDP11_CH.C,$(PDP11_DIR)PDP11_IO_LIB.C,\
+ $(PDP11_DIR)PDP11_DUP.C
.IFDEF ALPHA_OR_IA64
VAX780_OPTIONS = /INCL=($(SIMH_DIR),$(VAX780_DIR),$(PDP11_DIR)$(PCAP_INC))\
/DEF=($(CC_DEFS),"VM_VAX=1","USE_ADDR64=1","USE_INT64=1"$(PCAP_DEFS),"VAX_780=1")
@@ -1344,7 +1347,8 @@ VAX8200_SOURCE2 = $(PDP11_DIR)PDP11_RL.C,$(PDP11_DIR)PDP11_RQ.C,\
$(PDP11_DIR)PDP11_CR.C,$(PDP11_DIR)PDP11_HK.C,\
$(PDP11_DIR)PDP11_VH.C,$(PDP11_DIR)PDP11_DMC.C,\
$(PDP11_DIR)PDP11_TC.C,$(PDP11_DIR)PDP11_RK.C,\
- $(PDP11_DIR)PDP11_CH.C,$(PDP11_DIR)PDP11_IO_LIB.C
+ $(PDP11_DIR)PDP11_CH.C,$(PDP11_DIR)PDP11_IO_LIB.C,\
+ $(PDP11_DIR)PDP11_DUP.C
.IFDEF ALPHA_OR_IA64
VAX8200_OPTIONS = /INCL=($(SIMH_DIR),$(VAX8200_DIR),$(PDP11_DIR)$(PCAP_INC))\
/DEF=($(CC_DEFS),"VM_VAX=1","USE_ADDR64=1","USE_INT64=1"$(PCAP_DEFS),"VAX_820=1")
@@ -1376,7 +1380,8 @@ VAX8600_SOURCE2 = $(PDP11_DIR)PDP11_RL.C,$(PDP11_DIR)PDP11_RQ.C,\
$(PDP11_DIR)PDP11_TU.C,$(PDP11_DIR)PDP11_HK.C,\
$(PDP11_DIR)PDP11_VH.C,$(PDP11_DIR)PDP11_DMC.C,\
$(PDP11_DIR)PDP11_TC.C,$(PDP11_DIR)PDP11_RK.C,\
- $(PDP11_DIR)PDP11_CH.C,$(PDP11_DIR)PDP11_IO_LIB.C
+ $(PDP11_DIR)PDP11_CH.C,$(PDP11_DIR)PDP11_IO_LIB.C,\
+ $(PDP11_DIR)PDP11_DUP.C
.IFDEF ALPHA_OR_IA64
VAX8600_OPTIONS = /INCL=($(SIMH_DIR),$(VAX8600_DIR),$(PDP11_DIR)$(PCAP_INC))\
/DEF=($(CC_DEFS),"VM_VAX=1","USE_ADDR64=1","USE_INT64=1"$(PCAP_DEFS),"VAX_860=1")
diff --git a/makefile b/makefile
index d723b581..aee48b36 100644
--- a/makefile
+++ b/makefile
@@ -1399,7 +1399,7 @@ VAX = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c ${VAXD}/vax_io.c \
${PDP11D}/pdp11_rl.c ${PDP11D}/pdp11_rq.c ${PDP11D}/pdp11_ts.c \
${PDP11D}/pdp11_dz.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_tq.c \
${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_cr.c \
- ${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_io_lib.c
+ ${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_dup.c
VAX_OPT = -DVM_VAX -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS}
@@ -1485,7 +1485,7 @@ VAX630 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${PDP11D}/pdp11_rl.c ${PDP11D}/pdp11_rq.c ${PDP11D}/pdp11_ts.c \
${PDP11D}/pdp11_dz.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_tq.c \
${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_cr.c \
- ${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_io_lib.c
+ ${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_dup.c
VAX620_OPT = -DVM_VAX -DVAX_620 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT}
VAX630_OPT = -DVM_VAX -DVAX_630 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS}
@@ -1501,7 +1501,7 @@ VAX730 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${PDP11D}/pdp11_xu.c ${PDP11D}/pdp11_ry.c ${PDP11D}/pdp11_cr.c \
${PDP11D}/pdp11_hk.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_dmc.c \
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
- ${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.c
+ ${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.c ${PDP11D}/pdp11_dup.c
VAX730_OPT = -DVM_VAX -DVAX_730 -DUSE_INT64 -DUSE_ADDR64 -I VAX -I ${PDP11D} ${NETWORK_OPT}
@@ -1548,7 +1548,7 @@ VAX8200 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${PDP11D}/pdp11_xu.c ${PDP11D}/pdp11_ry.c ${PDP11D}/pdp11_cr.c \
${PDP11D}/pdp11_hk.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_dmc.c \
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
- ${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.c
+ ${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.c ${PDP11D}/pdp11_dup.c
VAX8200_OPT = -DVM_VAX -DVAX_820 -DUSE_INT64 -DUSE_ADDR64 -I VAX -I ${PDP11D} ${NETWORK_OPT}