PiDP-8/I – remaking the PDP-8/I

We often see really fantastic looking retro builds that are one-offs; so you can’t replicate them at home without a lot of artistic and mechanical skill. So we were really pleased when Oscar Vermeulen emailed us yesterday about the project he’s been working on. As well as having made something that’s both functional and utterly desirable, he’s had the smarts to make a number of kits available to buy. This is it: a simply beautiful replica of the PDP-8/I.

pdp8

For comparison, here’s the original, courtesy of VintageComputer.net.

OLYMPUS DIGITAL CAMERA

Even I’m not old enough to remember these first hand. The PDP-8 was the first computer that came in at less than the size of a house to find commercial success. The original PDP-8, launched in 1965, was around the size of a fridge and weighed about 160lbs (with 60lbs of that weight being the power supply). Subsequent generations like the PDP-8/I were smaller, and could be used on a desktop or rack-mounted. DEC made and sold more than 50,000 PDP-8s altogether, before they were displaced from the consumer computing market by things that look more like the desktop computers we use today, like the Apple II and IBM’s first PCs. (If you’re interested in digging some more into the history of the PDP series, there’s a fascinating article from the Computer History Museum in Silicon Valley you can read, along with lots of detail about architecture and programming the machines on Wikipedia.)

The Raspberry Pi version is a pretty faithful replica. Here’s Oscar to explain more.

Oscar’s replica is open-source hardware, so if you do have the wherewithal to make your own, everything is made available for you to do just that. He says:

From a hardware perspective, the PiDP is just a frontpanel add-on for a Raspberry PI. In the hardware section below, the technical details of the front panel are explained. In fact, the front panel could just as easily be driven by any microcontroller, it only lights the leds and scans the switch positions.

From a software perspective, the PiDP is just a Raspberry Pi, running the Raspbian flavour of Linux, which automatically logs in to the SimH emulator. SimH is modified to drive the front panel in the appropriate manner – meaning it has instructions added to reflect the state of the PDP-8 CPU registers through the leds, and responds to the switch settings.

It’s a neat solution that looks fantastic, and is faithful to the original hardware.

Front panel from behind

Front panel from behind

To get your hands on your own, head over to Obsolescence Guaranteed, Oscar’s website, and join the mailing list; the next batch of kits is going out in October.

35 comments

Pete Lomas avatar

Inspired – the first computer I programmed and got me into computers (wipes tears from eye ;-) and Liz – yes I am old enough! However, I don’t think I could remember the boot loader hand key sequence off the top of my head?

Does the Pi pretend it has a tape reader so you can load the old 1/5 user Basic or Fortran.

All we need now is an ASR33 (Liz – you won’t remember that either)?

Great project.
Cheers
Pete

ukscone avatar

There is a nice PIC based circuit floating around on the web that I keep building on breadboard and one day will make the PCB for that with a bit of s/w skills can be made to handle most of the early magnetic tape formats and i’ve seen a few raspi/arduino based paper tape readers over the years

fnord avatar

The ASR-33 is better left as a fond memory. I used one a couple of years ago (yes, they still exist in museums and such) and they are not nice to work with at all. The Model 35 was much nicer (and much more expensive), but I still can’t understand how people tolerated the noise..

Tom Lake avatar

I not only remember the ASR 33, I *own* one! I can’t wait for the December run of the PDP-8i clone so I can run my TTY with it.

Ken Maciver avatar

We had one of these running the Animal Food factoy I worked in. It held the recipes and production schedule with a PLC unit controlling the machines in the factory. Ahh the joy of Octal..

richard mullens avatar

Hmm, I used to toggle in the RIM loader, then read in the BIN loader from paper tape.

Awesome project – though a PDP-11 would be more to my taste.

Gary Stewart avatar

I’ve seen this project before on other web sites but it is nice to see it here.

A minor correction to the blog.

PDP 8’s were not displaced in the “consumer” market because they were never in the consumer market (they were very expensive) although I would be surprised if a few of them didn’t end up in “consumer” hands. They were displaced in the commercial market by the 16 bit PDP 11. At the company were I had my first electronics job in the mid 70’s (Mostek), PDP 11’s were used almost exclusively for testing the semiconductor dynamic RAM memories that they manufactured.

whheydt avatar

The PDP-8 was hardly the first “non-house sized” commercial computer, The quite successful IBM 1401 and the IBM 1620 (arguably the first scientific/engineering workstation) both came out in the late 1950s.

What DEC accomplished (starting with the PDP-1) was introducing the minicomputer.

Derek Board avatar

Wow, my first hands on experience of computing was on the mighty PDP 8/L (the DEC Lab 8 which had an A to D capability) at the Safety Lab of Vauxhall Motors Millbrook Proving Ground. I can’t remember the RIM loader (Read In Mode?) either but it had to be keyed in every time before we ran the analysis of the safety tests we worked on back in 1971, including the earliest air bag tests. “Our” PDP 8 had the optional 4k bits of extra memory, a full 19″ rack of hand wired copper cores for each bit! Brings tears to my eyes! (and my ears still ring from the paper tape punch which output data for the mainframe analysis…)

