mirror of
https://github.com/simh/simh.git
synced 2026-04-27 12:28:49 +00:00
Notes For V3.8
The makefile now works for Linux and most Unix's. However, for Solaris and MacOS, you must first export the OSTYPE environment variable: > export OSTYPE > make Otherwise, you will get build errors. 1. New Features 1.1 3.8-0 1.1.1 SCP and Libraries - BREAK, NOBREAK, and SHOW BREAK with no argument will set, clear, and show (respectively) a breakpoint at the current PC. 1.1.2 GRI - Added support for the GRI-99 processor. 1.1.3 HP2100 - Added support for the BACI terminal interface. - Added support for RTE OS/VMA/EMA, SIGNAL, VIS firmware extensions. 1.1.4 Nova - Added support for 64KW memory (implemented in third-party CPU's). 1.1.5 PDP-11 - Added support for DC11, RC11, KE11A, KG11A. - Added modem control support for DL11. - Added ASCII character support for all 8b devices. 1.2 3.8-1 1.2.1 SCP and libraries - Added capability to set line connection order for terminal multiplexers. 1.2.2 HP2100 - Added support for 12620A/12936A privileged interrupt fence. - Added support for 12792C eight-channel asynchronous multiplexer. 1.3 3.8-2 1.3.1 1401 - Added "no rewind" option to magtape boot. 1.3.2 PDP-11 - Added RD32 support to RQ - Added debug support to RL 1.3.3 PDP-8 - Added FPP support (many thanks to Rick Murphy for debugging the code) 2. Bugs Fixed Please see the revision history on http://simh.trailing-edge.com or in the source module sim_rev.h.
This commit is contained in:
committed by
Mark Pizzolato
parent
9c4779c061
commit
35eac703c3
@@ -1,6 +1,6 @@
|
||||
/* pdp11_cr.c: CR/CM/CD-11 card reader simulator
|
||||
|
||||
Copyright (c) 2005-2007, John A. Dundas III
|
||||
Copyright (c) 2005-2010, John A. Dundas III
|
||||
Portions derived from work by Douglas W. Jones, jones@cs.uiowa.edu
|
||||
Portions derived from work by Robert M Supnik
|
||||
|
||||
@@ -87,6 +87,7 @@
|
||||
|
||||
Revision History:
|
||||
|
||||
03-Jan-10 JAD Eliminate gcc warnings
|
||||
01-Feb-07 RMS Added PDP-10 support
|
||||
12-May-06 JAD Modify the DEBUG code to use the SIMH DEBUG_x
|
||||
macros. Modify the UNIT structure to include
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* pdp11_kg.c - Communications Arithmetic Option KG11-A
|
||||
|
||||
Copyright (c) 2007-2008, John A. Dundas III
|
||||
Copyright (c) 2007-2010, John A. Dundas III
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
kg KG11-A Communications Arithmetic Option (M7251)
|
||||
|
||||
03-Jan-10 JAD Eliminate gcc warnings
|
||||
08-Jan-08 JAD First public release integrated with SIMH V3.7-3.
|
||||
09-Dec-07 JAD SIMH-style debugging.
|
||||
Finished validating against real hardware.
|
||||
@@ -178,7 +179,7 @@ static t_stat set_units (UNIT *, int32, char *, void *);
|
||||
|
||||
/* 16-bit rotate right */
|
||||
|
||||
#define ROR(n,v) (((v >> n) & DMASK) | (v << (16 - n)) & DMASK)
|
||||
#define ROR(n,v) (((v >> n) & DMASK) | ((v << (16 - n)) & DMASK))
|
||||
|
||||
/* 8-bit rotate right */
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* pdp11_rk.c: RK11/RKV11 cartridge disk simulator
|
||||
|
||||
Copyright (c) 1993-2008, Robert M Supnik
|
||||
Copyright (c) 1993-2009, Robert M Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
rk RK11/RKV11/RK05 cartridge disk
|
||||
|
||||
20-Mar-09 RMS Fixed bug in read header (from Walter F Mueller)
|
||||
16-Aug-05 RMS Fixed C++ declaration and cast problems
|
||||
07-Jul-05 RMS Removed extraneous externs
|
||||
30-Sep-04 RMS Revised Unibus interface
|
||||
@@ -533,7 +534,7 @@ if (wc && (err == 0)) { /* seek ok? */
|
||||
wc = i; /* trim transfer */
|
||||
break;
|
||||
}
|
||||
rkxb[i] = (cda / RK_NUMWD) / (RK_NUMSF * RK_NUMSC);
|
||||
rkxb[i] = ((cda / RK_NUMWD) / (RK_NUMSF * RK_NUMSC)) << RKDA_V_CYL;
|
||||
cda = cda + RK_NUMWD; /* next sector */
|
||||
} /* end for wc */
|
||||
} /* end if format */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* pdp11_rl.c: RL11 (RLV12) cartridge disk simulator
|
||||
|
||||
Copyright (c) 1993-2008, Robert M Supnik
|
||||
Copyright (c) 1993-2009, Robert M Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
rl RL11(RLV12)/RL01/RL02 cartridge disk
|
||||
|
||||
10-Oct-09 RMS Added debug support
|
||||
22-Sep-05 RMS Fixed declarations (from Sterling Garwood)
|
||||
16-Aug-05 RMS Fixed C++ declaration and cast problems
|
||||
07-Jul-05 RMS Removed extraneous externs
|
||||
@@ -192,6 +193,7 @@ extern uint32 cpu_opt;
|
||||
#define RLBAE_IMP 0000077 /* implemented */
|
||||
|
||||
extern int32 int_req[IPL_HLVL];
|
||||
extern FILE *sim_deb;
|
||||
|
||||
uint16 *rlxb = NULL; /* xfer buffer */
|
||||
int32 rlcs = 0; /* control/status */
|
||||
@@ -283,7 +285,7 @@ DEVICE rl_dev = {
|
||||
RL_NUMDR, DEV_RDX, 24, 1, DEV_RDX, 16,
|
||||
NULL, NULL, &rl_reset,
|
||||
&rl_boot, &rl_attach, NULL,
|
||||
&rl_dib, DEV_DISABLE | DEV_UBUS | DEV_QBUS
|
||||
&rl_dib, DEV_DEBUG | DEV_DISABLE | DEV_UBUS | DEV_QBUS
|
||||
};
|
||||
|
||||
/* I/O dispatch routines, I/O addresses 17774400 - 17774407
|
||||
@@ -333,6 +335,9 @@ switch ((PA >> 1) & 07) { /* decode PA<2:1> */
|
||||
break;
|
||||
} /* end switch */
|
||||
|
||||
if (DEBUG_PRS (rl_dev))
|
||||
fprintf (sim_deb, ">>RL read: reg%d=%o\n", (PA >> 1) & 07, *data);
|
||||
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
@@ -341,6 +346,9 @@ t_stat rl_wr (int32 data, int32 PA, int32 access)
|
||||
int32 curr, offs, newc, maxc;
|
||||
UNIT *uptr;
|
||||
|
||||
if (DEBUG_PRS (rl_dev))
|
||||
fprintf (sim_deb, ">>RL write: reg%d=%o\n", (PA >> 1) & 07, data);
|
||||
|
||||
switch ((PA >> 1) & 07) { /* decode PA<2:1> */
|
||||
|
||||
case 0: /* RLCS */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* pdp11_rq.c: MSCP disk controller simulator
|
||||
|
||||
Copyright (c) 2002-2008, Robert M Supnik
|
||||
Copyright (c) 2002-2010, Robert M Supnik
|
||||
Derived from work by Stephen F. Shirron
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
rq RQDX3 disk controller
|
||||
|
||||
14-Jan-09 JH Added support for RD32 disc drive
|
||||
18-Jun-07 RMS Added UNIT_IDLE flag to timer thread
|
||||
31-Oct-05 RMS Fixed address width for large files
|
||||
16-Aug-05 RMS Fixed C++ declaration and cast problems
|
||||
@@ -127,7 +128,7 @@ extern int32 cpu_opt;
|
||||
#define UNIT_V_WLK (UNIT_V_UF + 1) /* hwre write lock */
|
||||
#define UNIT_V_ATP (UNIT_V_UF + 2) /* attn pending */
|
||||
#define UNIT_V_DTYPE (UNIT_V_UF + 3) /* drive type */
|
||||
#define UNIT_M_DTYPE 0xF
|
||||
#define UNIT_M_DTYPE 0x1F
|
||||
#define UNIT_ONL (1 << UNIT_V_ONL)
|
||||
#define UNIT_WLK (1 << UNIT_V_WLK)
|
||||
#define UNIT_ATP (1 << UNIT_V_ATP)
|
||||
@@ -219,7 +220,7 @@ struct rqpkt {
|
||||
RD51 18 4 306 4 1 36*4 21600
|
||||
RD31 17 4 615 4 1 3*8 41560
|
||||
RD52 17 8 512 8 1 4*8 60480
|
||||
x RD32 17 6 820 ? ? ? 83236
|
||||
RD32 17 6 820 6 1 4*8 83204
|
||||
x RD33 17 7 1170 ? ? ? 138565
|
||||
RD53 17 7 1024 7 1 5*8 138672
|
||||
RD54 17 15 1225 15 1 7*8 311200
|
||||
@@ -505,6 +506,22 @@ x RA73 70(+1) 21 2667+ 21 1 ? 3920490
|
||||
#define RA71_MED 0x25641047
|
||||
#define RA71_FLGS RQDF_SDI
|
||||
|
||||
#define RD32_DTYPE 16
|
||||
#define RD32_SECT 17
|
||||
#define RD32_SURF 6
|
||||
#define RD32_CYL 820
|
||||
#define RD32_TPG RD32_SURF
|
||||
#define RD32_GPC 1
|
||||
#define RD32_XBN 54
|
||||
#define RD32_DBN 48
|
||||
#define RD32_LBN 83204
|
||||
#define RD32_RCTS 4
|
||||
#define RD32_RCTC 8
|
||||
#define RD32_RBN 200
|
||||
#define RD32_MOD 15
|
||||
#define RD32_MED 0x25644020
|
||||
#define RD32_FLGS 0
|
||||
|
||||
struct drvtyp {
|
||||
int32 sect; /* sectors */
|
||||
int32 surf; /* surfaces */
|
||||
@@ -539,6 +556,7 @@ static struct drvtyp drv_tab[] = {
|
||||
{ RQ_DRV (RA90), "RA90" }, { RQ_DRV (RA92), "RA92" },
|
||||
{ RQ_DRV (RA8U), "RAUSER" }, { RQ_DRV (RA60), "RA60" },
|
||||
{ RQ_DRV (RA81), "RA81" }, { RQ_DRV (RA71), "RA71" },
|
||||
{ RQ_DRV (RD32), "RD32" },
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
@@ -724,6 +742,8 @@ MTAB rq_mod[] = {
|
||||
&rq_set_type, NULL, NULL },
|
||||
{ MTAB_XTD | MTAB_VUN, RD31_DTYPE, NULL, "RD31",
|
||||
&rq_set_type, NULL, NULL },
|
||||
{ MTAB_XTD | MTAB_VUN, RD32_DTYPE, NULL, "RD32",
|
||||
&rq_set_type, NULL, NULL },
|
||||
{ MTAB_XTD | MTAB_VUN, RD51_DTYPE, NULL, "RD51",
|
||||
&rq_set_type, NULL, NULL },
|
||||
{ MTAB_XTD | MTAB_VUN, RD52_DTYPE, NULL, "RD52",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* pdp11_vh.c: DHQ11 asynchronous terminal multiplexor simulator
|
||||
|
||||
Copyright (c) 2004-2008, John A. Dundas III
|
||||
Copyright (c) 2004-2010, John A. Dundas III
|
||||
Portions derived from work by Robert M Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
vh DHQ11 asynch multiplexor for SIMH
|
||||
|
||||
03-Jan-10 JAD Eliminate gcc warnings
|
||||
19-Nov-08 RMS Revised for common TMXR show routines
|
||||
18-Jun-07 RMS Added UNIT_IDLE flag
|
||||
29-Oct-06 RMS Synced poll and clock
|
||||
@@ -258,13 +259,13 @@ static const int32 bitmask[4] = { 037, 077, 0177, 0377 };
|
||||
/* RX FIFO state */
|
||||
|
||||
static int32 rbuf_idx[VH_MUXES] = { 0 };/* index into vh_rbuf */
|
||||
static uint32 vh_rbuf[VH_MUXES][FIFO_SIZE] = { 0 };
|
||||
static uint32 vh_rbuf[VH_MUXES][FIFO_SIZE] = { { 0 } };
|
||||
|
||||
/* TXQ state */
|
||||
|
||||
#define TXQ_SIZE (16)
|
||||
static int32 txq_idx[VH_MUXES] = { 0 };
|
||||
static uint32 vh_txq[VH_MUXES][TXQ_SIZE] = { 0 };
|
||||
static uint32 vh_txq[VH_MUXES][TXQ_SIZE] = { { 0 } };
|
||||
|
||||
/* Need to extend the TMLN structure */
|
||||
|
||||
@@ -279,9 +280,9 @@ typedef struct {
|
||||
uint16 txchar; /* single character I/O */
|
||||
} TMLX;
|
||||
|
||||
static TMLN vh_ldsc[VH_MUXES * VH_LINES] = { 0 };
|
||||
static TMLN vh_ldsc[VH_MUXES * VH_LINES] = { { 0 } };
|
||||
static TMXR vh_desc = { VH_MUXES * VH_LINES, 0, 0, vh_ldsc };
|
||||
static TMLX vh_parm[VH_MUXES * VH_LINES] = { 0 };
|
||||
static TMLX vh_parm[VH_MUXES * VH_LINES] = { { 0 } };
|
||||
|
||||
/* Forward references */
|
||||
static t_stat vh_rd (int32 *data, int32 PA, int32 access);
|
||||
@@ -675,7 +676,7 @@ static void vh_getc ( int32 vh )
|
||||
|
||||
for (i = 0; i < VH_LINES; i++) {
|
||||
lp = &vh_parm[(vh * VH_LINES) + i];
|
||||
while (c = tmxr_getc_ln (lp->tmln)) {
|
||||
while ((c = tmxr_getc_ln (lp->tmln)) != 0) {
|
||||
if (c & SCPE_BREAK) {
|
||||
fifo_put (vh, lp,
|
||||
RBUF_FRAME_ERR | RBUF_PUTLINE (i));
|
||||
@@ -786,7 +787,7 @@ static t_stat vh_wr ( int32 data,
|
||||
if (access == WRITEB)
|
||||
data = (PA & 1) ?
|
||||
(vh_csr[vh] & 0377) | (data << 8) :
|
||||
(vh_csr[vh] & ~0377) | data & 0377;
|
||||
(vh_csr[vh] & ~0377) | (data & 0377);
|
||||
if (data & CSR_MASTER_RESET) {
|
||||
if ((vh_unit[vh].flags & UNIT_MODEDHU) && (data & CSR_SKIP))
|
||||
data &= ~CSR_MASTER_RESET;
|
||||
@@ -877,7 +878,7 @@ static t_stat vh_wr ( int32 data,
|
||||
if (access == WRITEB)
|
||||
data = (PA & 1) ?
|
||||
(lp->lpr & 0377) | (data << 8) :
|
||||
(lp->lpr & ~0377) | data & 0377;
|
||||
(lp->lpr & ~0377) | (data & 0377);
|
||||
/* Modify only if CSR<3:0> == 0 */
|
||||
if (CSR_GETCHAN (vh_csr[vh]) != 0)
|
||||
data &= ~LPR_DISAB_XRPT;
|
||||
@@ -926,7 +927,7 @@ static t_stat vh_wr ( int32 data,
|
||||
if (access == WRITEB)
|
||||
data = (PA & 1) ?
|
||||
(lp->lnctrl & 0377) | (data << 8) :
|
||||
(lp->lnctrl & ~0377) | data & 0377;
|
||||
(lp->lnctrl & ~0377) | (data & 0377);
|
||||
/* catch the abort TX transition */
|
||||
if (!(lp->lnctrl & LNCTRL_TX_ABORT) &&
|
||||
(data & LNCTRL_TX_ABORT)) {
|
||||
@@ -993,7 +994,7 @@ static t_stat vh_wr ( int32 data,
|
||||
if (access == WRITEB)
|
||||
data = (PA & 1) ?
|
||||
(lp->tbuf1 & 0377) | (data << 8) :
|
||||
(lp->tbuf1 & ~0377) | data & 0377;
|
||||
(lp->tbuf1 & ~0377) | (data & 0377);
|
||||
lp->tbuf1 = data;
|
||||
break;
|
||||
case 6: /* TBUFFAD2 */
|
||||
@@ -1008,7 +1009,7 @@ static t_stat vh_wr ( int32 data,
|
||||
if (access == WRITEB)
|
||||
data = (PA & 1) ?
|
||||
(lp->tbuf2 & 0377) | (data << 8) :
|
||||
(lp->tbuf2 & ~0377) | data & 0377;
|
||||
(lp->tbuf2 & ~0377) | (data & 0377);
|
||||
lp->tbuf2 = data;
|
||||
/* if starting a DMA, clear DMA_ERR */
|
||||
if (vh_unit[vh].flags & UNIT_FASTDMA) {
|
||||
@@ -1028,7 +1029,7 @@ static t_stat vh_wr ( int32 data,
|
||||
if (access == WRITEB)
|
||||
data = (PA & 1) ?
|
||||
(lp->tbuffct & 0377) | (data << 8) :
|
||||
(lp->tbuffct & ~0377) | data & 0377;
|
||||
(lp->tbuffct & ~0377) | (data & 0377);
|
||||
lp->tbuffct = data;
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user