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.

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)
COPYSyntax is COPY <new name>=<source file>
DELETE (DEL)Delete file (rename file by copying then deleting original file)
TYPEPrint 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
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: 2023/07/01 06:01 by hc9