RESTRICTION: The PDP-15 FPP is only partially debugged. Do NOT enable this feature for normal operations. WARNING: The core simulator files (scp.c, sim_*.c) have been reorganized. Unzip V3.2-0 to an empty directory before attempting to compile the source. IMPORTANT: If you are compiling for UNIX, please read the notes for Ethernet very carefully. You may need to download a new version of the pcap library, or make changes to the makefile, to get Ethernet support to work. 1. New Features in 3.2-0 1.1 SCP and libraries - Added SHOW <device> RADIX command. - Added SHOW <device> MODIFIERS command. - Added SHOW <device> NAMES command. - Added SET/SHOW <device> DEBUG command. - Added sim_vm_parse_addr and sim_vm_fprint_addr optional interfaces. - Added REG_VMAD flag. - Split SCP into separate libraries for easier modification. - Added more room to the device and unit flag fields. - Changed terminal multiplexor library to support unlimited. number of async lines. 1.2 All DECtapes - Added STOP_EOR flag to enable end-of-reel error stop - Added device debug support. 1.3 Nova and Eclipse - Added QTY and ALM multiplexors (Bruce Ray). 1.4 LGP-30 - Added LGP-30/LGP-21 simulator. 1.5 PDP-11 - Added format, address increment inhibit, transfer overrun detection to RK. - Added device debug support to HK, RP, TM, TQ, TS. - Added DEUNA/DELUA (XU) support (Dave Hittner). - Add DZ per-line logging. 1.6 18b PDP's - Added support for 1-4 (PDP-9)/1-16 (PDP-15) additional terminals. 1.7 PDP-10 - Added DEUNA/DELUA (XU) support (Dave Hittner). 1.8 VAX - Added extended memory to 512MB (Mark Pizzolato). - Added RXV21 support. 2. Bugs Fixed in 3.2-0 2.1 SCP - Fixed double logging of SHOW BREAK (found by Mark Pizzolato). - Fixed implementation of REG_VMIO. 2.2 Nova and Eclipse - Fixed device enable/disable support (found by Bruce Ray). 2.3 PDP-1 - Fixed bug in LOAD (found by Mark Crispin). 2.4 PDP-10 - Fixed bug in floating point unpack. - Fixed bug in FIXR (found by Phil Stone, fixed by Chris Smith). 2.6 PDP-11 - Fixed bug in RQ interrupt control (found by Tom Evans). 2.6 PDP-18B - Fixed bug in PDP-15 XVM g_mode implementation. - Fixed bug in PDP-15 indexed address calculation. - Fixed bug in PDP-15 autoindexed address calculation. - Fixed bugs in FPP-15 instruction decode. - Fixed clock response to CAF. - Fixed bug in hardware read-in mode bootstrap. - Fixed PDP-15 XVM instruction decoding errors. 2.7 VAX - Fixed PC read fault in EXTxV. - Fixed PC write fault in INSV.
465 lines
13 KiB
Text
465 lines
13 KiB
Text
To: Users
|
|
From: Bob Supnik
|
|
Subj: LGP Simulator Usage
|
|
Date: 15-Feb-2004
|
|
|
|
COPYRIGHT NOTICE
|
|
|
|
The following copyright notice applies to both the SIMH source and binary:
|
|
|
|
Original code published in 1993-2004, written by Robert M Supnik
|
|
Copyright (c) 1993-2004, 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 GRI-909 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/gri/ lgp_defs.h
|
|
lgp_cpu.c
|
|
lgp_stddev.c
|
|
lgp_sys.c
|
|
|
|
2. LGP Features
|
|
|
|
The LGP is configured as follows:
|
|
|
|
device simulates
|
|
name(s)
|
|
|
|
CPU LGP-30 or LGP-21 CPU with 4096 words of memory
|
|
TTI Typewriter input (keyboard and reader)
|
|
TTO Typewriter output (printer and punch)
|
|
PTR high-speed paper tape reader
|
|
PTP high-speed paper tape punch
|
|
|
|
The LGP simulator implements the following unique stop conditions:
|
|
|
|
- LGP-30 only: arithmetic overflow
|
|
- LGP-21 only: reference to undefined I/O device.
|
|
|
|
The LOAD and DUMP commands are not implemented.
|
|
|
|
2.1 CPU
|
|
|
|
The CPU implements either the LGP-30 or the LGP-21:
|
|
|
|
SET CPU LGP30 set LGP-30
|
|
SET CPU LGP21 set LGP-21
|
|
|
|
The default is the LGP-30. Memory size is fixed at 4096 words.
|
|
|
|
The following commands implement various front panel functions:
|
|
|
|
D A value equivalent to the MANUAL INPUT button
|
|
SET CPU FILL{=value} equivalent to the FILL INSTRUCTION button;
|
|
if no value is given, fills IR from A;
|
|
otherwise, fills IR from the specified value
|
|
SET CPU EXEC{=value} equivalent to the EXECUTE button;
|
|
if no value is given, executes the instruction
|
|
in IR; otherwise, executes the instruction
|
|
specified by the value
|
|
SET CPU MANUAL equivalent to setting the MANUAL INPUT switch
|
|
on the Typewriter; Typewriter input is taken
|
|
from the keyboard
|
|
SET CPU TAPE equivalent to clearing the MANUAL INPUT switch
|
|
on the Typewriter; TYpewriter input is taken
|
|
from the Typewriter paper tape reader
|
|
|
|
The following commands control the display of information:
|
|
|
|
SET CPU LGPHEX numeric displays use LGP hexadecimal encoding
|
|
SET CPU STANDARD numeric displays use standard hexadecimal
|
|
SET CPU TRACK symbolic addresses are ttss, where tt = track
|
|
(0-63) and ss = sector (0-63)
|
|
SET CPU NORMAL symbolic addresses are normal linear addresses,
|
|
from 0 to 4095.
|
|
|
|
The defaults are STANDARD hex and TRACK addresses.
|
|
|
|
The LGP-30 implements the following additional commands:
|
|
|
|
SET CPU 4B sets the CPU to 4-bit input mode
|
|
SET CPU 6B sets the CPU to 6-bit input mode
|
|
SET CPU INPUT=TTI sets the CPU to read from the Typewriter
|
|
SET CPU INPUT=PTR sets the CPU to read from the high-speed reader
|
|
SET CPU OUTPUT=TTO sets the CPU to output to the Typewriter
|
|
SET CPU OUTPUT=PTP sets the CPU to output to the high-speed punch
|
|
|
|
The defaults are TAPE input, 4B input mode, input and output assigned to the
|
|
Typewriter.
|
|
|
|
CPU registers include the visible state of the processor as well as the
|
|
control registers for the interrupt system.
|
|
|
|
name size comments
|
|
|
|
PC 12 counter
|
|
A 32 accumulator
|
|
IR 32 instruction register
|
|
OVF 1 overflow flag (LGP-21 only)
|
|
TSW 1 transfer switch
|
|
BP32 1 breakpoint 32 switch
|
|
BP16 1 breakpoint 16 switch
|
|
BP8 1 breakpoint 8 switch
|
|
BP4 1 breakpoint 4 switch
|
|
INPST 1 input pending flag
|
|
INPDN 1 input done flag
|
|
OUTST 1 output pending flag
|
|
OUTDN 1 output done flag
|
|
WRU 8 interrupt character
|
|
|
|
2.2 Typewriter Input (TTI)
|
|
|
|
The Typewriter input consists of two units: the keyboard (unit 0) and
|
|
the paper-tape reader (unit 1). The keyboard is permanently associated
|
|
with the console window. The paper-tape reader can be attached to a
|
|
disk file. The RPOS register specifies the number of the next data item
|
|
to be read. Thus, by changing RPOS, the user can backspace or advance
|
|
the reader.
|
|
|
|
The Typewriter input has the following options:
|
|
|
|
SET TTI1 ASCII default tape file format is ASCII-encoded
|
|
Flex
|
|
SET TTI1 FLEX default tape file format is transposed Flex
|
|
SET TTI1 CSTOP reader recognizes conditional stop
|
|
SET TTI1 NOCSTOP reader ignores conditional stop
|
|
SET TTI RSTART start the reader; equivalent to the
|
|
START READER lever
|
|
SET TTI RSTOP stop the reader; equivalent to the
|
|
STOP READER lever
|
|
SET TTI START send START signal to the CPU; equivalent
|
|
to the START COMPUTE lever
|
|
|
|
Transposed Flex has the tape channels in this order: 6-1-2-3-4-5.
|
|
|
|
The ATTACH command recognizes two switches:
|
|
|
|
ATT -A TTI1 file file format is ASCII-encoded Flex
|
|
ATT -F TTI1 file file format is transposed Flex
|
|
|
|
The Typewriter input implements these registers:
|
|
|
|
name size comments
|
|
|
|
BUF 6 data buffer
|
|
RDY 1 data ready flag
|
|
KPOS 32 count of keyboard characters
|
|
RPOS 32 position in the reader input file
|
|
TIME 24 time between keyboard polls/reader characters
|
|
STOP_IOE 1 stop on I/O error
|
|
|
|
Error handling for the Typewriter paper-tape reader 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.3 Typewriter Output (TTO)
|
|
|
|
The Typewriter output consists of two units: the printer (unit 0) and
|
|
the paper-tape punch (unit 1). The printer is permanently associated
|
|
with the console window. The paper-tape punch can be attached to a
|
|
disk file. The PPOS register specifies the number of the next data item
|
|
to be written. Thus, by changing PPOS, the user can backspace or advance
|
|
the reader.
|
|
|
|
The Typewriter output has the following options:
|
|
|
|
SET TTO1 ASCII default tape file format is ASCII-encoded
|
|
Flex
|
|
SET TTO1 FLEX default tape file format is transposed Flex
|
|
SET TTO1 FEED=n punch 'n' feed (0) characters
|
|
|
|
|
|
Transposed Flex has the tape channels in this order: 6-1-2-3-4-5. The
|
|
default is ASCII-encoded Flex.
|
|
|
|
The ATTACH command recognizes two switches:
|
|
|
|
ATT -A TTO1 file file format is ASCII-encoded Flex
|
|
ATT -F TTO1 file file format is transposed Flex
|
|
|
|
The Typewriter output implements these registers:
|
|
|
|
name size comments
|
|
|
|
BUF 6 data buffer
|
|
UC 1 upper case flag
|
|
TPOS 32 count of output characters
|
|
PPOS 32 position in the punch output file
|
|
TIME 24 time from I/O initiation to completion
|
|
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.4 High Speed 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 has the following options:
|
|
|
|
SET PTR ASCII default tape file format is ASCII-encoded
|
|
Flex
|
|
SET PTR FLEX default tape file format is transposed Flex
|
|
|
|
Transposed Flex has the tape channels in this order: 6-1-2-3-4-5. The
|
|
default is ASCII-encoded Flex.
|
|
|
|
The ATTACH command recognizes two switches:
|
|
|
|
ATT -A PTR file file format is ASCII-encoded Flex
|
|
ATT -F PTR file file format is transposed Flex
|
|
|
|
The paper tape reader implements these registers:
|
|
|
|
name size comments
|
|
|
|
BUF t last data item processed
|
|
RDY 1 data ready flag
|
|
POS 32 position in the input file
|
|
TIME 24 time from I/O initiation to completion
|
|
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.5 High Speed 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 has the following options:
|
|
|
|
SET PTP ASCII default tape file format is ASCII-encoded
|
|
Flex
|
|
SET PTP FLEX default tape file format is transposed Flex
|
|
SET PTP FEED=n punch 'n' feed (0) characters
|
|
|
|
Transposed Flex has the tape channels in this order: 6-1-2-3-4-5. The
|
|
default is ASCII-encoded Flex.
|
|
|
|
The ATTACH command recognizes two switches:
|
|
|
|
ATT -A PTP file file format is ASCII-encoded Flex
|
|
ATT -F PTP file file format is transposed Flex
|
|
|
|
The paper tape punch implements these registers:
|
|
|
|
name size comments
|
|
|
|
BUF 6 last data item processed
|
|
POS 32 position in the output file
|
|
TIME 24 time from I/O initiation to completion
|
|
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.6 Symbolic Display and Input
|
|
|
|
The LGP simulator implements symbolic display and input. Display is
|
|
controlled by command line switches:
|
|
|
|
-a display as character (tape files only)
|
|
-h display as standard hexadecimal
|
|
-l display as LGP hexadecimal
|
|
-m display instruction mnemonics
|
|
-n display addresses in normal format
|
|
(overrides SET CPU TRACK)
|
|
-t display addresses as track/sector
|
|
(overrides SET CPU NORMAL)
|
|
|
|
Input parsing is controlled by the first character typed in or by command
|
|
line switches:
|
|
|
|
' or -a Flex character
|
|
- or opcode instruction mnemonic
|
|
numeric hexadecimal number
|
|
|
|
LGP hexadecimal differs from standard hexadecimal in the characters used
|
|
for digits 10-15
|
|
|
|
digit standard hex LPG hex
|
|
|
|
10 A F
|
|
11 B G
|
|
12 C J
|
|
13 D K
|
|
14 E Q
|
|
15 F W
|
|
|
|
There is only instruction format:
|
|
|
|
{-}op address
|
|
|
|
'op' is always a single letter. A track/sector address (specified by
|
|
SET CPU TRACK or switch -t) is two decimal numbers between 0 and 63,
|
|
representing the track and sector. A linear address (specified by
|
|
SET CPU NORMAL or switch -n) is one decimal number between 0 and 4095.
|
|
For example:
|
|
|
|
sim> d -n 64 10640
|
|
sim> ex -mn 64
|
|
64: B 400
|
|
sim> ex -mt 100
|
|
0100: B 0616
|
|
|
|
2.7 Character Set
|
|
|
|
The LGP Typewriter was a Friden Flexowriter. Input was always upper case;
|
|
output could be either upper case or lower case. The following table provides
|
|
equivalences between LPG Typewriter coding and ASCII.
|
|
|
|
Typewriter Input LC output UC output
|
|
code (hex)
|
|
|
|
00 illegal illegal illegal
|
|
01 z or Z z Z
|
|
02 0 or ) 0 )
|
|
03 space space space
|
|
04 illegal lower case lower case
|
|
05 b or B b B
|
|
06 1 or L 1 L
|
|
07 - or _ 0 _
|
|
10 illegal upper case upper case
|
|
11 y or Y y Y
|
|
12 2 or * 2 *
|
|
13 + or = + =
|
|
14 illegal color shift color shift
|
|
15 r or R r R
|
|
16 3 or " 3 "
|
|
17 ; or : ; :
|
|
20 newline newline newline
|
|
21 i or I i I
|
|
22 4 or ^ 4 ^
|
|
23 / or ? / ?
|
|
24 illegal backspace backspace
|
|
25 d or D d D
|
|
26 5 or % 5 %
|
|
27 . or ] . ]
|
|
30 tab tab tab
|
|
31 n or N n N
|
|
32 6 or $ 6 $
|
|
33 , or [ , [
|
|
34 illegal illegal illegal
|
|
35 m or M m M
|
|
36 7 or ~ 7 ~
|
|
37 v or V v V
|
|
40 ' (cond stop) ' '
|
|
41 p or P p P
|
|
42 8 or # 8 #
|
|
43 o or O o O
|
|
44 illegal illegal illegal
|
|
45 e or E e E
|
|
46 9 or ( 9 (
|
|
47 x or X x X
|
|
50 illegal illegal illegal
|
|
51 u or U u U
|
|
52 f or F f F
|
|
53 illegal illegal illegal
|
|
54 illegal illegal illegal
|
|
55 t or T t T
|
|
56 g or G g G
|
|
57 illegal illegal illegal
|
|
60 illegal illegal illegal
|
|
61 h or H h H
|
|
62 j or J j J
|
|
63 illegal illegal illegal
|
|
64 illegal illegal illegal
|
|
65 c or C c C
|
|
66 k or K k K
|
|
67 illegal illegal illegal
|
|
70 illegal illegal illegal
|
|
71 a or A a A
|
|
72 q or Q q Q
|
|
73 illegal illegal illegal
|
|
74 illegal illegal illegal
|
|
75 s or S s S
|
|
76 w or W w W
|
|
77 illegal illegal illegal
|
|
|
|
Certain characters on the Flexowriter keyboard don't exist in ASCII.
|
|
The following table provides ASCII substitution characters for the unique
|
|
Flexowriter characters (this is compatible with the coding in the LGP30
|
|
paper tape archive):
|
|
|
|
Typewriter Flex ASCII
|
|
code
|
|
|
|
UC 12 delta ^
|
|
UC 1E pi ~
|
|
UC 22 sigma #
|
|
|
|
Certain Flexowriter codes have no character equivalent of any kind.
|
|
For paper-tape reader and punch files, these are encoded as #dd, where
|
|
dd is a decimal number between 0 and 63.
|