Some notes on setting up an ITS system

These are some brief notes on setting up an ITS system based on klh10 and the PI [Note: [New link!] link!] (Public ITS) distribution. I work on it very occasionally, but it may help some people along the way.

No, I'm not an ITS wizard, just an old TOPS-20 hacker. Any comments, corrections, or suggestions for improvements are very welcome!

Keep a copy of .INFO.;DDTORD > within arms reach at any point (or read it here). Read .../doc/ksits.txt (but see below) and .../run/ksits/pubits/doc/distrib.its carefully. The ITS Reference Manual is also worth reading, at some point.

  1. Making klh10
  2. To get it running decently
  3. Minor caveats
  4. Setting up COMSAT
  5. Maintenance
  6. Setting up PANDA/PWORD
  7. My contributions
  8. Notes on renaming your system (don't try this before you've done the above things!)
  9. Tunneling CHAOS over UDP (don't try this before you've done the above things!)
  10. Running klh10 on a Raspberry Pi [new 121214]
  11. To do
See also my Luser's Guide to ITS, and the ITS Primer by V. Ellen Golden [new 130103], and Getting Started Computing at the AI Lab (PDF [new 101222]) especially chapter 6, and in the not-so-related-but-still-fun department, HAKMEM especially the "Programming Hacks" section [new 110309].

Making klh10

  1. Use the latest klh10. The original at trailing-edge lacks a lot of things. The Panda version (see also Panda.COM) has almost all you need - and includes a full TOPS-20 distribution.
  2. If you run gcc version 4 (or later?) you will NEED to apply a patch to the file src/kn10def.h - download it here (patch found by Roch Kusiak, see here).
  3. Follow the instructions which came with your klh10.

To get it running decently

  1. Run MD instead of PI. Instead of using PI, as suggested in .../doc/ksits.txt, use MD. I.e., use klh10-md.ini instead of klh10-pi.ini.
    Using PI gives a system that runs, but many many programs don't know the PI machine, so you'll typically get .VALUE 0 breakpoints when running INQUIR, LISP etc. MD is more "well-known" (except to COMPLR), so you'll get a system which is easier to use.
  2. Get networking up. Since the console gets random typeouts from the system (it is intended as a paper console logging what's happening to the system), it's a good idea to use the system over Telnet or Supdup.
    • If you run Linux, you may be interested in a patch to support the tun/tap device in Linux (e.g the patch by MMcM); at least this gives you local access, which is all you dare before you get PWORD/PANDA running. Note that this is not included in klh10-2.0h (the Panda version, see above).
    • You can try my iptables script to set up restricted external access (and forwarding of the Supdup port from the host to ITS). No guarantees it'll work in your setup. (See my notes for Raspberry pi setup for the most recent version.)
    • You may also be interested in my patched Supdup client for Linux ([updated] 2010-11-16)
    • If you want to use features like the SAIL character set, Ctrl-8 etc, you may want to try a Supdup client in Java ([updated] 2009-04-05).

Minor caveats

Setting up COMSAT

In addition to setting up mailing lists, you'll need to set up COMSAT (the mailer demon) properly.

I have some notes on my external email setup - YMMV (certainly).


  1. Mount a tape: give klh10 the command devmount mta0 tapefile rw (where tapefile is a new file), and continue.
  2. To see which tape number to use (if you are disciplined about tape use), issue the TAPES command, specifying TTY: as the LIST DEV(ice).
    • Full backup: give DUMP the command DUMP FULL LINKS, followed by ICHECK to check tape contents and set dumped bit on checked files.
    • Incremental backup: DUMP INCREM LINKS (checks and sets bits)
  3. Backup done: QUIT
  4. Done: give klh10 the command devunmount mta0
  1. Mount the tape: devmount mta0 tapefile, and continue
  2. Restore: give DUMP the command RELOAD LINKS CRDIR SORRY
  3. Dismount tape: devunmount mta0

Setting up PANDA/PWORD

PWORD is a replacement for HACTRN which doesn't let you log in as anyone without a password (except on the console and local terminals). PANDA is the administrative tool to set passwords, accept account applications, etc.

  1. Set the master password for PANDA.
    $l sysbin;panda bin
    ttyhak+7/ CAME T,SPWORD .$b
    Now type in a password. When you hit the breakpoint, its encrypted form is in T. Copy it (573037415503 in the example below), and then set it in the real copy:
    t[ 573037415503
    $l sysbin;panda bin (re-load a pure copy)
    spword/ 573037415503
    :pdump sysbin;panda bin
    To make it easy to run, make a link to it in SYS;TS PANDA (so you can run it by :panda).
  2. Create ACOUNT; which is needed for account applications etc.
  3. Add mail aliases for ACCOUNTS-NOTIFICATION, USER-ACCOUNTS, ACCOUNTS-HELD-REFUSED, USER-ACCOUNTS-ARCHIVE, PASSWORD-SYSTEM, and BUGGY-PWORD (see above). If you expect account applications, read the mail coming to these addresses...
  4. Make PWORD the replacement for HACTRN.

    You may want to start by setting a password for your uname:

    set uname -pw (where uname is your uname)
    Is this OK? (Y or N) Y
    Enter new password.
    Password: f00

    Now just make a link to SYS;ATSIGN PWORD in SYS;ATSIGN HACTRN (not the other way!) and you're done. To change your password later, use :login uname -pw.
    Note that logging in on the console never requires a password.

My contributions

To do

Things to document: If you know how to do these things, please let me know:


In the movie Swordfish (Jackman, Travolta, Berry), the hacker played by Jackman connects to an ITS system in the basement of Caltech to retrieve his worm. In the script, the ITS machine is at MIT, which is surprisingly well written by the author, Skip Woods. Would anyone know how he would know about ITS? Would anyone have a guess why the machine was moved to Caltech in the movie?

© Björn Victor <>
Valid HTML 4.01! Valid CSS!
Latest update: July 21, 2015.