User Tools

Site Tools


tss-8_user_tutorial

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.

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.

ALGOL documentation can be found at http://svn.so-much-stuff.com/svn/trunk/pdp8/src/decus/8-213/decus-8-213.pdf with http://www.bitsavers.org/pdf/dec/decus/pdp8/8-330_tss8_ALGOL.pdf covering the TSS/8-specific changes.

LISP is documented at http://svn.so-much-stuff.com/svn/trunk/pdp8/src/decus/8-102a/decus-8-102A.pdf

Logging in Login using the following command:

LOGIN USERNAME PASSWORD The login command does not display or echo.

We cover more on user management later on in the article, including how to create and modify users.

To login as user 1, the system user enter this:

TSS/8.24  JOB 01  [01,10]  K00    12:12:36

SYSTEM IS DOWN, INC.

Primitive ls, CAT (catalog) TSS/8 Monitor maintains a library of disk files for each user. The System Library Program CAT is used to obtain a catalog of the contents of this library. For each file, CAT types the size of the File in units of disk segments. The size of a disk segment may vary among installations. Generally, it is 256 (decimal) words of disk storage. The protection code for the file is also given. (See the section on the PROTECT Monitor command (Chapter 9 of the manual) for a precise explanation of protection codes.) If the program was created by any of the System Library Programs, it has a protection code of l2, meaning that other users can read the File, but only the owner can change it.

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 currently being used.

To see the contents of a users library, run the .R CAT:L command. It will ask for an account number, after which it prints out the users directory. This way you can trace which user is using an abnormal amount of diskspace.

If you login as the user 2, you can execute the following command to see the contents of the disk:

.R CAT
Output:

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

System Status With the SYSTAT command you get a full printout of what the system is doing, who is logged in and more:

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

There are two users logged in, user 2 on teletype 0, user 50 on teletype 1. User 2 is was FOCAL but is now on the prompt (STATUS ^BS means monitor mode, that is the prompt), user 50 is executing the SYSTAT command.

The manual has more information on SYSTAT, listed here for convenience.

It is frequently useful to know the status of the system as a whole; how many users are online, where they are, what they are doing, etc. The SYSTAT program provides this capability.

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 last put online.

SYSTAT lists all online users. Each user is identified by his account number. The job number assigned to him and the number of the console he is using are indicated, as is the particular System Program he is running. The exact running state of each user, whether he is actually running (RUN), typing in (KEY) or out (TTY), doing input/output on another system device (IO or FIP), or not running (iB), is indicated.

The amount of computer time used by each user since he logged in is given.

It more users are online than the system has core Fields to hold them, the Fact that the system is swapping is reported. The number of Free core blocks used internally by TSS/8 Monitor for Teletype buffering and various other purposes is typed out.

Then SYSTAT reports any unavailable devices, i.e. , devices which are assigned to individual users. The job to which they are attached and their status (AS if they are assigned but not active, AS+INIT if they are assigned and active) is also indicated.

Finally, the number of available segments of disk storage is reported.

To see the time that you have been logged in:

.TIME
00:00:20

To see the system time:

.TIME 0
12:20:44

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
BYEExit back to the TSS/8 Monitor
CATCatalogue of files on disk
DELETE nDelete line number n
DELETE n1,n2Delete line numbers n1 through n2
LISTList the current program
LIST nList a specific line number
NEWBASIC will ask for a new program name
OLDBASIC will ask for an old program name currently saved on disk and load it into memory
RUNCompile and run the program currently in memory
SAVESave the contents of memory to disk using the current name
SAVE [name]Save the contents of memory to disk using the give name
UNSAVEDelete 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 SStop 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.

tss-8_user_tutorial.txt · Last modified: 2020/09/16 18:48 by smj