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