Obsolescence Guaranteed
Recommended: Gigatron
a computer w/o a microprocessor
Click to enlarge:
Switch skewer - switches have their hinges (top right) removed and are strung on the brass rod. Note the two tools you cannot do without.
How-To: watch in full screen mode for details
Switch parts - simple & robust, can't break them.
Tumbler should be seated as in left-hand switch
Painting can be done after completing the kit. Use masking tape to protect the switches that need to remain white.This shows the S5040-Y40R colour - slightly lighter than it should be, because this picture was taken after just two coats of paint. You need three.
Click to enlarge:
View full-screen for a way to solder the LEDs quickly, and precisely aligned in neat rows.
Click to enlarge:
Mounted on PCB. Note the slightly uneven spacing between switches. This is OK, you will not notice once everything is done. Just make sure they are even vertically, and not slightly rotated up or down.
Click to enlarge:
The serial port on the left of the PCB: you can ignore the TX/RX pins and just use the port to hook up any 5V power supply as an alternative to the Pi's standard micro-USB power cable.
Building Instructions (for the 2015 version)
Please go here for the new 2016 kit version)
Building the PiDP should take about 5-6 hours. Tools required:
-
Soldering iron, side cutter, Phillips screwdriver with 2mm shaft (exactly 2mm)
-
Black tape, and brown acrylic paint to paint 12 of the switches.
-
Drill, with drill bit of 3mm (for acrylic), 5mm and 10mm (for making slots in case)
-
Optional: multimeter to check switches before they're soldered in
Parts list
In the kit:
-
PCB, case, acrylic front panel
-
26 switches & 26 diodes (4148 or similar)
-
2 wooden mount blocks to fit PCB in case
-
1 brass rod, 26-27cm length, 2mm diameter
-
1 40-pin extra-height Pi connector
-
89 yellow 5mm LEDs
-
1 UDN2981A IC
-
12 resistors (390 ohm), 3 resistors (1K or 820 ohm)
-
2 M3*30mm screws to mount front panel
-
7 M3*9.5mm screws: 3 to fix blocks to case back,
plus 4 to mount PCB on blocks) -
3 M2.5 18mm spacers + 3 bolts + 3 6mm screws
to mount Raspberry Pi to PCB
Also, you'll need to supply your own Raspberry Pi (model A+, B+ or 2); and 8GB or larger SD card. Recommended extras: 4-port USB hub (unpowered); Micro USB WiFi adapter.
Word of explanation upfront: the PiDP can be built in two variants, standard and modified.
-
As standard, any Raspberry Pi Model A+, B+ or 2 can be used. You use ssh over Wifi and Ethernet (or the HDMI monitor) as a terminal for the PDP-8, but not the old-fashioned serial port. That's probably fine for most users.
-
Optional modification: enable the serial port. Do this, if at all, after completing the standard kit. Most builders so far have not bothered with this, so you may ignore the Serial Port Mod altogether.
Steps: (1) remove 2 resistors from the Pi, (2) add 2 resistors to the PiDP circuit board, (3) change a PCB jumper setting and (4) update the pidp8 software. See the end of this page. Not especially complicated, but most people will prefer not to modify their Pi. It has an attraction, though: a USB-to-TTL-Serial cable lets your laptop be both power source and serial terminal for the PiDP. Do the modification after you've got the PiDP up and running, so you know everything works.
1. Prepare & test the Pi
-
Download and save the latest Pi Raspbian image (link) on an SD card. On Windows, use Win32diskimager for this. Boot the Pi to see if it works, and configure it to your liking.
Required: get the internet connection working (either through Ethernet or WiFi).
-
On your PC, download the PiDP software from the 'Details page' (link) and save it on a USB stick.
-
On the Pi, type startx (because only in the GUI are USB sticks auto-mounted), insert the USB stick, and install the PiDP software in /opt/pidp8. See the PiDP-8 User Manual (link) for details, but in short:
-
cd /opt; sudo tar -xvf /media/usb0/<name of file on USB stick>
-
sudo make in /opt/pidp8/src and sudo make in /opt/pidp8/src/scanswitch.
-
Run the install script: sudo /opt/pidp8/install/pidp8-install.sh. Note that this requires downloading packages, and thus an internet connection.
Minor Oops: Ignore the warning about a missing foo directory (July 10th).
-
-
Reboot the Pi. The PDP-8 terminal should come up straight after you log in, with OS/8 running. Even though the physical front panel is not attached yet.
2. Prepare the switches (not necessary for 2016 version)
To ensure the switches are aligned in a regular row, the strongly recommended route is to remove the hinge pin from each switch, and then string all switches on the supplied brass rod - called the switch skewer from here on. Just soldering the switches on the PCB one-by-one without the rod can leave them mounted a bit irregularly.
Making the Switch Skewer:
The brass bar has one end that's smooth, and one end that's cut off more roughly. Slide the switches on to the bar from the smooth end, one by one. See the video to the left.
Use a side cutter to snap off one of the flanges (end bits) of a switch's hinge. Pick the largest flange, it's the easiest to cut. Half-cut the flange with a side cutter, then make the final snap-off with the cutter turned 90 degrees. That makes a round(ish) cut, which helps when pushing out the pin.
-
If the cut-off is on the right of the switch: Use a Phillips screwdriver with a diameter of exactly 2mm to pry & push out the hinge pin, so that the switch is stuck on your screwdriver.
Then press the screwdriver tightly against the brass bar and shove the switch onto the bar. -
If the cut-off is on the left of the switch: Use the screwdriver to press the hinge about 1mm into the switch. With the hinge pin loosened up by this, press the switch onto the brass bar.
If a switch happens to fall apart during the process:
These switches are of an very simple design, you absolutely can't break them, the worst you can do is not mount them correctly. Here's how to put a switch back together:
-
Inside the switch base is a metal tumbler. Take care that it sits in its intended position. If it has shifted out, a few taps will often be enough to let it fall back into place again. Also, make sure the spring and spring cap are firmly pressed into the switch cap. See the pictures.
-
Important: after having strung a switch onto the brass bar, flick it on/off. If it does not click (there's no ambiguity here: it either clicks OK, or is obviously bad), take it off and tap the metal tumbler into position, then remount on the brass rod. If you do not check for it now, it's much more work to fix it later on.
After mounting each of the 26 switches, check that it clicks normally. If not, you've dislodged the tumbler inside the switch. No problem, see the text just above. But fix it now!
Painting switches:
Paint the 12 relevant switches (see PiDP pictures to identify which ones) with a pinsel after you've completed the kit. 3-4 thin coats of paint, 6 hours of drying in-between. Use masking tape to protect the ones that should remain white. With a cotton swab, first clean the switch caps. You may also lightly sand down the switch tops or apply plastic paint primer. Not all that necessary, but adds strength. Then:
-
Easy option: The prototypes shown on many pictures were painted with acrylic colour 'Nut Brown' (RAL code 8011). Darker than the original, but (IMHO) looks good. Available everywhere.
-
Laborious option: ask a paint shop (any decent one can do this) to mix up an acrylic paint that matches the dark brown title bar of the acrylic panel. You can use the paint shop's colour book to pick the right colour, or mention colour code NCS S5040-Y40R. Buy either as spray paint (which can be pinseled on very well after spraying a bit of paint into a cup) or as normal acrylic paint. Satin (matte) is better than glossy. If the above colour code is not enough, here (link) is the label on my paint cans. <Note: if you have found the colour code expressed in other colour coding systems, let me know?>
Summary:
You now have an unpainted Switch Skewer, the paint job can be done later. Before going on, check the off (switch up) and on (switch down) position of each switch with a multimeter. Just in case.
3. Soldering parts to the PCB
A note before you start: The #1 reason people struggle with kits is bad solder. If you feel "you can't solder" it's likely because of this. Good solder flows and finds its spot itself, bad solder does not flow around parts but clings to your iron. It's a day and night difference. I happen to like Stannol HS10, but just google for other recommended brands (leaded, 0.5-1.0mm).
For all components, pause to think on which side of the PCB they should be soldered!
Just to make sure you do not solder the Raspberry Pi header into the footprint of the same-sized expansion port: mask that one off with tape before you start to avoid confusion.
Start with fitting the 26 diodes just above the switches. Mount them on the front side of the PCB. Proceed with the 3 resistors (1K) close to the row of diodes, also on front of panel, then the block of 12 resistors (390 ohm) above (on back of panel). For diodes, polarity matters: check that the black strip on the diode matches the stripe on its PCB footprint.
Now come the 89 LEDs. On front side, and polarity matters. The long legs must be on the left, closest to the Raspberry Pi. Just to leave no doubt: The short legs should be facing the end of the PCB which has the PiDP logo on it. The video to the left shows an efficient soldering technique: with one hand, soldering iron already wetted with a blob of solder, fix up one pin of each led, whilst holding the PCB with your other hand, pushing hard against the LED with a finger. This will make them fit straight. At the end, check the LEDs all sit straight, with polarity correct, then solder up their second pins.
-
Some LEDs may have a residual bit of plastic that prevents them from sitting flush. They wobble on the PCB. Put those LEDs aside (there's spare ones in the kit) or cut away the residual plastic.
-
Note that there are 2 extra LED footprints without footprint markings on the PCB. They are to be left empty, it's duly marked on the back of PCB. These LEDs are for a Straight 8 replica instead of an 8/I replica, and would require a different acrylic panel that may be produced for Straight 8 fans at some point in time.
Not much left to do now. Solder the 2981 IC on the back side of the board (check!) and make sure it sits with pin 1 facing down to the switches on the other side of the board. Lastly, solder in the 40-pin header that will connect to the Pi. Again, do not solder it into the footprint of the Expansion Connector, a mistake that's easily made. Solder 1 or 2 pins first, then check the connector sits exactly perpendicular to the PCB. Correct if needed, then solder up all the pins.
The 300 and 620 ohm resistors marked on the PCB must be left out (they're not included in the kit anyway) unless you enable the serial port (see last section on this page). Also, the jumper blocks J_COL1 and 2 can be left untouched.
4. Mounting Switch Skewer onto the PCB
Note: the 2016 version of the PiDP comes with "normal" switches that you can just solder in one by one. You can ignore this section. For the 2015 version, though:
Before you mount the skewer, click all the switches again to ensure they work.
Take the skewer and start pressing the leftmost switches into their PCB holes, massaging in switch after switch, working towards the rightmost switch. Then, press on each switch so that they all sit completely in to their PCB holes, and perpendicular to the PCB (not leaning left, right, or towards you). If some are not, you can move each switch a little bit in its PCB footprint (and on the brass rod) to get it straight. Strangely but crucially, it helps to flex the PCB and brass rod a little bit so switches shift and find their natural position on the brass rod.
Note: you will always have a slightly varying space between switches. That's OK. There is some play in the switch hinges anyway, and once the acrylic panel is put on, a .25mm difference in spacing between switches is not noticeable.
The most important part of this page follows now. Unsoldering the Skewer is more or less impossible, you have to solder the switches in a straight line the first time. Read carefully:
-
Fix the Skewer by soldering one pin of the left- and rightmost switch, ensuring that the switches are pushed in full and straight, not leaning forwards or backwards.
-
I recommend taking a break at this point, coming back to solder one pin on two other switches, somewhere in the middle of the skewer.
-
Now carefully check again that the row of switches does not lean forward or backward. Look along the skewer from close up: are the switches lined up straight, not slightly bulging in an arc? If not straight, reheat and adjust the 4 soldered switch positions to force the whole skewer into the right position.
-
If all is fine, go ahead and solder up all switches.
Finish up by covering the top and bottom copper mounting ends of the switches with a long stretch of black tape. Purely for cosmetic reasons. Use scissors to cut off the excess of tape (it'll be wider than necessary) below the switch row. Excess tape gets in the way once you mount it in the case. Use your side cutter to snip off the excess bit of brass rod to the left and right (leave no more than 2 mm on either side or the acrylic front panel will bump into it).
5. Checking and testing
Before pressing in the Raspberry Pi, check for solder bridges (shorts caused by solder blobs) and forgotten solder points (the #1 cause of problems). If all looks good, it's safe to mount the Pi. Use the three "nut-spacer-screw" sets to mount it firmly. With the side cutter, you will need to snip off about 1.5mm from the top end of the nylon spacer - it's a bit too tall. Also, you may notice that the Pi does not sink fully into its connector on the PiDP board. It looks like the connector is 0.5mm too short. That's OK though, do not worry. Power up the Pi (you should have done that once before mounting, to see if the Pi works at all). If you used the pidp8 install script, the PiDP front panel will light up after 40 seconds or so.
-
If you have a HDMI screen/USB keyboard plugged in, you'll see the normal Pi boot process.
-
If you use Ethernet, connect the PiDP (Pi Model B) to a PC with a normal Ethernet cable. Enable ICS mode on your PC (see PiDP manual). Then, follow instructions as per below--
-
If you use WiFi, power on, wait for 60 seconds, then run 'arp -a' on the PC's command line. This assumes you've got WiFi working on your Pi! Note the IP address of the Pi (listed as 'dynamic', top table) and use PuTTY to connect to that address.
Log in as user pi (default Raspbian password is raspberry). If you used the install-pidp8.sh script, the SimH emulator already runs and the front panel is lit up.
--> If the front panel does not light up, maybe the STOP switch was enabled? That disabled the PDP-8. Also, make sure the leftmost six switches are all off (pushed up). If the front panel still doesn't light up, see Troubleshooting Tips at the end of the page.
--> If the front panel lights up, flip the STOP switch down and up again. The blinking should stop. Press the leftmost 18 switches to their 'down' position (which is binary 1, or ON). Flip the LOAD_ADD switch. On the top line, all 18 LEDs should light up. By now, you've done enough checking to take the PiDP for a test drive. Once you're done testing, power down the PiDP by setting the Start & Sing_Inst switches, then toggle Sing_step, and wait 15 seconds. Power off.
6. Deciding on case slots...
You'll have to decide what slots to drill in the wooden case.
Power cable: two options.
-
Normally, a Raspberry Pi is powered from a micro USB cable. You'll need to drill a 8-10mm hole somewhere to get the micro-USB connector into the case. You may need to cut the cable sleeve off from the connector, to let the cable make a sharp 90 degree bend, or the cable won't fit well inside the case.
-
The alternative power option is to provide 5V and GND on the PiDP's serial port power pins. Then, you can drill a much smaller hole for a thinner cable obviously. The red and black pins from USB-to-TTL-Serial cables can be connected to provide power (leave the white and green wires unconnected unless you do the serial mod). Or snip off the end of a spare USB cable, and connect the 5V and GND wires. The PiDP can be powered from a laptop's USB port! For this option, drill a 5mm hole in the back of the case.
Then: any other slots you want/need?
-
Operate the PiDP with a Model A+ over WiFi? Plug in a micro WiFi USB dongle. No slots in case.
-
If you want to access the USB connector (for an external USB hub) with a Model A+, demands a small slot in the case side.
-
If you want to have access to all 4 USB & Ethernet connectors on a Model B+, drill a larger slot into the side.
-
Another slot on top could be made for the HDMI connector - or buy a 90 degrees angled HDMI adapter (make it 90 degrees backwards though). Then it can be led out through the back.
Use a drill to make slots the easy way. Start with a small hole and use increasingly large drill bits. That avoids stressing and potentially cracking the case. For oblong slots, drill two adjacent holes and carefully cut/file away the wood between them to create the oblong slot. For wider slots (to access the Model B+'s 4 USB and Ethernet ports), drill 4 holes and cut away the wood between them. A router is nicer than a drill for this purpose, if you have one. But, peace of mind message: If you are like me and potentially mess up on the woodwork, replacement cases can be provided rather cheaply :)
7. Mounting PCB and acrylic front panel into the case
There's two blocks of wood in the kit to mount the PiDP in its case. Slide the long block onto the PCB, just between the Pi connector and against (but not on to) the solder lugs of the switches.
-
Align the end of the block to the right side of the PCB (looking from the front side with the block behind the PCB). Then, let the block stick out 2mm from the PCB edge. See photo 1. This is needed to mount the acrylic.
-
On the other side (the left side, where the Pi is), you should leave 2mm room for the serial port connector. See photo 2.
-
Fix mount block onto PCB: use two 9.5mm screws in the screw mount holes of switch 1 and switch 26. See photo 3.
In summary: the mount block lies just above the switch solderlugs,
and should be shifted 2mm vis a vis the PCB.
You're on the page for
the old 2015 PiDP version,
are you sure you should
not go to the new
Building Instructions page?
Click to enlarge photos
Fit 1st mounting block so it sticks out 2mm on this side (needed for acrylic panel screws later on),
Across on the other side of the PCB, the block stops just before the serial port connector. Leave just enough room for the serial port header.
Two 9.5mm screws are used to fix the mount block to the PCB
Click to enlarge the pictures below:
Second mount block. Keep it 1 mm away from the 2981 IC. It matters.
PCB fits into the 'lip of the case. Make sure it's mounted with the switch mounts (below black tape) tightly against the case edge.
Case back with screws. Horizontal screws are 38mm from the case's bottom. The 3rd, top, screw is 95mm from the case's left side.
Mount front panel: drill 3mm holes at points X and Y. Drill through acrylic, through PCB underneath, into the wooden mount block. Location should be around spots X and Y, give or take 1 mm deviation.
Now, place the smaller mounting block perpendicular to it, alongside the 2981 IC (keep 1mm distance between IC and wooden block, important!) then use a screw in mount hole M5. You could add a screw for mount hole M7 but it's not really necessary. See picture.
Place the PCB-with-mounting-blocks into the case. The metal bits of the switches (covered up with black tape) should rest into the 'lip' of the case bottom, against the edge. Make sure that on the right side, the PCB's wooden mount block (the bit that protrudes 2mm out of the PCB) is pressed tightly against the right-hand inner wall of the case. Otherwise the right-hand screw that fixes the acrylic panel will have nothing to hold on to.
Keep the PCB in this location, and note the position of both mount blocks inside the case. Fix the wooden mount blocks to the case back with three 9.5mm screws from the outside of the case back.
-
Drill holes before putting in screws, or you'll risk cracking the case's back panel.
-
Whilst drilling the holes in the back panel and slightly into the mount blocks inside, press the PCB with mount blocks down against the bottom of the case, so the drill holes will keep the PCB assembly tighly against the bottom (and right hand side) of the case.
-
Keep holding the PCB and case without moving them. Now put in the screws, whilst you keep pressing the PCB/wooden mount assembly against the case bottom.
Because the wooden blocks are rather wide, the exact locations of the 3 screws in the back panel are not so critical. You'll 'hit' the wood blocks hidden inside the case as long as you keep roughly to the measurements in the photo to the left. The main challenge is to keep the PCB, on its mounting blocks, in the position of (1) hard against the case bottom, and (2) hard against the case's right-hand side.
Now mount the acrylic front panel:
-
Place the acrylic panel into the case. You might have to force it in before it clicks into position.
-
Check once more whether the PCB really is (1) flush against the case bottom, (2) flush against the right-hand inner wall of the case and (3) neatly horizontal. If not, remount the PCB.
-
Check if you can flick the front panel switches up and down without hitting the acrylic.
--> If not, then you've mounted the PCB too high - not tightly against the case bottom. You might have to either drill new holes in the back, because the old ones may just be slightly off and can't be corrected, or alternatively, remount the mount block on the PCB upside down and start again with fresh drill holes. Then, you do not need to drill new holes in the case back itself. -
Now drill two holes on the locations marked X and Y, straight through the acrylic, straight through the PCB, into the wooden mount underneath. You will not damage the PCB, because there's no electronic traces anywhere near where you are drilling. A 3mm hole is fine with the provided (sharp cutting) screws. Not with other screws. So, put in the two M3*30mm wood screws and that's it.
You are done.
-----------------------------------------------------------------------------------------------------------------------------------
Troubleshooting Tips:
The PCB is a very simple schematic. If a switch or LED does not work, it will be easy to trace down to a bad connection somewhere on the PCB. Likely problems:
-
A whole series of adjacent switches does not work.
This will be a bad connection between one of the three 'ROW' pins on the Pi connector and the middle pin of all of those problem switches. Use a multimeter to follow the schematic from connector ROW pin, through to one of the three resistors, to the middle pin of the switches. -
A single switch does not work.
This is indicative of a bad connection between the upper pin of a switch and its associated COLUMN pin on the Pi connector. Look at the schematic and use a multimeter to follow the connection from GPIO connector pin, through one of the 12 resistors, to the diode of the problem switch, to the switch's top pin. Also: check between top and middle pin of the switch to see if the switch itself works. If not, email me for the fixing procedure... it is unpleasant, as yet untried, but very feasible. -
A whole row of LEDs does not work. Similar to problem 1, but now look for the LEDROW pin to work from. Trace it to the IC's input pin, trace from the output pin towards the leftmost lead of the LED, and find the bad connection.
-
A single LED does not work. Similar to problem 2, there must be a bad connection between a COLUMN pin on the Pi header and the rightmost lead of the problem LED. Find & fix.
Debugging tool: you can flip GPIO pins on and off, without the pidp8 program, to debug problems. Install the wiringPi package, and use its gpio program. That allows you to set individual pins to output high, output low, or input. Simple test: set the gpio pin for Column 3 to Output Low. Set the gpio pin for ledRow 1 to Output High. Now, the 3rd led on the Program Counter should light up. (note: look at the PiDP schematic to identify the pin numbers for row and column pins).
Click to enlarge:
R23 and 24 are in the same place in Raspberry PI Model A+/B+ and 2. If you want a serial port, they need to be removed.
The J_COL1 and 2 jumper blocks: on both, cut the PCB trace between pins 1-2, and jumper pins 2-3.
Apologies: the cuts need to be on the other side of the board from where the markings are. So on the other side from the picture above. If you do it on the wrong side, no damage arises but beg your pardon.
Optional: enabling the serial port
Recommendation: do the serial port modification later on. If you do want a serial port, the problem that needed to be solved was the following: The Pi normally assigns two GPIO pins (14/15) for a classic serial port. Another two pins (3/4) are reserved for I2C interfacing, meaning they have troublesome pull-up resistors added in front of them. One way or the other, the PiDP needs 2 of the above 4 pins to blink its leds. So you have two options:
-
​Default (do nothing): the serial port is disabled and its pins 14/15 are repurposed for the PiDP.
-
Modified: the serial port is freed up.
-
You need to modify the Raspberry Pi by removing the SMD resistors R23 and R24.
-
Unsolder these SMD resistors, by pressing the soldering iron on the right-hand side of the resistor, hold it for 15 seconds and flick the resistor up, out and away.
-
Or just tear the resistors off with a side cutter and reflow the solder on their solder pads to clean up. You do need magifying glasses to inspect the result of your butchery.
-
-
On the PiDP board, look at the jumpers J_COL1 and 2 above the gpio connector. You need to cut the two traces between their pins 1 and 2 on the other side from the markings (see picture to the left). Use a sharp knife to cut. Check with a multimeter that the connections between pins 1 and 2 is indeed cut.
-
On both J_COL1 and J_COL2, solder jumper wires between their pins 2 and 3.
-
This frees up gpio pins 14 and 15 for the serial port. Solder 300 and 620 ohm resistors (see optional parts list on top of the page, their value is not very critical but one must be twice the value of the other), and a pin header for the serial port next to them. The resistors make the serial port 5V tolerant, even though the Pi works on 3.3V. Note these resistors must NOT be soldered in if you do not enable the serial port!
-
Note:
-
Use a 5V TTL Serial to USB cable ($5 or so) to connect with a PC.
The pinout of the serial port is compatible with what's used on the Arduino Pro Mini. So it has a 5V power supply pin, GND, RX and TX. You can power the PiDP with such a cable. -
Using a TTL Serial to RS-232 converter ($2 or so) will allow you to hook up a serial terminal.
-
Warning: take extreme care when connecting the serial cable. Plug it in the wrong way and you risk damage to the Pi. Only the RX pin is protected from 5V signals.
-
To let the PiDP operate correctly, recompile the source (run 'sudo make' in /opt/pidp8/src) with the #define SERIAL_SETUP line in gpio.c enabled - no longer commented out. Also, re-enable the serial port through raspi-config's Advanced settings.
PiDP-8/I: RECREATING THE PDP-8/I
CELEBRATING 50 YEARS OF PROGRAMMED DATA PROCESSING