1
0
mirror of https://github.com/simh/simh.git synced 2026-02-14 11:55:51 +00:00

Notes For V3.0-0

Because some key files have changed, V3.0 should be unzipped to a
clean directory.

1. New Features in 3.0-0

1.1 SCP and Libraries

- Added ASSIGN/DEASSIGN (logical name) commands.
- Changed RESTORE to unconditionally detach files.
- Added E11 and TPC format support to magtape library.
- Fixed bug in SHOW CONNECTIONS.
- Added USE_ADDR64 support

1.2 All magtapes

- Magtapes support SIMH format, E11 format, and TPC format (read only).
- SET <tape_unit> FORMAT=format sets the specified tape unit's format.
- SHOW <tape_unit> FORMAT displays the specified tape unit's format.
- Tape format can also be set as part of the ATTACH command, using
  the -F switch.

1.3 VAX

- VAX can be compiled without USE_INT64.
- If compiled with USE_INT64 and USE_ADDR64, RQ and TQ controllers support
  files > 2GB.
- VAX ROM has speed control (SET ROM DELAY/NODELAY).

2. Bugs Fixed in 3.01-0

2.1 VAX

- Fixed CVTfi bug: integer overflow not set if exponent out of range
- Fixed EMODx bugs:
  o First and second operands reversed
  o Separated fraction received wrong exponent
  o Overflow calculation on separated integer incorrect
  o Fraction not set to zero if exponent out of range
- Fixed interval timer and ROM access to pass power-up self-test even on very
  fast host processors (fixes from Mark Pizzolato).

2.2 1401

- Fixed mnemonic, instruction lengths, and reverse scan length check bug for MCS.
- Fixed MCE bug, BS off by 1 if zero suppress.
- Fixed chaining bug, D lost if return to SCP.
- Fixed H branch, branch occurs after continue.
- Added check for invalid 8 character MCW, LCA.
- Fixed magtape load-mode end of record response.

2.3 Nova

- Fixed DSK variable size interaction with restore.

2.4 PDP-1

- Fixed DT variable size interaction with restore.

2.5 PDP-11

- Fixed DT variable size interaction with restore.
- Fixed bug in MMR1 update (found by Tim Stark).
- Added XQ features and fixed bugs:
  o Corrected XQ interrupts on IE state transition (code by Tom Evans).
  o Added XQ interrupt clear on soft reset.
  o Removed XQ interrupt when setting XL or RL (multiple people).
  o Added SET/SHOW XQ STATS.
  o Added SHOW XQ FILTERS.
  o Added ability to split received packet into multiple buffers.
  o Added explicit runt and giant packet processing.

2.6 PDP-18B

- Fixed DT, RF variable size interaction with restore.
- Fixed MT bug in MTTR.

2.7 PDP-8

- Fixed DT, DF, RF, RX variable size interaction with restore.
- Fixed MT bug in SKTR.

2.8 HP2100

- Fixed bug in DP (13210A controller only), DQ read status.
- Fixed bug in DP, DQ seek complete.

2.9 GRI

- Fixed bug in SC queue pointer management.

3. New Features in 3.0 vs prior releases

N/A

4. Bugs Fixed in 3.0 vs prior releases

N/A

5. General Notes

WARNING: The RESTORE command has changed.  RESTORE will now
detach an attached file on a unit, if that unit did not have
an attached file in the saved configuration.  This is required
to assure that the unit flags and the file state are consistent.

WARNING: The compilation scheme for the PDP-10, PDP-11, and VAX
has changed.  Use one of the supplied build files, or read the
documentation carefully, before compiling any of these simulators.
This commit is contained in:
Bob Supnik
2003-06-25 09:20:00 -07:00
committed by Mark Pizzolato
parent 43385c9616
commit 4ffd3be790
215 changed files with 12913 additions and 8563 deletions

View File

