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.

See also
 Time-sharing system evolution

References

Further reading
 Storage Organization and Management in TENEX.  Daniel L. Murphy.  AFIPS Proceedings, 1972 FJCC.
 Implementation of TENEX on the KI10.  Daniel L. Murphy.  TENEX Panel Session, NCC 1974.
 "TOPS-20 User's Guide ." 1988.
 "DECSYSTEM-20 Assembly Language Guide." Frank da Cruz and Chris Ryland, 1980.
 "Running TOPS-20 V4.1 under the SIMH Emulator."

External links
 DIGITAL Computing Timeline
 Origins and Development of TOPS-20 is an excellent longer history.
 Panda TOPS-20 distribution.
 SDF Public Access TWENEX.
 SIMH Simulator capable of simulating the PDP-10 and running TOPS-20.
 Manuals for DEC 36-bit computers .
 PDP-10 Software Archive.
 36-bits Forever.
 Request a login to Living Computers: Museum + Labs TOAD-2 running TOPS-20.

DEC operating systems
Time-sharing operating systems
1969 software