The TSS/8 Operating System

Introduction

The origins of TSS/8 date back to Carnegie Mellon University where in 1967 Gordon Bell, Ad Van de Goor and Donald A. Witcraft proposed the design of a small scale time sharing system. The principal design goal was a general purpose time sharing system, but with an order of magnitude decrease in the per user cost.

The design goals for TSS/8 were stated in an IEEE paper entitled Design and Behavior of TSS/8: a PDP-8 Based Time-Sharing System. The design constraints were as follows:

  1. Achieve an order of magnitude improvement in the cost/performance ratio over completely general purpose time-sharing systems (e.g., IBM 360/67, DEC PDP-10).
  2. The system should support about 20 on-line users.
  3. Response time for jobs with low computational requirements (like editing) should be good.
  4. The system should be open-ended, i.e., addition of future software should be easy.
  5. Existing user programs and system software (such as EDITOR, FORTRAS COMPILER, etc.) should be run on TSS/8 with none or only minor changes. This would prevent the necessity of reprogramming the PDP-8 software.
  6. PDP-8 hardware changes should be kept low such that it should be relatively easy to change existing PDP-8 processors.
  7. The system should be general purpose by providing protection among the users on a device, core memory and file basis.

TSS/8 (Time-Sharing System for the PDP-8/I Computer) is a compact time-sharing system that does not require the refined environment of a big computer. Typically, TSS/8's are installed in the location where they will be used - a classroom or small computer lab. TSS/8 supports up to 32 users with a comprehensive library of system, utility and service programs providing facilities for compiling, assembling, loading, saving, calling and debugging user-coded programs on-line. Two conversational languages were available; FOCAL and BASIC-8. Each user was provided with 4KW of working space, effectively providing each user their own virtual PDP-8/I. The TSS/8 system consists of a comprehensive collection of system software (computer programs) and a system hardware configuration (computer and peripherals). The system software supplied with a configuration is tailored specifically for that configuration. Monitor, however, is structured so that standard loading and operating procedures apply for all configurations.

The heart of TSS/8 is a series of sub-programs called the Monitor. The Monitor coordinates the operations of the various units, allocate the time and services of the computer to users and controls their access to the system. The allocation function includes scheduling user's requests, transferring control of the central processor from one user to the next, swapping programs in and out of core memory and managing the user's files. TSS/8 consists of RMON, the resident monitor, DMON, the disk monitor (file system),and KMON, the keyboard monitor (command shell). BASIC was well supported, while restricted (4K) versions of FORTRAN D was available. Algol was also available but not sure if this was a DEC product or a third party product.

TSS/8 systems were made up of standard DEC cabinets. These are 71-7/16 inches high, 21-11/16 inches wide, and 30 inches deep. TSS/8 systems range from two to six of these cabinets. A small system with one or two disks, 12-16 KW of core memory, the PTOS Teletype interfacing, and no DECtape, fits in two cabinets. A third or fourth disk requires an extra cabinet. DECtapes require a cabinet. If the DC08 communications equipment is used, it is housed in its own cabinet. Average TSS/8's are three to four cabinets.

System Program Library

  • Binary (BIN) Loader - Used to load user programs into memory from the console.
  • Symbolic Tape Editor - Used to prepare, edit, and generate symbolic (source) programs and program tapes from the console.
  • PAL III Symbolic Assembler Used to translate source programs written in the PAL III language into object programs.
  • MACRO-8 Assembler - Used to translate source programs written in MACRO-8 language, containing macros and literals into object programs.
  • Dynamic Debugging Technique (DDT-8) - Used to aid the user in correcting errors in shared programs by allowing the user to execute small sections of the program at a time, to stop execution where the user requires, and to change portions of the program, using the symbolic language of the source program or machine language. The user may create an octal program using the DEPOSIT command.
  • Octal Debugging Technique (ODT-8) - Used for the same purpose as DDT-8 except that the user communicates in the octal representation of his program. ODT-8 requires less memory than DDT-8 and can be loaded in either the upper or lower portion of memory, depending upon where the user's program is loaded.
  • FOCAL (FOrmula CALculator) - An on-line, conversational, interpretive program used to solve complex numerical problems. Used as a programming tool by students, engineers and scientists.
  • BASIC-8 - An elementary algebraic language similar to FOACL for solving complex numerical programs.
  • FORTRAN (4K) - Used to compile and run a program written in FORTRAN. Compilation requires only one pass through the compiler.

Interactive Commands

To run a program start with the "R", or RUN command:

.R program name

Example: .R FOCAL

To login to TSS/8, use the following command;

LOGIN USERNAME PASSWORD

To login as user 2, the user would enter;

LOGIN 2 WACN

Note that user 1 is the System Administrator.

The CAT (Catalog) program is the equivalent of the modern DIR (DOS) or ls (Unix) command.

CAT Command
Entering ".R CAT" produces this result for User 2;
DISK FILES FOR USER 0, 2 ON 1-JAN-75