@@ -1,6 +1,6 @@
/* i1620_cd.c: IBM 1622 card reader/punch
Copyright (c) 2002, Robert M. Supnik
Copyright (c) 2002-2003, 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"),
@@ -26,6 +26,8 @@
cdr 1622 card reader
cdp 1622 card punch
25-Apr-03 RMS Revised for extended file support
Cards are represented as ASCII text streams terminated by newlines.
This allows cards to be created and edited as normal files.
*/
@@ -62,7 +64,7 @@ UNIT cdr_unit = {
REG cdr_reg[] = {
{ FLDATA (LAST, ind[IN_LAST], 0) },
{ DRDATA (POS, cdr_unit.pos, 32), PV_LEFT },
{ DRDATA (POS, cdr_unit.pos, T_ADDR_W), PV_LEFT },
{ NULL } };
DEVICE cdr_dev = {
@@ -82,7 +84,7 @@ UNIT cdp_unit = {
UDATA (NULL, UNIT_SEQ+UNIT_ATTABLE, 0) };
REG cdp_reg[] = {
{ DRDATA (POS, cdp_unit.pos, 32), PV_LEFT },
{ DRDATA (POS, cdp_unit.pos, T_ADDR_W), PV_LEFT },
{ NULL } };
DEVICE cdp_dev = {

View File

@@ -1,6 +1,6 @@
/* i1620_cpu.c: IBM 1620 CPU simulator
Copyright (c) 2002, Robert M. Supnik
Copyright (c) 2002-2003, 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"),
@@ -26,6 +26,7 @@
This CPU module incorporates code and comments from the 1620 simulator by
Geoff Kuenning, with his permission.
25-Apr-03 RMS Changed t_addr to uint32 throughout
18-Oct-02 RMS Fixed bugs in invalid result testing (found by Hans Pufal)
The simulated register state for the IBM 1620 is:
@@ -760,7 +761,7 @@ case OP_BCXM:
break; }
reason = add_field (GET_IDXADDR (idx), QAR, FALSE, TRUE, &sta);
if (ar_stop && ind[IN_OVF]) reason = STOP_OVERFL;
if ((ind[IN_EZ] == 0) && (sta == ADD_NOCRY)) { /* ~z, ~c, ~schg? */
if ((ind[IN_EZ] == 0) && (sta == ADD_NOCRY)) { /* ~z, ~c, ~sign chg? */
BRANCH (PAR); } /* branch */
break;
@@ -954,10 +955,10 @@ cnt = 0; /* count depth */
do { indir = indir & M[alast]; /* get indirect */
if (cvt_addr (alast, lnt, FALSE, &addr)) /* cvt addr to bin */
return STOP_INVPDG; /* bad? */
idx = get_idx (ADDR_S (alast, 1)); /* get index addr */
idx = get_idx (ADDR_S (alast, 1)); /* get index reg num */
if (indexok && (idx > 0)) { /* indexable? */
idxa = GET_IDXADDR (idx); /* get idx addr */
if (cvt_addr (idxa, ADDR_LEN, TRUE, &idxv)) /* cvt idx */
idxa = GET_IDXADDR (idx); /* get idx reg addr */
if (cvt_addr (idxa, ADDR_LEN, TRUE, &idxv)) /* cvt idx reg */
return STOP_INVPDG;
addr = addr + idxv; /* add in index */
if (addr < 0) addr = addr + 100000; } /* -? 10's comp */
@@ -1009,10 +1010,10 @@ return SCPE_OK;
t_stat get_idx (uint32 aidx)
{
int32 i, idx = 0;
int32 i, idx;
if (idxe == 0) return -1; /* indexing off? */
for (i = 0; i < 3; i++) { /* 3 flags worth */
for (i = idx = 0; i < 3; i++) { /* 3 flags worth */
if (M[aidx] & FLAG) idx = idx | (1 << i); /* test flag */
MM (aidx); } /* next digit */
return idx;
@@ -1040,7 +1041,7 @@ return;
t_stat xmt_field (uint32 d, uint32 s, uint32 skp)
{
t_addr cnt = 0;
uint32 cnt = 0;
uint8 t;
do { t = M[d] = M[s] & (FLAG | DIGIT); /* copy src to dst */
@@ -1054,7 +1055,7 @@ return SCPE_OK;
t_stat xmt_record (uint32 d, uint32 s, t_bool cpy)
{
t_addr cnt = 0;
uint32 cnt = 0;
while ((M[s] & REC_MARK) != REC_MARK) { /* until rec mark */
M[d] = M[s] & (FLAG | DIGIT); /* copy src to dst */
@@ -1083,7 +1084,7 @@ return SCPE_OK;
t_stat xmt_divd (uint32 d, uint32 s)
{
t_addr cnt = 0;
uint32 cnt = 0;
M[d] = M[s] & DIGIT; /* first w/o flag */
do { MM (d); MM (s); /* decr mem addrs */
@@ -1097,7 +1098,7 @@ return SCPE_OK;
t_stat xmt_tns (uint32 d, uint32 s)
{
t_addr cnt = 0;
uint32 cnt = 0;
uint8 t, z;
t = M[s] & DIGIT; /* get units */
@@ -1120,7 +1121,7 @@ return SCPE_OK;
t_stat xmt_tnf (uint32 d, uint32 s)
{
t_addr cnt = 0;
uint32 cnt = 0;
uint8 t;
t = M[s]; /* get 1st digit */
@@ -1242,7 +1243,7 @@ t_stat mul_field (uint32 mpc, uint32 mpy)
int32 i;
uint32 pro; /* prod pointer */
uint32 mpyd, mpyf; /* mpy digit, flag */
t_addr cnt = 0; /* counter */
uint32 cnt = 0; /* counter */
uint8 sign; /* final sign */
t_stat r;
@@ -1299,7 +1300,7 @@ uint32 mpcd, mpcf; /* mpc digit, flag */
uint32 prwp; /* prod working ptr */
uint32 prod; /* product digit */
uint32 cry; /* carry */
t_addr mpcc, cryc; /* counters */
uint32 mpcc, cryc; /* counters */
mptb = MUL_TABLE + ((mpyd <= 4)? (mpyd * 2): /* set mpy table 100's, */
(((mpyd - 5) * 2) + 100)); /* 1's digits */
@@ -1535,7 +1536,7 @@ t_stat div_one_digit (uint32 dvd, uint32 dvr, uint32 max,
uint32 dvrp, dvrd, dvrf; /* dvr ptr, dig, flag */
uint32 dvdp, dvdd; /* dvd ptr, dig */
uint32 qd, cry; /* quo dig, carry */
t_addr cnt;
uint32 cnt;
for (qd = 0; qd < max; qd++) { /* devel quo dig */
dvrp = dvr; /* divisor ptr */
@@ -1592,7 +1593,7 @@ return SCPE_OK;
t_stat or_field (uint32 d, uint32 s)
{
t_addr cnt = 0;
uint32 cnt = 0;
int32 t;
ind[IN_EZ] = 1; /* assume result zero */
@@ -1607,7 +1608,7 @@ return SCPE_OK;
t_stat and_field (uint32 d, uint32 s)
{
t_addr cnt = 0;
uint32 cnt = 0;
int32 t;
ind[IN_EZ] = 1; /* assume result zero */
@@ -1622,7 +1623,7 @@ return SCPE_OK;
t_stat xor_field (uint32 d, uint32 s)
{
t_addr cnt = 0;
uint32 cnt = 0;
int32 t;
ind[IN_EZ] = 1; /* assume result zero */
@@ -1637,7 +1638,7 @@ return SCPE_OK;
t_stat com_field (uint32 d, uint32 s)
{
t_addr cnt = 0;
uint32 cnt = 0;
int32 t;
ind[IN_EZ] = 1; /* assume result zero */
@@ -1667,7 +1668,7 @@ return SCPE_OK;
t_stat oct_to_dec (uint32 tbl, uint32 s)
{
t_addr cnt = 0, tblc;
uint32 cnt = 0, tblc;
uint32 i, sd, sf, tf, sign;
t_stat r;
@@ -1715,7 +1716,7 @@ t_stat dec_to_oct (uint32 d, uint32 tbl, int32 *ez)
{
uint32 sign, octd, t;
t_bool first = TRUE;
t_addr ctr = 0;
uint32 ctr = 0;
t_stat r;
sign = M[PROD_AREA + PROD_AREA_LEN - 1] & FLAG; /* input sign */
@@ -1794,7 +1795,7 @@ return SCPE_OK;
t_stat cpu_set_size (UNIT *uptr, int32 val, char *cptr, void *desc)
{
int32 mc = 0;
t_addr i;
uint32 i;
if ((val <= 0) || (val > MAXMEMSIZE) || ((val % 1000) != 0))
return SCPE_ARG;

View File

@@ -1,6 +1,6 @@
/* i1620_defs.h: IBM 1620 simulator definitions
Copyright (c) 2002, Robert M. Supnik
Copyright (c) 2002-2003, 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"),

View File

@@ -1,14 +1,14 @@
To: Users
From: Bob Supnik
Subj: IBM 1620 Simulator Usage
Date: 15-Nov-2002
Date: 15-Apr-2003
COPYRIGHT NOTICE
The following copyright notice applies to both the SIMH source and binary:
Original code published in 1993-2002, written by Robert M Supnik
Copyright (c) 1993-2002, Robert M Supnik
Original code published in 1993-2003, written by Robert M Supnik
Copyright (c) 1993-2003, 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"),
@@ -138,10 +138,10 @@ standard on the Model 2.
If memory size is being reduced, and the memory being truncated contains
non-zero data, the simulator asks for confirmation. Data in the truncated
portion of memory is lost. Initially, memory size is 16K, and all special
features are enabled.
portion of memory is lost. Initially, the CPU is a Model I, memory size is
20K, and indirect addressing, editing instructions, and divide are enabled.
Memory is implemented as 5 bit BCD characters, as follows:
Memory is implemented as 5 bit BCD digits, as follows:
4 3 2 1 0
@@ -177,8 +177,8 @@ interrupt system.
IND[0:99] 1 indicator array
IAE 1 indirect address enable (Model 2 only)
IDXE 1 indexing enable (Model 2 only)
IDXB 1 indexinb band select (Model 2 only)
IR1Q 1 IR1 prior to last branch;
IDXB 1 indexing band select (Model 2 only)
IR1Q[0:63] 16 IR1 prior to last branch;
most recent IR1 change first
WRU 8 interrupt character
@@ -198,12 +198,12 @@ key is pressed. The typewriter has no errors.
2.3 1621 Paper Tape Reader (PTR)
The paper tape reader (PTR) reads data from a disk file. The POS
register specifies the number of the next data item to be read. Thus,
by changing POS, the user can backspace or advance the reader.
The paper tape reader (PTR) reads data from a disk file. The POS register
specifies the number of the next data item to be read. Thus, by changing
POS, the user can backspace or advance the reader.
The paper tape reader supports the BOOT command. BOOT PTR starts the
specified instruction sequence at location 0.
standard paper tape boot sequence at location 0.
The paper tape reader implements these registers:
@@ -227,7 +227,7 @@ Error handling is as follows:
2.4 1624 Paper Tape Punch (PTP)
The paper tape punch (PTP) writes data to a disk file. The POS register
specifies the number of the next data item to bewritten. Thus, by
specifies the number of the next data item to be written. Thus, by
changing POS, the user can backspace or advance the punch.
The paper tape punch implements these registers:
@@ -252,8 +252,8 @@ Error handling is as follows:
The IBM 1402 card/reader punch is simulated as two independent devices:
the card reader (CDR) and the card punch (CDP).
The card reader supports the BOOT command. BOOT CDR starts the
specified instruction sequence at location 0.
The card reader supports the BOOT command. BOOT CDR starts the standard
card boot sequence at location 0.
The card reader reads data from a disk file, while the punch writes data
to a disk file. Cards are simulated as ASCII text lines with terminating
@@ -436,11 +436,11 @@ marks the end of the immediate Q operand; and the flags over digits
The IBM 1620 uses single digits to represent numbers, and pairs of
digits to represent characters (alphameric coding). Only a small
number of the 256 possible alphameric codings have legitimate values.
Further, the translation between alphameric and devices varied
from device to device. The simulator implements a code called
Further, the translation between alphameric and devices varied from
device to device. The simulator implements a code called 1620 ASCII,
which allows all 64 possible card codes to be represented by upper
case ASCII characters. In addition, lower case alphabetic
characters are accepted on input as equivalent to upper case.
case ASCII characters. In addition, lower case alphabetic characters
are accepted on input as equivalent to upper case.
Card code PT code RA RN LPT WA ASCII representation

View File

@@ -1,6 +1,6 @@
/* i1620_dp.c: IBM 1311 disk simulator
Copyright (c) 2002, Robert M. Supnik
Copyright (c) 2002-2003, 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"),
@@ -83,7 +83,7 @@ extern uint8 ind[NUM_IND];
extern UNIT cpu_unit;
int32 dp_stop = 1; /* disk err stop */
t_addr dp_ba = 0; /* buffer addr */
uint32 dp_ba = 0; /* buffer addr */
t_stat dp_reset (DEVICE *dptr);
t_stat dp_rdadr (UNIT *uptr, int32 sec, int32 qnr, int32 qwc);

View File

@@ -1,6 +1,6 @@
/* i1620_fp.c: IBM 1620 floating point simulator
Copyright (c) 2002, Robert M. Supnik
Copyright (c) 2002-2003, 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"),

View File

@@ -1,6 +1,6 @@
/* i1620_lp.c: IBM 1443 line printer simulator
Copyright (c) 2002, Robert M. Supnik
Copyright (c) 2002-2003, 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"),
@@ -24,6 +24,8 @@
in this Software without prior written authorization from Robert M Supnik.
lpt 1443 line printer
25-Apr-03 RMS Revised for extended file support
*/
#include "i1620_defs.h"
@@ -75,7 +77,7 @@ REG lpt_reg[] = {
{ FLDATA (PRCH9, ind[IN_PRCH9], 0) },
{ FLDATA (PRCH12, ind[IN_PRCH12], 0) },
{ FLDATA (PRBSY, ind[IN_PRBSY], 0) },
{ DRDATA (POS, lpt_unit.pos, 32), PV_LEFT },
{ DRDATA (POS, lpt_unit.pos, T_ADDR_W), PV_LEFT },
{ BRDATA (CCT, cct, 8, 32, CCT_LNT) },
{ DRDATA (CCTP, cct_ptr, 8), PV_LEFT },
{ DRDATA (CCTL, cct_lnt, 8), REG_RO + PV_LEFT },

View File

@@ -1,6 +1,6 @@
/* i1620_pt.c: IBM 1621/1624 paper tape reader/punch simulator
Copyright (c) 2002, Robert M Supnik
Copyright (c) 2002-2003, 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,8 @@
ptr 1621 paper tape reader
ptp 1624 paper tape punch
25-Apr-03 RMS Revised for extended file support
*/
#include "i1620_defs.h"
@@ -58,7 +60,7 @@ UNIT ptr_unit = {
UDATA (NULL, UNIT_SEQ+UNIT_ATTABLE+UNIT_ROABLE, 0) };
REG ptr_reg[] = {
{ DRDATA (POS, ptr_unit.pos, 32), PV_LEFT },
{ DRDATA (POS, ptr_unit.pos, T_ADDR_W), PV_LEFT },
{ NULL } };
DEVICE ptr_dev = {
@@ -78,7 +80,7 @@ UNIT ptp_unit = {
UDATA (NULL, UNIT_SEQ+UNIT_ATTABLE, 0) };
REG ptp_reg[] = {
{ DRDATA (POS, ptp_unit.pos, 32), PV_LEFT },
{ DRDATA (POS, ptp_unit.pos, T_ADDR_W), PV_LEFT },
{ NULL } };
DEVICE ptp_dev = {
@@ -197,7 +199,7 @@ const int8 alp_to_ptp[256] = {
t_stat ptr (uint32 op, uint32 pa, uint32 f0, uint32 f1)
{
t_addr i;
uint32 i;
int8 mc;
uint8 ptc;
t_stat r, inv = SCPE_OK;
@@ -243,7 +245,7 @@ return STOP_RWRAP;
t_stat btr (uint32 op, uint32 pa, uint32 f0, uint32 f1)
{
t_addr i;
uint32 i;
uint8 ptc;
t_stat r, inv = SCPE_OK;
@@ -333,7 +335,7 @@ return SCPE_OK;
t_stat ptp (uint32 op, uint32 pa, uint32 f0, uint32 f1)
{
t_addr i;
uint32 i;
int8 ptc;
uint8 z, d;
t_stat r;
@@ -366,7 +368,7 @@ return STOP_RWRAP;
t_stat btp (uint32 op, uint32 pa, uint32 f0, uint32 f1)
{
t_addr i;
uint32 i;
uint8 ptc, z, d;
t_stat r;

View File

@@ -1,6 +1,6 @@
/* i1620_sys.c: IBM 1620 simulator interface
Copyright (c) 2002, Robert M. Supnik
Copyright (c) 2002-2003, 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"),

View File

@@ -1,6 +1,6 @@
/* i1620_tty.c: IBM 1620 typewriter
Copyright (c) 2002, Robert M. Supnik
Copyright (c) 2002-2003, 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"),