Good day, I've just received in the mail a UNIX System User Reference Manual for the
3B5 computer. It has a few differences with other documentation around it. As usual with
an initial expository message, lots of info here, mostly so it'll get in the archive
and on the record.
So first off, I can't find a version reference in this thing. It is branded as
"UNIX System" consistent with the branding nomenclature in the System V era, but
I can't actually find the term "System V" anywhere thus far. However, a
high level view implies relative parity with the initial release of System V. There are
some areas where nomenclature is closer in character to the Release 5.0 manual, for
instance, the "basinf" section in the intro refers to the user guide as
"UNIX User Guide" rather than "UNIX System User's Guide" which is
found in later System V stuff. In fact, this minor reference may point to some branching
in the documentation between 4.x and SVR2 as I have the following in various manuals
(prior to 4.1 i.e. 3.0/SysIII the reference is still directly to UNIX For Beginners, not a
guide):
- Release 4.1 - "UNIX User's Guide"
- Release 5.0 - "UNIX User's Guide"
- Release 5.0 BTL - "UNIX User's Guide"
- System V - "UNIX System User's Guide"
- System V 3B5 - "UNIX User Guide"
- System V R2 BTL - "UNIX System User Guide"
- System V DEC (1984) - "UNIX System User Guide"
- System V R2 (1986 Manuals) - "UNIX System User's Guide"
So SysV adds "System" to what was in Release 5.0, this carries through to
conventional SVR2. The 3B5 version, however, drops the apostrophe and 's' that
were in the pre-SysV nomenclature but doesn't add "System". Then even more
confusing the SVR2 BTL copy appears to bear some lineage from this as it also has the
dropped apostrophe and 's' but includes "System". Strange. Even
stranger is I decided to take a peek at SVR2 docs from 1984, they lack the apostrophe and
's', but later SVR2 material from 1986 restores it. I wonder if this implies
the 3B5 branch was started in the 5.0 days, diverged a bit, and then was only partially
recombined with System V before release, although on the flip side, this manual *does*
include the edit, ex, and vi manpages which were not printed in time for the System V
manual run (as they are included with a separate documentation package instead.) This
tracks with the BTL 5.0 having edit, ex, vi, and termcap present from Holmdel, the BTL
manual got the pages early. All that to say, there are things in this manual that
aren't yet in published System V manuals at the time, but there are things in this
manual that have since been altered by the time of the formal System V documentation,
pointing to an earlier branch point and then ongoing cross-talk after that.
Included are references to a "3B Computer Network" and a few utilities
associated. There are a few other pages too I didn't see in other contemporary
public manuals, in total:
- dcon(1) - Spawns a shell on a remote system via a DATAKIT circuit
- logdir(1) - Returns the home directory field from /etc/passwd, this is in the BTL
versions, I don't see it in public SysV though
- ncp(1) - Copies files over the DATAKIT network
- nisend(1) - Copies files over the "3B Computer Local Network"
- nistat(1) - Query the status of said network
- nitable(1) - Display the configuration table of said network
- niupdate(1) - Update said configuration table
- nkill(1) - Kill but using process names instead of IDs, but doesn't define
process names, be it argv[0], the name of the image file, etc...
- rexec(1) - Executes commands over a DATAKIT network
- rl(1) - Login remotely over the 3B Computer Network (distinct from dcon being
DATAKIT remote logins) This appears to be uucp-derived (specifically cu(1))
- dkdial(3) - Dials a DATAKIT connection
- boothdr(4) - 3B5 only, provides the contents of <sys/boothdr.h> which supports
storing parts of master(4), via mkboot(1M), in "a driver object file" to be used
with "the self-config boot".
Section 6 is mentioned in the intro but then omitted from the rest of the manual, so
nothing to compare there. Also keeping with the documentation changes at the time, this
does not include Sections 1M, 7, nor 8, as those are presumably in an accompanying
Administrator's Reference Manual. That is another thing pegging this as System V
rather than SVR2, by SVR2 they had further divided from two to three manuals, splitting
the user manual into Sections 1 and 6 (User) and Sections 2, 3, 4, and 5 (Programmer)
(although even this isn't entirely true, I've got a "UNIX User's
Manual" published in 1986, red ATTIS-style cover, that contains what appear to be
selections from Sections 1, 2, and 3...it seems more geared towards folks writing portable
software between SVR1 and SVR2 than anything)
Finally, here are the omissions I compared with the SVR2 BTL, SVR2 DEC, and 1986 manual
mentioned above:
Removed by SVR2 public, only in the BTL version:
- nscstat(1)
- nsctorje(1)
- nusend(1)
- stlogin(1)
- ststat(1)
Non-portable DEC stuff:
- adb(1)
- arcv(1)
- kasb(1)
- net(1)
- vpr(1)
- maus(2)
- x25alnk(3) - This X.25 stuff never shows back up, probably dropped as of SVR2 BTL
(1983)
- x25clnk(3)
- x25hlnk(3)
- x25ipvc(3)
Non-portable 3B20S stuff:
- cprs(1)
- hpio(1)
Honeywell/GCOS Interop, gone by SVR2 BTL (1983):
- dpd(1)
- dpr(1)
- fget(1)
- fsend(1)
- gcat(1)
- gcosmail(1)
Graphics Subsystem, remains in SVR2 so probably not 3B5 supported as of this printing:
- gdev(1)
- ged(1)
- graphics(1)
- gutil(1)
- stat(1)
- toc(1)
So just to review, some matters this manual supports:
- The initial 3B5 UNIX release seems closest in character to the initial System V
version
- Many DEC and 3B20-specific components are omitted
- The Honeywell/GCOS interop was on the way out the door and likely never ported
- The graphics subsystem was not supported on 3B5 as of this release
- Synchronous terminals and NSC networking are taken internal likely by this release,
certainly by SVR2
- The 3B5 version supported "DATAKIT" and "3B Computer Network"
networks
- Included a logdir(1) command used in BTL for getting a user's login directory
from /etc/passwd
- Included an nkill(1) command to kill a process by its (undefined) name
- The boot process included a header object for "driver object files" used
with a "self-config boot" process
If there are any questions or any pages folks think I should peruse for details, just let
me know. Otherwise this'll won't be hitting my detailed analysis for a while,
I'm currently in the midst of figuring out a branching scheme in my mandiff repo
that'll facilitate tracking the various forks, as I've found many changes
between V5 and V6 that are *not* reflected in various ways throughout PWB, Program
Generic, CB, and 32V (as an example, go look up where lpr(I) is and isn't
available.)
- Matt G.
P.S. Kudos to the production quality of this manual. It's a small binder, the pages
are the same size as the earlier comb-bound manuals. The binder rings themselves are
fixed to the back cover and the right side of the rings is flat instead of rounded, so the
pages sit very nicely whether opened or closed. This compares with the BTL SVR2 binder
where the rings are perfectly round and affixed to the spine instead, so they sit
differently depending on whether the binder is on a shelf or open on a desk, with pages
risking getting all crumpled up getting bunched up at the edge of the rings. Certainly
has nothing to do with software or technical history, but the physical nature of the
various publications has also been factoring into my study. Here's a picture of the
two covers by the way, since I haven't given any visuals on my work in a while:
https://i.imgur.com/hhaaxfA.jpeg