Hi folks,
A few months ago I reported on my efforts to reconstruct London &
Reiser's paper on their port of Unix to the VAX-11/780.[1]
I formerly characterized this as "the UNIX/32V port", but since London
& Reiser's paper predates the release of Seventh Edition Unix by about
six months, UNIX/32V came _after_ Seventh Edition by about the same
number of months, and the pace of Unix development was particularly
ferocious in this period[2], I felt that my identification of London &
Reiser's work with UNIX/32V may have been hasty. I also may have
overinterpreted Dennis Ritchie's words on the subject.
"Tom London and John Reiser, working from the 7th Edition and the
Interdata 8/32 system, generated a VAX 11/780 version of the system,
which, in its distribution format, would be called 32V."
That phrase "in its distribution format" could cover a variety of
changes, some of which perhaps did not match London & Reiser's
intentions or views expressed in their paper. More conservative
implications seemed prudent.
I'd thus like to present what I consider to be my "final" draft, subject
of course to feedback from these mailing lists. I'm pleased to report
that I've addressed all of the XXX points I identified in the source of
my first draft, points where I felt groff mm could be enhanced to aid
the rendering of historical documents like this. I consequently expect
groff 1.24's mm package to support several new features prompted
specifically by this work. Quoting the forthcoming NEWS file...
* The m (mm) macro package now supports a user-definable hook macro
`AFX`, which if defined is called by `AF` in lieu of the latter's
normal operation. Applications include customization of letterhead.
* The m (mm) macro package now supports a user-definable hook macro
`RPX`, which if defined is called by `RP` to format the reference
list caption string `Rp` instead of the default formatting.
* The m (mm) macro package now supports an `Aumt` string to suppress
the appearance of positional arguments to the `AU` macro in the
document heading used by memorandum types 0-3 and 6. By default, all
such arguments appear, except the second (author initials). For
example, a value of "3 4" more accurately reproduces London &
Reiser's 1978 paper describing the porting of Unix to the VAX-11/780.
* The m (mm) macro package now supports an `Rpfmt` string specifying
the `LB` macro arguments that the package uses to format the items in
a reference list.
* The m (mm) macro package no longer superscripts _and_ brackets a
reference mark (the `Rf` string). Instead, the new `Rfstyle`
register controls its formatting. The default, 0, selects bracketing
in nroff mode and superscripting in troff mode. Set `Rfstyle` to 3
in a document to obtain groff mm's previous mark formatting behavior.
[I might still update or revert the changed default; I want to
research the behavior of historical mm implementations.]
The "32vscan.pdf" document from which I prepared this reconstruction is
available at Dennis Ritchie's memorial home page.[3] I have attached
the reconstructed mm source document and two PDFs, rendered with groff
1.23.0 (the current stable release), and groff Git HEAD (exercising the
new features listed above).[4]
I offer the caveat that these cannot be pixel-perfect recreations
because (1) I have no information about the precise paper dimensions or
margins London & Reiser used[5]; (2) the fonts employed in rendering the
documents are not identical, metrically or otherwise; and (3) AT&T and
GNU troffs use different hyphenation systems and therefore sometimes
break words differently. These factors all impact the placement of line
and page breaks, and these are avowedly and clearly distinguishable.
There are furthermore a few discrepancies that I decided weren't worth
the trouble at this time to reconcile, like selective encroachment of
cover sheet material beyond the page margins. None affect the utility
of the document (in my opinion).
With that large disclaimer in place, I welcome feedback on the quality
of the reproduction.
Finally, I reiterate my encouragement that the document be _read_. In
my opinion, the final two sections "Commands" and "Software
portability"
are well worth consideration in hindsight. To the extent that we
continue to boast, sometimes glibly, of C as a "portable assembly
language", be it in its current ISO C23 incarnation; as ANSI C89, the
last revision blessed by Ritchie; or in the form used when London and
Reiser wrote, their experiences and recommendations laid out a program
of better delivering on that promise.
Regards,
Branden
[1]
https://www.tuhs.org/pipermail/tuhs/2024-June/030041.html
[2] 1980, for example, saw releases of 3BSD, System III, PWB/UNIX 2.0,
and 4BSD.
[3]
https://www.bell-labs.com/usr/dmr/www/portpapers.html
[4] You may notice a difference in the sizes of the two PDFs, surprising
in light of their shared source document. This is thanks to a new
feature forthcoming in Deri James's gropdf(1) output driver: font
subsetting.
[5] ...or where, if anywhere, the authors "cheated" the margins
temporarily, for instance with `ll` or `pl` requests. Even with mm
macro package sources available, such things would be invisible to
the reconstructor.