On Wed, Jan 12, 2022 at 3:55 AM <arnold(a)skeeve.com> wrote:
[snip]
Perhaps Doug can set the history straight on troff. Here is my
understanding,
corrections (from Doug) welcome:
- Ossanna wrote the original nroff in assembly language
- He rewrote it in C when the C/A/T was acquired
At that time nroff/troff were built from mostly the same sources (as
can be seen in the archives).
I have some questions about the earlier history.
As I understand it, in the beginning there was RUNOFF, which I believe
originated on CTSS? The CTSS sources contain a RUNOFF program that's made
up of ~1100 lines of MAD and ~1300 lines of assembler. There is certainly a
RUNOFF in Multics, written in BCPL (there's a small "outer module
transfer vector" program in ALM). This is where it gets muddy for me; I
understand this was roughly ported to unix as `roff` by Ken and that at
this point, formatting was fairly primitive: suitable for hardcopy
terminals and line printers, and could do things like center lines and so
forth, but nothing fancy (
https://www.cs.dartmouth.edu/~doug/reader.pdf)
Ossanna then took over and greatly expanded the capabilities of `roff`,
adding macros and traps and making it Turing-complete; this was `nroff`,
which grew to become `troff` once the C/A/T typesetter was acquired.
Section 4.1 ("Text Processing") of Doug's "Research Unix Reader"
above
includes some tantalizing tidbits, particularly this, regarding `troff`:
"It blew the manufacturer’s
mind, and touched off a flurry of homemade documents in flamboyant
layouts—good enough, however, to fool referees into suspecting that the
manuscripts had been published before." Ooo, that last bit sounds like a
good story! Doug, can you tell us more?
- Dan C.
PS: Something came up on the Multics mailing list recently that may be of
local interest. Someone was looking for a set of troff macros used
internally by Honeywell for the preparation of technical documentation and
memoranda and it was asked whether this had been done on Multics?
Apparently, `troff` never made it back to its ancestor's home, even though
at some point circa the SVR2 era a C compiler was ported and it would have
been, perhaps, possible. The answer to the original question was that that
documentation had been prepared on a Unix machine of some kind; the macros
seem lost to time.