TOPS-20 (TWENEX) notes

See also: TOPS-20 User Wiki.

Getting started

(mostly a reorganization of panda-dist.tgz/panda-dist/README)

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.

Editing klt20.ini

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…

Booting standalone

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.

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.
How does this work?
(TOPS-20 Monitor Calls Reference Manual, §2.3.2, p. 2-27; TOPS-20 Operator’s Guide, §4.4, pp. 4-23–24)
  1. The /e command to BOOT launches EDDT.
  2. In EDDT, dbugsw/ sets the DBUGSW system table; possible values are
    0normal
    1debugging
    2standalone
    3standalone fast startup
    The default value for the Panda distribution is 1; if the system crashes, it’s stopped in EDDT, rather than returning to the KLH10 emulator. (This causes the SYSTAT message System is remedial.)
  3. 147 is the normal start address for TOPS-20; $g (entered as Esc-g) tells EDDT to start execution at that address.
  4. SA (“stand-alone”) is the reload reason; available reasons are:
    OPOPRPMPrevent Maint.
    PAParityCMCorrective Maint.
    POPowerSAStand-Alone
    STStaticNENew
    HARHardwareSCHScheduled
    HAHaltOTOther
    HUHung?(Help)
    If you don’t enter one within 60 seconds, the system will continue to boot, using the OTHER reason.

Logging in

Once the system is up, hit ^C at the operator’s console to get a prompt, then login as OPERATOR:


...
@login operator 
@

That was easy. Probably too easy, in fact…

Changing the OPERATOR password

(With apologies to RMS…)
(TOPS-20 Commands Reference Manual, §2.71, p. 2-346)

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: 
New password: 
Retype new password: 
@

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!)

Configuring the system

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.CMDto set your timezone
SYSTEM:HOSTS.TXTto define your local host name and network
SYSTEM:INTERNET.ADDRESSto define (again!) your IP address – must be the same as in klt20.ini. Also define your netmask here as LOGICAL-HOST-MASK
SYSTEM:INTERNET.GATEWAYSto define your IP gateway
SYSTEM:INTERNET.NAMESERVERSDon’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.TXTto define your system name
DOMAIN:RESOLV.CONFIGto 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.

Creating a user account

(TOPS-20 Operator’s Guide, §8.5.1, pp. 8-9–11; TOPS-20 Operator’s Command Language Reference Manual, §5.2, pp. 5-3–7; TOPS-20 Commands Reference Manual, §2.10, pp. 2-26–42)

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> 
[New]
$$wheel
$$
$dis
@

There’s no difference between the two commands in this instance, as an ENABLE’d BUILD command is the same as ^ECREATE.

Restarting the system

At this point, a shutdown and startup of the system will complete the installation. (See the instructions below for that procedure.)

Normal system operation

System startup

(TOPS-20 Operator’s Guide, §§4.2–4, pp. 4-3–26)

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>

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

System shutdown

(TOPS-20 Operator’s Guide, §8.12, pp. 8-55–57; TOPS-20 Operator’s Command Language Reference Manual, §5.2, pp. 5-2–7)

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:


@log operator 
@ena
$^Ecease now
 TOPS20 Will be shut down IMMEDIATELY 
[Confirm]

[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]
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:


@attach operator 1
 [Job 1, TTY13, Running OPR, confirm]
Password: 

OPR>push

 PANDA TOPS-20 Command processor 7.1(4453)-4
@ena
$^Ecease now
...

Editing files

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

EDT-20

EDIT

EMACS

TECO, TV, etc.

Programming

Batch operations


Feel free to contact me with any questions, comments, or feedback.