[TUHS] Program Generic Issue 3 Findings

segaloco via TUHS tuhs at tuhs.org
Tue Apr 7 18:25:38 AEST 2026


Long initial post for "PG-III General" incoming:

After scanning the Release 4.0 PRD, I started thumbing through the
Program Generic Issue 3 manual and hoo boy am I excited to get this one
scanned.  I've only bounced around but there are just so many little
tidbits that I've been waiting to sink my teeth into for years.  I'll
leave a few highlights and due to the excitement, I am also going to
scan this before I resume the schedule I set for myself weeks ago.

Notable:

sh(I) - The USG shell took a different track concerning capturing stderr
via redirection.  Rather than giving the three redirection symbols of
the Thompson Shell (<, >, >>), the following are also given:

%name   causes 'name' to be used as the error output file for the associated
        command.  'Name' is created if it did not exist and is truncated at the outset.

%%name  causes 'name' to be used as the error output for the associated command.
        If 'name' did not exist, it is created; if it existed, the error output is
        appended to the file.

s/2>>/%%/g
s/2>/%/g

May the USG shell be with you.

msg(II) - USG PG-III is now the earliest confirmed manual sighting I
know of demonstrating the early BTL IPC (which is actually proposed in
one of the BTL library documents recently scanned by Stephen Searle[1]).
The msg(II) page here, for instance ([2] from MERT 0 which is scanned
and has this page verbatim) indicates the same interface that then gets
pulled into the PWB line as of Release 4.0, albeit with a few new bits.
This interface's influence can also be seen in CB-UNIX as of
Edition 2.3[3] albeit with some differences.  However, even as early as
1977 this interface was also intertwined with CB-UNIX as described in
another technical report[4] which also brings in things like MAUS.

As of Release *4.1* for the 3B20S, however, the IPC starts to look a bit
more like System V IPC[5].  All in all this puts the development of this
early IPC that was replaced in System V either in the SCCS/CB branch or
squarely in USG PG-III (give or take whatever UNIX tide-pool it first
gestated in.)  In any case, this sets the backstop on manpages for pre-V
IPC at March 1977.  This makes the picture from 1976 to 1983 with IPC
much more clear.  I'm glad I don't actually have to scan anything else
to aggregate this info together.

lines(V) - My suspicion that System V init(8) derived from PG-III init
is stronger than ever.  A part of this page is found in the scanned
CB-UNIX 2.3 manual[6][7] but the first is cut-off and the second
indicates replacement by inittab(5).  In CB-UNIX 2.3[8], inittab(5) adds
the powerfail and powerwait actions as well as initdefault.  These
enhancements also then show up in 5.0/System V[9], at which point a
paper is added to the SRD[10].  I have not identified yet whether this
paper derives from a specific Technical Memorandum or if it was drafted
for the System V SRD itself.

Either way, this confirms a heritage of System V init going back to at
least March 1977 with Program Generic Issue 3.  Will the sysvinit
project rename to pg3init for my sake?  Probably not...but I get to
know the hidden truth.

hd(IV) - From the page: "This section describes the half-duplex protocol
implemented as a line discipline which permits access to UNIX using
Teletype Model 40/1's and Model 40/2's (in 202 mode) using 202S data
sets or null modems."  I haven't completely done my homework on the
Teletype Model 40's origins, I just know that it became the standard
Bell System terminal for a while, showing up in for instance the
3B20S Release 4.1 User's Manual cover art[11] and other AT&T materials
in the early 80s (I've got some non-UNIX-related American Bell stuff,
1982, I intend to scan soon.  Very early, some nice pictures of a bunch
of AT&T hardware, also first year the Death Star was on any of their
stuff afaik, so formative "Death Star AT&T" ephemera).

This one is significant to me as I do find myself quite interested in
the Teletype 40/2 (also known as Dataspeed 40/2), although I haven't
gone looking too hard to determine its true age.  Either way, the
service manual has copyrights as early as 1973[12] but according to
one of the BTL Library papers[13] initial development of this driver
was complete as of December 1975 (source code included!!!).  The driver
is not present as of Program Generic Issue 2[14] nor is it in research,
PWB, or CB-UNIX.  I haven't gone looking for what, if any, Teletype 40-
specific bits might have been in other streams...but still luckily
much of the history of this period of Teletype 40 support is now known.

That's all for now, but I knew I wouldn't be able to sleep tonight if I
didn't start the marble rolling on discussing the significance of
Program Generic Issue 3 to the history of a number of UNIX's features
that would become ubiquitous with later releases.  Maybe it's just me,
but this manual already paints a picture of an experience in 1977 not
all that different from what the PWB and CB folks were getting up to
in the early 80s.

Needless to say, I hope to have this scanned soon and tossed up on the
archive as well.  More to come!

- Matt G.

P.S.  Fun fact, while doing this analysis, I was using a Motorola
Bellboy pager and Western Electric ruler I purchased recently to hold
pages open.  Something about that feels auspicious[15].

[1] - https://www.tuhs.org/Archive/Documentation/TechReports/USG_Library/1090_Proposal_for_UNIX_Interprocess_Communication.pdf
[2] - https://www.tuhs.org/Archive/Documentation/Manuals/MERT_Release_0/Unix%20Programmer%20Manual%20-%20UPM%20-%20White%20Tabs/System%20Calls%20-%20man2/msg.2.pdf
[3] - https://www.tuhs.org/Archive/Distributions/USDL/CB_Unix/man/man2/msg.2.pdf
[4] - https://www.tuhs.org/Archive/Documentation/TechReports/USG_Library/1234_Interprocess_Communication_Mechanisms_in_CB_UNIX.pdf
[5] - https://gitlab.com/segaloco/pwb4u_man/-/blob/master/man2/msgop.2

[6] - https://www.tuhs.org/Archive/Distributions/USDL/CB_Unix/man/man5/lines.5.pdf
[7] - https://www.tuhs.org/Archive/Distributions/USDL/CB_Unix/man/man5/lines.5l.pdf
[8] - https://www.tuhs.org/Archive/Distributions/USDL/CB_Unix/man/man5/inittab.5.pdf
[9] - https://www.tuhs.org/cgi-bin/utree.pl?file=pdp11v/usr/man/u_man/man4/inittab.4
[10] - https://archive.org/details/unix-system-release-description-system-v/C%20-%20UNIX%20System%20V%20Init%20and%20Getty

[11] - https://commons.wikimedia.org/wiki/File:UNIX4.1UsersManualCover.png
[12] - https://bitsavers.org/communications/teletype/40/325-077_Teletypewriter_Compatable_Model_40_Service_Jan82.pdf
[13] - https://www.tuhs.org/Archive/Documentation/TechReports/USG_Library/1077_UNIX_DH_11_Driver_to_Support_Both_TTY_and_Dataspeed_40_Terminals.pdf
[14] - https://bitsavers.org/pdf/att/unix/6th_Edition/UNIX_Programmers_Manual_197601.pdf
[15] - https://ibb.co/35hC5Tk9


More information about the TUHS mailing list