[TUHS] V7 Addendem
jnc at mercury.lcs.mit.edu
Fri Dec 8 23:01:18 AEST 2017
> I've never seen a detailed description of UNIX/TS, although I have seen
> the "Unix Program Description" (January 1976) which documents the USG
> version, and of course PWB is described in the BSTJ issue, and UNIX/TS
> is supposedly a merge of those two.
> Did the later USG versions takeup some of the PWB work, does anyone
> know? (My thinking is 'if I find traces of PWB [in the MIT system],
> would that be from /TS, or could it be a later USG version' - I think
> there were 1-3, from something I saw online.)
So I seem to have stumbled on something interesting here (or maybe it's not,
and the history is just unclear - well, unclear to me at least, I'm sure
Looking at "Unix Program Description" (January 1976), it's clearly marked as
"Published by the UNIX Support Group". (I have an actual hardcopy, which I
don't recall how I came by, but for those who wish to follow along this
document is available in the TUHS archive, at:
and in other TUHS mirrors).
So, given the credit, I _assume_ that it documents some version of the USG
system. So I started looking at that, and the PWB version that's in the
to see how they compare, and it turns out (somewhat to my surprise) that the
USG document describes what seems to be an older version of the system.
For example, in text.c, it doesn't cover xlock()/xunlock()/xexpand(), all in
the PWB system - just xalloc()/xccdec()/xfree()/xswap().
Even more telling, in sys1.c, the USG document describes the older version of
exec(), where arguments are collected in a disk buffer, not (as in the PWB
system) in swap space. (I had thought that this change was mentioned in the
PWB paper in the BSTJ issue, but on checking, it appears my memory was
incorrect. Many of the PWB changes appear to be to things like the shell, not
So it seems the USG document describes a system very close to the 'classic'
V6 - not what I had expected. This may also make it hard to recognize USG
source (at least, the early versions).
More generally, it would be good to try and elucidate the relationship among
all these early Bell/AT+T versions: Research, USG, PWB, etc. Clearly the two
latter (from what we know now) are descended from V6 - but was there any
interchange between USG and PWB?
And did either of them feed back into V7? Or, perhaps more likely, were the
improvements to text.c, exec() etc _Research_ improvements that got fed into
More questions than answers, sadly... I'm not at all familiar with V7, I'll
have to go read it at some point, and compare it to PWB. Not that I expect it
will answer many (any?) of these questions, but maybe we'll get lucky and
there will e.g. be stuff in this PWB which isn't in V7.
Speaking of which, I seem to recall there's more than one PWB version. I
wonder which one we have (above). Although there's another 'PWB' tape in the
(much larger than the other one), when I poked around a bit through that,
seeing what's there, and comparing it to the other one, the system sources I
looked at there all seemed to be the same as the one on the Spencer tape.
> I should look at the MIT kernel and see how much of it is USG, and see
> if I can find any traces of the changes described as done for PWB. I
> know the MIT version has provisions for longer exec() arguments, and
> text.c is considerably more complex than the one in V6 (and IIRC matches
> the description in the USG document)
So, my memory was in error here; the text.c matches the one from the PWB tape,
_not_ the USG document. In general, the parts of the MIT system seem to be a
close match to what's on the PWB tape, with the exception that the MIT one
seems to be slightly earlier (no 'register' argument types).
> Perhaps the MIT system really was /TS
Without a better understanding of what was really in /TS, this is totally
> I've always described it as a hacked PWB1, but I might be wrong there.
And for once, I think I was right. The MIT system _does_ closely match the
one on the 'PWB' tapes - whatever that was!
More information about the TUHS