1. PDP-8 simulator usage¶
- Date:
2020-05-01
- Revision:
$Format:%H$
- Copyright:
See LICENSE.txt for terms of use.
This memorandum documents the PDP-8 simulator.
1.1. Simulator files¶
sim/
scp.h
sim_console.h
sim_defs.h
sim_fio.h
sim_rev.h
sim_sock.h
sim_tape.h
sim_timer.h
sim_tmxr.h
scp.c
sim_console.c
sim_fio.c
sim_sock.c
sim_tape.c
sim_timer.c
sim_tmxr.c
sim/pdp8/
pdp8_defs.h
pdp8_cpu.c
pdp8_ct.c
pdp8_df.c
pdp8_dt.c
pdp8_fpp.c
pdp8_lp.c
pdp8_mt.c
pdp8_pt.c
pdp8_rf.c
pdp8_rk.c
pdp8_rl.c
pdp8_rx.c
pdp8_sys.c
pdp8_td.c
pdp8_tsc.c
pdp8_tt.c
pdp8_ttx.c
1.2. PDP-8 features¶
The PDP-8 simulator is configured as follows:
Device names(s) |
Simulates |
---|---|
|
PDP-8/E CPU with 4KW-32KW of memory |
— |
KE8E extended arithmetic element (EAE) |
— |
KM8E memory management and timeshare control |
|
TSC8-75 ETOS operating system timeshare control |
|
FPP8A floating point unit |
|
PC8E paper tape reader/punch |
|
KL8E console terminal |
|
KL8JA additional terminals, up to 16 |
|
LE8E line printer |
|
DK8E line frequency clock (also PDP-8/A compatible) |
|
RK8E/RK05 cartridge disk controller with four drives |
|
RF08/RS08 fixed head disk controller with 1-4 platters |
|
DF32/DS32 fixed head disk controller with 1-4 platters |
|
RL8A/RL01 cartridge disk controller with four drives |
|
RX8E/RX01, RX28/RX02 floppy disk controller with two drives |
|
TC08/TU56 DECtape controller with eight drives |
|
TD8E/TU56 DECtape controller with two drives |
|
TM8E/TU10 magnetic tape controller with eight drives |
|
TA8E/TU60 cassette tape controller with two drives |
Most devices can be disabled or enabled, by the commands:
SET <dev> DISABLED
SET <dev> ENABLED
The simulator allows most device numbers to be changed, by the command:
SET <dev> DEV=<number>
The PDP-8 can support only one of the set {DF32
, RF08
, RL8A
} using the default device numbers,
since they all use device numbers 60–61.
The default is the RF08.
To change the disk at device numbers 60-61:
SET RF DISABLED Disable RF08
SET DF ENABLED, or Enable DF32
SET RL ENABLED Enable RL8A
The PDP-8 can only support one of the set {TC08
, TD8E
} using the default device numbers,
since both use device number 77.
The default is the TC08.
To change the DECtape controller to the TD8E:
SET DT DISABLED Disable TC08
SET TD ENABLED Enable TD8E
The PDP-8 can only support one of the set {TM8E
, TA8E
} using the default device numbers,
since both use device number 70.
The default is the TM8E.
To change the device at device number 70:
SET MT DISABLED Disable TM8E
SET CT ENABLED Enable TA8E
Alternately, the device conflict can be eliminated by changing device numbers:
SET RL DEV=50
SET RL ENA
SET TD DEV=74
SET TD ENA
SET CT DEV=73
SET CT ENA
However,
devices can only be BOOT
ed with their default device numbers.
The PDP-8 simulator implements several unique stop conditions:
If an undefined instruction (unimplemented IOT or OPR) is decoded, and
STOP_INST
is setIf a simulated DECtape runs off the end of its reel
The LOAD
command supports both RIM format and BIN format tapes.
If the file extension is .RIM
,
or the r
switch is specified with LOAD
,
the file is assumed to be RIM format;
if the file extension is not .RIM
,
or the -b
switch is specified,
the file is assumed to be BIN format.
For BIN format tape loading will stop at the first trailer code (0x80).
If the tape contains multiple sections specify the -a
flag to load all sections on the tape.
The number of sections loaded will be printed.
If the tape had non-BIN format data following the last valid leader it may cause checksum errors or load unwanted data into memory.
1.2.1. CPU¶
The only CPU options are the presence of the EAE and the size of main memory; the memory extension and time-share control is always included, even if memory size is 4K.
SET CPU EAE Enable EAE
SET CPU NOEAE Disable EAE
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
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 32K.
CPU registers include the visible state of the processor as well as the control registers for the interrupt system.
Name |
Size |
Comments |
---|---|---|
|
15 |
Program counter, including |
|
12 |
Accumulator |
|
12 |
Multiplier-quotient |
|
1 |
Link |
|
12 |
Front panel switches |
|
3 |
Instruction field |
|
3 |
Data field |
|
3 |
Instruction field buffer |
|
7 |
Save field |
|
1 |
User mode flag |
|
1 |
User mode buffer |
|
5 |
EAE shift counter |
|
1 |
EAE greater than flag |
|
1 |
EAE mode (0 = A, 1 = B) |
|
1 |
Interrupt enable |
|
1 |
Interrupt enable delay for ION |
|
1 |
Interrupt enable delay for CIF |
|
1 |
Power fail interrupt |
|
1 |
User mode violation interrupt |
|
15 |
Interrupt pending flags |
|
15 |
Device done flags |
|
15 |
Device interrupt enable flags |
|
15 |
PC prior to last JMP, JMS, or interrupt; most recent PC change first |
|
1 |
Stop on undefined instruction |
|
8 |
Interrupt character |
The CPU attempts to detect when the simulator is idle.
When idle,
the simulator does not use any resources on the host system.
Idle detection is controlled by the SET IDLE
and SET NOIDLE
commands:
SET CPU IDLE Enable idle detection
SET CPU NOIDLE Disable idle detection
Idle detection is disabled by default.
At present,
the CPU is considered idle if it is executing a KSF/JMP *-1
loop with interrupts disabled (OS/8, DMS-8) or a JMP *
loop (TSS/8).
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.
1.2.3. FPP8A floating point unit (FPP
)¶
The floating point unit (FPP
) is an add-on device that provides floating-point capabilities.
It operates as a coprocessor to the main CPU,
with its own program counter and instruction set.
The FPP8A is normally disabled;
to use it,
it must be enabled with the command:
SET FPP ENABLED
The FPP8A implements these registers:
Name |
Size |
Comments |
---|---|---|
|
12 |
Floating AC exponent |
|
12 |
Floating AC fraction words |
|
12 |
FPP command register |
|
12 |
FPP status register |
|
15 |
APT address pointer |
|
3 |
APT save field |
|
15 |
FPP program counter |
|
15 |
Base register pointer |
|
15 |
Index register pointer |
|
15 |
Operand pointer |
|
12 |
Single step flag |
|
12 |
Last lock bit |
|
1 |
FPP flag |
Except for environments that explicitly support it, the FPP8A should be left disabled.
1.2.4. Programmed I/O devices¶
1.2.4.1. PC8E 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 supports the BOOT
command.
BOOT PTR
copies the RIM loader into memory and starts it running.
The paper tape reader implements these registers:
Name |
Size |
Comments |
---|---|---|
|
8 |
Last data item processed |
|
1 |
Device done flag |
|
1 |
Interrupt enable flag |
|
1 |
Interrupt pending flag |
|
32 |
Position in the input file |
|
24 |
Time from I/O initiation to interrupt |
|
1 |
Stop on I/O error |
Error handling is as follows:
Error |
|
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 |
1.2.4.2. PC8E 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 default position after ATTACH
is to position at the end of an existing file.
A new file can be created if you attach with the -N
switch.
The paper tape punch implements these registers:
Name |
Size |
Comments |
---|---|---|
|
8 |
Last data item processed |
|
1 |
Device done flag |
|
1 |
Interrupt enable flag |
|
1 |
Interrupt pending flag |
|
32 |
Position in the output file |
|
24 |
Time from I/O initiation to interrupt |
|
1 |
Stop on I/O error |
Error handling is as follows:
Error |
|
Processed as |
---|---|---|
Not attached |
1 |
Report error and stop |
0 |
Out-of-tape |
|
OS I/O error |
x |
Report error and stop |
1.2.4.3. KL8E terminal input (TTI
)¶
The terminal interfaces (TTI
, TTO
) can be set to one of four modes,
KSR
, 7B
, 7B
, or 8B
:
Mode |
Input characters |
Output characters |
---|---|---|
|
Lowercase converted to uppercase, high-order bit set |
Lowercase converted to uppercase, high-order bit cleared, non-printing characters suppressed |
|
High-order bit cleared |
High-order bit cleared, non-printing characters suppressed |
|
High-order bit cleared |
High-order bit cleared |
|
No changes |
No changes |
The default mode is KSR
.
The terminal input (TTI
) polls the console keyboard for input.
It implements these registers:
Name |
Size |
Comments |
---|---|---|
|
8 |
Last data item processed |
|
1 |
Device done flag |
|
1 |
Interrupt enable flag |
|
1 |
Interrupt pending flag |
|
32 |
Number of characters input |
|
24 |
Input polling interval |
The terminal input is normally polled synchronously with the real-time clock. To avoid data loss, a poll is scheduled ‘TIME’ instructions after the CPU reads a character.
1.2.4.4. KL8E Terminal Output (TTO
)¶
The terminal output (TTO
) writes to the simulator console window.
It implements these registers:
Name |
Size |
Comments |
---|---|---|
|
8 |
Last data item processed |
|
1 |
Device done flag |
|
1 |
Interrupt enable flag |
|
1 |
Interrupt pending flag |
|
32 |
Number of characters output |
|
24 |
Time from I/O initiation to interrupt |
1.2.4.5. LE8E Line Printer (LPT
)¶
The line printer (LPT
) writes data to a disk file.
The POS
register specifies the number of the next data item to be read or written.
Thus, by changing POS
,
the user can backspace or advance the printer.
The default position after ATTACH
is to position at the end of an existing file.
A new file can be created if you attach with the -N
switch.
The line printer implements these registers:
Name |
Size |
Comments |
---|---|---|
|
8 |
Last data item processed |
|
1 |
Error status flag |
|
1 |
Device done flag |
|
1 |
Interrupt enable flag |
|
1 |
Interrupt pending flag |
|
32 |
Position in the output file |
|
24 |
Time from I/O initiation to interrupt |
Error handling is as follows:
Error |
|
Processed as |
---|---|---|
Not attached |
1 |
Report error and stop |
0 |
Out-of-paper |
|
OS I/O error |
x |
Report error and stop |
1.2.4.6. DK8E Line-Frequency Clock (CLK
)¶
The real-time clock (CLK
) frequency can be adjusted as follows:
SET CLK 60HZ Set frequency to 60Hz
SET CLK 50HZ Set frequency to 50Hz
SET CLK NORMAL Set clock to calibrated timing
SET CLK DIAG Set clock to fixed timing
The default is 60Hz.
The clock implements these registers:
Name |
Size |
Comments |
---|---|---|
|
1 |
Device done flag |
|
1 |
Interrupt enable flag |
|
1 |
Interrupt pending flag |
|
24 |
Clock interval |
The real-time clock autocalibrates; the clock interval is adjusted up or down so that the clock tracks actual elapsed time.
1.2.4.7. KL8JA Additional Terminals (TTIX
, TTOX
)¶
The simulator supports 1 to 16 additional terminals,
with an initial default of 4 lines.
The additional terminals consist of two independent devices,
TTIX
and TTOX
.
The entire set is modeled as a terminal multiplexer,
with TTIX
as the master controller.
The number of lines is specified with a SET
command:
SET TTIX LINES=n Set number of additional lines to n [1-16]
The ATTACH
command specifies the port to be used:
ATTACH TTIX <port> Set up listening port
where port
is a decimal number between 1 and 65535 that is not being used for other TCP/IP activities.
The additional terminals are disabled by default.
The additional terminals can be set to one of four modes:
UC
, 7P
, 7B
, or 8B
.
Mode |
Input characters |
Output characters |
---|---|---|
|
Lowercase converted to uppercase, high-order bit cleared |
Lowercase converted to uppercase, high-order bit cleared, non-printing characters suppressed |
|
High-order bit cleared |
High-order bit cleared, non-printing characters suppressed |
|
High-order bit cleared |
High-order bit cleared |
|
No changes |
No changes |
The default mode is UC
.
Finally,
each line supports output logging.
The SET TTOXn LOG
command enables logging on a line:
SET TTOXn LOG=filename Log output of line n to filename
The SET TTOXn NOLOG
command disables logging and closes the open log file,
if any.
Once TTIX
is attached and the simulator is running,
the terminals listen for connections on the specified port.
They assume that the incoming connections are Telnet connections.
The connections remain open until disconnected either by the Telnet client,
a SET TTIX DISCONNECT
command,
or a DETACH TTIX
command.
Other special commands:
SHOW TTIX CONNECTIONS Show current connections
SHOW TTIX STATISTICS Show statistics for active connections
SET TTOXn DISCONNECT Disconnects the specified line
The input device (TTIX
) implements these registers:
Name |
Size |
Comments |
---|---|---|
|
8 |
Input buffer, lines 0 to 15 |
|
16 |
Device done flags (line 0 rightmost) |
|
16 |
Interrupt enable flag |
|
24 |
Initial polling interval |
The input device is normally polled synchronously with the real-time clock. To avoid data loss, a poll is scheduled ‘TIME’ instructions after the CPU reads a character from any line.
The output device (TTOX
) implements these registers:
Name |
Size |
Comments |
---|---|---|
|
8 |
Last data item processed, lines 0-15 |
|
16 |
Device done flag (line 0 rightmost) |
|
16 |
Interrupt enable flag |
|
24 |
Time from I/O initiation to interrupt, lines 0-15 |
The additional terminals do not support save and restore.
All open connections are lost when the simulator shuts down or TTIX
is detached.
1.2.4.8. TD8E/TU56 DECtape (TD
)¶
The TD8E is a programmed I/O, non-interrupt controller, supporting two DECtape drives (0 and 1). The TD8E simulator puts a high burden on the host processor, because tape activity is simulated a line (3b) at a time. Unless the PDP-8 software requires the TD8E, the TC08 should be used to simulate DECtapes. The TD8E is disabled by default.
TD8E options include the ability to make units write-enabled or write-locked.
SET TDn LOCKED Set unit n write locked
SET TDn WRITEENABLED Set unit n write enabled
Units can also be set ENABLED
or DISABLED
.
The TD8E supports the BOOT
command,
but only for unit 0.
The TD8E supports supports PDP-8 format,
PDP-11 format,
and 18b format DECtape images.
ATTACH
assumes the image is in PDP-8 format;
the user can force other choices with switches:
|
PDP-11 format |
|
18b format |
|
Autoselect based on file on file size |
The TD8E controller is a data-only simulator; the timing and mark track, and block header and trailer, are not stored. Thus, read always produces standard values for mark track, header, and trailer words, and write throws mark track, header, and trailer words into the bit bucket.
The TD8E controller implements these registers:
Name |
Size |
Comments |
---|---|---|
|
4 |
Command register |
|
12 |
Data register |
|
6 |
Mark track register |
|
1 |
Single line flag |
|
1 |
Quad line flag |
|
1 |
Timing error flag |
|
2 |
Quad line counter |
|
31 |
Time between lines |
|
31 |
Time to decelerate to a full-stop |
|
32 |
Position, in lines, units 0 and 1 |
|
18 |
Unit state, units 0 and 1 |
|
1 |
Stop on off-reel error |
The LTIME
parameter should not be changed,
or OS/8 may fail to run correctly.
The DCTIME
parameter should always be at least 100 times greater than LTIME
.
Acceleration time is 75% of deceleration time.
1.2.4.9. TA8E/TA60 Cassette Tape (CT
)¶
The TA8E is a programmed I/O controller supporting two cassette drives (0 and 1). The TA8E can be used with the MCPIP program under OS/8, and with the CAPS-8 operating system. Cassettes are simulated as magnetic tapes with a fixed capacity (93,000 characters). The tape format is always SimH standard. The TA8E is disabled by default.
TA8E options include the ability to make units write-enabled or write-locked.
SET CTn LOCKED Set unit n write locked
SET CTn WRITEENABLED Set unit n write enabled
Units cannot be set ENABLED
or DISABLED
.
The TA8E supports the BOOT
command,
but only for CAPS-8,
and only for unit 0.
The TA8E controller implements these registers:
Name |
Size |
Comments |
---|---|---|
|
8 |
Status register A |
|
8 |
Status register B |
|
8 |
Data buffer |
|
1 |
Data flag |
|
1 |
Ready flag |
|
1 |
Write lock error |
|
1 |
TA60 write operation flag |
|
1 |
Interrupt request |
|
17 |
Buffer pointer |
|
17 |
Buffer length |
|
24 |
Operation start time |
|
24 |
Character latency |
|
1 |
Stop on I/O errors flag |
|
32 |
Position, units 0-1 |
Error handling is as follows:
Error |
Processed as |
---|---|
Not attached |
Tape not ready; if |
End-of-file |
Bad tape |
OS I/O error |
CRC error; if |
1.2.5. Moving head disks¶
1.2.5.1. RK8E Cartridge Disk (RK
)¶
RK8E options include the ability to make units write-enabled or write-locked:
SET RKn LOCKED Set unit n write locked
SET RKn WRITEENABLED Set unit n write enabled
Units can also be set ENABLED
or DISABLED
.
The RK8E supports the BOOT
command.
The RK8E implements these registers:
Name |
Size |
Comments |
---|---|---|
|
12 |
Status |
|
12 |
Disk command |
|
12 |
Disk address |
|
12 |
Current memory address |
|
1 |
Control busy flag |
|
1 |
Interrupt pending flag |
|
24 |
Seek time, per cylinder |
|
24 |
Rotational delay |
|
1 |
Stop on I/O error |
Error handling is as follows:
Error |
|
Processed as |
---|---|---|
Not attached |
1 |
Report error and stop |
0 |
Disk not ready |
|
End-of-file |
x |
Assume rest of disk is zero |
OS I/O error |
x |
Report error and stop |
1.2.5.2. RL8A Cartridge Disk (RL
)¶
RL8A options include the ability to make units write-enabled or write-locked:
SET RLn LOCKED Set unit n write locked
SET RLn WRITEENABLED Set unit n write enabled
Units can also be set ENABLED
or DISABLED
.
The RL8A supports the BOOT
command,
but only for unit 0.
The RL8A implements these registers:
Name |
Size |
Comments |
---|---|---|
|
12 |
Control/status A |
|
12 |
Control/status B |
|
12 |
Memory address |
|
12 |
Word count |
|
6 |
Sector address |
|
12 |
Error flags |
|
16 |
Silo top word |
|
16 |
Silo second word |
|
16 |
Silo third word |
|
1 |
Silo read left/right flag |
|
1 |
Interrupt request |
|
1 |
Done flag |
|
1 |
Composite error flag |
|
1 |
Seek time, per cylinder |
|
1 |
Rotational delay |
|
1 |
Stop on I/O error |
Error handling is as follows:
Error |
|
Processed as |
---|---|---|
Not attached |
1 |
Report error and stop |
0 |
Disk not ready |
|
End-of-file |
x |
Assume rest of disk is zero |
OS I/O error |
x |
Report error and stop |
1.2.6. RX8E/RX01, RX28/RX02 Floppy Disk (RX
)¶
The RX can be configured as an RX8E with two RX01 drives, or an RX28 with two RX02 drives:
SET RX RX8E Set controller to RX8E/RX01
SET RX RX28 Set controller to RX28/RX02
The controller is set to the RX8E by default. The RX28 is not backwards-compatible with the RX8E and will not work with the standard OS/8 V3D floppy disk driver.
RX8E options include the ability to set units write enabled or write locked:
SET RXn LOCKED Set unit n write locked
SET RXn WRITEENABLED Set unit n write enabled
RX28 options include, in addition, the ability to set the unit density to single density, double density, or autosized; autosizing is the default:
SET RXn SINGLE Set unit n single density
SET RXn DOUBLE Set unit n double density
SET RXn AUTOSIZE Set unit n autosize
The RX8E and RX28 support the BOOT
command.
The RX8E and RX28 implement these registers:
Name |
Size |
Comments |
---|---|---|
|
12 |
Status |
|
12 |
Data buffer |
|
12 |
Error status |
|
8 |
Current track |
|
8 |
Current sector |
|
4 |
Controller state |
|
8 |
Buffer pointer |
|
1 |
Interrupt pending flag |
|
1 |
Device done flag |
|
1 |
Interrupt enable flag |
|
1 |
Transfer ready flag |
|
1 |
Error flag |
|
24 |
Command completion time |
|
24 |
Seek time, per track |
|
24 |
Transfer ready delay |
|
1 |
Stop on I/O error |
|
8 |
Sector buffer array |
Error handling is as follows:
Error |
|
Processed as |
---|---|---|
Not attached |
1 |
Report error and stop |
0 |
Disk not ready |
RX01 and RX02 data files are buffered in memory; therefore, end-of-file and OS I/O errors cannot occur.
1.2.7. Fixed head disks¶
With default device addressing, either the RF08 or the DF32 can be present in a configuration, but not both.
1.2.7.1. RF08/RS08 Fixed Head Disk (RF
)¶
RF08 options include the ability to set the number of platters to a fixed value between 1 and 4, or to autosize the number of platters:
SET RF 1P One platter (256K)
SET RF 2P Two platters (512K)
SET RF 3P Three platters (768K)
SET RF 4P Four platters (1024K)
SET RF AUTOSIZE Autosized on ATTACH
The default is one platter.
The RF08 implements these registers:
Name |
Size |
Comments |
---|---|---|
|
12 |
Status |
|
20 |
Current disk address |
|
12 |
Memory address (in memory) |
|
12 |
Word count (in memory) |
|
32 |
Write lock switches |
|
1 |
Interrupt pending flag |
|
1 |
Device done flag |
|
24 |
Rotational delay, per word |
|
1 |
Burst flag |
|
1 |
Stop on I/O error |
The RF08 supports the BOOT
command.
The default bootstrap is for OS/8.
To bootstrap the 4K Disk Monitor,
use the BOOT -D RF
command.
The RF08 is a three-cycle data break device.
If BURST = 0
,
word transfers are scheduled individually;
if BURST = 1
,
the entire transfer occurs in a single data break.
Error handling is as follows:
Error |
|
Processed as |
---|---|---|
Not attached |
1 |
Report error and stop |
0 |
Disk not ready |
RF08 data files are buffered in memory; therefore, end-of-file and OS I/O errors cannot occur.
1.2.7.2. DF32/DS32 Fixed Head Disk (DF
)¶
DF32 options include the ability to set the number of platters to a fixed value between 1 and 4, or to autosize the number of platters:
SET DF 1P One platter (32K)
SET DF 2P Two platters (64K)
SET DF 3P Three platters (98K)
SET DF 4P Four platters (128K)
SET DF AUTOSIZE Autosized on ATTACH
The default is one platter.
The DF32 implements these registers:
Name |
Size |
Comments |
---|---|---|
|
12 |
Status, disk and memory address extension |
|
12 |
Low-order disk address |
|
12 |
Memory address (in memory) |
|
12 |
Word count (in memory) |
|
16 |
Write lock switches |
|
1 |
Interrupt pending flag |
|
1 |
Device done flag |
|
24 |
Rotational delay, per word |
|
1 |
Burst flag |
|
1 |
Stop on I/O error |
The DF32 supports the BOOT
command.
The default bootstrap is for OS/8.
To bootstrap the 4K Disk Monitor,
use the BOOT -D DF
command.
The DF32 is a three-cycle data break device.
If BURST = 0
,
word transfers are scheduled individually;
if BURST = 1
,
the entire transfer occurs in a single data break.
Error handling is as follows:
Error |
|
Processed as |
---|---|---|
Not attached |
1 |
Report error and stop |
0 |
Disk not ready |
DF32 data files are buffered in memory; therefore, end-of-file and OS I/O errors cannot occur.
1.2.8. TC08/TU56 DECtape (DT
)¶
DT implements the TC08 DECtape controller and TU56 drives. TC08 options include the ability to make units write enabled or write locked.
SET DTn LOCKED Set unit n write locked
SET DTn WRITEENABLED Set unit n write enabled
Units can also be set ENABLED
or DISABLED
.
The TC08 supports the BOOT
command,
but only for unit 0.
The TC08 supports supports PDP-8 format,
PDP-11 format,
and 18b format DECtape images.
ATTACH
assumes the image is in PDP-8 format;
the user can force other choices with switches:
|
PDP-11 format |
|
18b format |
|
Autoselect based on file on file size |
The TC08 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 |
---|---|---|
|
12 |
Status register A |
|
12 |
Status register B |
|
1 |
Interrupt pending flag |
|
1 |
Interrupt enable flag |
|
1 |
DECtape flag |
|
1 |
Error flag |
|
12 |
Current address (memory location 7754) |
|
12 |
Word count (memory location 7755) |
|
31 |
Time between lines |
|
31 |
Time to decelerate to a full stop |
|
2 |
Read/write command substate |
|
32 |
Position, in lines, units 0 to 7 |
|
31 |
Unit state, units 0 to 7 |
|
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 6DCTIME
needs to be at least 100 timesLTIME
Acceleration time is set to 75% of deceleration time.
1.2.9. TM8E Magnetic Tape (MT
)¶
Magnetic tape options include the ability to make units write-enabled or write-locked.
SET MTn LOCKED Set unit n write locked
SET MTn WRITEENABLED Set unit n write enabled
Magnetic tape units can be set to a specific reel capacity in MB, or to unlimited capacity:
SET MTn CAPAC=m Set unit n capacity to m MB (0 = unlimited)
SHOW MTn CAPAC Show unit n capacity in MB
Units can also be set ENABLED
or DISABLED
.
The magnetic tape controller implements these registers:
Name |
Size |
Comments |
---|---|---|
|
12 |
Command |
|
12 |
Function |
|
12 |
Memory address |
|
12 |
Word count |
|
12 |
Data buffer |
|
12 |
Main status |
|
6 |
Secondary status |
|
1 |
Device done flag |
|
1 |
Interrupt pending flag |
|
1 |
Stop on I/O error |
|
24 |
Record delay |
|
24 |
Unit status, units 0 to 7 |
|
32 |
Position, units 0 to 7 |
Error handling is as follows:
Error |
Processed as |
---|---|
Not attached |
Tape not ready; if |
End-of-file |
Bad tape |
OS I/O error |
Parity error; if |
1.3. Symbolic display and input¶
The PDP-8 simulator implements symbolic display and input. Display is controlled by command-line switches:
|
Display as ASCII character |
|
Display as two packed sixbit characters |
|
Display as two packed TSS/8 sixbit characters |
|
Display instruction mnemonics |
Input parsing is controlled by the first character typed in or by command-line switches:
|
ASCII character |
|
Two packed sixbit characters |
|
Two packed TSS/8 sixbit characters |
Alphabetic |
Instruction mnemonic |
Numeric |
Octal number |
Instruction input uses standard PDP-8 assembler syntax. There are four instruction classes: memory reference, IOT, field change, and operate.
Memory reference instructions have the format
memref {I} {C/Z} address
where I
signifies indirect,
C
a current page reference,
and Z
a zero page reference.
The address is an octal number in the range 0 – 07777;
if C
or Z
is specified,
the address is a page offset in the range 0 – 177.
Normally,
C
is not needed;
the simulator figures out from the address what mode to use.
However,
when referencing memory outside the CPU
(e.g., disks),
there is no valid PC,
and C
must be used to specify current page addressing.
IOT instructions consist of single mnemonics,
e.g., KRB
, TLS
.
IOT instructions may be OR’d together
iot iot iot...
The simulator does not check the legality of the proposed combination.
IOTs for which there is no opcode may be specified as IOT n
,
where n
is an octal number in the range 0 – 0777.
Field change instructions
(CIF
, CDF
) have the format
fldchg field
where field is an octal number in the range 0 – 7. Field change instructions may be OR’d together.
Operate instructions have the format
opr opr opr...
The simulator does not check the legality of the proposed combination. EAE mode A and B mnemonics may be specified regardless of the EAE mode. The operands for MUY and DVI must be deposited explicitly.