How the PDP-11 Was Born (according to Larry McGowan)
(Used by kind permission)
"I was hired in late 1967 to work on the PDP-X project system software. A few month later (February or March of 1968 as I recall) the project was canceled and Ed deCastro and friends went off to form Data General. When the cancellation happened one of the software designers pushed everything off the top of his desk onto the floor and said "Next project, please". I guess we needed some humor because it seemed like a grim time.
After a few months of doing some PDP-15 work, I was assigned to work for another person to investigate various real and proposed machine architectures to define DEC's future 8-bit machine. That's what Ken Olsen wanted after the PDP-X failure. This was the start of the "Desk Calculator" project. We liked "Desk Calculator" because the PDP-10 gurus would leave us alone since a desk calculator was not very interesting. Later on that name caused a stir at Wang when Datamation published a note that there was a desk calculator project in the mill at Maynard!
It didn't take us long to realize that the world was going to 16-bit machines and we decided to go too. We decided to focus on minimizing the memory bandwidth needed to execute the instruction stream. So I looked at a bunch of machines and coded up (in assembly) a bunch of procedures for each of them. We then looked at how much data needed to be fetch from memory to execute them.
And then we got lucky by hiring Harold McFarland, a protege of C. Gordon Bell, to work with me. Harold had been working on several architectures at Carnegie-Mellon. The one he liked was so complicated and different that I couldn't figure out how to write programs for it -- who knows, it might have been the best architecture but we'll never know now. Another of Harold's architectures was essentially what became the PDP-11. When we presented this architecture as our recommendation for DEC's first 16-bit machine, the hardware managers (e.g., Roger Cady) just about threw us out of the room because there were no 16-bit instructions that included immediate data! And there were no short addresses! These and other such ideas were pretty much considered essential if we were to achieve low memory bandwidth and compact code. Shortly we were able to overcome these preconceived notions and suddenly the Desk Calculator project got hot. All kinds of architects (including C. Gordon Bell and Bill Wulf in consulting roles) and hardware and software engineers got involved to quickly flesh out the machine details. Based on input from Harold and others, I wrote the original assembly language specification and Bob Bowers (if I recall correctly) produced a PDP-10 based assembler over a weekend. (And, although not specified, he threw in a macro processor too!) I started hiring software developers (for a grand total of 3) and I wrote SIM-11, a complete PDP-10 based simulation of the PDP-11/20 in FORTRAN (not my language of choice!). With the assembler and simulator we were able to design and code and test the original paper tape software (assembler, editor, IOX, linker,....) and develop simple bring-up test programs before the first prototype was available. These were fun and exciting times.
We worked many days and nights to get the first prototype to execute the bootstrap code and read in a program but it felt wonderful when it finally happened. But before that we had our first clash between the simulator and the real machine.
The very first program executed by a PDP-11 was keyed in through the console and it was a simple loop to fill memory words with their own address. This is simply done with a MOV R0, (R0)+ loop where R0 starts with a small even number. As is well known, the PDP-11/20 incorrectly puts A+2 into word A. However, SIM-11 correctly put A into word A. The next event was predictable and has been repeated over and over in my own personal experience. That is, I had to implement the hardware bug in SIM-11!
One of my favorite memories is that of personally packing the first box of paper tape software for the first PDP-11 delivered to a customer. Unfortunately I have no recollection of who the customer was.
I also remember being pushed by the marketing types to have a 2K main memory. My response was "Then there won't be an assembler" -- so, we got 4K minimum memories.
And marketing wanted a forward slash to introduce a comment (a la PDP-8?) to which I replied "In that case I'll use a semicolon for divide."
And I remember being offered, as a momento, the first front panel produced for a PDP-11. I didn't want it! We sure were amazed by those colors!!
The first disk attached to a PDP-11 had 64K words of space and each word was individually addressable. Talk about short sectors!
Later on I was the major contributor to the implementation of the RSX-11C (core only) and RSX-11B (added Bulk storage, i.e., disk).
I'd like to close by saying that the PDP-11 development work has always been a bright and happy time in my career. There were many wonderful people involved. The only one I've seen in more modern times is Harold McFarland. He was out here (California) working at HAL and met with me for lunch and to ask if I remember why we did some of the things we did on the PDP-11. Gads, that really was a long time ago ...... I hope my memory has not caused me to get too many things wrong. If so, I apologize in advance. It's been fun writing this -- many things I'd forgotten came back to me.
August 19, 1998"