See also: TOPS-20 User Wiki.
While there are several ways to get a working TOPS-20 system, by far the easiest is to use the Panda distribution. Once you’ve got that, there are a few steps to perform before your first “real” boot.
The only required change here is likely the IP address used for the ni0 device. That is supposed to be a different IP address than your host system.
The switch register line (set sw=254200,,147) in the stock klt20.ini is a source of confusion. A search discovered this post to alt.sys.pdp10 which mentions that the code 254200,,0 is the HALT instruction (<JRST 4,>). And 147 is the normal start address for TOPS-20. I’m still not sure what this switch register does, or whether it’s useful, however. It could be someone just being cheeky…
First, execute the klt20 script to launch the emulator:
$ cd panda-dist $ ./klt20 KLH10 V2.0H (MyKL) built Jun 15 2006 11:26:09 Copyright © 2002 Kenneth L. Harrenstien -- All Rights Reserved. ... KLH10# KLH10# ; Ready to GO KLH10# [EOF on klt20.ini] KLH10#
This puts one into the emulator shell. Since there’s no need to define additional devices, etc, just enter GO to start the boot process:
KLH10# go Starting KN10 at loc 040000... BOOT V11.0(315) BOOT>
Just booting from here would start the system normally. But, as this is the first boot, start the system standalone so that some configuration changes can be made. Note that the $ symbol is actually entered using the Esc key.
How does this work?BOOT>/e [BOOT: Loading] [OK] EDDT dbugsw/ T1 2 147$g [TOPS20 mounted] Panda Distribution, PANDA TOPS-20 Monitor 7.1(21733)-4 Internet: Loading host names Date and time is: Monday, 10-February-2014 11:57AM Why reload? 10-Feb-2014 11:57:32 ***BUGINF NOHSTN*** Failed to find host name file SYSTEM:HOSTS.TXT Job: 0, User: OPERATOR sa [System is stand-alone] DDMP: Started SYSJOB 7A(88)-4 started at 10-Feb-2014 1158 SYSJOB command file not found.
0 | normal |
1 | debugging |
2 | standalone |
3 | standalone fast startup |
OP | OPR | PM | Prevent Maint. |
PA | Parity | CM | Corrective Maint. |
PO | Power | SA | Stand-Alone |
ST | Static | NE | New |
HAR | Hardware | SCH | Scheduled |
HA | Halt | OT | Other |
HU | Hung | ? | (Help) |
Once the system is up, hit ^C at the operator’s console to get a prompt, then login as OPERATOR:
^C ... @login operator dec-20 @
That was easy. Probably too easy, in fact…
For what are hopefully obvious reasons, if your system is accessible by anyone other than you, changing this password is quite important:
@set dir pass <operator> Old password: dec-20 New password: hunter2 Retype new password: hunter2 @
According to the manual, the password can consist of up to 39 alphanumeric characters, including hyphens. (And to think there are still systems in 2014 restricting passwords to a mere 8 characters!)
The Panda Distribution README has this to say about initial configuration:
You’ll need to edit the following files. EMACS is installed on this system, along with TECO and EDIT. [More on these editors later.]
SYSTEM:7-1-CONFIG.CMD to set your timezone SYSTEM:HOSTS.TXT to define your local host name and network SYSTEM:INTERNET.ADDRESS to define (again!) your IP address – must be the same as in klt20.ini. Also define your netmask here as LOGICAL-HOST-MASK SYSTEM:INTERNET.GATEWAYS to define your IP gateway SYSTEM:INTERNET.NAMESERVERS Don’t bother with SYSTEM:INTERNET.NAMESERVERS. That is the configuration file for DEC’s resolver; although it’s simpler it has some interoperability problems with MMAILR which haven’t been resolved yet. SYSTEM:MONNAM.TXT to define your system name DOMAIN:RESOLV.CONFIG to define your DNS servers, your default domain (replacing MYDOMAIN.COM) and any users in addition to OPERATOR who can send control messages to the resolver.
To actually edit any of those, you'll probably need to ENABLE first, eg:
@ena $
The dollar-sign ($) prompt indicates that your privileges are enabled.
For day-to-day tasks, it’s best to use a login other than OPERATOR. Create an account with the BUILD or ^ECREATE commands, eg:
@ena $^Ecreate <orfeo> euridice [New] $$wheel $$^M $dis @
There’s no difference between the two commands in this instance, as an ENABLE’d BUILD command is the same as ^ECREATE.
At this point, a shutdown and startup of the system will complete the installation. (See the instructions below for that procedure.)
This is a simpler version of the standalone startup procedure described above:
$ ./klt20 KLH10 V2.0H (MyKL) built Jun 15 2006 11:26:09 Copyright © 2002 Kenneth L. Harrenstien -- All Rights Reserved. This program comes "AS IS" with ABSOLUTELY NO WARRANTY. KLH10# KLH10# ; Ready to GO KLH10# [EOF on klt20.ini] KLH10# go Starting KN10 at loc 040000... BOOT V11.0(315) BOOT>^M [BOOT: Loading] [OK] [TOPS20 mounted] Panda Distribution, PANDA TOPS-20 Monitor 7.1(21733)-4 Internet: Loading host names [OK] System restarting, wait... Date and time is: Monday, 10-February-2014 11:07PM Why reload? pm Run CHECKD? n DDMP: Started SYSJOB 7A(88)-4 started at 10-Feb-2014 2308 ... 23:08:20 From operator terminal 13 on node TOPS20:: =>System in operation ...
If, for some reason, you think your disks might be in an inconsistent state, answer Y to the Run CHECKD? question.
Use the ^ECEASE privileged command to shut down TOPS-20, then the SHUTDOWN and QUIT emulator commands to halt the CPU and exit the emulator, respectively. Your system may output more or less, depending on what’s running, but the procedure will be roughly the same, eg:
^C @log operator hunter2 @ena $^Ecease now TOPS20 Will be shut down IMMEDIATELY [Confirm]^M [Timesharing is over] $ OPERATOR - Wait for the message "Shutdown complete" before entering commands to PARSER. 10-Feb-2014 22:05:21 HSYS: Shutdown complete ^\[HALTED: FE interrupt] KLH10> shut Continuing KN10 at loc 01142476... **HALTED** $11B>>SWHLT4#/ XCT CHKADR BUGCHK/ 0 ^\[HALTED: FE interrupt] KLH10> quit Are you sure you want to quit? [Confirm]^M Shutting down...Bye! $
Note that Control-Backslash (^\) is used to break into the emulator shell (twice, in this case, because of the DBUGSW setting).
This could also be done via OPR, eg:
^C @attach operator 1 [Job 1, TTY13, Running OPR, confirm]^M Password: hunter2 ^M OPR>push PANDA TOPS-20 Command processor 7.1(4453)-4 @ena $^Ecease now ...
See the TOPS-20 User Wiki for additional information on editors.
Your default editor is set by the logical name EDITOR. To see its definition, use the INFORMATION LOGICAL-NAMES command, eg:
@info log editor Job-wide: editor: => SYS:EDT.EXE System-wide: editor: => SYS:EMACS.EXE @
You can define your own entry via LOGIN.CMD, eg:
DEFINE EDITOR: SYS:EDT.EXE
Feel free to contact me with any questions, comments, or feedback.