Liz Upton avatar

Heh – I grew up just around the corner from Millbrook! (With a BBC Micro…)

Leonard Samuelson avatar

Heh… The PDP-8/L was my first machine too, also with the extra memory, A/D and D/A. We had an H-P XY recorder, and I still have several plots from it.

The machine was purchased and generally used for data analysis and reporting, but it could do the occasional experiment too.

We built a nice little human-factors experiment setup for the grad students: Drive an analog scope (X-Y mode) to present a 5×8 character, then measure how time before human subject reacted by pressing one of several buttons.

Shortly after I got started with it, the university bought a 1.67 Mword RK-05 (must have been a first version, the drive went to 5 Mbytes soon thereafter…).

That 8/I project is beautifully done.

Homer L. Hazel avatar

I am tempted to buy one of these kits just for nostalgia. My CP/M machine had switches that looked like those. As I remember, I only had 16. You know, 64K is so limited. When I first built it, I had to patch the loader through the switches until I got a new eprom burned. That was while using just a 4k static memory board. When I bought and built and installed a 64k dynamic memory card, the front panel switches would no longer work. The lights and displays worked just fine though. I miss the blinking front panel.

wallyware avatar

Ugh! This brought back aural flashbacks of impact printers at the school’s remote computer labs.

Niall Saunders avatar

… Once upon a time, just before that fantastic Summer of ’76, a huge truck wheezed into the playground of my secondary school and a team of Capstan-smoking, tan-lab-coated, ‘technicians’ wheeled huge boxes of equipment up endless flights of stairs and down a maze of twisty little corridors, into the hallowed chambers of Ms Marioni – our beloved Maths Teacher.
From these endless cases, they proceeded to construct a fantastical machine – thousands of switches, millions of lights covers every surface,and miles of thick, writhing, cables spewed from the guts of one box into the gaping innards of another.
With almost no ceremony whatsoever, huge Draculean isolators were slammed shut, Frankenteinian pops and crackles turned the atmosphere blue with electricity – and most of the overhead fluorescent tubes failed spontaneously (many of which were doomed never towork again).
“Right Children, who’s first?” trilled Ms Marioni.
In the surge forward, children were crushed underfoot, their precious bundles of pencil-darkened ‘code cards’ hurled into an airborne shower more reminiscent of an Apollo parade through the streets of New York than a dusty classroom on a hot summer’s afternoon.
The wise amongst us had held back – just enough to keep our footing and – more importantly – our precious pile of cards. Now, it was our turn, more precisely, MY turn.
I carefully placed my 100mm thick bundle of cards in the beast’s hopper, replaced the weighted lid, and was given permission to press the ‘Load’ button. The beast devoured my cards, angrily and noisily. I could only imagine the spinning cogs and gears, the flying rubber belts and some insanely dangerous device that could sharpen an entire pencil into a pile of shavings in less than a second.
What actually then surprised me was the gentle ‘ting’ of a bicycle bell that accompanied a flashing light telling everyone that the machine was ‘ready’.
Everything, and everyone, had gone quiet, save for the low growling of the beast. On command, I carefully pressed the green ‘Run’ button.
The contented growl was barely disturbed as the green ‘Ready’ lamp extinguished – only to be replaced by a dazzlingly bright, horrifyingly red, ‘Error’ lamp.
In abject misery, and with tears of unfathomable grief, knowing that I would now never know what the sum of all the numbers from 1 to 1 million would be, I heard Ms Marioni utter an unforgettable phrase, “Never mind Niall, you can try again next year when the machine comes back again.”

jdb avatar

This’ll make you feel old then:

On a Pi 1:

Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> total = 0
>>> for i in range (1, 1000000):
… total += i

; 8 seconds later…
>>> print (total)
499999500000

paeryn avatar

Isn’t that 1,000,000 too low? range() doesn’t include the last number.
It’s even quicker to just do the maths :-
(1,000,000 + 1) * 1,000,000 / 2 = 500,000,500,000

jdb avatar

:o)

Niall Saunders avatar

. . . . which is just about how long, in seconds, I think The Beast wold have taken to run the code itself.

zeta avatar

Just a typo : the Wikipedia link directs to the Computer History website.

Liz Upton avatar

Thank you! That’s fixed.

zeta avatar

You’re welcome. It is always a pleasure to read this blog, so if I can help ! ;)

Doug Huggard avatar

This brings back memories. I did assembly language programming on the 8/I. I seem to remember that the “I” stood for Integrated Circuit. Previous versions of the PDP-8 used transistors. Ah, the good old days.

Paul Webster avatar

great.
I remember seeing blog post about this at the start of the year.

My first job was working on PDP 11/24 while we waited for our set of 11/44 to arrive.
It felt like going back years when we implemented on the customer’s 11/70 in Switzerland and we had to load in the start address via the switched like in the pictures,
I remember doing a sysgen and disabling the “idle lights” sequence because we did not want it to looks like the system was not working hard.

Tobias K avatar

