1
0
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:
Bob Supnik
2010-04-26 06:04:00 -07:00
committed by Mark Pizzolato
parent 9c4779c061
commit 35eac703c3
55 changed files with 4948 additions and 760 deletions

View File

@@ -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

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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",

View File

@@ -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: