All, here's a special Christmas present, especially for those who
helped out with the restoration of the 1st Ed Unix system, see
http://code.google.com/p/unix-jun72/
To do the restoration we needed a copy of the 1st Ed Unix kernel
source code, and Al Kossow had found these two documents and
scanned them in:
http://minnie.tuhs.org/Archive/PDP-11/Distributions/research/Dennis_v1/Kern…http://minnie.tuhs.org/Archive/PDP-11/Distributions/research/Dennis_v1/Prel…
At the time nobody could work out who had studied the kernel source code,
why they had done it etc. Nor could we work out who Ted Bashkow was and
why he was involved.
After my IEEE Spectrum article I was contacted by Jim DeFelice to say
thanks for the article. I recognised him as one of the people named in
the above documents, and asked him about the kernel study. He has contacted
some of the people involved and sent me the e-mail below, which gives
a full description of the work!
Before I get to it, just an aside. According to Berkley Tague,
Ted Bashkow "was a visiting Professor for the summer some time around
1970 or 1971 and worked with me and others in research on various
topics. I don't believe he contributed much to UNIX at that time, but
was an early user of the early systems."
Cheers,
Warren
[ Jim's story]
Here is as coherent a story as I can piece together Let me know if you
have any more questions.
Jim.
The documents that describe the UNIX system as it was implemented on
the PDP-11/20
circa 1971 originated as a consequence of a project undertaken within
the comptrollers
department of the AT&T General Departments. The project was titled the
Investment and Cost Information System (ICIS). It was a major new
accounting system intended to track
detailed cost information for the operating telephone companies of the
Bell System.
ICIS was a major IBM mainframe based system which was being developed
in COBOL.
I transferred from Bell Labs in late 1970 to join Chuck Everhart who
preceded me from the Labs. In 1971 we were joined by Ron Silacci, Cathy
Judge, and later (early '72?) Jerry Conser all from Bell Labs. We
formed the core of what would become
a much larger Development staff by 1973.
In preparation for a major development effort, we wanted to develop a
system to maintain the spate of expected ICIS specification and design
documents including graphics such as flowcharts. We decided on the
PDP-11/20 with a Tecktronix T4002 graphics terminal as the hardware
platform for the development of our document maintenance system.
For obscure reasons, in order to purchase the PDP-11/20, the ICIS team
needed to get approval from the Bell Labs computer aquisition review
department headed
by Berkley Tague. Berk made the approval for the purchase contingent
us agreeing to use UNIX as the operating system.First hearing of this
"UNIX" verbally, my mind was filled with scenes from the Arabian
Nights. "Eunuchs" seemed a strange name for an operating system.
At the time, the only instances of UNIX were to be found in the hands
of the developers (Ken Thompson & Co.) at Murray Hill, NJ. We
naturally asked for all the documentation. We were told there was
none. What we got was a source listing of the PDP-11 assembly
language UNIX Kernel. It was virtually without any commentary or
external description. In order to proceed we undertook to reverse
engineer the listing in order to understand how to
modify UNIX to support the T4002. To that end, in late 1971, we set up
shop at a Labs facility in Piscataway, NJ. The team got occasional
hints and pointers from the UNIX developers at Murray Hill, but they
tended to be focussed on their own work (the C programmimg language,
troff, etc.). Initial progress was slow, but as the overall design
structure emerged and the team became fluent with PDP assembly
language and the coding style of the UNIX developers things moved
along. Early work was
done with paper and pencil resulting in the document named by you as
"Kernel Subroutine
Description...". Once we took delivery of our PDP-11/20, we were able
to make
use of the UNIX tools "ed" and "roff" to create a more easily edited
digital document
"Preliminary UNIX Implementation Document"
The detailed timing of all this is uncertain. The hand work was done
from late 1971 through
March 1972 resulting in the Kernel Subroutine documentation. Chuck
Everhart left AT&T
in late 1971 and I became the group supervisor. A draft of the machine
based Preliminary
Implementation document was completed by June 1972 per the date on my
cover letter for its first distribution. By June 1972 there was
evidently a lot of interest in UNIX inside Bell Labs. The computer
commitee was pushing UNIX for all PDP based projects inside Bell Labs.
The ICIS owned PDP-11/20 was probably received after March 1972. The
hand written cover letter to Ted Bashkow is dated 4/3/72. Once we had
use of the PDP-11 we would have entered our work directly. The
modifications for the T4002 are not dated in
your PDF version and do not appear in the original printout that I
still have. I don't know why the date on all the printed pages is
3/17/72. Also, missing in the PDF version of the Preliminary
Implementation document that is in the paper version is a subroutine
cross reference listing that lists which subroutines are called by
which.
Regarding the authorship of the documents. Looking at the handwriting
it seems
at least four people contributed to the Kernel Subroutine document.
Myself and Ron
have actually reviewed the document and can claim authorship to
specific sections. By sections:
J. DeFelice
H0_01, H0_02, H0_03,H0_04,H0_05, H2-11_sysexec call chain,
H2.4,H2_1.7,H2-8,
H2-9 H4-3, H5-1, H5-2, H5-3, H5-4, H5-7,
H7-1, H7-2, H7-4, H7-5,H7-6, H8-01.2, H8-02, H8-03, H8-05, H8-06,
H8-07,
H8-08, h8-09-00, h5-6
Ron Silacci
sysclose, syscreate, sysent, sysexit, sysfork, sysmdate, sysgetty,
sysmdir,
error, badsys, sysopen, sysret, sysrele, sysstty, syswait, read, write,
ani,
sysstat, sysgetuid, sysintr, syslink, sysseek, syssetuid, sysstat,
sysstime,
systime, sysquit, sysunlink, wdir, fclose, isdir, isown, maknod, mkdir,
getf,
seektell, sysbreak, syschdir, syschmod, syschown, clear, idle, putlu,
swap,
tswap, unpack, rswap, wswap, clock, isintr, retisp, sleepo, setisp,
tty0,
wakall, ttyi, wakeup, itrunc, imap, dskr, cpass, readi, canon, cesc,
ctty,
ttych, getspl, iclose, iopen, sysmount, sysumount, bread, bwrite,
dioreg, drum, preread, rtap, tape, tstdeve, trapt, rw1, intract, otty.
Unknown 1 (all caps)
H4_00, H4_01, H4_02, H4_2.1, H6_2.2, H6_3.0, H6_6, H7_0.0.4, H7_3.0,
H7_3.2
H7_3.3, H9_00.1, H9_01, H9_02, H9_03
Unknown 2
H0_06, H0_07, H2_0.2, H2_3,H2_4, H3_2, H3_4, H5_2.0, H5_2.1,H6_0.9,
H6_1.0,
H6_1, H6_2.0, H6_2.2, H6_3, H6_4, H8_09, H8_11
The two unknowns would be Jerry Conser and Cathy Judge. I have not
been able to track
them down.
The comments in the listing were made by the people who authored the
corresponding man pages. We would comment the listing and as
understanding dawned write up the man page. I had a major hand in
Section F but can't claim sole responsibility.
The people listed in the recipients list in Ted Bashkow's cover letter
are the members of the computer aquisition department. According to
Joe Maranzano:
"Ted Bashkow was a professor from Columbia who was on a 6-month
sabbatical in Berkley Tague's department.
The other names on the memo are:
Dan Clayton
David Copp
Gwen Hansen
Jossie Hintz
Ruth Klein
Jim Ludwig
Georgette Petit
Joe Ritacco
Berk Tague
Dan Vogel
Linda Wright
This was the composition of the Department in 1972 and most of us were
working on Computer Acquisition Reviews for
the Computer Centers. The Unix Support Group was formed in 1973."
By the time the Tecktronix application was developed, the ICIS
development project was ramping up. The developers were using punch
cards for their Cobol programs. It occurred to me that we could
utilize our UNIX system to eliminate punch cards which were difficult
to manage and instead enter and edit the Cobol code using "ed". My
management (rotated in from Bell Operating Companies) was not keen on
diverting resources towards
more tool building but I had enough autonomy to push through the
ordering of a PDP-11/45 and a DEC developed Bisync communications
interface card. This configuration allowed the UNIX system to emulate
an IBM card reader/printer.
The PDP11/45 had memory protection, which made committing all the
source code for a major project to UNIX thinkable. I did all the
development work on a bisync driver myself while my group attacked the
main IBM development. The resulting system worked well and over the
course of a few months all the die hard card rearder afficianados had
converted to the new system. This despite the occasional file system
crash. At the time you could go in and edit i-nodes by hand to recover
lost files and directories. So with frequent tape backups for insurance
we never lost more that a few hours worth of work.
The Bell Labs UNIX support department (formed in 1973) eventually took
over the maintenance of the system and dubbed it the Programmers Work
Bench. Other types of workbench were to follow. I lost track of
developments in the UNIX world till I transferred back to Bell Labs in
1982. By then the UNIX support organization was an entire
Laboratory. The hardware platform was the DEC VAX system, UNIX was
rewritten in C, and Berkely UNIX was a major competitor to the AT&T
version. I still have the design and code for the Bisync driver if you
are interested.
Arnold Skeeve:
Have you asked Doug McIlroy?
=======
Actually I did, last night, on Warren's behalf.
I had meant to drop Doug a note anyway to apologize
for not letting him know I was in his general neighborhood
last week.
Here's Doug's reply:
Pipes were first documented
in v3, Feb 1973. At that time my original clumsy shell
syntax, cmd>cmd>[file] was still in use. Within a few
months, Ken invented today's pipe symbol as something
more presentable at a talk he'd been invited to give
in England--an Infosys "State of the Art" conference
if I remember correctly (not the same Infosys as the
current Indian giant).
I also remember the very blackboard in the garret
lab where I sketched my syntax and Ken exclaimed,
"I'll do it". That was late in the day and I'm
quite sure it was dark outside. Unlike Ken, I
was not in the habit of staying in the lab into
the evening. That makes me think that pipe day
was not too far off the solstice.
It would be nice to believe that pipes preciptated
the third edition, but in fact the first four editions
came out almost like clockwork at 8-month intervals,
so any correlation with pipes is highly speculative.
======
Norman Wilson
Toronto ON
(actually Ramsey NJ at the moment, a good bit north of Murray Hill)
All, would anybody have an e-mail address for Dick Haight? I am still
trying to narrow done the date when pipes were added to Unix, so far
between June 72 and January 73. I have this quote from Dick:
"I happened to have been visiting the research crew the
day they implemented pipes. It was clear to everyone
practically minutes after the system came up with pipes
working that it was a wonderful thing. Nobody would ever go
back and give that up if they could help it."
so he might be able to provide a smaller date range than what I have
at present.
Cheers,
Warren
Dave Horsfall scripsit:
> Great atricle :-)
Great ventricle, too.
--
But you, Wormtongue, you have done what you could for your true master. Some
reward you have earned at least. Yet Saruman is apt to overlook his bargains.
I should advise you to go quickly and remind him, lest he forget your faithful
service. --Gandalf John Cowan <cowan(a)ccil.org>
All, not terribly Unix specific, but here's a good
read for those who have suffered at the hands of
field circus engineers :)
http://nemesis.lonestar.org/stories/stages.html
Have a good Xmas everyone.
Warren
Also, is there a place where I can download archives of Usenet groups
in a plain text format? I think I've got v6.bugs and v7.bugs and some
of comp.sources.unix. I just came across net.unix on Google Groups,
but I'd rather not have to wget all that HTML!
Thanks,
Warren
All,
My IEEE Spectrum article finally got published and you can read it
on-line here: http://spectrum.ieee.org/computing/software/the-strange-birth-and-long-life…
I've had a few e-mails about it. This one has a few more snippets about
early Unix history (from Rey Bonachea):
It was with great pleasure and a bit of nostalgia that I read your IEEE
article below. Thank you very much for writing it. One aspect that did
not get mention, and that perhaps you may or may not be aware of, was
the pseudo real time applications of Unix.
In 1972 I joined Bell Labs in Holmdel NJ working on a project by the name
of Switching Control Center System. At the beginning I was just a brand
new member of the technical staff working on circuit design for
interfaces to the PDP11/20. This project was meant to centralize the data
streams from the maintenance channel of switching machine. Then, in a
multi-user environment , would analyze the incoming data streams and raise
alarms as appropriate. It also provided a whole suite of analysis tools to
allow switch maintenance personnel to trouble shoot the electronic
switches.
Because the switches could not buffer messages or be slowed by flow
control, the Unix system had to catch messages in real time and put it
away on disk for later analysis. Due to the near real time requirements, a
number of features were added to Unix such as semaphores. The Unix based
Switching Control Center System (SCCS) software was trialed in New
Brunswick NJ in 1973 and later that year was released as the first
commercial application of the Unix OS.
I learned to program on that PDP 11/20 computer running Unix and
eventually wrote many applications for the SCCS, initially in assembly
language and then in C as we were also the first project to use C
commercially.
Cheers,
Warren