Hi folks,
Reiser and London's paper documenting their preparation of UNIX/32V, a
port of Seventh Edition Unix to the VAX-11/780, is an important
milestone in Unix development--as much I think for its frank critique of
C as "portable assembly" as for the status of the system documented: the
last common ancestor of the BSD and System V branches of development.
Because the only version I've ever seen of this paper is a scan of,
possibly, a photocopy several generations removed from the original, I
thought I'd throw an OCR tool at it and see about reconstructing it, not
just for posterity but to put the groff implementation of mm to the
test. So even if someone has a beautiful scan of this document
elsewhere, this exercise remains worthwhile to me for what it has
shown me about Documenter's Workbench mm and groff's mostly compatible
reimplementation thereof.
Please find attached my first draft of the reconstruction as an mm
document as well as a PDF rendered by bleeding edge groff.
I did not attempt to fix _any_ typos, solecisms, or non-idiomatic *roff
usage (like the employment of hyphens as arithmetic signs or operators)
in this document. I may have introduced errors, however, due to human
fallibility or incorrect inferences about what lay beneath scanning
artifacts. Hence its draft status. I welcome review.
Assuming this reconstruction survives peer scrutiny, I aim to put it up
on GitHub as I did Kernighan & Cherry's "Typesetting Mathematics"
paper.[1]
For the casual reader, I extract my documentary annotations below.
For groff list subscribers, I will add, because people are accustomed to
me venturing radical suggestions for reforms of macro packages, I
suggest that we can get rid of groff mm's "MOVE" and "PGFORM"
extensions. They're buggy (as the man page has long conceded), and I
don't think anyone ever mastered them, not even their author. I rewrote
"0.MT", essential to rendering of this document, without requiring them
at all. I _tried_ to use them, but "MOVE" in particular introduced
baffling errors in vertical spacing. When I threw it aside to attack
head-on the layout problems facing me, things got easier. Further,
simple caching and restoration of `.i` and `.l` register values (when
multiple changes were being made to them within a macro) obviated
`PGFORM`. I'm not sure that it is tractable to idiot-proof
manipulations of basic layout parameters like these, as these macros
seem to have tried to do. If a document author wants to seize control
of page layout from a full-service macro package and reach deep into the
guts of the formatter, they should glove up and put things back where
they found them. My opinion.
.\" London & Reiser's UNIX/32V porting paper
.\"
.\" Reconstruction in groff mm (but DWB 3.3 mm compatible)
.\" from scanned/OCRed text by G. Branden Robinson, June 2024
.\"
.\" The original scan shows no evidence of superscript usage, except on
.\" the cover sheet where "TM" superscripts "UNIX".
.\"
.\" Some differences may arise due to changes in the mm macro package
.\" itself from its PWB incarnation (ca. 1978) and DWB 3.3 (July 1992).
.\" Thanks to Dan Plassche for the history.
.\"
https://www.tuhs.org/pipermail/tuhs/2022-March/025545.html
.\"
.\" The groff reimplementation of mm was undertaken mostly from
.\" 1991-1999 (by Juergen Haegg), based on the DWB documentation. It
.\" added features but also parameterized many aspects of package
.\" behavior, for example to facilitate easy localization. Later,
.\" Werner Lemberg and G. Branden Robinson contributed enhancements, bug
.\" fixes, and improvements to the groff_mm(7) man page.
.\"
.\" I anticipate adding further parameters to groff mm to better
.\" emulate the old version of mm used by this paper. (For example, the
.\" format of the caption applied to the reference page differs between
.\" PWB mm and DWB 3.3.) Where this document exercises such extensions,
.\" they should be prefixed with a `do` request so that AT&T troff will
.\" ignore them.
.\" Override: "By default, ... bold stand-alone headings are printed
.\" in a size one point smaller than the body."
.\" XXX: The cover "page" (more like a header block) is a mess when
.\" typeset with groff mm, and outright horrific in nroff mode. GBR has
.\" fixes for these pending for push to GNU Savannah's Git repository.
.\"
.\" XXX: Original scan capitalizes "Subject:"; DWB 3.3 renders it in
.\" full lowercase.
.\"
.\" XXX: Original scan bears a "TM:" heading for the technical
.\" memorandum number(s). DWB 3.3 lacks this.
.\"
.\" Memorandum captions may have changed from PWB to DWB 3.3 mm. groff
.\" mm has changed in Git (June 2024) to use the captions documented in
.\" the DWB 3.3 manual. We override the default for authenticity.
.\" XXX: Original scan sets reference marks as a typewriter might, at
.\" normal size on the baseline between square brackets. DWB 3.3
.\" converts them to superscripts but keeps the brackets(!). groff mm
.\" should add a "Rfstyle" register to control this.
.\" 0 = auto (nroff/troff); 1 = bracket; 2 = superscript; 3 = both. (?)
\" straight quotes in original
.ns \" XXX: Hack to keep `VL` from adding pre-list vertical space.
\" recte: *(\-\-p+i)
\" bad ellipsis spacing in original
\" - missing; error in text or scanner fubar?
\" recte: \-1
\" sic
.\" Either `AL` worked differently in 1978 mm, or didn't exist, or
.\" somebody wanted this list _just so_.
.\"AL "" 5
.\" XXX: Scan has signatures set farther to the right, not centered as
.\" DWB 3.3 mm sets them. groff mm follows DWB here.
.\"
.\" XXX: PWB and DWB 3.3 put the signature names in bold; groff mm sets
.\" them at normal weight. Bug.
.\"
.\" XXX: Scan has a couple of vees between the signature line and the
.\" flush left secretarial annotation. groff mm sets the annotation on
.\" the same line as the last author but also puts its information in
.\" the cover page header as DWB 3.3 does, described next. DWB 3.3: (1)
.\" omits the secretarial annotation altogether, putting it up in the
.\" cover page header under the authors' names; (2) does not use author
.\" initials (in the cover header) for this memorandum type; (3) puts
.\" the department number after "Org." on the line under the author
.\" name; (4) puts the abbreviated AT&T site name below that. Should we
.\" consider a `Sgstyle` register for groff mm?
.\"
.\" XXX: groff mm organizes the department and site name differently
.\" from DWB 3.3 in the cover head, and I don't see any reason for it
.\" to. Fix this.
.\" XXX: Scan only breaks between notations; DWB 3.3 and groff put 1v
.\" between them. Should we consider an `Nss` register for groff mm?
.\" XXX: Scan has references caption set flush left, in mixed case and
.\" bold (just like `HU`). DWB 3.3 and groff center it and set it in
.\" full caps in italics (at normal weight). If there were a way to
.\" dump the accumulated reference list independently of rendering the
.\" caption, that would give the author much more flexibility.
.\"
.\" XXX: The numbered reference list does not look like one produced
.\" with `RL` nor with `AL`. The numeric tag is left-aligned within the
.\" paragraph indentation. groff mm aligns it to the right.
.\"
.\" DWB 3.3 and Heirloom mm don't seem to honor `.RP 2` as the DWB
.\" manual documents. They start the table immediately after the
.\" reference list and go haywire boxing the table. Bug.
Regards,
Branden
[1]
https://github.com/g-branden-robinson/retypesetting-mathematics