stories-matter A brief history of RUNOFF

RUNOFF was an early significant milestone in technical writing, using the computer to process text. I interviewed Jerry Saltzer about his work on RUNOFF.

Jerry Saltzer is known for many things in computing. He was a team leader in the Multics operating system in the late 1960s and early 1970s, and led MIT's Computer Systems Research Group. Saltzer also created RUNOFF, an early text processing system. 

RUNOFF was a significant milestone in technical writing. It's not surprising that RUNOFF inspired the roff document preparation system on the original Unix - and by extension, the nroff and troff systems that followed. I asked Saltzer about his work on RUNOFF.

What was the history of RUNOFF?

RUNOFF was certainly not the first document preparation system.  It borrowed ideas from several predecessors, including DITTO for CTSS, and COLOSSAL TYPEWRITER and JUSTIFY for the PDP-1.

RUNOFF is not a document preparation system by itself, it is one of a pair of programs, named TYPSET and RUNOFF.  TYPSET was used to create or edit a document and the resulting file was then run through RUNOFF to format it for printing.  The name RUNOFF was derived from common office jargon in the 1960s used for mimeograph and hectograph copying machines:  “I need to run off a hundred copies of this memo."

Why did you create RUNOFF?

It was for my Sc.D. thesis proposal, in the fall of 1963.  I also used it for my thesis, but that was a little over two years later.

I created it because none of the various predecessor document preparation systems that I could find had all of the features that I wanted in one system.

What kinds of documents could RUNOFF produce?

All kinds of documents.  Letters, memos, software documentation, etc.  Anything that would have used a typewriter.  I have no idea what was the first document I used it for.  Perhaps it was the user's manual for TYPSET and RUNOFF.  Or maybe a grocery shopping list.

The features are described in the TYPSET and RUNOFF (also as PDF) memorandum from 1964, starting on page 11 with a summary on page 17.

TWW: RUNOFF could generate a variety of formatting. RUNOFF assumed pages were 11 inches long at 6 lines per inch, which was standard for most typewriter-like printers at that time. Margins were 1-inch at the top and bottom, except for the first page (cover page) which used a 2-inch top margin. RUNOFF could also generate underlines and overstrike using backspace.

Page 17 of the memorandum provides a summary of RUNOFF control words. A RUNOFF document used control words or their abbreviation on a new line, starting with a period. For example, .center (or the abbreviation .ce) centers the next line, .begin page (or .bp) inserts a page break, and .literal (or .li) prints the next line as normal text even if it starts with a period.

abbreviationcontrol wordautomatic break?
.ap.append Ano
.ll.line length nno
.in.indent nno
.ss.single spaceyes
.ds.double spaceyes
.bp.begin pageyes
.ad.adjustyes
.fi.fillyes
.nf.nofillyes
.nj.nojustyes
.pa.page [n]yes, if n
.sp.space [n]yes
.he.header xxxno
.br.breakyes
.ce.centeryes
.li.literalno
Summary of RUNOFF Control Words (from RUNOFF memorandum)

How did you prepare documents with RUNOFF?

RUNOFF was a program that ran under the Compatible Time-Sharing System (CTSS) for the IBM 7090 (later a 7094).  That system stored user files on a hard disk, much like a modern Mac or PC.  Documents were prepared using the input/editing program TYPSET to create a file, and RUNOFF would take that file as input and produce output for a printer. 

A discussion of CTSS, including a paragraph about RUNOFF can be found at The IBM 7094 and CTSS by Tom Van Vleck.

RUNOFF wrote the output file to a magnetic tape intermingled with the output files of all the other users of CTSS. Every few hours an operator would remove the magnetic tape from the IBM 7094, mount it on an IBM 1401 computer, and that system would print the output files on an attached chain printer.  What came out of the printer was a large stack of fan-fold paper with sprocket holes down both sides.  The operator then separated the output files and put them in bins for CTSS users to pick up.

Of course, when RUNOFF was ported to other computer systems, printing was adapted to the available facilities.


Thanks to Jerry Saltzer for this great interview about the history of RUNOFF!

If you would like to take a closer look at RUNOFF, you can download the source code from Saltzer's website. You might also try a CTSS simulator that runs the entire system, including RUNOFF, at Dave Pitts's IBM 7090 website.

You can find Jerry Saltzer at mit.edu/Saltzer