Revision of 22-Oct-2022
Copyright Notice
The SIMH source code and documentation is made available under a X11-style open source license; the precise terms are available at:
https://github.com/open-simh/simh/blob/master/LICENSE.txt
The DEC PDP-10/KA10 simulator was written by Richard Cornwell.
3.2.1 Console Teletype (CTY) (Device 120)
3.2.2 Paper Tape Reader (PTR) (Device 104)
3.2.3 Paper Tape Punch (PTP) (Device 100)
3.2.4 Card Reader (CR) (Device 150)
3.2.5 Card Punch (CP) (Device 110)
3.2.6 Line Printer (LPT) (Device 124)
3.2.7 Type 340 Graphics display (DPY) (Device 130)
3.2.8 Stanford Triple III Display (III) (Device 430)
3.2.9 DBK Stanford microswitch keyboard scanner (DKB) (Device 310)
3.2.10 DK10 Timer Module (DK) (Device 070)
3.2.11 TM10 Magnetic Tape (MTA) (Device 340,344)
3.2.12 TD10 DECTape (DT) (Device 320,324)
3.2.13 PCLK Petit Calendar Clock (Device 730)
3.2.14 PD DeCoriolis clock (Device 500)
3.2.15 A/D Input Multiplexer (IMX) (Device 574)
3.3.1 FHA Disk Controller (Device 170)
3.3.2 DPA/DPB Disk Controller (Device 250/254)
3.3.3 PMP Disk Controller (Device 500/504)
3.3.4 Systems Concepts DC-10 Disk Controller (Device 610/614)
3.3.5 DDC10 Drum controller for TENEX
3.5 Terminal Multiplexer I/O Devices
3.5.1 DC10E Terminal Controller (Device 240)
3.5.2 TK Knight kludge, TTY scanner (Device 0600)
3.5.3 MTY Morton terminal multiplexer (Device 400)
3.5.4 DPK DK-10 Datapoint kludge (Device 604)
3.6.1 IMP Interface Message Processor (Device 460)
3.6.2 CH Chaosnet interface (Device 470)
3.7.1 DCT Type 136 Data Control (Device 200/204)
3.7.2 DTC Type 551 DECtape controller (Device 210)
3.7.3 MTC Type 516 magtape controller (Device 220)
3.7.4 DSK Type 270 Disk controller (Device 270)
3.7.5 DCS Type 630 Terminal Multiplexer (Device 300)
Originally the DEC PDP-10 computer started as the PDP-6. This was a 36 bit computer that was designed for timesharing, which was introduced in 1964. The original goal of the machine was to allow for processing of many 6 bit characters at a time. 36 bits were also common in machines like the IBM 7090, GE 645, and Univac 11xx lines. Several influences shaped the design of the PDP-6, including CTSS, Lisp, and support for larger memory.
The PDP-6 was canceled by DEC due to production problems. The engineers designed a smaller replacement, which happened to be a 36 bit computer that looked very much like the PDP-6. This was called the PDP-10, later renamed to "DECSystem-10". The system supported up to 256K 36-bit words of memory.
The first PDP-10 was labeled the KA10, and added a few instructions to the PDP-6. Both the PDP-6 and PDP-10 used a base and limit relocation scheme. The KA10 generally offered two registers, one for user data and the second for user shared code. These were referred to as the Low-Segment and High-Segment. The High-Segment could be shared with several jobs.
The next version was called KI10 for Integrated. This added support for paging and double precision floating point instructions. It also added 4 sets of registers to improve context switching time. It could also support up to 4 megawords of memory.
Following the KI10 was the KL10 (for Low-Cost). The KL10 added double precision integer instructions and instructions to improve COBOL performance. This was the first version which was microcoded. The KL10 was extended to support user programs larger than 256K.
The final version to make it to market was the KS10 (for Small). This was a bit-slice version of the PDP-10 which used Unibus devices which were cheaper than the KL10 devices.
The original operating system for the PDP-6/PDP-10 was just called "Monitor". It was designed to fit into 6K words. Around the third release swapping was added. The sixth release saw the addition of virtual memory. Around the fourth release it was given the name "TOPS-10". Around this time BBN was working on a paging system and implemented it on the PDP-10. This was called "TENEX". This was later adopted by DEC and became "TOPS-20".
During the mid 1960s a group at MIT, who were not happy with how Multics was being developed, decided to create their own operating system, which they called Incompatible Timesharing System, or "ITS". The name was a play on an earlier project called the Compatible Timesharing System, or "CTSS". CTSS was implemented by MIT on their IBM 7090 as an experimental system that allowed multiple time sharing users to co-exist on the same machine running batch processing, hence the term "Compatible".
Also during the mid 1960s a group at Stanford Artificial Intelligence Laboratory (SAIL), started with a version of TOPS-10 and heavily modified it to become WAITS.
During the 1970s, Tymshare modified TOPS-10 to support random access files, paging with working sets, and spawnable processes. This ran on the KI10, KL10, and KS10.
The PDP-10 was ultimately replaced by the VAX.
To compile the DEC PDP-10/KA10 simulator, you must define USE_INT64
as part of the compilation command line.
| Subdirectory | File | Contains |
|---|---|---|
PDP10/ |
||
kx10_defs.h |
KA10 simulator definitions | |
kx10_cpu.c |
KA10 CPU. | |
kx10_df.c |
DF10/C controller. | |
kx10_rh.c |
RH10 Controller. | |
kx10_disk.h |
Disk formatter definitions | |
kx10_disk.c |
Disk formatter routine. | |
kx10_sys.c |
KA10 System interface | |
kx10_cty.c |
Console Terminal Interface. | |
kx10_pt.c |
Paper Tape Reader and Punch | |
kx10_rc.c |
RC10 Disk controller, RD10 and RM10 Disks | |
kx10_dp.c |
RP10 Disk controller, RP01/2/3 Disks. | |
kx10_rp.c |
RH10 Disk controller, RP04/5/6 Disks. | |
kx10_rs.c |
RH10 Disk controller RS04 Fixed head Disks. | |
kx10_dt.c |
TD10 Dectape controller. | |
kx10_mt.c |
TM10A/B Magnetic tape controller. | |
kx10_tu.c |
RH10/TM03 Magnetic tape controller. | |
kx10_lp.c |
Line printer. | |
kx10_cr.c |
Punch card reader. | |
kx10_cp.c |
Punch card punch. | |
kx10_dk.c |
DK10 interval timer. | |
kx10_dc.c |
DC10 communications controller. | |
kx10_ddc.c |
DDC-10 Drum controller | |
ka10_tk10.c |
Knight kludge, TTY scanner | |
ka10_mty.c |
MTY, Morton terminal multiplexer | |
ka10_dpk.c |
DK-10 Datapoint Kludge | |
ka10_dpy.c |
DEC 340 graphics interface. | |
ka10_dkb.c |
Stanford Microswitch Scanner for III display | |
ka10_iii.c |
Stanford Triple III display. | |
ka10_stk.c |
Stanford keyboard for 340. | |
ka10_pclk.c |
Petit Calendar Clock. | |
ka10_pd.c |
DeCoriolis clock. | |
ka10_imx.c |
Analog input device. | |
ka10_ten11.c |
PDP-11 interface. | |
kx10_lights.c |
Front panel interface. | |
kx10_imp.c |
IMP10 interface to ethernet. | |
ka10_ch10.c |
Chaosnet 10 interface. | |
ka10_pmp.c |
PMP Interface to IBM 3330 drives. | |
ka10_ai.c |
System Concepts DC10 IBM2314 disk controller. | |
pdp6_dct.c |
PDP-6 Data Controller | |
pdp6_dtc.c |
PDP-6 551 DECtape controller | |
pdp6_mtc.c |
PDP-6 516 Magtape controller | |
pdp6_dsk.c |
PDP-6 270 Disk controller | |
pdp6_dcs.c |
PDP-6 630 Terminal multiplexer |
The KA10 simulator is configured as follows:
| Device Name(s) | Simulates |
|---|---|
CPU |
KA10 CPU with 256KW of memory |
CTY |
Console TTY. |
PTP |
Paper tape punch |
PTR |
Paper tape reader. |
LPT |
LP10 Line Printer |
CR |
CR10 Card reader. |
CP |
CP10 Card punch |
MTA |
TM10A/B Tape controller. |
DPA,DPB |
RP10 Disk controller |
FSA |
RS04 Disk controller via RH10 |
RPA,RPB,RPC,RPD |
RH10 Disk controllers via RH10 |
PMP |
PMP IBM 3330 disk controller |
AI |
System Concepts DC10 IBM 2314 disk controller |
TUA |
TM02 Tape controller via RH10 |
FHA |
RC10 Disk controller. |
DDC |
DDC10 Disk controller. |
DT |
TD10 DECtape Controller. |
DC |
DC10 Communications controller. |
DK |
Clock timer module. |
PCLK |
Petit Calendar Clock. |
PD |
Coriolis Clock |
IMP |
IMP network interface |
CH |
CH10 Chaosnet interface |
IMX |
A/D input multiplexer |
TK |
Knight kludge, TTY scanner |
MTY |
MTY, Morton terminal multiplexer |
DPK |
DK-10 Datapoint Kludge |
DKB |
Stanford Microswitch Scanner. |
III |
Stanford Triple III Display. |
TEN11 |
PDP-11 interface |
AUXCPU |
PDP-6 interface |
DCT |
PDP-6 Data Control Type 136 |
DTC |
PDP-6 Type 551 DECtape controller |
MTC |
PDP-6 Type 516 magtape controller |
DSK |
PDP-6 Type 270 disk controller |
DCS |
PDP-6 Type 630 Terminal Multiplexer |
The CPU options include setting memory size and O/S customization.
| command | action | OS Type |
|---|---|---|
SET CPU 16K |
Sets memory to 16K | |
SET CPU 32K |
Sets memory to 32K | |
SET CPU 48K |
Sets memory to 48K | |
SET CPU 64K |
Sets memory to 64K | |
SET CPU 96K |
Sets memory to 96K | |
SET CPU 128K |
Sets memory to 128K | |
SET CPU 256K |
Sets memory to 256K | |
SET CPU 512K |
Sets memory to 512K | ITS & BBN |
SET CPU 768K |
Set memory to 768K | ITS & BBN |
SET CPU 1024K |
Set memory to 1024K | ITS & BBN |
SET CPU NOMAOFF |
Sets traps to default of 040 | |
SET CPU MAOFF |
Move trap vectors from 040 to 0140 | WAITS |
SET CPU ONESEG |
Sets to one segment register | |
SET CPU TWOSEG |
Sets to 2 segment registers | |
SET CPU ITS |
Adds ITS Pager and instruction support to KA | ITS |
SET CPU NOMPX |
Disables MPX interrupt support for ITS | |
SET CPU MPX |
Enables MPX interrupt support for ITS | ITS |
SET CPU WAITS |
Add support for special WAITS instructions | WAITS |
SET CPU NOWAITS |
Disables special WAITS instructions. | |
SET CPU BBN |
Enables BBN pager and TENEX support | TENEX |
SET CPU NOIDLE |
Disables Idle detection | |
SET CPU IDLE |
Enables Idle detection |
CPU registers include the visible state of the processor as well as the control registers for the interrupt system.
| Name | Size | Comments | OS Type |
|---|---|---|---|
PC |
18 | Program Counter | |
FLAGS |
18 | Flags | |
FM0-FM17 |
36 | Fast Memory | |
SW |
36 | Console SW Register | |
MI |
36 | Memory Indicators | |
AS |
18 | Console AS register | |
ABRK |
1 | Address break | |
ACOND |
5 | Address Condition switches | |
PIR |
8 | Priority Interrupt Request | |
PIH |
8 | Priority Interrupt Hold | |
PIE |
8 | Priority Interrupt Enable | |
PIENB |
1 | Enable Priority System | |
BYF5 |
1 | Byte Flag | |
UUO |
1 | UUO Cycle | |
PL |
18 | Program Limit Low | |
PH |
18 | Program Limit High | |
RL |
18 | Program Relation Low | |
RH |
18 | Program Relation High | |
PFLAG |
1 | Relocation enable | |
PUSHOVER |
1 | Push overflow flag | |
MEMPROT |
1 | Memory protection flag | |
NXM |
1 | Non-existing memory access | |
CLK |
1 | Clock interrupt | |
OV |
1 | Overflow enable | |
FOV |
1 | Floating overflow enable | |
APRIRQ |
3 | APR Interrupt number | |
PAGE_ENABLE |
1 | Paging enabled | ITS/BBN |
PAGE_FAULT |
1 | Page fault | ITS/BBN |
AC_STACK |
18 | AC Stack | ITS/BBN |
PAGE_RELOAD |
18 | Page reload | ITS/BBN |
FAULT_DATA |
36 | Page fault data | ITS/BBN |
TRP_FLG |
1 | Trap flag | ITS/BBN |
LAST_PAGE |
9 | Last page | ITS/BBN |
EXEC_MAP |
8 | Executive mapping | BBN |
NXT_WR |
1 | Map next write | BBN |
MON_BASE |
8 | Monitor base | BBN |
USER_BASE |
8 | User base | BBN |
USER_LIMIT |
3 | User limit | BBN |
PER_USER |
36 | Per user data | BBN |
DBR1 |
18 | Paging control register 1 | ITS |
DBR2 |
18 | Paging control register 2 | ITS |
DBR3 |
18 | Paging control register 3 | ITS |
JPC |
18 | Last Jump instruction address | ITS |
AGE |
4 | Age | ITS |
FAULT_ADDR |
18 | Fault address | ITS |
OPC |
36 | Saved PC and flags | ITS |
MAR |
18 | Memory Access Register | ITS |
QUA_TIME |
36 | Quantum time. | ITS |
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:
| command | action |
|---|---|
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 |
Instruction tracing shows the Program Counter, the contents of AC
selected, the computed effective address. AR is generally the
contents the memory location referenced by EA. RES is the result
of the instruction. FLAGS shows the flags after the instruction is
executed. IR shows the instruction being executed.
The console station allows for communications with the operating system.
| command | action |
|---|---|
SET CTY 7B |
7 bit characters, space parity. |
SET CTY 8B |
8 bit characters, space parity. |
SET CTY 7P |
7 bit characters, space parity. |
SET CTY UC |
Translate lower case to upper case. |
The CTY also supports a method for stopping the TOPS-10 operating
system.
| command | action |
|---|---|
SET CTY STOP |
Deposit 1 in location 30. |
Reads a paper tape from a disk file.
Punches a paper tape to a disk file.
The card reader (CR) reads data from a disk file. Card reader files
can either be text (one character per column) or column binary (two
characters per column). The file type can be specified with a set
command:
| command | action |
|---|---|
SET CRn FORMAT=TEXT |
Sets ASCII text mode |
SET CRn FORMAT=BINARY |
Sets for binary card images. |
SET CRn FORMAT=BCD |
Sets for BCD records. |
SET CRn FORMAT=CBN |
Sets for column binary BCD records. |
SET CRn FORMAT=AUTO |
Automatically determines format. |
or in the ATTACH command:
| command | action |
|---|---|
ATTACH CRn <file> |
Attaches a file |
ATTACH CRn -f <format> <file> |
Attaches a file with the given format. |
ATTACH CRn -s <file> |
Added file onto current cards to read. |
ATTACH CRn -e <file> |
After a file is read in, the reader will receive an end-of-file flag. |
The card reader (CP) writes data to a disk file. Cards are simulated
as ASCII lines with terminating newlines. Card punch files can either
be text (one character per column) or column binary (two characters
per column). The file type can be specified with a set command:
| command | action |
|---|---|
SET CP FORMAT=TEXT |
Sets ASCII text mode |
SET CP FORMAT=BINARY |
Sets for binary card images. |
SET CP FORMAT=BCD |
Sets for BCD records. |
SET CP FORMAT=CBN |
Sets for column binary BCD records. |
SET CP FORMAT=AUTO |
Automatically determines format. |
or in the ATTACH command:
| command | action |
|---|---|
ATTACH CP <file> |
Attaches a file |
ATTACH CP -f <format> <file> |
Attaches a file with the given format. |
The line printer (LPT) writes data to a disk file as ASCII text with
terminating newlines. It currently handles standard signals that
control paper advance.
| command | action |
|---|---|
SET LPTn LC |
Allow printer to print lower case |
SET LPTn UC |
Print only upper case |
SET LPTn UTF8 |
Print control characters as UTF8 characters. |
SET LPTn LINESPERPAGE=n |
Sets the number of lines before an auto form feed is generated. There is an automatic margin of 6 lines. There is a maximum of 100 lines per page. |
SET LPTn DEV=n |
Sets device number to n (octal). |
These characters control the skipping of various number of lines.
| Character | Effect |
|---|---|
014 |
Skip to top of form. |
013 |
Skip mod 20 lines. |
020 |
Skip mod 30 lines. |
021 |
Skip to even line. |
022 |
Skip to every 3 line |
023 |
Same as line feed (12), but ignore margin. |
Primarily useful under ITS, TOPS-10 does have some limited support for this device. By default this device is not enabled. When enabled and commands are sent to it, a graphics window will display.
Primarily useful under WAITS. By default this device is not enabled.
Uses the DBK device for keyboard input.
Used by III to handle input. Currently only one keyboard is supported.
The DK10 timer module does not have any settable options.
The TM10 was the most common tape controller on KA10 and KI10. The TM10 came in two models, the TM10A and the TM10B. The B model added a DF10 which allowed the tape data to be transferred without intervention of the CPU. The device has 2 options.
| command | action |
|---|---|
SET MTA TYPE=t |
Sets the type of the controller to A or B |
SET MTA MPX=# |
For ITS set the MPX interrupt to channel # |
Each individual tape drive supports several options: MTA is used as
an example.
| command | action |
|---|---|
SET MTAn 7T |
Sets the magtape unit to 7 track format. |
SET MTAn 9T |
Sets the magtape unit to 9 track format. |
SET MTAn LOCKED |
Sets the magtape to be read only. |
SET MTAn WRITEENABLE |
Sets the magtape to be writable. |
The TD10 was the standard DECtape controller for KAs and KIs. This
controller loads the tape into memory and uses the buffered
version. For ITS you needed to connect it to an MPX channel to
handle I/O.
| command | action |
|---|---|
SET DT MPX=# |
For ITS set the MPX interrupt to channel # |
Each individual tape drive supports several options: DT is used as
an example.
| command | action |
|---|---|
SET DTn LOCKED |
Sets the DECtape to be read only. |
SET DTn WRITEENABLE |
Sets the DECtape to be writable. |
SET DTn 18b |
Default, tapes are considered to be 18bit tapes. |
SET DTn 16b |
Tapes are converted from 16 bit to 18bit. |
SET DTn 12b |
Tapes are converted from 12 bit to 18bit. |
This device keeps track of time and date for WAITS. It was custom
designed by Peter Petit. The device supports two settings ON and
OFF. By default this device is disabled.
This is a device which keeps track of the time and date. An access will return the number of ticks since the beginning of the year. There are 60 ticks per second. The device was made by Paul DeCoriolis at MIT. By default this device is disabled.
Provides 128 channels of 12-bit analog to digital converters. Currently only input from USB game controllers are supported. To map game inputs to channels, use
SET IMX CHANNEL=123;UNIT0;AXIS1
Where 123 is the A/D channel in octal notation, UNIT0 is first USB
game controller, and AXIS1 is the second axis on that
controller. Add ;NEGATE to invert the signal.
The PDP-10 supported many disk controllers.
The RC10 disk controller used a DF10 to transfer data to
memory. There were two types of disks that could be connected to the
RC10, the RD10 and RM10. The RD10 could hold up to 512K words
of data. The RM10 could hold up to 345K words of data.
Each individual disk drive supports several options: FHA is used as
an example.
| command | action |
|---|---|
SET FHAn RD10 |
Sets this unit to be an RD10. |
SET FHAn RM10 |
Sets this unit to be an RM10. |
SET FHAn LOCKED |
Sets this unit to be read only. |
SET FHAn WRITEENABLE |
Sets this unit to be writable. |
The RP10 disk controller used a DF10 to transfer data to
memory. There were three types of disks that could be connected to the
RP10, the RP01, RP02, RP03. The RP01 held up to 1.2M
words, the RP02 5.2M words, and the RP03 10M words. The second
controller is DPB. Disks can be stored in one of several file
formats, SIMH, DBD9 and DLD9. The later two are for compatibility
with other simulators.
Each individual disk drive supports several options: DPA is used as
an example.
| command | action |
|---|---|
SET DPAn RP01 |
Sets this unit to be an RP01. |
SET DPAn RP02 |
Sets this unit to be an RP02. |
SET DPAn RP03 |
Sets this unit to be an RP03. |
SET DPAn HEADERS |
Enables the RP10 to execute write headers function. |
SET DPAn NOHEADERS |
Prevents the RP10 to execute write headers function. |
SET DPAn LOCKED |
Sets this unit to be read only. |
SET DPAn WRITEENABLE |
Sets this unit to be writable. |
To attach a disk use the ATTACH command:
| command | action |
|---|---|
ATTACH DPAn <file> |
Attaches a file |
ATTACH DPAn -f <format> <file> |
Attaches a file with the given format. |
ATTACH DPAn -n <file> |
Creates a blank disk. |
Format can be SIMH, DBD9, DLD9.
The PMP disk controller allowed for IBM type drives to be connected
to the PDP-10. This is the controller used by WAITS. This device is
disabled by default.
Each individual disk drive supports several options: PMP is used as
an example.
| command | action |
|---|---|
SET PMPn TYPE=type |
Sets this unit to be of type type. Generally 3330-2 |
SET PMP0 DEV=## |
Sets the addresses of all disks to start at ## hex. |
SET PMPn DEV=## |
Sets this unit to be at address ##. |
The Systems Concepts DC-10 disk controller allowed IBM 2314 compatible disk drives to be attached to the MIT AI Lab PDP-10 running ITS. This device is disabled by default.
DEC's RES-10 drum controller is used by TENEX for swapping. This device is disabled by default.
Massbus devices are attached via RH10s. Devices start a device 270 and
go up (274, 360, 364, 370, 374). For TOPS-10 devices need to be in the
order RS, RP, TU. By default RS disks are disabled. The first
unit which is not enabled will get device 270, units will be assigned
the next available address automatically. The device configuration
must match that which is defined in the OS.
Up to 4 strings of up to 8 RP drives can be configured. By default
the third and fourth controllers are disabled. These are addresses as
RPA, RPB, RPC, RPD. Disks can be stored in one of several file
formats, SIMH, DBD9, and DLD9. The later two are for
compatibility with other simulators.
| command | action |
|---|---|
SET RPAn RP04 |
Sets this unit to be an RP04 (19MWords) |
SET RPAn RP06 |
Sets this unit to be an RP06 (39MWords) |
SET RPAn RP07 |
Sets this unit to be an RP07 (110MWords) |
SET RPAn LOCKED |
Sets this unit to be read only |
SET RPAn WRITEENABLE |
Sets this unit to be writable |
To attach a disk use the ATTACH command:
| command | action |
|---|---|
ATTACH RPAn <file> |
Attaches a file |
ATTACH RPAn -f <format> <file> |
Attaches a file with the given format. |
ATTACH RPAn -n <file> |
Creates a blank disk. |
Format can be SIMH, DBD9, DLD9.
One string of up to 8 RS drives can be configured. These drives are
fixed head swapping disks. By default they are disabled.
| command | action |
|---|---|
SET FSAn RS03 |
Sets this unit to be an RS03 (262KWords) |
SET FSAn RS04 |
Sets this unit to be an RS04 (262KWords) |
SET FSAn LOCKED |
Sets this unit to be read only |
SET FSAn WRITEENABLE |
Sets this unit to be writable |
The TUA is a Mass bus tape controller using a TM03 formatter. There
can be one per RH10 and it can support up to 8 drives.
| command | action |
|---|---|
SET TUAn LOCKED |
Sets the magtape to be read only. |
SET TUAn WRITEENABLE |
Sets the magtape to be writable. |
All terminal multiplexers must be attached in order to work. The
ATTACH command specifies the port to be used for Telnet sessions:
| command | action |
|---|---|
ATTACH <device> <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.
Once attached and the simulator is running, the multiplexer listens
for connections on the specified port. It assumes that any incoming
connection is a Telnet connection. The connections remain open until
disconnected either by the Telnet client, a SET <device> DISCONNECT
command, or a DETACH <device> command.
| command | action |
|---|---|
SET <device> DISCONNECT=n |
Disconnect line n |
The <device> implements the following special SHOW commands:
| command | action |
|---|---|
SHOW <device> CONNECTIONS |
Displays current connections to the <device> |
SHOW <device> STATISTICS |
Displays statistics for active connections |
SHOW <device> LOG |
Display logging for all lines. |
Logging can be controlled as follows:
| command | action |
|---|---|
SET <device> LOG=n=filename |
Log output of line n to filename |
SET <device> NOLOG |
Disable logging and close log file |
The DC device was the standard terminal multiplexer for the KA10s
and KI10s. Lines came in groups of 8. For modem control there was a
second port for each line. These could be offset by any number of
groups.
| command | action |
|---|---|
SET DC LINES=n |
Set the number of lines on the DC10, multiple of 8. |
SET DC MODEM=n |
Set the start of where the modem control DEC10E lines begins. |
This is a device with 16 terminal ports. It's specific to the MIT AI Lab and Dynamic Modeling PDP-10s. By default this device is disabled.
This is a device with 32 high-speed terminal lines. It's specific to the MIT Mathlab and Dynamic Modeling PDP-10s. By default this device is disabled.
The System Concepts DK-10, also known as the Datapoint Kludge is a device with 16 terminal ports. This device is specific to ITS, and is disabled by default.
This allows the KA/KI to connect to the Internet. Currently only
supported under ITS. ITS and other OS that used the IMP did not
support modern protocols and typically required a complete rebuild to
change the IP address. Because of this the IMP processor includes
built in NAT and DHCP support. For ITS the system generated IP packets
which are translated to the local network. If the HOST is set to
0.0.0.0 there will be no translation. If HOST is set to an IP
address then it will be mapped into the address set in IP. If DHCP
is enabled the IMP will issue a DHCP request at startup and set IP
to the address that is provided. DHCP is enabled by default.
| command | action |
|---|---|
SET IMP MAC=xx:xx:xx:xx:xx:xx |
Set the MAC address of the IMP to the value given. |
SET IMP IP=ddd.ddd.ddd.ddd/dd |
Set the external IP address of the IMP along with the net mask in bits. |
SET IMP GW=ddd.ddd.ddd.ddd |
Set the Gateway address for the IMP. |
SET IMP HOST=ddd.ddd.ddd.ddd |
Sets the IP address of the PDP-10 system. |
SET IMP DHCP |
Allows the IMP to acquire an IP address from the local network via DHCP. Only HOST must be set if this feature is used. |
SET IMP NODHCP |
Disables the IMP from making DHCP queries |
SET IMP ARP=ddd.ddd.ddd.ddd= xx:xx:xx:xx:xx:xx |
Creates a static ARP entry for the IP address with the indicated MAC address. |
SET IMP MIT |
Sets the IMP to look like the IMP used by MIT for ITS. |
SET IMP MPX=# |
For ITS set the MPX interrupt to channel # |
SET IMP BBN |
Sets the IMP to behave like generic BBN IMP. (Not implemented yet). |
SET IMP WAITS |
Sets the IMP for Stanford style IMP for WAITS. |
SHOW IMP ARP |
Displays the IP address to MAC address table. |
The IMP device must be attached to an available Ethernet
interface. To determine which devices are available use the SHOW ETHERNET to list the potential interfaces. Check out the
0readme_ethernet.txt from the top of the source directory.
The IMP device can be configured in several ways. Either it can
connect directly to an ethernet port (via TAP) or it can be
connected via a TUN interface. If configured via TAP interface the
IMP will behave like any other ethernet interface and if asked
obtain its own address. In environments where this is not desired the TUN
interface can be used. When configured under a TUN interface the
simulated network is a collection of ports on the local host. These
can be mapped based on configuration options, see the
0readme_ethernet.txt file as to options.
With the IMP interface, the IP address of the simulated system is
static, and under ITS is configured into the system at compile
time. This address should be given to the IMP with the SET IMP HOST=<ip>, the IMP will direct all traffic it sees to this
address. If this address is not the same as the address of the system
as seen by the network, then this address can be set with SET IMP IP=<ip>, and SET IMP GW=<ip>, or SET IMP DHCP which will allow
the IMP to request an address from a local DHCP server. The IMP
will translate the packets it receives and sends to look like they
appeared from the desired address. The IMP will also correctly translate FTP
requests in this configuration.
When running under a TUN interface, IMP is on a virtual 10.0.2.0
network. The default gateway is 10.0.2.1, with the default IMP at
10.0.2.15. For this mode DHCP can be used.
Chaosnet was another method of network access for ITS. Chaosnet can be connected to another ITS system or a VAX/PDP-11 running BSD Unix or VMS. Chaosnet runs over UDP protocol under UNIX. You must specify a node number, peer to talk to and your local UDP listening port. All UDP packets are sent to the peer for further processing.
| command | action |
|---|---|
SET CH NODE=n |
Set the Node number for this system. |
SET CH PEER=ddd.ddd.ddd.ddd:dddd |
Set the Peer address and port number. |
The CH device must be attached to a UDP port number. This is where
it will receive UDP packets from its peer.
These devices could be attached to the KA10. Stanford WAITS used them. Early versions of TOPS-10 could also run with these devices. By default these devices are disabled.
This device acted as a data multiplexer for the DECtapes/magtapes and
disks. Individual devices could be assigned channels on this
device. Devices which use the DCT include a DCT option which takes
two octal digits, the first is the DCT device 0 or 1, the second is
the channel 1 to 7.
This was the standard DECtape controller for the PDP-6. This
controller loads the tape into memory and uses the buffered
version. You need to specify which DCT unit and channel the tape is
connected to.
| command | action |
|---|---|
SET DTC DCT=uc |
Sets the DTC to connect to DCT unit and channel. |
Each individual tape drive supports several options:
| command | action |
|---|---|
SET DTCn LOCKED |
Sets the DECtape to be read only. |
SET DTCn WRITEENABLE |
Sets the DECtape to be writable. |
SET DTCn 18b |
Default, tapes are considered to be 18bit tapes. |
SET DTCn 16b |
Tapes are converted from 16 bit to 18bit. |
SET DTCn 12b |
Tapes are converted from 12 bit to 18bit. |
This was the standard magtape controller for the PDP-6. This device
handled only 7 track tapes. The simulator has the option to
automatically translate 8 track tapes into 7 track tapes. You need to
specify which DCT unit and channel the tape is connected to.
| command | action |
|---|---|
SET MTC DCT=uc |
Sets the MTC to connect to DCT unit and channel. |
Each individual tape drive supports several options:
| command | action |
|---|---|
SET MTCn LOCKED |
Sets this unit to be read only. |
SET MTCn WRITEENABLE |
Sets this unit to be writable. |
SET MTCn 9T |
Sets this unit to simulate 9 track format. |
SET MTCn 7T |
Sets this unit to read/write 7 track tapes (with parity) |
The 270 disk controller could support up to 4 units. The controller
had to be connected to a type 136 Data Controller. You need to specify
which DCT unit and channel the disk is connected to.
| command | action |
|---|---|
SET DSK DCT=uc |
Sets the DSK to connect to DCT unit and channel. |
Each individual disk drive supports several options:
| command | action |
|---|---|
SET DSKn LOCKED |
Sets this unit to be read only. |
SET DSKn WRITEENABLE |
Sets this unit to be writable. |
See section on terminal multiplexers on generic setup.
The KA10 simulator implements symbolic display and input. These are
controlled by the following switches to the EXAMINE and DEPOSIT
commands:
| switch | action |
|---|---|
-v |
Looks up the address via translation. Will return nothing if address is not valid. |
-u |
With the -v option, use user space instead ofexecutive space. |
-a |
Display/Enter ASCII data. |
-p |
Display/Enter packed ASCII data. |
-c |
Display/Enter Sixbit character data. |
-m |
Display/Enter symbolic instructions. |
default |
Display/Enter octal data. |
Symbolic instructions can be of the formats:
opcode ac, operandopcode operandsi/o_opcode device, address
Operands can be one or more of the following in order:
- Optional
@for indirection +or-to set sign- Octal number
- Optional
(AC)for indexing
Breakpoints can be set at real memory address. The PDP-10 supports
three types of breakpoints. Execution, Memory Access and Memory
Modify. The default is Execution. Adding -R to the breakpoint
command will stop the simulator on access to that memory location,
either via fetch, indirection or operand access. Adding -w will stop
the simulator when the location is modified.
The simulator can load RIM files, SAV files, EXE files, WAITS
octal DMP files, MIT SBLK files.
When instruction history is enabled, the history trace shows internal status of various registers at the start of the instruction execution.
| field | meaning |
|---|---|
PC |
Shows the PC of the instruction executed. |
AC |
The contents of the referenced AC. |
EA |
The final computed Effective address. |
AR |
Generally the operand that was computed. |
RES |
The AR register after the instruction was complete. |
FLAGS |
The values of the FLAGS register before execution of the instruction. |
IR |
The fetched instruction followed by the disassembled instruction. |
The PDP-10 simulator allows for Memory reference and memory modify
breakpoints with the -r and -w options given to the break command.
The default configuration supports TOPS-10, so there is no extra configuration required.
To run ITS, the CPU must be SET CPU ITS MPX 1024K, this will enable
the ITS pager, special instructions, and the interrupt
multiplexer.
DK should be disabled, along with all Massbus devices.
The following devices should be enabled, PD, (also optionally)
DPY, STK, TK, MTY, TEN11, AUXCPU, IMP, CH.
ITS used a second interrupt multiplexer so some devices need to be
configured to specific channels. TM10 (MTA) was at MPX=7, DECtape
(DT) was at MPX=6, the IMP was at MPX=4.
WAITS has two configurations, one uses the default two relocation
registers. This can be done with SET CPU WAITS MAOFF. The PMP disk
is the only supported disk.
WAITS used some PDP-6 devices (DTC, MTC, DCS).
Also the following special devices for WAITS should be enabled (DKB,
III). The DTC should be configured to DCT=02, and the MTC should be
configured to DCT=01.
After 1975 Stanford added a BBN pager unit to their KA, so to run
later versions of WAITS, SET CPU WAITS MAOFF BBN 512K.
The “WAITS” flag enables the FIX and XCTR instructions for
WAITS. MAOFF moves the trap vectors to the 0140.
For systems numbers over 49, the BBN pager needs to also be enabled on the CPU.