NAME      SIZE   PROT  DATE
PALD .SAV  16     12 31-MAR-76
LOADER.SAV  4     12 31-MAR-76
FORT .SAV   6     12 31-MAR-76
FOSL .SAV   6     12 31-MAR-76
PIP .SAV   10     12 31-MAR-76
TSTLPT.SAV  2     12 31-MAR-76
LOGOUT.SAV  6     12 31-MAR-76
SYSTAT.SAV  5     12 31-MAR-76
EDIT .SAV   8     12 31-MAR-76
FOCAL .SAV 16     12 31-MAR-76
BASIC .SAV 38     12 31-MAR-76
COPY .SAV  10     12 31-MAR-76
CAT .SAV    6     12 31-MAR-76
GRIPE .SAV  5     12 31-MAR-76
LOGID .SAV  4     12 31-MAR-76
PUTR .SAV  21     12  3-FEB-84
ODTHI .SAV  2     12 29-FEB-84
FLAP .SAV   1     12  7-APR-84
PTLOAD.SAV  1     12 29-APR-84
BLANK .SAV  1     12  9-JUN-84
DTTEST.SAV  2     12 26-JUN-84
INIT .SAV  17     12 29-JUL-84
BAS000.TMP  1     17  1-JAN-84
BAS100.TMP  1     17  1-JAN-84
INTER .BAS  1     12  1-JAN-75
REMY .ASC   1     12  1-JAN-75

TOTAL DISK SEGMENTS: 189 QUOTA: 1575

When the CAT program is used by the SYSTEM ADMINISTRATOR (user 1), it prints out accounting information. This report consists out of the accumulated time (in hours, minutes and seconds) for central processor usage and connect time as well as the number of disk segments being used. To see the contents of a users library, run the

.R CAT:L

command. It will ask for an account account number, after which it prints out the user's directory. This way the Administrator (User 1) can trace which user is using an abnormal amount of disk space.

The System Status command ".R SYSTAT" displays what the system is doing, who is logged in and more.

SYSTAT Command
			
SYSTAT

STATUS OF TSS/8.24 DEC PDP-8 #1 AT 12:19:14 ON 1 JAN 75

UPTIME 00:07:14

JOB    WHO      WHERE     WHAT     STATUS     RUNTIME
1      0, 2      K00      FOCAL    ^BS ^Q     00:00:01
2      1,50      K01      SYSTAT   RUN ^Q     00:00:00

AVAILABLE CORE 16K   FREE CORE=312

BUSY DEVICES  NONE

103 FREE DISK SEGMENTS

The result above shows that there are two users logged in, user 2 on teletype 0, user 50 on teletype 1. User 2 is at the FOCAL prompt (STATUS ^BS indicates monitor mode; at the prompt). User 50 is executing the SYSTAT command.

SYSTAT responds by printing on the first line: the version of the TSS/8 Monitor being run, the time, and the date. SYSTAT reports the uptime which is the length of time in hours, minutes, and seconds since the system was on-line. SYSTAT lists all on-line users. Each user is identified by their account number. The job number assigned to the user and the number of the console the user is using are indicated, as is the particular System Program being run. The exact running state for each user, whether they are actually running (RUN), typing in (KEY) or out (TTY), doing input/output on another system device (IO orFIP), or not running (iB), is indicated.

The amount of computer time used by each user since they logged in is given. It more users are on-line than the system has memory to hold them and if the system is is swapping to release memory, then this is reported. The number of free memory blocks used internally by TSS/8 Monitor for Teletype buffering and various other purposes is also reported. Then SYSTAT reports any unavailable devices, for example, devices which are assigned to individual users, the job to which they are attached and their status.

BROADCAST Command

This command is meant to send an alert to all the users from the system administrator. For example, the command:

.BROADCAST THE LINE PRINTER IS DOWN DO NOT PRINT

Results in all logged in users getting the message:

*** THE LINE PRINTER IS DOWN DO NOT PRINT

The TALK Command

The TALK command on TSS/8 allows users to send one line messages to other users. This is similar to the VMS PHONE command which behaves similarly and is likely a carry-over from earlier DEC operating systems. The example below is user 1 sending a quick note to user 2.

.TALK 2 OUT FOR LUNCH?

User 2 will see the message as:

** K01 [01, 50] **
OUT FOR LUNCH?

User 2 can reply to user 1 with:

.TALK 1 SURE GIVE ME 5 MINUTES

Terminal 0 is the System Administrator terminal. Sending a TALK command to terminal 0 will alert the Administrator.

Hardware Configuration

The minimum hardware configuration was designed for eight users and included a modified PDP-8/I or PDP-8 with 8K words of core memory, an RF08 Disk, a PT8/I high speed paper tape reader, and Teletype control units for data communication (either four PT08s or one 680/I per system). By segregating the CPU processing functions from the interactive terminal I/O the computer can working on a number of programs simultaneously; giving only a fraction of a second each time to each program or task. The computer can interact with many users at once seemingly giving each user their own dedicated PDP-8. Multiple programs execution is interspersed without interfering with each other and without detectable response time lags to each user.

Minimum Hardware Configuration

  • PDP-8/I or PDP-8 with KT08/I Time-Sharing Modification
  • MC8/I-A Memory Extension Control and 4096 Words of memory.
  • RF08 Disk Control
  • RS08 Disk
  • PT08 Asynchronous Line Interface, Dual (4)
  • PT8/I Hish-Speed Paper Tape reader
  • KE8/I Automatic Multiply/Divider
  • CAB 8/IA Option Cabinet
Typical TSS/8 System
Typical TSS/8 System

Please refer to the Software Documentation page here for more information on TSS/8.

Sources:

Some of the content herein was adapted from Remy Van Elst's site which has good coverage on running DEC processor emulators such as the PDP-8 on SIMH. There is good coverage therein on TSS/8.