CTSS: Document production with TYPSET and RUNOFF
The concept of using computers to produce documents was first demonstrated before CTSS in 1960 with the Colossal Typewriter project on the PDP-1. Rather than typing directly to paper, you could store text and edit it in memory before printing to a typewriter or line printer. However, in single user mode, it was not a cost-efficient use of a computer, as alluded to by a similar PDP-1 project Expensive Typewriter.
On an interactive multi-user system it did make more sense, as the processing requirements for this is quite small. CTSS had an early system called DITTO/ROFF, and this was replaced by TYPSET/RUNOFF by Jerry Saltzer in around November 1964, which we'll look at today.

A version of the above produced with TYPSET/MEMO". Source: Rupert Lane. License: CC0.
TYPSET
TYPSET
is an editor where you can add and change text, including
control codes to specify output formatting. This uses the same editor
commands as EDC
and EDL
(in fact, as described in an earlier
article, the design for these editors came from TYPSET
; see that
article for how to use the editor).
TYPSET
expects the name2 of a file to be (MEMO)
, so the command
TYPSET abc
will create or edit a file ABC (MEMO)
. It uses 12-bit
line-marked files, so with a suitable typewriter you could enter lower
case and an extended range of symbols. If you are using a recent
version of s709/ctss-kit or my quickstart or eliza-ctss released after
22 May 2025 this will support it as well.
Control words
Control words always start with a .
(dot) in column 1. There are
full and abbreviated forms, eg .center
, which will center the next
line, can be abbreviated as .ce
.
A full list of control words:
Abbr | Command | Meaning |
---|---|---|
.ll | .line length n |
Set line length to n characters |
.in | .indent n |
Set indent of each following line to be n characters |
.un | .undent n |
Reduce indentation by n characters |
.pl | .paper length n |
Set lines per page, default 66 |
.ss | .single space | This is the default line spacing |
.ds | .double space | |
.bp | .begin page | Start a new page |
.ad | .adjust | Justify text by adding spaces (the default) |
.nj | .nojust | Turns off the above |
.fl | .fill | Justify JJ text by moving words to fill (the default) |
.nf | .nofill | Turns off the above |
.pa | .page (n ) |
Turns on page number printing, optionally starting at n |
.sp | .space (n ) |
Inserts n blank lines. Default for n is 1. |
.he | .header xxxx |
Sets page header to be xxxx |
.br | .break | Prevents filling of text before and after this word |
.ce | .center | Centers the following line |
.li | .literal | Indicates the following line is not a control word |
.hm | .heading mode P |
P can be CENTER, MARGIN, FACING, OPPOSED |
.op | .odd page | Next page number will skip ahead to next odd number |
.pm | .paging mode P |
Page mumbler mode, eg MARGIN, CENTER |
.ap | .append A |
Include text from file A (MEMO) here |
Text styles
As the output for this system was a typewriter, there was obviously no
concept of bold, italics, different fonts, text size etc. One feature
the typewriter did have that we don't have today was backspacing. For
example, to get something like Ç
you could enter C
, then
backspace, then ,
. The system will move the head back one character
on backspace so the two symbols print in the same space.
RUNOFF
The RUNOFF
command takes the input memo file, interprets the control
words and prints the formatted output to the typewriter console. It
prompts the user LOAD PAPER, HIT RETURN
so the paper can be changed
if needed.
As an example, the screenshot above was produced by this file:
.ll 80 .ds .header TIMERESHARED.COM .hm center .bp .center CTSS: Document production with TYPSET and RUNOFF The concept of using computers to produce documents was first demonstrated before CTSS in 1960 with the Colossal Typewriter project on the PDP-1. Rather than typing directly to paper, you could store text and edit it in memory before printing to a typewriter or line printer. However, in single user mode, it was not a cost-efficient use of a computer, as alluded to by a similar PDP-1 project Expensive Typewriter.
Further information
TYPSET/RUNOFF are described more fully in the CTSS Programmer's Guide section AH.9.01 p504; there's an OCR'd version at multicians.org.
These commands was the inspiration for similar text production systems on Multics and Unix. On a Unix system today you are likely to find troff which uses very similar control words.
Questions, corrections, comments
May 2025: Updated to point to the newer versions of the s709 emulator/ctss-kit for full support of lower case letters. Thanks to Dave Pitts for his continued work on this system.
I welcome any questions or comments, and also especially any corrections if I have got something wrong. Please email me at rupert@timereshared.com and I will add it here and update the main text.