From mboxrd@z Thu Jan 1 00:00:00 1970 From: doug@cs.dartmouth.edu (Doug McIlroy) Date: Tue, 08 Dec 2015 13:20:12 -0500 Subject: [TUHS] Scan of "Edition 0" manual Message-ID: <201512081820.tB8IKCLQ144717@tahoe.cs.Dartmouth.EDU> > It might not be so much a set of macros as just using a > subset of raw groff. Yes, there were no macros back then. If you format the document using raw groff, the odds are that you will be speaking the same roff that Dennis did. > Doug having been there, might know/remember the actually lineage. Aside from some fuzziness about who wrote what and in what language, here's what happened: To port Jerry Saltzer's Runoff (presumably written in MAD) to Multics, either Dennis or Bob Morris or both together reimplemented it (presumably in PL/I). To coexist with Saltzer's version on CTSS, the new program needed a distinct name, hence roff. The early Multics PL/I compiler was far from a production tool. Justifiably, the Bell Labs comp center didn't support it. To get roff into general use at the Labs, I undertook yet another implementation in BCPL. I added functionality (number registers, three-part headings, etc) and kept the new name. Molly Wagner added hyphenation. Eventually, I added macros that were usable either as commands or (when parameterless) embedded in text. Almost as soon as Unix was up on the PDP-11 one of Ken, Dennis or Ossanna reimplemented a pre-macro version of roff (presumably in assembler or B). I'm quite sure roff never ran on the PDP-7. Ossana had a grander plan and undertook nroff. When he learned of the availability of the Graphic Systems CAT phototypesetter, he promptly generalized nroff to handle it. Joe replaced the CAT's paper tape reader with a direct wire to the computer. It all worked swimmingly--nothing like the travails when the CAT was replaced by the more capable Merganthaler Linotron. An interesting question of priority is whether nroff or BCPL roff was first to have a macro capability. Though I don't remember for sure, the fact that BCPL roff unified registers, macros, strings and diversions suggests that I abstracted from nroff facilities. Doug