This is perhaps the first significant document I wrote at Amdahl. Although
undated, I believe this was written in August 1979, after I had attended a
2 week class at IBM Chicago about VM//370(CP) internals and performance.
The paper makes reference to V7 UNIX being "on order", so this is when the
V6 UNIX system was in use. IIRC, V7 UNIX was released in Nov. of 1979.
https://drive.google.com/file/d/1cB2eqTwmicj1AQOiULDZjED5Rq-_V4N4/view?usp=…
Huge thanks to my friend Karl D. for hanging on to this for 44 years.
> From: Henry Bent
> there will be a lengthy addendum shortly.
The most useful thing is probably this:
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V4/nsys/ken/low.s
which lists exactly what was there; not only the types, but how many of each
there are. This is from 'nsys', which is slightly before the actual V4, so
it's quite early. 'low.s' is inherently machine-specific; i.e. different
machines would share most kernel files identically, but _not_ this one -
unless they had _absolutely identical_ device sets. So this one is _probably_
the one from the /45 in picture.
It shows:
RK11
RF11
PC11
TC11
TM11
1xKL11
12xDC11
1xDP11 (synchronous serial)
1xDN11 (dial-out asynch control)
1xDR11C (parallel port to -11/20)
2xDC11 (Screw Works voice synthesizer)
1xDR11A (voice response unit)
1xDR11C (C/A/T typesetter)
(Line printer, card reader and RP11 are commented out; more about the RP11
in a later message.
There's also this:
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V4/nsys/ken/11-45
which is a bit hard to interpret, but I think might list what's in each rack:
the TC11, RK11 (early ones), RF11 and TM11 (early ones) were large custom
wire-wrapped backplanes which bolted into the front or back of a 19 inch
rack; this:
https://gunkies.org/wiki/RK11-C_disk_controller
has an image of such an RK11. The "MOS 16-24" is probably a reference to an
MS11:
https://gunkies.org/wiki/MS11_Semiconductor_Memory_System
which had to mount in the CPU backplane. The "MM" entries are likely core
memory units; probably MM11-K's:
https://gunkies.org/wiki/MM11-K_core_memory
since they seem to be 4KW each. (Maybe MM11-E's or 'F's, though; those are
also 4KW each.) I'm not sure what they "PL"s are - probably Plessey core?
Anyway,it looks like the machine had 104KB total.
This file:
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V4/nsys/ken/conf.c
lists all the types of devices on the machine. One oddity is that it lists
two RK11's; but if you look at the RK11 driver:
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V4/nsys/dmr/rk.c
it's only set up to handle one physical controller. But there is this:
#define JRK 1 /* temp */
if (bp->b_dev.d_major==JRK)
d = bp->b_dev.d_minor;
else
d = bp->b_blkno%3;
so the two different major device entries appear to handle the same disks in
different ways ("d = bp->b_blkno%3" will spread a virtual drive across three
physical drives).
Memory, it would have been hard to say (UNIX even then sized memory at start
up) but then I found that '11-45' file. I also found a copy of the CACM
version of the UNIX paper:
https://people.eecs.berkeley.edu/~brewer/cs262/unix.pdf
which says the machine had 144KB (so they had added 40KB more at that point).
(I seem to recall someone had scanned the SOSP version; I didn't save the
pointer, but if someone knows where it is, it would be interesting to look,
and see what it says - they seemed to update this paper on a regular basis -
the copy included with V6 talks about the -11/70.)
The system at that point had "a 1M byte fixed-head disk .. four moving-head
disk drives which each provide 2.5M bytes on removable disk cartridges, and
a single moving-head disk drive which uses removable 40M byte disk packs"
The RS11 disks for the RF11 were 512KB, so either they'd added a second one,
or switched to an RS04 (but that's a MASSBUS device). The big disk was an
RP03 so they had added an RP11, which wasn't present earlier.
Noel
Hello all,
I asked this question in a different thread but it may have been bogged
down in other discussion so I figured it was worth asking again.
What was the hardware configuration of the 11/45 that Research used to
implement early UNIX? This would be circa late 1972/earlty 1973. I have
found numerous references to it being an early production 11/45, and I
assume that it had an RK05, but I cannot find any details about things like
memory size and other peripherals.
Since the only extant sources are for V1, which was as I understand only
run on a singular 11/20, and V5 by which time UNIX had spread it doesn't
seem possible to infer a hardware configuration from existing code.
-Henry
> From: Henry Bent
> What was the hardware configuration of the 11/45 that Research used to
> implement early UNIX? .. I have found numerous references to it being
> an early production 11/45, and I assume that it had an RK05, but I
> cannot find any details about things like memory size and other
> peripherals.
A good source is the Ken+Dennis picture:
https://www.bell-labs.com/usr/dmr/www/picture.html
and the caption which Dennis wrote for it.
The image is not quite definitive, because there are two machines in that
bank of racks: a PDP-11/20, and a PDP-11/45 (mostly hidden behind the
right-hand Teletype), and it's not possible to say which of the two machines
the various peripherals are attached to.
But it seems to have had two RK03's (and an RK11 somewhere to drive them) and
an RF11 (no idea how many RS11 drives it had at that point),; a TU56 (and a
TC11 somewhere to drive that), and a PC05 (with PC11 controller boards).
(There are pages for all these things here:
https://gunkies.org/wiki/Category:UNIBUS_Peripherals
which include links to the DEC documentation on them.)
I'm doing more searching, through documents I recall having additional
crumbs; let me go ahead and send this, and there will be a lengthy addendum
shortly.
Noel
All, way back when, Dennis sent me some DECtape images to look after. I've
put some of them in the Unix Archive (the s1 and s2 tapes) as they contained
Unix source code or binaries. The others I kept aside as they didn't contain
Unix code, or they were potentially sensitive.
Anyway, Angelo Papenhoff asked for any old tapes from the Labs that might
contain fragments of B source code or B binaries. I passed the extra tapes
on to him, and he has found some very interesting nuggets from the time
period when B -> NB -> C.
So, to help provide the context around Angelo's work, I've decided to put
all the tapes that Dennis gave me here:
https://www.tuhs.org/Archive/Applications/Dennis_Tapes/
Cheers, Warren
> Reading through [1], there are documents offered by AT&T for the "Level II COBOL" system, which some further research indicates is a product from Convergent (same folks as the UNIX PC.) There's also the LPI-COBOL which appears to be a Language Processor Inc. product.
Ryan-McFarland comes to mind: in my recollection they were the leading Cobol on small machines in the early 80’s. Ryan-McFarland’s predecessor company Digitek was contracted to do the PL/I compiler for Multics, but failed. It seems they later did Bell Labs PL/I (says https://en.wikipedia.org/wiki/Digitek) I think they did a Unix version of their Cobol in the mid/late 80’s as well.
A few years ago I tried to find out more about RM-Cobol as it existed in the late 70’s and early 80’s, but with little success. As a product it survived till the present day under the ownership of Micro-Focus and most web mentions are for more recent versions.
It would seem to me that compilers on machines with small memories and word sizes in the 60’s, 70’s and even 80’s tended to compile to a virtual machine / intermediate code -- sometimes with the option to compile to native from there. Think BCPL and o-code, Pascal and p-code, the Amsterdam Compiler Kit and m-code, the Microsoft “revenue bomb” p-code C compiler, etc. According to the above Wikipedia article RM-Cobol used the same approach. I did once see the source for another 80’s Cobol compiler and it compiled to a virtual machine with 60-bit words.
By the way, I loved the recent posts on B and NB. THUS at its best!
Reading through [1], there are documents offered by AT&T for the "Level II COBOL" system, which some further research indicates is a product from Convergent (same folks as the UNIX PC.) There's also the LPI-COBOL which appears to be a Language Processor Inc. product.
Are these the earliest AT&T endorsed COBOL solutions for UNIX or were there other efforts either promoted by Bell or even perhaps developed locally that were in any use before this version? Or otherwise is there any other family of ubiquitous UNIX COBOL tools that was in use in the 70s and early 80s, before the timeframe of this document?
Additionally is anyone aware of any surviving code or binaries of either of these or other, earlier efforts at COBOL on UNIX? I have no goal for this information in mind yet, but just gathering details at this point. Thanks all!
- Matt G.
[1] - http://bitsavers.org/pdf/att/000-111_ATT_Documentation_Guide_Nov87.pdf
So there's been quite a bit of talk about B recently (mostly from my
side) and right now I feel that I've reach an interesting enough
milestone to warrant a separate thread for this here.
First of all, I want to stress that this is still WIP,
but everything can be found here now:
https://github.com/aap/b/tree/master/unix1_bdir
In this repo you will find the following:
- bc and ba that can build themselves
(I've included .s files so everything can be bootstrapped
easily).
- libb and bilib in source form from object/library and binary files of
the s2 tape
- brt1 and brt2 restored from binary files of the s2 tape
- olibb, obilib and obrt1, older versions of the above
- a version of ba that does not generate threaded code but an
interpreted code more like the pdp-7 code.
ken told me such a thing existed at one point and indeed it is
the only way to fit the compiler into 8kb/4kw
- an implementation of this interpreted code. With this bc and ba
fit into 8kb
Note I have only tested this under apout so far. The version I used [1]
needed two tweaks, but see my README.
With this I was able to build the recently reversed B programs [2] and
produce exact matches to the originals (modulo assembler differences).
In that process I found a few mistakes I made, now the programs are
exact.
I want to thank everyone who was of help in this endeavour in one way or
another:
Ken Thompson, Phil Budne, Robert Swierczek, Steve Johnson, Warren Toomey
What's left to do now is to actually run this under UNIX v1 proper,
preferably even on a real machine. I've been too lazy for that so far.
Also there are inaccuracies and unknowns in the compiler and assembler.
Right now the intermediate code is a binary code that's easy to generate
and to parse, but if I understood ken correctly the intermediate code
was more like something the PDP-7 assembler could deal with.
I'm also rather unsure how to handle the conditional ?: operator. The
printf.o file shows that it produces labels that are in line with all
the other labels. Now the C compiler uses labels starting at L10000
for the ones generated in the second pass. So it *feels* like the
conditional should be generated by bc directly and not by ba but this
leads to other problems, which I won't go into detail now.
Finally the code should probably be a bit closer to the C compiler than
it currently is.
Cheers,
Angelo
[1] https://github.com/philbudne/pdp11-B/tree/pb/tools/apout
[2] http://squoze.net/B/programs/
> From: Diomidis Spinellis <dds(a)aueb.gr>
> I seem to recall reading that the power of Unix stems from the wise
> choice of a few design principles rather than the endless accumulation
> of special cases. However, I cannot find where this is stated.
I think you're thinking of something in the CACM paper:
https://www.bell-labs.com/usr/dmr/www/cacm.html
"The success of Unix lies not so much in new inventions but rather in the
full exploitation of a carefully selected set of fertile ideas"
Noel