mirror of
https://github.com/simh/simh.git
synced 2026-02-16 12:44:09 +00:00
Notes For V3.6-0
The save/restore format has been updated to improve its reliability. As a result, save files prior to release 3.0 are no longer supported. The text documentation files are obsolete and are no longer included with the distribution. Up-to-date PDF documentation files are available on the SimH web site. 1. New Features 1.1 3.6-0 1.1.1 Most magnetic tapes - Added support for limiting tape capacity to a particular size in MB 1.1.2 IBM 7090/7094 - First release 1.1.3 VAX-11/780 - Added FLOAD command, loads system file from console floppy disk 1.1.4 VAX, VAX-11/780, and PDP-11 - Added card reader support (from John Dundas) 1.1.5 PDP-11 - Added instruction history 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
a12e4a1c39
commit
dc871fa631
@@ -1,572 +0,0 @@
|
||||
To: Users
|
||||
From: Bob Supnik
|
||||
Subj: PDP-1 Simulator Usage
|
||||
Date: 15-Nov-2004
|
||||
|
||||
COPYRIGHT NOTICE
|
||||
|
||||
The following copyright notice applies to both the SIMH source and binary:
|
||||
|
||||
Original code published in 1993-2005, written by Robert M Supnik
|
||||
Copyright (c) 1993-2005, 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"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of Robert M Supnik shall not be
|
||||
used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from Robert M Supnik.
|
||||
|
||||
This memorandum documents the PDP-1 simulator.
|
||||
|
||||
|
||||
1. Simulator Files
|
||||
|
||||
sim/ scp.h
|
||||
sim_console.h
|
||||
sim_defs.h
|
||||
sim_fio.h
|
||||
sim_rev.h
|
||||
sim_sock.h
|
||||
sim_timer.h
|
||||
sim_tmxr.h
|
||||
scp.c
|
||||
sim_console.c
|
||||
sim_fio.c
|
||||
sim_sock.c
|
||||
sim_timer.c
|
||||
sim_tmxr.c
|
||||
|
||||
sim/pdp1/ pdp1_defs.h
|
||||
pdp1_cpu.c
|
||||
pdp1_drm.c
|
||||
pdp1_dt.c
|
||||
pdp1_lp.c
|
||||
pdp1_stddev.c
|
||||
pdp1_sys.c
|
||||
|
||||
2. PDP-1 Features
|
||||
|
||||
The PDP-1 is configured as follows:
|
||||
|
||||
device simulates
|
||||
name(s)
|
||||
|
||||
CPU PDP-1 CPU with up to 64KW of memory
|
||||
PTR,PTP integral paper tape reader/punch
|
||||
TTY console typewriter
|
||||
LPT Type 62 line printer
|
||||
DRM Type 24 serial drum
|
||||
DRP Type 23 parallel drum
|
||||
DT Type 550 Microtape (DECtape)
|
||||
|
||||
The PDP-1 simulator implements the following unique stop conditions:
|
||||
|
||||
- an unimplemented instruction is decoded, and register
|
||||
STOP_INST is set
|
||||
- more than IND_MAX indirect addresses are detected during
|
||||
memory reference address decoding
|
||||
- more than XCT_MAX nested executes are detected during
|
||||
instruction execution
|
||||
- I/O wait, and no I/O operations outstanding (i.e, no I/O
|
||||
completion will ever occur)
|
||||
- a simulated DECtape runs off the end of its reel
|
||||
|
||||
The PDP-1 loader supports RIM format tapes and BLK format tapes. If
|
||||
the file to be loaded has an extension of .BIN, or switch -B is specified,
|
||||
the file is assumed to be BLK format; otherwise, it defaults to RIM
|
||||
format. LOAD takes an optional argument which specifies the starting
|
||||
address of the field to be loaded:
|
||||
|
||||
LOAD lisp.rim -- load RIM format file lisp.rim
|
||||
LOAD ddt.rim 70000 -- load RIM format file ddt.rim into
|
||||
the field starting at 70000
|
||||
LOAD -B macro.blk -- load BLK format file macro.blk
|
||||
|
||||
The DUMP command is not implemented.
|
||||
|
||||
2.1 CPU
|
||||
|
||||
The only CPU options are the presence of hardware multiply/divide and the
|
||||
size of main memory.
|
||||
|
||||
SET CPU MDV enable multiply/divide
|
||||
SET CPU NOMDV disable multiply/divide
|
||||
SET CPU 4K set memory size = 4K
|
||||
SET CPU 8K set memory size = 8K
|
||||
SET CPU 12K set memory size = 12K
|
||||
SET CPU 16K set memory size = 16K
|
||||
SET CPU 20K set memory size = 20K
|
||||
SET CPU 24K set memory size = 24K
|
||||
SET CPU 28K set memory size = 28K
|
||||
SET CPU 32K set memory size = 32K
|
||||
SET CPU 48K set memory size = 48K
|
||||
SET CPU 64K set memory size = 64K
|
||||
|
||||
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. Initial memory size is 64K.
|
||||
|
||||
CPU registers include the visible state of the processor as well as the
|
||||
control registers for the interrupt system.
|
||||
|
||||
name size comments
|
||||
|
||||
PC 16 program counter
|
||||
AC 18 accumulator
|
||||
IO 18 IO register
|
||||
OV 1 overflow flag
|
||||
PF 6 program flags<1:6>
|
||||
SS 6 sense switches<1:6>
|
||||
TA 16 address switches
|
||||
TW 18 test word (front panel switches)
|
||||
EXTM 1 extend mode
|
||||
IOSTA 18 IO status register
|
||||
SBON 1 sequence break enable
|
||||
SBRQ 1 sequence break request
|
||||
SBIP 1 sequence break in progress
|
||||
IOH 1 I/O halt in progress
|
||||
IOS 1 I/O synchronizer (completion)
|
||||
PCQ[0:63] 16 PC prior to last jump or interrupt;
|
||||
most recent PC change first
|
||||
STOP_INST 1 stop on undefined instruction
|
||||
SBS_INIT 1 initial state of sequence break enable
|
||||
EXTM_INIT 1 initial state of extend mode
|
||||
XCT_MAX 8 maximum XCT chain
|
||||
IND_MAX 8 maximum nested indirect addresses
|
||||
WRU 8 interrupt character
|
||||
|
||||
The CPU can maintain a history of the most recently executed instructions.
|
||||
This is controlled by the SET CPU HISTORY and SHOW CPU HISTORY commands:
|
||||
|
||||
SET CPU HISTORY clear history buffer
|
||||
SET CPU HISTORY=0 disable history
|
||||
SET CPU HISTORY=n enable history, length = n
|
||||
SHOW CPU HISTORY print CPU history
|
||||
SHOW CPU HISTORY=n print first n entries of CPU history
|
||||
|
||||
The maximum length for the history is 65536 entries.
|
||||
|
||||
2.2 Programmed I/O Devices
|
||||
|
||||
2.2.1 Paper Tape Reader (PTR)
|
||||
|
||||
The paper tape reader (PTR) reads data from or 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 copies the
|
||||
RIM loader into memory and starts it running. BOOT PTR loads into the
|
||||
field selected by TA<0:3> (the high order four bits of the address
|
||||
switches).
|
||||
|
||||
The paper tape reader implements these registers:
|
||||
|
||||
name size comments
|
||||
|
||||
BUF 8 last data item processed
|
||||
DONE 1 device done flag
|
||||
RPLS 1 return restart pulse flag
|
||||
POS 32 position in the input file
|
||||
TIME 24 time from I/O initiation to interrupt
|
||||
STOP_IOE 1 stop on I/O error
|
||||
|
||||
Error handling is as follows:
|
||||
|
||||
error STOP_IOE processed as
|
||||
|
||||
not attached 1 report error and stop
|
||||
0 out of tape
|
||||
|
||||
end of file 1 report error and stop
|
||||
0 out of tape
|
||||
|
||||
OS I/O error x report error and stop
|
||||
|
||||
2.2.2 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 be written.
|
||||
Thus, by changing POS, the user can backspace or advance the punch.
|
||||
|
||||
The paper tape punch implements these registers:
|
||||
|
||||
name size comments
|
||||
|
||||
BUF 8 last data item processed
|
||||
DONE 1 device done flag
|
||||
RPLS 1 return restart pulse flag
|
||||
POS 32 position in the output file
|
||||
TIME 24 time from I/O initiation to interrupt
|
||||
STOP_IOE 1 stop on I/O error
|
||||
|
||||
Error handling is as follows:
|
||||
|
||||
error STOP_IOE processed as
|
||||
|
||||
not attached 1 report error and stop
|
||||
0 out of tape
|
||||
|
||||
OS I/O error x report error and stop
|
||||
|
||||
2.2.3 Console Typewriter (TTY)
|
||||
|
||||
The Typewriter is a half-duplex electric typewriter (originally a
|
||||
Friden Flexowriter, later a Sorobon-modified IBM B). It has only a
|
||||
single buffer and a single carriage state but distinct input and
|
||||
output done and interrupt flags. The typewriter input (TTY unit 0)
|
||||
polls the console keyboard for input. The typewriter output (TTY
|
||||
unit 1) writes to the simulator console window.
|
||||
|
||||
The typewriter implements these registers:
|
||||
|
||||
name size comments
|
||||
|
||||
BUF 6 typewriter buffer
|
||||
UC 1 upper case/lower case state flag
|
||||
RPLS 1 return restart pulse flag
|
||||
KDONE 1 input ready flag
|
||||
KPOS 32 number of characters input
|
||||
KTIME 24 keyboard polling interval
|
||||
TDONE 1 output done flag
|
||||
TPOS 32 number of characters output
|
||||
TTIME 24 time from I/O initiation to interrupt
|
||||
|
||||
2.2.4 Type 62 Line Printer (LPT)
|
||||
|
||||
The paper line printer (LPT) writes data to a disk file. The POS
|
||||
register specifies the number of the next data item to be written.
|
||||
Thus, by changing POS, the user can backspace or advance the printer.
|
||||
|
||||
The line printer can be disabled and enabled with the SET LPT DISABLED
|
||||
and SET LPT ENABLED commands, respectively.
|
||||
|
||||
The line printer implements these registers:
|
||||
|
||||
name size comments
|
||||
|
||||
BUF 8 last data item processed
|
||||
PNT 1 printing done flag
|
||||
SPC 1 spacing done flag
|
||||
RPLS 1 return restart pulse flag
|
||||
BPTR 6 print buffer pointer
|
||||
POS 32 position in the output file
|
||||
TIME 24 time from I/O initiation to interrupt
|
||||
STOP_IOE 1 stop on I/O error
|
||||
LBUF[0:119] 8 line buffer
|
||||
|
||||
Error handling is as follows:
|
||||
|
||||
error STOP_IOE processed as
|
||||
|
||||
not attached 1 report error and stop
|
||||
0 out of tape or paper
|
||||
|
||||
OS I/O error x report error and stop
|
||||
|
||||
2.3 Type 550/555 Microtape (DECtape) (DT)
|
||||
|
||||
The PDP-1 uses the Type 550 Microtape (later renamed DECtape), a programmed
|
||||
I/O controller. PDP-1 DECtape format has 4 18b words in its block headers
|
||||
and trailers.
|
||||
|
||||
DECtapes drives are numbered 1-8; in the simulator, drive 8 is unit 0.
|
||||
DECtape options include the ability to make units write enabled or write
|
||||
locked.
|
||||
|
||||
SET DTn WRITEENABLED set unit n write enabled
|
||||
SET DTn LOCKED set unit n write locked
|
||||
|
||||
Units can also be set ENABLED or DISABLED.
|
||||
|
||||
The DECtape controller can be disabled and enabled with the SET DT DISABLED
|
||||
and SET DT ENABLED commands, respectively.
|
||||
|
||||
The Type 550 supports PDP-8 format, PDP-11 format, and 18b format DECtape
|
||||
images. ATTACH tries to determine the tape format from the DECtape image;
|
||||
the user can force a particular format with switches:
|
||||
|
||||
-r PDP-8 format
|
||||
-s PDP-11 format
|
||||
-t 18b format
|
||||
|
||||
The DECtape controller is a data-only simulator; the timing and mark
|
||||
track, and block header and trailer, are not stored. Thus, the WRITE
|
||||
TIMING AND MARK TRACK function is not supported; the READ ALL function
|
||||
always returns the hardware standard block header and trailer; and the
|
||||
WRITE ALL function dumps non-data words into the bit bucket.
|
||||
|
||||
The DECtape controller implements these registers:
|
||||
|
||||
name size comments
|
||||
|
||||
DTSA 12 status register A
|
||||
DTSB 12 status register B
|
||||
DTDB 18 data buffer
|
||||
DTF 1 DECtape flag
|
||||
BEF 1 block end flag
|
||||
ERF 1 error flag
|
||||
LTIME 31 time between lines
|
||||
DCTIME 31 time to decelerate to a full stop
|
||||
SUBSTATE 2 read/write command substate
|
||||
POS[0:7] 32 position, in lines, units 0-7
|
||||
STATT[0:7] 18 unit state, units 0-7
|
||||
STOP_OFFR 1 stop on off-reel error
|
||||
|
||||
It is critically important to maintain certain timing relationships
|
||||
among the DECtape parameters, or the DECtape simulator will fail to
|
||||
operate correctly.
|
||||
|
||||
- LTIME must be at least 6
|
||||
- DCTIME needs to be at least 100 times LTIME
|
||||
|
||||
Acceleration time is set to 75% of deceleration time.
|
||||
|
||||
2.4 Drums
|
||||
|
||||
The PDP-1 supported two drums: the Type 23 parallel drum (DRP) and
|
||||
the Type 24 serial drum (DRM). Both use device addresses 061-064;
|
||||
accordingly, only one can be enabled at a time. By default, the
|
||||
Type 24 serial drum is enabled, and the Type 23 parallel drum is
|
||||
disabled.
|
||||
|
||||
2.4.1 Type 24 Serial Drum (DRM)
|
||||
|
||||
The serial drum (DRM) implements these registers:
|
||||
|
||||
name size comments
|
||||
|
||||
DA 9 drum address (sector number)
|
||||
MA 16 current memory address
|
||||
DONE 1 device done flag
|
||||
ERR 1 error flag
|
||||
WLK 32 write lock switches
|
||||
TIME 24 rotational latency, per word
|
||||
STOP_IOE 1 stop on I/O error
|
||||
|
||||
Error handling is as follows:
|
||||
|
||||
error STOP_IOE processed as
|
||||
|
||||
not attached 1 report error and stop
|
||||
0 disk not ready
|
||||
|
||||
Drum data files are buffered in memory; therefore, end of file and OS
|
||||
I/O errors cannot occur.
|
||||
|
||||
2.4.2 Type 23 Parallel Drum (DRP)
|
||||
|
||||
The parallel drum (DRP) implements these registers:
|
||||
|
||||
name size comments
|
||||
|
||||
TA 12 track address
|
||||
RDF 5 read field
|
||||
RDE 1 read enable flag
|
||||
WRF 5 write field
|
||||
WRF 1 write enable flag
|
||||
MA 16 current memory address
|
||||
WC 12 word count
|
||||
BUSY 1 device busy flag
|
||||
ERR 1 error flag
|
||||
TIME 24 rotational latency, per word
|
||||
STOP_IOE 1 stop on I/O error
|
||||
|
||||
|
||||
Error handling is as follows:
|
||||
|
||||
error STOP_IOE processed as
|
||||
|
||||
not attached 1 report error and stop
|
||||
0 disk not ready
|
||||
|
||||
Drum data files are buffered in memory; therefore, end of file and OS
|
||||
I/O errors cannot occur.
|
||||
|
||||
2.5 Symbolic Display and Input
|
||||
|
||||
The PDP-1 simulator implements symbolic display and input. Display is
|
||||
controlled by command line switches:
|
||||
|
||||
-a display as ASCII character
|
||||
-c display as FIODEC character string
|
||||
-m display instruction mnemonics
|
||||
|
||||
Input parsing is controlled by the first character typed in or by command
|
||||
line switches:
|
||||
|
||||
' or -a ASCII character
|
||||
" or -c three character FIODEC string
|
||||
alphabetic instruction mnemonic
|
||||
numeric octal number
|
||||
|
||||
Instruction input uses modified PDP-1 assembler syntax. There are six
|
||||
instruction classes: memory reference, shift, skip, operate, IOT, and
|
||||
LAW.
|
||||
|
||||
Memory reference instructions have the format
|
||||
|
||||
memref {I} address
|
||||
|
||||
where I signifies indirect reference. The address is an octal number in
|
||||
the range 0 - 0177777.
|
||||
|
||||
Shift instructions have the format
|
||||
|
||||
shift shift_count
|
||||
|
||||
The shift count is an octal number in the range 0-9.
|
||||
|
||||
Skip instructions consist of single mnemonics, eg, SZA, SZS4. Skip
|
||||
instructions may be or'd together
|
||||
|
||||
skip skip skip...
|
||||
|
||||
The sense of a skip can be inverted by including the mnemonic I.
|
||||
|
||||
Operate instructions consist of single mnemonics, eg, CLA, CLI. Operate
|
||||
instructions may be or'd together
|
||||
|
||||
opr opr opr...
|
||||
|
||||
IOT instructions consist of single mnemonics, eg, TYI, TYO. IOT
|
||||
instructions may include an octal numeric modifier or the modifier I:
|
||||
|
||||
iot modifier
|
||||
|
||||
The simulator does not check the legality of skip, operate, or IOT
|
||||
combinations.
|
||||
|
||||
Finally, the LAW instruction has the format
|
||||
|
||||
LAW {I} immediate
|
||||
|
||||
where immediate is in the range 0 to 07777.
|
||||
|
||||
2.6 Character Sets
|
||||
|
||||
The PDP-1's first console was a Frieden Flexowriter; its character encoding
|
||||
was known as FIODEC. The PDP-1's line printer used a modified Hollerith
|
||||
character set. The following table provides equivalences between ASCII
|
||||
characters and the PDP-1's I/O devices. In the console table, UC stands
|
||||
for upper case.
|
||||
|
||||
PDP-1 PDP-1
|
||||
ASCII console line printer
|
||||
|
||||
000 - 007 none none
|
||||
bs 075 none
|
||||
tab 036 none
|
||||
012 - 014 none none
|
||||
cr 077 none
|
||||
016 - 037 none none
|
||||
space 000 000
|
||||
! {OR} UC+005 none
|
||||
" UC+001 none
|
||||
# {IMPLIES} UC+004 none
|
||||
$ none none
|
||||
% none none
|
||||
& {AND} UC+006 none
|
||||
' UC+002 none
|
||||
( 057 057
|
||||
) 055 055
|
||||
* {TIMES} UC+073 072
|
||||
+ UC+054 074
|
||||
, 033 033
|
||||
- 054 054
|
||||
. 073 073
|
||||
/ 021 021
|
||||
0 020 020
|
||||
1 001 001
|
||||
2 002 002
|
||||
3 003 003
|
||||
4 004 004
|
||||
5 005 005
|
||||
6 006 006
|
||||
7 007 007
|
||||
8 010 010
|
||||
9 011 011
|
||||
: none none
|
||||
; none none
|
||||
< UC+007 034
|
||||
= UC+033 053
|
||||
> UC+010 034
|
||||
? UC+021 037
|
||||
@ {MID DOT} 040 {MID DOT} 040
|
||||
A UC+061 061
|
||||
B UC+062 062
|
||||
C UC+063 063
|
||||
D UC+064 064
|
||||
E UC+065 065
|
||||
F UC+066 066
|
||||
G UC+067 067
|
||||
H UC+070 070
|
||||
I UC+071 071
|
||||
J UC+041 041
|
||||
K UC+042 042
|
||||
L UC+043 043
|
||||
M UC+044 044
|
||||
N UC+045 045
|
||||
O UC+046 046
|
||||
P UC+047 047
|
||||
Q UC+050 050
|
||||
R UC+051 051
|
||||
S UC+022 022
|
||||
T UC+023 023
|
||||
U UC+024 024
|
||||
V UC+025 025
|
||||
W UC+026 026
|
||||
X UC+027 027
|
||||
Y UC+030 030
|
||||
Z UC+031 031
|
||||
[ UC+057 none
|
||||
\ {OVERLINE} 056 {OVERLINE} 056
|
||||
] UC+055 none
|
||||
^ {UP ARROW} UC+011 {UP ARROW} 035
|
||||
_ UC+040 UC+040
|
||||
` {RT ARROW} UC+020 036
|
||||
a 061 none
|
||||
b 062 none
|
||||
c 063 none
|
||||
d 064 none
|
||||
e 065 none
|
||||
f 066 none
|
||||
g 067 none
|
||||
h 070 none
|
||||
i 071 none
|
||||
j 041 none
|
||||
k 042 none
|
||||
l 043 none
|
||||
m 044 none
|
||||
n 045 none
|
||||
o 046 none
|
||||
p 047 none
|
||||
q 050 none
|
||||
r 051 none
|
||||
s 022 none
|
||||
t 023 none
|
||||
u 024 none
|
||||
v 025 none
|
||||
w 026 none
|
||||
x 027 none
|
||||
y 030 none
|
||||
z 031 none
|
||||
{ none none
|
||||
| UC+056 076
|
||||
} none none
|
||||
~ UC+003 013
|
||||
del 075 none
|
||||
Reference in New Issue
Block a user