Friday, March 15, 2019

Visiting a fountain of computing folklore: Installing TOPS-20 "TWENEX" on a KLH10 PDP-10 Mainframe

LCM - DEC PDP-10 - 01


I have, sadly, never had the opportunity to experience a real DEC PDP-10 mainframe computer and the legendary operating systems running on it, like TOPS-10 and TOPS-20 ("TWENEX"). However, thanks to Mark Crispin's "Panda TOPS-20 Distribution" running on Kenneth L. Harrenstien's KLH10 DEC PDP-10 mainframe emulator, I am discovering the remarkable elegance and versatility of the TOP-20 operating system running on PDP-10, a potent combination that still remains unbeaten in many ways in computer and operating-system architecture.

"The Digital Equipment Corporation PDP-10 (1964-1983) is one of the most influential computers in history in more ways than can be listed here. It was the foundation of the DECsystem-10 and the DECSYSTEM-20 and ran a variety of operating systems including TOPS-10, ITS, WAITS, TYMCOM-X, TENEX, and TOPS-20. It was the first widely used timesharing system. It was the basis of the ARPANET (now Internet). It was the platform upon which many of today's popular applications were first developed including EMACS, TeX, ISPELL (the first spell-checker), and Kermit. TOPS-10 (Timesharing OPerating System-10) preceded TOPS-20 by many years (TOPS-10 circa 1964; TOPS-20 circa 1976). Its command language is familiar to anybody who has used RT-11, CP/M, or DOS, all of which were based on it. TOPS-10 supported interactive timesharing, batch processing, and realtime applications simultaneously — a difficult mix to accommodate, even today." - Frank da Cruz, Columbia University Computing History

Though the Panda TOPS-20 Distribution includes Linux binaries that still run fine on modern Linux systems, I built them again from the source code. The only change I had to make was to replace "#include <asm/io.h>" with "#include <sys/io.h>" in the source file dvlites.c. This resolved the issue with make failing with "../../src/dvlites.c:34:10: fatal error: asm/io.h: No such file or directory"

To get around having to run the KLH10 emulator as root for virtual network adapter access, I modified the permissions of dpni20 to setuid root as recommended in the supporting documentation.

# sudo chown root:root dpni20
# sudo chmod +s dpni20

The two internet articles I used the most to navigate the installation of Panda TOPS-20 on KLH10 PDP-10 are The Ancient Bits adventure: Ten over Pi by Jordi Guillaumes Pons (though I am running KLH10 on OpenSuse Tumbleweed, not Raspbian) and TOPS-20 (TWENEX) Notes. It was an exhilarating and exciting journey in retro-computing, and I picked up on some very cool stuff along the path already laid by others. For example, it is simple enough to get rid of the SYSTAT message "System is remedial" that shows up with Panda; all we have to do is change  the DBUGSW system table to 0 (normal) from Panda default 1 (debugging) at the BOOT prompt:

BOOT>/e
[BOOT: Loading] [OK]
EDDT
dbugsw/ T1 0
147$g 

Press Esc to get the $ sign when entering 147$g.

After installation, the resulting TOPS-20 DECnet-20 enabled PDP-10 computer connects to HECnet with node-name TWENEX:

Node status as of 16-MAR-19 02:46:29

Remote                       Active
Node             State       Links  Delay  Type           Cost  Hops  Circuit
31.29 (TWENEX)               0      4
   Next node = 31.1 (IMPVAX)


Node characteristics as of 16-MAR-19 02:46:31

Executor node = 31.29 (TWENEX)

   Identification = DECnet-20 Version 4.0, Management version = 4.0.0
   Loop count = 1, Loop length = 127
   Loop with = Mixed, Incoming timer = 30
   Outgoing timer = 60, NSP version = 4.0.0
   Maximum links = 65535, Delay factor = 48
   Delay weight = 10
   Inactivity timer = 120, Retransmit factor = 10
   Routing version = 2.0.0, Type = Endnode IV
   Routing timer = 600
   Broadcast routing timer = 40, Maximum address = 1023
   Maximum circuits = 20
   Maximum cost = 100
   Maximum hops = 16, Maximum visits = 20
   Maximum broadcast endnodes = 64
   Maximum broadcast routers = 32
   Maximum buffers = 80, Buffer size = 576
   Segment buffer size = 576


The directory structure of the Panda TOPS-20 distribution is:

$ tree -d panda-dist
panda-dist
└── klh10-2.0h
    ├── bld
    │   ├── fbppc
    │   ├── fbx86
    │   ├── lnx86
    │   ├── lnxarm
    │   ├── lnxppc
    │   ├── nbaxp
    │   ├── nbx86
    │   ├── osfaxp
    │   └── solsparc
    ├── contrib
    │   ├── backwr
    │   ├── read20
    │   └── supdup
    ├── doc
    ├── run
    │   ├── dfkfb
    │   ├── klnic
    │   ├── klt10
    │   ├── klt20
    │   ├── ksits
    │   │   └── pubits
    │   │       ├── adm
    │   │       └── doc
    │   ├── kst10
    │   └── kst20
    └── src

Following is the complete session log of installing and configuring Panda TOPS-20 distribution, including DECnet Phase IV, on KLH10 PDP-10.

No comments:

Post a Comment

"SEO" link builders: move on, your spam link will not get posted.

Note: Only a member of this blog may post a comment.