I forgot to mention (see my comment below) that the PDP-12 also had an audio output, so we turned up the built-in speaker that was affected heavily by the virtually non-shielded processor circuitry and so you got amusing “electronic music” that was created by whatever instructions were being run. It got to the point that you could listen to the “music” in an adjacent room and know exactly where you were in the program being executed simply by the sounds (such as “here comes the matrix inversion” or “now it’s doing the color correction transformations”).

Tobias K avatar

Wow… this brings back memories. I had the opportunity to work for a number of years with the poor cousin of the PDP-8, the PDP-12, which was set up more to provide a number of analog I/O ports, plus had a console screen built into it that could be used to write to and was even possible to address as small dots. I remember writing a lunar landing program on it that showed your decent in stages as you decided how much fuel to convert to thrust. If you crashed with a high-enough impact velocity, a dust cloud of dots appeared at the crash site. :-)

We used it with an ASR-33 teletype and paper tape reader to input data, much of which after pre-processing, was punched out through an interface on an IBM card punch (which certainly was better than doing by hand). Clever setup, eh? Programs were loaded from LINCtapes (go Google that for fun). It ran FOCAL (a BASIC-like language) and Fortran II. As students, we always got the leftover time slots since the faculty and staff had first choice, so many long late nights or early mornings were spent on that dark and light green machine.

It was eventually replaced with a PDP-11/34, but the PDP-12 with its 36-bit architecture (3 x 12-bit bytes) was certainly unique and occupies a memorable spot in my past.

Brad Marriner avatar

i was a field tech for Digital Equip in the 80s and the PDP * was the Mech i work on and the PDP15 .. all PDP 8s

Paul Webster avatar

oh …. I have a PDP 11/83 in the hall … usually with a vase of flowers and a table cloth over it. Visitors have no idea what is lurking below,

Liz Upton avatar

O_O

Dion Thomas avatar

The first mini I ever saw was the predecessor, PDP-5. This was used circa 1965 for experiment data collection on the Rutherford Lab Nimrod synchrotron. 4K core storage, paper tape and teletype I/O. Originally no tape drives.
Used 2K for data storage, 2K for operating system (every bit used). On completion an output program overwrote the OS before we could get the data out.

Neil avatar

Ah, paper tape. That reminds me: I was a raw graduate. A colleague and I cross-assembled a rudimentary operating system for an 8085 system from Intel-provided source code using a PDP-11/40 cross-assembler written in RSTS-E BASIC. The original BASIC was for an 8080 cross-assembler, so I had to add support for the extra 8085 opcodes, and while I was at it, I also added support for symbolic address arithmetic.

We punched the resulting Intel-Hex-formatted binary to paper tape on an ASR-33 teletype. We had no PROM programmer, so we drove the paper tape, and a blank 2716, to the home office of an associate who had an Intellec MDS equipped with an EPROM programmer.

How did we read in the paper tape? Well, he had concocted a paper tape reader from a ten-channel photodiode array. It was mounted on a block of pine, and used hand-made wire staples to guide the tape across the diode array.Because the drive hole was smaller than the data holes, it worked beautifully as a clock.

This Heath Robinson paper tape reader was wired to a parallel I/O port on the MDS. We “burned” the 2716, plugged it into to our prototype system and away it went. Magic.

Neil avatar

(Addendum) It never ceases to amaze me that we used sophisticated minis like the PDP-11 to cross assemble code for simplistic micros like the 6800 and the 8085. The seventies and eighties were a bizarre period of re-expression of existing knowledge in LSI, rather than MSI. I don’t think anything was achieved except to reduce the price and thereby bring the technology within reach of the man on the street. Many of the early microcomputers flaunted (as new) features which had been a part of mainstream computing for many years. Architecturally, compared with many of the mainframes and minis that preceded it, the 8086 was a complete abomination. It wasn’t until micros finally cracked the 32-bit barrier that real progress resumed.

Chromatix avatar

Frankly, the 8086 and its descendants are *still* complete abominations. You should see the opcode tree of AMD64 these days – there’s a limitation of 15 bytes per instruction that is actually *relevant*.

It’s actually a little surprising that the same CISC-to-RISC translation trick was never applied to 68K, a much cleaner ISA than x86. In the event, all relevant 68K machines were superseded by PowerPC machines.

David Dyer-Bennet avatar

Oh, cool! An 8/I was the first of DEC’s computers I programmed, and the first computer that presented binary version of its internals (the IBM 1620 had instructions that were 12 decimal digits long, two digits of op-code and two addresses of 5 digits each; each of those “digits” was represented by 6 bits of core memory (including parity), but one didn’t think about binary beyond decoding console lights to get the value of digits, and the 1401 was similar but a bit more complicated since each memory location could hold an alphanumeric character).

No, I don’t remember the RIM loader code (though it’s readable in my screen wallpaper). I do remember at least three of the “clear-core” instructions for the IBM 1620 — one used those a LOT more often.

David Dyer-Bennet avatar

(Um, I mean it’s the first computer *I* used that presented a binary view; obviously there were earlier ones.)

David avatar

You lot were lucky to have tape. When I were a lad all we had were holes.

Comments are closed