Levy’s Hackers: Heroes of the Computer Revolution is something like required reading for the hacker subculture, and Hackaday by extension. The first section of that book is all about early hackers and their adventures with the PDP-1 at MIT. The PDP-11 has earned a special place in hacker history for being the minicomputer used to write the first Unix. We’re always amazed to find how many of our readers have stories about programming PDP microcomputers, usually the PDP-11. Those of us young enough to have missed out on the PDP experience often have something of a second-hand nostalgia for the old machines. An exceptionally detailed article over at Ars Technica promises to get us started reliving the glory days, even if it is for the first time.
It turns out that there’s an emulator for the old minicomputers, the History Simulator, abbreviated SimH. The article gives step-by-step instructions to get the emulator running, booting Unix 2.11 on a virtual PDP-11. The fun doesn’t stop there. The write-up includes an intro the the PDP-11 hardware, and a crash-course to assembly programming for the beast. It’s a great look at how the stack, branching, and subroutines work under the hood. Most of it still applies to computing today, so it really is worth the read.
Looking for more PDP-11 lore? Check out our coverage of DEC’s history.
The image above is “PDP-11” by ToastyKen, and is licensed under CC BY 2.0
UNIX was not written on a PDP-11, it was written on the PDP-7, then ported to a Interdata 8/32. The PDP-11 certainly shares quite a bit of relevant history with UNIX and the PDP-7, but UNIX predates the venerable 11 by about a year.
That’s not entirely exact. The original UNIX kernel was written in assembler in a PDP-7 “borrowed” from other department of the Bell labs, and some utilities were written in both assembler and B language. After they had the basic system, they convinced the management to buy them a PDP-11 (by promising a multiuser text editing system, which they delivered with UNIX and roff), which, due to be able to address memory in both bytes and words, made them to modify the B language to support not only what today we call “int” but also “char”, and then also added structures, transforming it in the C language with the old K&R syntax. The kernel was still in assembler, but some parts were ported to C in newer versions until version 6, which has a nearly pure-C kernel, and only then UNIX began to be portable to other architectures, specifically to the Interdata 8/32.
I love history, esp. reading Levy’s book. I called the 2d half of it “A Study in Psychology of California nuts.” Heh, esp Gates.
I had a close encountereith a PDP 11 back in the 90s at a Computer Show in my town. It looked absolutely beautiful sitting on the Vendor’s table for 100$; but I decided to buy an Apple ][+ instead bc I had no idea where to get -11 software. Oh well, maybe I’ll see anoth one to acquire.
Apple II was faster.
There is no nostalgia for that pitiful 1MHz 16 bit 64K totally proprietary horrendously documented over-priced contraption. Each copy of an OS or compile manual was very expensive and looked like it was printed on a line-printer. Very hard to use and you were not allowed to copy them. Buy a set for each person. Support? Not really.
128 Kbytes, 64. It had separated program and data memory.
Only the higher-end models, such as the 11/70, had a segmented program/data address mode.
Yes. 16 bit words.
Don’t be bitter, brother. Consider it in terms of Incrementalism: every Step is so important. Crawl, Walk, Run, Swim, Fly.
I’m not sure what exactly you’re talking about. I wrote a lot of code for PDP-11s from about 1972 until 1980 or so, using DOS-11, RSX-11A/D/M, and RSTS-11. All of the DEC manuals were free, source code was readily available for their OS offerings, even the full CPU schematics were available for the asking. Compared to earlier minicomputers, they were incredibly easy to use and program. You could actually ship products written in FORTRAN or BASIC-PLUS, it wasn’t necessary to write everything in assembly language. DG Novas were about the only thing comparable at the time.
I used an 11/70 in college and a Vax. And in ’78 I think I worked a while at Boeing as a 11/70 and Vac site manager. There were 4 identical sites with one each for aerodynamics, structures, propulsion, and avionics(?). Dec would not allow Boeing to duplicate documentation and it took months to get DEC produced manuals. I dealt with DEC constantly and in fact I solved one of their problems with one user locking out everyone and not knowing it. It was RSTS IIRC. It was about Boeing working into CAD. The docs had errors and omissions and response from DEC took ages. Lots of Tektronx memory/refresh CRT terminals, which were cool because they did vector graphics and had more characters per line.
One amusing thing was that if someone sent their graphical output to the wrong printer/plotter they got back a gigantic roll of paper bigger than the wall from the life-size lofting plotter.
It is nice to be able to stand on the shoulders of giants, but i like to know my giants.
And even if not feasable for every day use nowadays, but a nice round of Rogue with a real hardware terminal attached to a Pi running Sim-H is near enough to experience something long gone and before my time. And before someone goes after the usage of emulation here, it fits right with the Controller Theorem. Meaning it is of no concern if a machine is real or emulated as long as you are holding the correct controller in hand. Or a real terminal in this case.
And lets be honest, as much as i would love to have a real PDP11, i have neither the space in my flat nor the room on my electric bill for the real deal. ;)
My aerospace employer of the ’90s (still) used PDP-11/70s to run the missile hardware test benches, which the company wouldn’t re-host because of the risk and hassle of rewriting what became 20 years worth of legacy bespoke test libraries and tools. While I was on-board with seeing to their daily care and feeding, and running the tests, I dreaded taking time to code one.
Why? Because the test bench in my lab could connect to a 3 DOF hardware-in-the-loop simulator next door, featuring a hydraulic fixture for the seeker, an anechoic chamber with rf feeds, the whole thing run on SunOS -> Solaris hosts with Mercury parallel processor boards. It spoiled me with the X GUI, vi, not having to page memory in code, a nicer/faster development environment. So, I switched departments to play with the newer stuff.
It was one thing to *get to* go retro as a hobby, another to *have to* go retro to get the job done.
No doubt any new code would have to be in DoD Ada and nobody wants to do that!
I learned Ada in grad school in the 80s using the Booth book and it was interesting to use. First time I ran into the ability of having (instantiating) an array of processes. DOD projects were not such a hassle because of the programming language but rather because of the development standards, i.e. Mil Std 2167 (I think I vomited a little in my mouth).
We use the number of Vaxen, 11/34s, and as I recall the VAXes booted off of 11/03’s. And don’t get me started on the early DECUS conventions.
More likely test code like that on an 11/70 would have been written in assembly language and/or FORTRAN.
Ada was actually fun and kind of cool at first. I actually wrote code for the first two “production” Ada compilers in Ada. I wrote parts of the run-time environment (basically a stand-alone multi-tasking operating system) for a US Army contract, developed on a System 370 (as that’s where the prototype compiler ran) targeting and eventually rehosted to the VAX-11/780. Compiling the entire compiler on the 370 took about a week, luckily not necessary very often. Then another runtime and parts of a table-driven code optimizer for a US Air Force compiler hosted on the VAX-11/780 (using the previous compiler) this time targeting various 32 bit processors, including the Motorola 680xx and some weird military embedded processors. Both compilers were slow (but much faster than the prototype compiler), but very smart about recompiling only the modules/packages that had changed.
Ada was code could be difficult to write. Everything had to be carefully specified, including exact ranges for each numeric variable, and everything would get statically checked during compilation. Once you managed to get the code through compiler without errors, however, it was pretty much guaranteed to run, you just had to clean up any high level logic errors. I was, however, quite happy to switch over to C on Sun-2 workstations for my next few projects.
DEC Fortran IV was solid and efficient.
My automotive manufacturing employer retired the last PDP-11 running a dyno cell (Dunton, Essex) around 2014.
I used that dyno a few years before that, and it worked fine. Still did the job it had always done.
we had DEC PDP 11/33 11/34 11/44 and 11/70 Running RSTS. Learned “C” on those machines.
When I first got into computers in the very early 80s PDP-11s and VAXs were the thing of dreams. Of course that was when the Z-80, 8088, and 6502 where just becoming common and 68000s where called super micros.
i think the oldest computer i used was a vax. this was in the mid 90s mind you we were connecting to it from across town using old macs as terminals. this was a high school level computer science class. and you know how government agencies hate to throw away old hardware. apparently they were still using it for storing grades even at that time. it was not heavily used so they decided to use it to let students screw around with it. it was slow with so many students hitting it at once. they figured if we broke it they could retire it and replace it with something better. they probibly still have the thing.
I would have traded my muscle car for one of those……
Thanks for the article referenced above. Enjoyed reading it.
I too got started in computing in the early 80s. VAXs were the thing of dreams back then! And to be able to dial up into the VAX from home was great with the trusty DEC Rainbow! Didn’t have to fight for a terminal seat up at the college!
I have one of those 1/3 size front panels from ‘obsolescence guaranteed’ powered by a RPI4 with 8G onboard and running off a 500GB SSD…. SimH is fun to play with now and then. I don’t have the time to do a deep dive as DEC computing isn’t my passion, but enjoyed building it and it makes a nice light display! Also running some of the old OS’s is interesting. Of course the PI isn’t just running the simulator SimH … that would be a waste of the power on tap. I have it doing several server tasks that it is also doing like PI-Hole and redis and several other things. Still not fully utilizing the RPI4 of course. It’s basically idling…. Amazes me that the little RPI attached to the small front panel sitting on my desk is much more powerful than the ‘real’ PDP 11/70 that took a lot of floor space and power to run/use.
I noticed that too. It’s an easy mistake to make. ‘The first Unix’ =/= ‘Unix V1 (the first edition of Unix)’.
PDP-7 First Unix: http://www.linfo.org/pdp-7.html
PDP-11 Unix V1: https://www.tuhs.org/cgi-bin/utree.pl?file=V1
There’s nothing wrong with running ancient Unix on a PDP-11, but it’s really just Linux with less cruft.
But if you really want to experience the 1970s, you should run what most PDPs ran then: one of DEC’s commercial operating systems. RSTS, RSX, or RT-11. I think there were 3rd party non-Unix OSes for the 11 too, but memory is failing me.
Indeed there were PDP-11’s running other than DEC OS or Unix. Here is an magazine product announcement from 1975 for a machine based on a PDP-11/05 using a proprietary OS
http://www.surfacezero.com/g503/uploads/612/Business_Data_Systems_0-100_uses_PDP-11_05_12Mb_disc_ComputerDesign_magazine_October_1975.png
“C was originally first implemented on the DEC PDP-11 computer in -//1972//-. In 1978, Brian Kernighan and Dennis Ritchie produced the first publicly available description of C, now known as the K&R standard.”
C/C++/batch assembler 1 buggy 2 malware vulnerable and 3? software modules greater than one page of code inviolation of Boeing hardware engineers’ software standards under scrutiny at the FAA and NTSB. :) Used on F-35. On 737 MAX?
My first assembler course was for a virtual CPU whose code ran on a PDP11 thos would have been
.[posted too soon!] ..would have been ~1979-80 or so.
We had 11/23’s. This was in 85. DOD contractors aka Beltway Bandits. We even had Radio Shack and Amiga’s. Finally we ran some IBM S/34’s. It was fun working with all the wierd stuff I saw I didn’t list. The BBS world was rocking and rolling baby.