Hi All.
Attached is "A Supplemental Document For Awk". This circulated on USENET
in the 80s. My copy is dated January 18, 1989, but I'm sure it's
older than that. One clue is the reference to the 4.2 BSD manual,
and 4.3 came out already in 1986 or so.
Does anyone else have a copy of this with perhaps an older date?
As far as I can tell from a short search, the author is no
longer living. If someone knows better and can provide contact
info for him, that'd be great.
In the meantime, Warren, do you want to add it to the archives?
Thanks!
Arnold
There is a little known suite of programs, written by Peter Weinberger,
found as 'btree', or 'cbt', in the archives for Eighth and Tenth
Edition.
The code in the Eighth Edition archive seems to be the earliest, and
has fewer utilities than available in the Tenth Edition code. A search
through files shows that it was used by 'road', 'weather' and
'apnews'.
There is an ms file, 'memo', describing the programs, amongst the code,
but an appendix seems to be missing. If anyone knows about this or
where it might be I'd like to get my hands on it.
'Memo' itself is interesting because it's the only troff document I've
seen amongst the reseach papers (excluding Christopher Van Wyk's own
paper of course) that uses 'ideal', in this case, for drawing a
picture depicting B-tree structure.
Hello, I'd like to share some analysis from my recent Sixth Edition pass of my mandiff repository. For the V5-V6 diff, I opted for a branching approach, starting with a last universal common ancestor (which isn't quite right [1]). I compared each set of changes with the MERT0, PWB 1.0, CB-UNIX 2.3, 32V, and to a lesser extent V7 and System III manuals attempting to suss out the spiderweb of changes between them all. I created a series of branches representing last common changes between groups of branches as well. This has resulted in a littering of merge commits in the repository, but a banana's gonna have a peel.
A few important points about document genealogy here:
- The MERT0 manual, in the introduction, denotes descent from the USG Program Generic 3 manual. Furthermore, there is a listing of which pages would be replaced, which also serves as a key to which pages should be PG3 original text. However, the hs(IV) and ht(IV) pages make reference to specific MERT pages, so I question the veracity of this list. In any case, for the purposes of this analysis, much may extrapolate to USG PG3 as well. More study is needed.
- The CB-UNIX manual currently available is Edition 2.3. In studying the numbering system for CB, I've found that this represents Release 2, Issue 3, as in the kernel there are references to releases, not editions. The clue is in one of the manpages somewhere, I don't recollect as of this typing where, but that'll come back around soon enough. The manual itself appears to be from a binder that was once a CB-UNIX 2.1 binder and had select pages replaced. There are some bits and pieces of 2.1 pages that were otherwise slated to be replaced, alluding to things like the /etc/lines file in common with PG3. In any case I've prioritized 2.1 changes over 2.3 changes where they can be determined, but like PG3, no complete picture can be determined of 2.1 from available documentation.
For each of the branches, the following number of files in total reflect V5-V6 changes which aren't incorporated:
- 32V: 7
- PWB: 15
- MERT0: 46
Of these MERT0 has the greatest number of items lacking research's upstream changes from late '74-early '75. Among them:
- Has a V5-ish bas(I), no rc(I) (ratfor) at all
- The group system is not present, newgrp(I), group(V), chgrp(VIII), etc. are nowhere to be found
- nice(I) has no priority argument, simply sets a "low priority"
- TTYs are still referred to as "teletypes" instead of "typewriters" in many places
- there are 10 TTYs max so many commands don't reflect adjustments for two-digit IDs (ps(I) in particular is quite different, very V5)
- retains the lpr print command (which shows up again in 32V and System III)
- additionally, according to the replacement page list, PG3 retained the fed and form editing programs
- Program Generic may not have had a man(I) page, as the one here is a MERT0 addition, hard to say
CB tragically needs to be remerged, found as I was typing this up the system call section got an errant merge with V6 changes that shouldn't be there. Needless to say there is much in section II of the CB manual that leans more V5-ish than V6-ish. PWB differs in minor ways.
The differences can be found in this list https://gitlab.com/segaloco/mandiff/-/merge_requests?scope=all&state=closed
Each of the obviously labeled, closed merges represents a snapshot diff of the particular branch in question. As stated, the CB branch currently is in dire straits, I'm going to work that up again sometime in the future, but I should be able to use this to produce diff-able reproductions of the MERT0 and CB-UNIX 2.3 manual sources for this repository, as well as any other materials that may pop up.
- Matt G.
[1] - This pass I did not take good notes on such matters, but there are a few pages I'll anecdotally say reflect contents predating V5 sprinkled amongst the various manuals. I will consult with previous diffs when questions arise on in-depth analysis of the non-research changes in the branches. In any case the historical record already confirms CB-UNIX at the very least branched off quite early.
Hello everyone,
this is my first post on this list.
After looking at the archives for this mailing list, I have seen that
the B language has been discussed several times already.
After viewing Ken Thompson's interview by Brian Kernighan at VCF East
2019, I became interested in the B language, as it seemed full-featured
for system programming, close to C, and simple enough to write a parser
for it without a code generation tool.
So for fun and self-education, I am now writing a (or yet another) B
compiler, in C, after reading Jack Crenshaw's "Let's build a compiler"
documentation ( https://compilers.iecc.com/crenshaw/ )
Here it is: https://git.sr.ht/~f4grx/bpars
It is now starting to generate code for the 68hc11 8-bit platform. It
can also generate C code.
I have written some test programs, found some B examples, but I thought
it would be great to use my compiler with actual B software.
Of course, B was a "transition" language, that did not have a continued
use as soon as it evolved into C. so if any software remains, it will be
quite hard to find.
And here is my question, is any of you aware of original B source code
archives? or are in touch with people that would know?
In particular, I read on this document written by Dennis Ritchie:
https://www.bell-labs.com/usr/dmr/www/chist.html
> After the TMG version of B was working, Thompson rewrote B in itself
(a bootstrapping step).
I have also read that the YACC tool was initially written in B.
There might be other historical B sources that I am not aware of.
Do you know if any of this code has survived to this day? Where could I
find more information about this?
Thank you very much,
Sebastien Lorquet (F4GRX)
Hello, I've come across something in a bookshelf up at the local university that I have thus far been unsuccessful at locating online.
It's a binder amongst other 4.3BSD binders like the reference manuals and supplementary documents but this one is labeled "User Contributed Software (UCS)". I can't find any of these in the doc folder of the 4.3BSD copies in the archive nor can I find a scan of the originals. There is an overview at the start listing the following packages: B, X, ansi (VAX tape tools), apl, bib, courier, cpm, dipress, dsh, emacs, enet, help, hyper, icon, jove, kermit, mh, mkmf, mmdf, news, notes, npl00, patch, path alias, rcs, rn, spms, sumacc, sunrpc, tac, tools, umodem, and xns.
There are a preponderance of man pages as well as some focused papers for B, SPMS, the Icon programming language, and MMDFII. I didn't scribble down more notes before heading home because I figured this was something I'd find on page one of an internet search, but thus far have had no luck. If I don't turn up a digital copy soon I might just have to make another trip up there soon with my flatbed scanner. In any case I left a note too hoping whoever the curator of that bookshelf is (it was in some club room) might have the scoop on those binders, if they're left over from some long gone 4.3BSD installation in the EE/CS department and if they might have some siblings in other bookshelves nearby.
- Matt G.
There may be a simple generic way to correct pic's habit of accepting
any set of object modifiers on any object, but obeying only a
compatible subset.
Pic already collects a bit vector of modifier types attached to the
current object. If that were extended with a few more bits that
designate the object types, the size, B, of the bit vector would be
about 35--an easy fit in one 64-bit word. Then a BxB bit matrix could
record both modifier/modifier incompatibilities and object/modifier
incompatibilities. The collected bit vector needs to be tested against
the matrix once per object definition.
It seems to be harder to catch duplication of modifiers, requiring
extra code at all points where bits are set. Nevertheless, this kind
of error also merits detection.
Some questions
Does anybody think the issue is not worth addressing?
Is there a better scheme than that suggested above?
Is the scheme adequate? It would not, for example, catch a three-way
incompatibility that does not entail any pairwise incompatibility,
should such an incompatibility exist.
Any other thoughts?
Doug
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
At 2023-06-17T05:19:46+1000, Damian McGuckin wrote:
> Getting back to groff, that final/terminating sigma, is it still
> pronounced as sigma.
>
> It certainly has no EQN equivalent name and its groff short symbol
> name is
>
> \(ts
>
> (terminal sigma) which is not like other greek letters. Just
> wondering whether it needs a sentence to mention its abscence from
> EQN.
There are a few others, but they postdate Ossanna troff. From
groff_char(7) in 1.23.0.rc4:
ϵ \[+e] u03F5 variant epsilon (lunate)
Ï‘ \[+h] u03D1 variant theta (cursive form)
Ï– \[+p] u03D6 variant pi (similar to omega)
φ \[+f] u03C6 variant phi (curly shape)
Ï‚ \[ts] u03C2 terminal lowercase sigma +
I know of no reason to make these generally available by default in eqn,
though, any more than they already are. You can type their special
characters in eqn input and assign spacing and style types to them.
(This typing system is a GNU eqn feature, not present in AT&T eqn).
In fact I have a coupled pair of reforms in mind for GNU eqn:
unfastening the definitions of the lowercase Greek special characters
from the typeface used for letters (variables), and then defining the
lowercase Greek letter eqn macro names ("alpha", "beta", ...) to
explicitly use the "letter" style type.
https://savannah.gnu.org/bugs/?64232https://savannah.gnu.org/bugs/?64231
(For example:
define alpha ! type "letter" \(*a !
)
This should result in no change for historical documents (except on
terminals, where it will fix a bug), and give us some flexibility for
users of modern fonts where Greek letters are properly supported in text
fonts (i.e., in four styles).
The Graphic Systems C/A/T had uppercase Greek available _only_ upright
and lowercase Greek _only_ italic. Modern typesetting systems are not
so limited.
Regards,
Branden