Computer operating system
RSTS () is a multi-user time-sharing operating system developed by Digital Equipment Corporation (DEC, now part of Hewlett-Packard) for the PDP-11 series of 16-bit minicomputers. The first version of RSTS (RSTS-11, Version 1) was implemented in 1970 by DEC software engineers that developed the TSS-8 time-sharing operating system for the PDP-8. The last version of RSTS (RSTS/E, Version 10.1) was released in September 1992. RSTS-11 and RSTS/E are usually referred to just as "RSTS" and this article will generally use the shorter form. RSTS-11 supports the BASIC programming language, an extended version called BASIC-PLUS, developed under contract by "Evans Griffiths &amp; Hart" of Boston. Starting with RSTS/E version 5B, DEC added support for additional programming languages by emulating the execution environment of the RT-11 and RSX-11 operating systems.
Acronyms and abbreviations.
 ;templatestyles src="Div col/styles.css"/ ;
Development.
1970s.
The kernel of RSTS was programmed in the assembly language MACRO-11, compiled and installed to a disk using the CILUS program, running on a DOS-11 operating system. RSTS booted into an extended version of the BASIC programming language which DEC called "BASIC-PLUS". All of the system software CUSPS for the operating system, including the programs for resource accounting, login, logout, and managing the system, were written in BASIC-PLUS. From 1970 to 1973, RSTS ran in only 56K bytes of magnetic core memory (64 kilobytes including the memory-mapped I/O space). This would allow a system to have up to 16 terminals with a maximum of 17 jobs. The maximum program size was 16K bytes. By the end of 1973 DEC estimated there were 150 licensed systems running RSTS.
In 1973, memory management support was included in RSTS (now RSTS/E) for the newer DEC PDP-11/40 and PDP-11/45 minicomputers (the PDP-11/20 was only supported under RSTS-11). The introduction of memory management in the newer PDP-11 computers not only meant these machines were able to address four times the amount of memory (18-bit addressing, 256K bytes), it also paved the way for the developers to separate user mode processes from the core of the kernel.
In 1975, memory management support was again updated for the newer 22-bit addressable PDP-11/70. RSTS systems could now be expanded to use as much as two megabytes of memory running up to 63 jobs. The RTS and CCL concepts were introduced although they had to be compiled in during "SYSGEN". Multi-terminal service was introduced which would allow a single job the ability to control multiple terminals (128 total). Large-message send/receive and interprocess communication became very sophisticated and efficient. By August there are 1,200 licensed systems.
In 1977, the installation process for RSTS was no longer dependent on DOS-11. The RSTS kernel could now be compiled under the RT-11 RTS, formatted as a kernel file with RT-11 SILUS, and copied to the system or other disks, while the computer was time-sharing. The BASIC-PLUS RTS (as well as RT-11, RSX-11, TECO and third party RTSs) all ran as user mode processes, independent of the RSTS kernel. A systems manager could now decide during the bootstrap phase which RTS to run as the systems default Keyboard Monitor (KBM). By now, there were some 3,100 licensed systems.
In 1978, the final memory management update was included for all machines that could support 22-bit addressing. RSTS could now use the maximum amount of memory available to a PDP-11 (4 megabytes). Support was also included for SUPERVISORY mode which made RSTS the first DEC operating system with this capability. DECnet was also supported as well as remote diagnostics from field service technicians at the RDC in Colorado Springs, Colorado (a DEC subscription service). By the end of the decade, there are over 5,000 licensed systems.
1980s.
In 1981, support for separate instruction and data space for users with Unibus machines (PDP-11/44, PDP-11/45, PDP-11/55 and PDP-11/70) provided an extension to the memory constraints of an individual program. Compiling programs to use separate instruction and data space would soon give a program up to 64 KB for instructions, and up to 64 KB for buffering data. The DCL RTS was included as well as support for the newer revision of DECnet III.
By 1983, with an estimated 15,000 DEC machines running RSTS/E, V8.0-06 included support for the smallest 18-bit PDP-11 sold by DEC (the MicroPDP-11). A pre-generated kernel and CUSPS were included in this distribution to make installation on the MicroPDP-11 easier. DEC sold the pre-generated version on the MicroPDP-11 as MicroRSTS at a reduced price, however users needed to purchase the full version if they had a need to generate their own kernel. The file system was upgraded and given the designation RSTS Directory Structure 1 (RDS1). All previous versions of the RSTS file system are given the designation RDS0. The newer file system was designed to support more than 1700 user accounts. "It is now thought that there are well over 10,000 licensed users and at least an equal number of unlicensed users!".
From 1985 to 1989, RSTS became a mature product in the Version 9 revisions. DCL was installed as the primary RTS and the file system was again upgraded (now RDS1.2) to support new user account features. Passwords were encrypted using a modified DES algorithm instead of limited to six (6) characters stored in DEC Radix-50 format. Before Version 9, there was a non-user system account in the project (group) zero (the designation is [0,1]), and all accounts in project number 1 were privileged (not unlike the root account on Unix systems). With the release of Version 9, additional accounts could be created for project zero, and multiple privileges could be individually set for any account. Support for the LAT protocol was included, as well as the ability to run the newest version of DECnet IV. These network enhancements give any user connected to a terminal through a DECserver the ability to communicate with a RSTS machine, just as easily as with a VAX running VMS. The DCL command structure between DEC operating systems also contributed to the familiar look and feel:
This is not just another pseudo command file processor; it is based on VMS features. The DCL command file processor is fully supported and integrated in RSTS through extensive changes to DCL and the monitor. DCL executes command files as part of your job; therefore, no pseudo keyboard or forcing of commands to your keyboard is necessary (as with ATPK).
1990s.
In 1994, DEC sold most of its PDP-11 software business to Mentec. Digital continued to support its own PDP-11 customers for a short period after with the assistance of Mentec staff.
In 1997, Digital and Mentec granted anyone wishing to use RSTS 9.6 or earlier for non-commercial, hobby purposes no-cost license. The license is only valid on the SIMH PDP-11 emulator. The license also covers some other Digital operating systems. Copies of the license are included in an authorized software kit available for download on the official website of the SIMH emulator.
Documentation.
The standard complement of documentation manuals that accompanies a RSTS distribution consists of at least 11 large three-ring binders (collectively known as "The orange wall"), one small three-ring binder containing the RSTS/E Quick Reference Guide and a paperback copy of "Introduction to BASIC AA-0155B-TK". Each of the 11 three-ring binders contains:
Volume 1: General Information and Installation
Volume 2: System Management
Volume 3: System Usage
Volume 4: Utilities
Volume 4A: Utilities
Volume 4B: Utilities
Volume 5: BASIC-PLUS
Volume 6: System Programming
Volume 7: MACRO Programming
Volume 7A: MACRO Programming
Volume 8: RMS [Record Management Services]
Operation.
Communication.
RSTS uses a serial communication connection to interact with the operator. The connection might be a local computer terminal with a 20 mA current loop interface, an RS-232 interface (either local serial port or remote connection via modem), or by an Ethernet connection using DECnet or LAT. As many as 128 terminals (using multi-terminal service) can connect to a RSTS system, running a maximum of 63 jobs (depending on the processor being used, the amount of memory and disk space, and the system load). Most RSTS systems had far fewer terminals. Users can also submit jobs to be run in batch mode. There is also a batch program called "ATPK" that allows users to run a series of commands on an imaginary terminal (pseudo-terminal) in semi-interactive mode similar to batch commands in MS-DOS.
Login [Project, Programmer].
Users connect to the system by typing the LOGIN command (or HELLO) at a logged-out terminal and pressing return. Typing any command at a logged-out terminal starts the LOGIN program which then interprets the command. If it is one of the commands which were allowed to be used by a user that is not yet logged in ("Logged Out"), then the associated program for that command is CHAINed, otherwise the message "Please say HELLO" is printed on the terminal. Prior to Version 9, a user can also initiate a 1 line login, however this leaves the user's password on the screen for anyone else in the room to view (examples follow):
or
or
The status of a terminal can be determined from the command responses, printed by the command interpreter. A logged-in user communicating with the BASIC-PLUS KBM (key board monitor) is given the prompt "Ready" and a user who is logged out is given the prompt "Bye".
A user logs in by supplying their PPN number and password. User numbers consist of a project number (equivalent to a group number in Unix), a comma, and a programmer number. Both numbers are in the range of 0 to 254, with special exceptions. When specifying an account, the project and programmer number are enclosed in brackets. A typical user number can be [10,5] (project 10, programmer 5), [2,146], [254,31], or [200,220], etc. When a user is running a system program while logged out (because the system manager has enabled it) their PPN number is [0,0], and appears in the SYSTAT CUSP as **,**. Thus that is not a valid account number. If the user specifies a slash (/) instead of a comma between the project number and programmer number, a system wide message stored in [1,2]NOTICE.TXT (equivalent to the Unix motd) will not be displayed at login.
System and user accounts.
In every project, the programmer number 0 is usually reserved to as a group account, as it can be referenced by the special symbol #. If one's user number is [20,103], a reference to a file name beginning with "#" refers to a file stored in the account of the user number [20,0]. This feature is useful in educational environments, as programmer number 0 can be issued to the instructor of a class, and the individual students given accounts with the same project number, and the instructor can store in his account files marked as shared only for that project number (which would be students in that class only, and no other).
Two special classes of project numbers exist. The project number 0 is generally reserved for system software, and prior to Version 9 there is only 1 project 0 account (named [0,1]). Programmers in the project number 1 are privileged accounts, equivalent to the single account "root" on Unix systems, except that the account numbers [1,0] through [1,254] are all privileged accounts. As of Version 9, any account can be granted specific privileges by the systems manager.
The account [0,1] is used to store the operating system file itself, all run-time library systems, and certain system files relating to booting the system (author's comments appear on the right in bold):
 DIR [0,1]
 Name .Ext Size Prot Date SY:[0,1]
 BADB .SYS 0P ; 63 ; 06-Jun-98 List of bad blocks
 SATT .SYS 3CP ; 63 ; 06-Jun-98 Bitmap of allocated disk storage
 INIT .SYS 419P ; 40 ; 06-Jun-98 Operating system loader program
 ERR .ERR 16CP ; 40 ; 06-Jun-98 System error messages
 RSTS .SIL 307CP ; 60 ; 06-Jun-98 Operating system itself
 BASIC .RTS 73CP ; 60 ; 06-Jun-98 BASIC-PLUS run time system
 RT11 .RTS 20C ; 60 ; 06-Jun-98 RT-11 run time system
 SWAP .SYS 1024CP ; 63 ; 06-Jun-98 System swap file
 CRASH .SYS 35CP ; 63 ; 06-Jun-98 System crash dump
 RSX .RTS 16C ; 60 ; 23-Sep-79 RSX-11 run-time system
 TECO .RTS 39C ; 60 ; 24-Sep-79 TECO text editor
 Total of 1952 blocks in 11 files in SY:[0,1]
 ("Editor's note: This directory listing is prior to Version 9.")
The DIR command is an installed CCL equivalent to a RUN command for the DIRECT program. [0,1] is the account number (and directory name)