Table of Contents
TSS-8 User Tutorial
This documents the use of https://tss8.sdf.org
TSS/8 is a timesharing system for the DEC PDP-8 originally designed by Adrian van de Goor, a grad student at CMU and later enhanced and sold as a complete system by DEC in 1968. It originally required a PDP-8, 8I or 8E with an RF08 or DF32 attached to at least one RS08 or a DS32 drive for swapping and filesystem.
Each user gets a virtual PDP-8 with 4KW of memory, and a directory on disk for file storage.
Basics
Logging in
After connecting, you will be at the login “.” prompt. Type
LOGIN <PPN> <PASSWORD>
Substituting your PPN and password. NONE OF THE ABOVE INPUT WILL ECHO – if it does it means you've connected to a session that was not properly logged out – type “LOGOUT” to log out and then try logging in again.
Logging out
The LOGOUT
or KJOB
command will log you out of the system. K
can be used as a shorthand for this. It is important to log out before disconnecting as the system will not automatically log you out.
If for some reason you seem to be stuck, try ^BS
or CTRL-B S
. Further details about what ^B
does can be found down below in the Stopping a running program section.
Running programs
Running a program from the system library or from your directory can be accomplished via the R
command:
R CAT
will run the CATALOG program, displaying the contents of your directory. The currently available programs in the system library are:
DISK FILES FOR USER 0, 2 ON 19-DEC-79 NAME SIZE PROT DATE PALD .SAV 16 12 31-MAR-76 - PAL Assembler LOADER.SAV 4 12 31-MAR-76 - Binary loader FORT .SAV 6 12 31-MAR-76 - FORTRAN II FOSL .SAV 6 12 31-MAR-76 - FORTRAN system PIP .SAV 10 12 31-MAR-76 - Peripheral Interchange Program SYSTAT.SAV 5 12 31-MAR-76 - Displays system status EDIT .SAV 8 12 31-MAR-76 - Line-oriented text editor FOCAL .SAV 16 12 31-MAR-76 - FOCAL language interpreter BASIC .SAV 38 12 31-MAR-76 - BASIC language interpreter CAT .SAV 6 12 31-MAR-76 - Disk catalog PUTR .SAV 21 12 3-FEB-84 - File transfer utility ODTHI .SAV 2 12 29-FEB-84 - ODT debugger FLAP .SAV 1 12 7-APR-84 - Absolute assembler PTLOAD.SAV 1 12 29-APR-84 - Paper tape loader CHESS .SAV 17 12 11-NOV-74 - CHEKMO II chess program ALGOL .SAV 32 12 21-NOV-79 - TSS/8 ALGOL (DECUS 8-330) ACTUNG.SAV 5 12 21-NOV-79 - Prints a cute message
Stopping a running program
CTRL-B
indicates to the system that you want send a command to the Monitor
. Once you hit Ctrl-B, the following input will be sent to the monitor and executed. To stop any program while it is running, Type CTRL-B
followed by S
and Carriage return. S
is the monitor's STOP command, sending it will cause the currently executing program to stop. The program can be restarted from the monitor with the START
command.
Talking to other users
The TALK
program can be used to send messages to other terminals. Use SYSTAT
to see what other users are logged onto the system, e.g.:
.SYSTAT STATUS OF TSS/8.24 DEC PDP-8 #1 AT 12:47:30 ON 19 DEC 79 UPTIME 19:06:31 JOB WHO WHERE WHAT STATUS RUNTIME 1 10, 0 K00 BASIC KEY ^Q 00:00:04 2 10, 0 K01 SYSTAT ^BS ^Q 00:00:00 4 10, 0 K04 HI ^BS ^Q 00:00:00 5 0, 2 K06 CAT ^BS ^Q 00:00:00 6 0, 1 K07 SYSTAT RUN ^Q 00:00:00 AVAILABLE CORE 4K FREE CORE=252 BUSY DEVICES NONE 3269 FREE DISK SEGMENTS
The “WHERE” column shows the console (K00 through K07) the user is logged into. To send a message to a specific console, type:
TALK <CONSOLE #> <YOUR MESSAGE HERE>
So for example,
TALK 2 HEY, CHECK OUT THIS COOL PROGRAM I WROTE
Sends a friendly message to console K02.
Documentation
The Edusystem-50 manual provides fairly accurate documentation for the version of TSS/8.24 running at LCM+L, and is available at http://bitsavers.org/pdf/dec/pdp8/tss8/DEC-08-E50UA-A-D_UG_Aug75.pdf. It covers user-related activities on the system and covers using the PAL-D assembler, BASIC, FOCAL and numerous utilities.
Detailed documentation for BASIC is available at http://bitsavers.org/pdf/dec/pdp8/tss8/DEC-T8-KJZA-D-TSS-8_BASIC_8_Programming_Manual_Mar1969.pdf.
PUTR (Print/copy/delete/... files)
Files can be listed with the library program CAT, and other library programs (such as BASIC and EDIT) provide limited file manipulation functions. However, the library program PUTR
(“Peripheral Utility Transfer Routines”) provides general file manipulation functions like printing file contents and copying and deleting files. (Similar functions are also provided by the older library programs COPY and PIP.)
(In the following example, *
is the PUTR command prompt, and text following the *
is input by the user followed by the Enter
key.)
.R PUTR *DIR BOTTLE.BAS 1 3/14/74 17OCT .BAS 2 3/14/74 HOLA .ASC 1 3/14/74 2.25,2.FCL 2 3/14/74 COWGEN.FCL 2 3/14/74 FIBCOW.BAS 1 3/14/74 GUESS .BAS 1 3/15/74 ADIEU .BAC 1 3/15/74 TH .BAS 1 3/15/74 SCOUNT.ASC 2 3/18/74 SXMPL .ASC 2 3/18/74 SACTST.ASC 1 3/18/74 COUNT .BIN 1 3/18/74 EXAMPL.BIN 1 3/18/74 SPOLY .ASC 3 3/18/74 MISS .BAS 1 3/18/74 RPS .BAS 4 3/18/74 TMP .ASC 1 3/18/74 BAFFA2. 1 3/18/74 BAFFA1.ASC 1 3/18/74 ZMP .ASC 1 3/18/74 SPOLY2.ASC 3 3/18/74 POLY2 .BIN 1 3/18/74 SBLINK.ASC 1 3/18/74 BAFFA3.ASC 1 3/19/74 BAFFA4.ASC 1 3/19/74 BAFFA5.ASC 2 3/19/74 BBIN .BIN 1 3/19/74 BAFFA6.ASC 1 3/19/74 RUL110.BAS 1 3/25/74 ELCOTT.BAS 1 3/25/74 HELLO .BAS 1 3/26/74 EINTR .BAS 1 3/26/74 ELCOT1.BAS 1 3/26/74 AGE .BAS 2 3/26/74 PAPA .ASC 1 3/26/74 *COPY VERBUM.ASC=PAPA.ASC PAPA .ASC *DEL PAPA.ASC PAPA .ASC *TYPE VERBUM.ASC VERBUM.ASC IN PRINCIPIO ERAT VERBUM *E ^BS .
Notes
DIRECTORY (DIR) | List files (similar to the library program CAT) |
COPY | Syntax is COPY <new name>=<source file> |
DELETE (DEL) | Delete file (rename file by copying then deleting original file) |
TYPE | Print file contents |
END (E) | End PUTR session and return to Monitor |
FOCAL69
You can start up the FOCAL69 programming environment with the R FOCAL command, output below:
.R FOCAL SHALL I RETAIN LOG, EXP, ATN ?:NO SHALL I RETAIN SINE, COSINE ?:NO PROCEED. *_TYPE "HELLO WORLD" HELLO WORLD* To exit FOCAL, press CTRL+B followed by the S. Your prompt will be back to a dot (.): *^BS .
Chatting
You can use the TALK command to talk to other users logged in. Fire up TELNET on port 4000 on a terminal or two and login with the users 2, and 1,50 (password JERK). On the 1,50 terminal, enter the following command to talk to the system administrator (on teletype 0):
.TALK 0 PLEASE HELP ME!!!
On the 2 telnet session you will see this:
** K01 [01,50] ** PLEASE HELP ME!!!
You can talk back:
.TALK 1 WHATS UP DOC? Telnet 1,50 will see this: ** K00 [00,02] ** WHATS UP DOC?
BASIC-8
TSS/8 has a BASIC programming environment. Start it up with the R BASIC command. It will ask you if you want to create a NEW file or load an OLD one.
Here's an example program, from the TSS/8 manual, to calculate loan interest. We first enter a line number, then the instruction. Afterwards we save the file as INTER.BAS with the SAVE command. We then run the script with the RUN command.
.R BASIC NEW OR OLD--NEW NEW PROGRAM NAME--INTER READY 10 REM - PROGRAM TO COMPUTE INTEREST ON A LOAD 20 PRINT "INTEREST IN PERCENT"; 30 INPUT J 40 LET J=J/100 50 PRINT "AMOUNT OF LOAN"; 60 INPUT A 70 PRINT "NUMBER OF YEARS"; 80 INPUT N 90 print "NUMBER OF PAYMENTS PER YEAR"; 100 INPUT M 110 LET N=N*M 120 LET I=J/M 130 LET B=1+I 140 LET R = A*I/(1-1/B^N) 150 PRINT "MONTHLY PAYMENT ="R 160 PRINT "TOTAL INTEREST ="R*N-A 170 END SAVE INTER RUN INTEREST IN PERCENT? 8 AMOUNT OF LOAN? 25000 NUMBER OF YEARS? 20 NUMBER OF PAYMENTS PER YEAR? 12 MONTHLY PAYMENT = 209.1103 TOTAL INTEREST = 25186.46 READY
Command | Action |
---|---|
BYE | Exit back to the TSS/8 Monitor |
CAT | Catalogue of files on disk |
DELETE n | Delete line number n |
DELETE n1,n2 | Delete line numbers n1 through n2 |
LIST | List the current program |
LIST n | List a specific line number |
NEW | BASIC will ask for a new program name |
OLD | BASIC will ask for an old program name currently saved on disk and load it into memory |
RUN | Compile and run the program currently in memory |
SAVE | Save the contents of memory to disk using the current name |
SAVE [name] | Save the contents of memory to disk using the give name |
UNSAVE | Delete the program with the current name on disk (required before saving a new version with the same name) |
UNSAVE [name] | Delete the program with [name] from the disk (does not affect the program in memory) |
CTRL-B S | Stop the running program (CTRL-B then press the 'S' key) |
EDIT, the line editor
TSS/8 Editor provides the user with a powerful tool for creating and modifying source files on-line. EDIT allows the user to insert, change and append lines of text; and then obtain a clean listing of the updated file. EDIT also contains commands for searching the file for a given character.
Page 56, 6-1, DEC TSS/8 User guide EDIT considers a file to be divided into logical units, called pages. A page of text is geranlly 50-60 lines long, and hence corresponds to a physical page of program listing. A FORTRAN-D program is generally 1-3 pages in length; a program prepared for PAL-D (the assembler) may be several pages in length. EDIT operates on one page of text at a time, allowing the user to relate his editing to the physical pages of his listing. EDIT reads a page of text from the input file into its internal buffer where the page becomes available for editing. When a page has been completely updated, it is written onto the output file and the next page of input is made available. EDIT provides several powerful commands for “paging” through the source file quickly and conveniently.
The end of a page of text is marked by a form feed (CTRL+L) character. Form feed is ignored by all TSS/8 language processors.
Here is the EDIT Command summary table from the manual.
Command | Format(s) | Meaning |
---|---|---|
READ | R | Read text from the input file and append to buffer until a form feed is encountered. |
APPEND | A | Append incoming text from keyboard to any already in buffer until a form feed is encountered. |
LIST | L | |
nL | ||
m,nL | List the entire buffer. | |
List | line n. | |
List | lines m through n inclusive. | |
PROCEED | P | |
nP | ||
n,mP | Output the contents of the buffer to the output file, followed by a form feed. | |
Output | line n, followed by a form feed. | |
Output | lines m through n inclusive followed by a form feed. | |
TERMINATE | T | Close out the output file and return to TSS/8 Monitor. |
NEXT | N | |
nN | Output the entire buffer and a form feed, kill the buffer and read the next page. Repeat the above sequence n times. | |
KILL | nD | |
n,mD | Delete line n of the text. Delete lines m through n inclusive. | |
INSERT | I | |
nI | Insert before line 1 all the text from the keyboarduntil a form feed is entered. Insert before line n until a form feed is entered. | |
CHANGE | nC | |
m,nC | Delete line n, replace it with any number of lines from the keyboard until a form feed is entered. Delete | |
lines m through n, replace from keyboard as above until form feed is entered. | ||
MOVE | m,n$kM | Move lines m through n inclusive to before line k. |
GET | G | Get and list the next line beginning with a tag. |
SEARCH | S |
nS | |||
m,nS | Search the entire buffer for the character specified (but not echoed) after the carriage return. Allow | ||
Search | line n, as above, allow modification. | ||
END | E | Output the contents of the buffer. Read in any pages remaining in the input file, outputting them to the | |
output file. When everythingin the input file has been moved to the output file, close it out and retum to the TSS/8 Monitor. | |||
E | is equivalent to a sufficient number of N's followed by a T command. | ||
C | CTRL+C | Stop listing and return to Command Mode. |
---|
Using the I command you can enter text, with a CTRL+L you exit insert mode. Save your file with E.