[TUHS] UNIX 4.1 User's Manual Restoration

segaloco via TUHS tuhs at tuhs.org
Tue Feb 28 11:40:38 AEST 2023

Got a little present for folks today.  Been working on this for a little while now, and while there'll probably be some edits here and there, I believe it to be quite accurate.

After the link is a manpage restoration of the UNIX 4.1 User's Manual (3B20S) that I bought a little while ago: https://gitlab.com/segaloco/pwb4u_man

The permuted index is the only significant piece that isn't done, but that shouldn't impact the informational value.  Note this is just u_man, I haven't found a complimentary a_man copy yet.  I hope one will turn up one of these days, but I plan on at least analyzing the gap between System III and System V with regards to those pages as a future project.

My process involved diff'ing the available III and V manpage sources and reconciling differences between the two and 4.1 with some copy-paste here and some restoration there.  Where differences couldn't be resolved, I simply removed content to match the physical pages.  One minute detail that is also not filled in is the page count in M.folio.  So I didn't count the pages.  Maybe someday.  In any case, I appreciate the opportunity this has given me to learn the manpage macros pretty well.

Anywho, in the second pass of verifying the changes I took some notes on noteworthy mentions.  This list is not an exhaustive analysis but represents some of the areas where significant developments shine through in the text:

System III->4.1 (No claims are made as to what occurred at 4.0):
    - The documentation is cleaned up quite a bit in general, in what seems like a push towards commercial-ready manuals.  Many sections are edited to be more clear and descriptive.  There is also a notable shift towards gender neutral language.  The editors and acknowledgements info are removed, casting an anonymous shadow over the manual maintainers and their muses alike.

    - The tty manpage is renamed termio, reflecting the shifting terminal interface landscape at this time.

    - This release adds IPC with a familiar interface to what is in System V.  According to various accounts the IPC was under heavy development at this time, but while the underlying components may have been shifting and changing, the documentation changes suggest a relatively stable programmer API by this point.  The only IPC-related piece System V adds is icprm(1).

    - The LP print service is added here.  The old lpr system is still there in the background; it is in System V.  However, it is relegated to DEC only status.

    - SGS and COFF development components show up with 4.1 3B-20.  No telling what else they officially supported in the 4.x timeframe.  The System V pages as described below indicate a number of supported platforms.

    - The shell gets the $CDPATH and ulimit features

    - Many system features show a trend towards portability (except the PDP-11, the system appears to be moving away from it)

    - The Virtual Protocol Machine (VPM) seems to go from targeting KMC11 to UN53 and V.35.  Haven't researched what these are yet, but VPM is on the move.

    - As of 4.1, 3B-20 does *not* support: Fortran, BASIC, Honeywell/GCOS 6000 connectivity, lpr printing, SNOBOL, standalone C

    - Added pages include cflow(1), cprs(1), cxref(1), dis(1), dump(1) (was a tape dump (1m), now a SGS tool), enable(1), hpio(1), ipcs(1), list(1), lp(1), lpstat(1), newform(1), sadp(1), trouble(1), x25pvc(1), msgctl(2), msgget(2), msgop(2), plock(2), semctl(2), semget(2), semop(2), shmctl(2), shmget(2), shmop(2), sys3b(2), drand48(3c), getcwd(3c), hsearch(3c), ld*(3x) (COFF library), setbuf(3s), stdipc(3c), strtol(3c), termio(4) (renamed from tty(4)), ldfcn(5), mosd(5), mptx(5), jotto(6)

    - Removed pages include cref(1), dump(1m), fget.odemon(1c), odpd(1c), orjestat(1c), reform(1), tp(1), typo(1), xref(1), tp(4), tty(4) (renamed to termio(4))

    - Some pages were skipped and show back up in System V with minimal changes, meaning they were probably in 4.x: adb(1), arcv(1), bs(1), dpd(1c), dpr(1c), efl(1), f77(1), factor(1), fget(1c), fget.demon(1c), fsend(1c), gcat(1c), gcosmail(1c), kas(b)/kun(b)(1), lpd(1c), lpr(1), ratfor(1), scc(1), sno(1), vpr(1)

4.1->System V (Likewise, there was at least a 4.2):
    - Documentation is cleaned up and edited some more.  Almost everywhere that the name "UNIX" occurs, it has been replaced with some variation on "The UNIX System" with a capital S.  This is lower case in my 5.0 manual which I have not combed for differences with System V yet.  Still, the "system" following is standard by 5.0 it seems.  This is right around the time of dashing Bell associations too, so variations of this manual exist with and without the Bell logo on the front, and with varying degrees of modification to explain the legal landscape involved.

    - Section 3 in particular sees a pretty significant rewrite effort.  This coincides with MR 1055 here: https://archive.org/details/unix-system-release-description-system-v/I%20-%20UNIX%20System%20Modification%20Requests%20Resolved%20in%20UNIX%20System%20V/page/n35/mode/2up

    - A new portable archive format is introduced.  By the sounds of it, this introduces a new header type into the ar(4) format.

    - A new 1024-block filesystem is introduced, along with necessary support.

    - A new synchronous terminal interface is added.

    - VAX is supported by SGS/COFF now.  Additional platforms as suggested by formatting marks in the pages include: Basic-16, Bellmac 32, and 8086, in addition to the already supported 3B-20.  Unknown whether these platforms found any support with USG releases.

    - ex(1) is added (along with vi(1) and edit(1)).  There is also the se(1) editor which I don't know much about.

    - CB-init is added, shaking up the /etc/inittab format and many login-related features.  MAUS also steps in from CB for shared memory on PDP-11.

    - Added pages include asa(1), convert(1), cpp(1), edit(1), ex(1), fsplit(1), ipcrm(1), machid(1), makekey(1), net(1c), nscstat(1c), nsctorje(1c), nusend(1c), scat(1), se(1), stlogin(1), ststat(1), vi(1), maus(2), clock(3c), dial(3c), erf(3m), getut(3c), matherr(3m), memory(3c), sputl(3x), ttyslot(3c), x25*(3c), filehdr(4), gettydefs(4), issue(4), linenum(4), reloc(4), scnhdr(4), syms(4)

    - Removed pages include vpmc(1c), vpmsave(1c), vpmset(1c), x25pvc(1c), fptrap(3x)

That's all I've got.  As time goes on I'll start documenting worthwhile tidbits in the Wiki.  If there's any question of the contents of any of the pages, I'll happily consult the original and make corrections, and can scan any page to verify the contents if needed.  I'll eventually be scanning the whole thing, just not right now.  Feel free to open a pull request if you think something needs to change.

- Matt G.

More information about the TUHS mailing list