TOPS-20

The TOPS-20 operating system by Digital Equipment Corporation (DEC) is a proprietary OS used on some of DEC's 36-bit mainframe computers. The Hardware Reference Manual was described as for "DECsystem-10/DECSYSTEM-20 Processor" (meaning the DEC PDP-10 and the DECSYSTEM-20).

TOPS-20 began in 1969 as the TENEX operating system of Bolt, Beranek and Newman (BBN) and shipped as a product by DEC starting in 1976. TOPS-20 is almost entirely unrelated to the similarly named TOPS-10, but it was shipped with the PA1050 TOPS-10 Monitor Calls emulation facility which allowed most, but not all, TOPS-10 executables to run unchanged. As a matter of policy, DEC did not update PA1050 to support later TOPS-10 additions except where required by DEC software.

TOPS-20 competed with TOPS-10, ITS and WAITS—all of which were notable time-sharing systems for the PDP-10 during this timeframe. TOPS-20 is informally known as TWENEX.

TENEX
TOPS-20 was based upon the TENEX operating system, which had been created by Bolt Beranek and Newman for Digital's PDP-10 computer. After Digital started development of the KI-10 version of the PDP-10, an issue arose: by this point TENEX was the most popular customer-written PDP-10 operating systems, but it would not run on the new, faster KI-10s. To correct this problem, the DEC PDP-10 sales manager purchased the rights to TENEX from BBN and set up a project to port it to the new machine. In the end, very little of the original TENEX code remained, and Digital ultimately named the resulting operating system TOPS-20.

PA1050
Some of what came with TOPS-20 was merely an emulation of the TOPS-10 Operating System's calls. These were known as UUO's, standing for Unimplemented User Operation, and were needed both for compilers, which were not 20-specific, to run, as well as user-programs written in these languages. The package that was mapped into a user's address space was named PA1050: PA as in PAT as in compatibility; 10 as in DEC or PDP 10; 50 as in a PDP 10 Model 50, 10/50, 1050.

Sometimes PA1050 was referred to as PAT, a name that was a good fit to the fact that PA1050, "was simply unprivileged user-mode code" that "performed the requested action, using JSYS calls where necessary."

TOPS-20 capabilities
The major ways to get at TOPS-20 capabilities, and what made TOPS-20 important, were
 * Commands entered via the command processor, EXEC.EXE
 * JSYS (Jump to System) calls from MACro-language (.MAC) programs

The "EXEC" accomplished its work primarily using
 * internal code, including calls via JSYS
 * requesting services from "GALAXY" components (e.g. spoolers)

Command processor
Rather advanced for its day were some TOPS-20-specific features:
 * Command completion
 * Dynamic help in the form of
 * noise-words - typing DIR and then pressing the ESCape key resulted in
 * DIRectory (of files)
 * typing and pressing the  key resulted in
 * Information (about)

One could then type to find out what operands were permitted/required. Pressing displays status information.

Commands
The following list of commands are supported by the TOPS-20 Command Processor.


 * ACCESS
 * ADVISE
 * APPEND
 * ARCHIVE
 * ASSIGN
 * ATTACH
 * BACKSPACE
 * BLANK
 * BREAK
 * BUILD
 * CANCEL
 * CLOSE
 * COMPILE
 * CONNECT
 * CONTINUE
 * COPY
 * CREATE
 * CREF
 * CSAVE
 * DAYTIME
 * DDT
 * DEASSIGN
 * DEBUG
 * DEFINE
 * DELETE
 * DEPOSIT
 * DETACH
 * DIRECTORY
 * DISABLE
 * DISCARD
 * DISMOUNT
 * EDIT
 * ENABLE
 * END-ACCESS
 * EOF
 * ERUN
 * EXAMINE
 * EXECUTE
 * EXPUNGE
 * FDIRECTORY
 * FORK
 * FREEZE
 * GET
 * HELP
 * INFORMATION
 * KEEP
 * LOAD
 * LOGIN
 * LOGOUT
 * MERGE
 * MODIFY
 * MOUNT
 * PERUSE
 * PLOT
 * POP
 * PRINT
 * PUNCH
 * PUSH
 * RECEIVE
 * REENTER
 * REFUSE
 * REMARK
 * RENAME
 * RESET
 * RETRIEVE
 * REWIND
 * RUN
 * SAVE
 * SEND
 * SET
 * SET HOST
 * SKIP
 * START
 * SUBMIT
 * SYSTAT
 * TAKE
 * TALK
 * TDIRECTORY
 * TERMINAL
 * TRANSLATE
 * TYPE
 * UNATTACH
 * UNDELETE
 * UNKEEP
 * UNLOAD
 * VDIRECTORY

JSYS features
JSYS stands for Jump to SYStem. Operands were at times memory addresses. "TOPS-20 allows you to use 18-bit or 30-bit addresses. Some  monitor calls require one kind, some the other;  some calls accept either kind. Some monitor calls use only 18 bits to hold an address. These  calls interpret 18-bit addresses as locations in the current section."

Internally, files were first identified, using a GTJFN (Get Job File Number) JSYS, and then that JFN number was used to open (OPENF) and manipulate the file's contents.

PCL (Programmable Command Language)
PCL (Programmable Command Language) is a programming language that runs under TOPS-20. PCL source programs are, by default, stored with Filetype .PCL, and enable extending the TOPS-20 EXEC via a verb named DECLARE. Newly compiled commands then become functionally part of the EXEC.

PCL language features
PCL includes:
 * flow control: DO While/Until, CASE/SELECT, IF-THEN-ELSE, GOTO
 * character string operations (length, substring, concatenation)
 * access to system information (date/time, file attributes, device characteristics)

TOPS-20 today
Paul Allen maintained several publicly accessible historic computer systems before his death, including an XKL TOAD-2 running TOPS-20.

See also SDF Public Access Unix System.