I've been building the PiDP-8/I kit from Obsolescence Guaranteed, a modern 2:3 scale replica of the 1968 PDP-8/I computer that runs in emulation on a Raspberry Pi. It's beautifully done and highly recommended.
While I was sorting parts and installing software I started thinking about how I was going to access my "new" machine. You can just SSH, telnet, or VNC into the Raspberry Pi running the show on the PiDP-8/I, but where's the fun in that. It makes me sad now that I eventually got rid of several serial terminals I had lying around (mostly Volker-Craig models since I live in Waterloo) because that would have been a great way to demo the 8I. When I went online looking for a vintage terminal I got a severe case of sticker shock. So I decided to do what I do and make a "front end" terminal reproduction for my soon to be completed PiDP-8/I.
Since the DEC VT100 was the gold standard for serial terminals in the early years, that's what I based my design on, and since it will be a driver for a 2:3 scale PDP-8/I, l scaled my design accordingly.
I did not make a true replica VT100. In fact I did not even make a real serial terminal (but you could). I wanted to make something that is clearly a VT100 derivative as close as possible in look, but sourced with modern components. So for instance it will have an LCD screen disguised as a CRT, and the 2:3 scale precludes having a full sized keyboard with number pad like the original.
On the journey to building my PiDP-8/I "front end" I realized that my VT100 reproduction could also be reimagined as a funky mini arcade console, or even a cool stand alone desktop machine. And yes a serial terminal implementation is not out of the question.
So let's get on with it.
Supplies:In addition to the 3D printed parts you will need:
- 1 - PIM372 8 inch 1024x768 XGA display (Digi-Key part number 1778-1225-ND).
- 1 - MOTOSPEED CK61 60% Mechanical Keyboard Portable 61 Keys RGB LED Backlit Type-C USB Wired Office/Gaming Keyboard (Amazon). Not required if you are only building an arcade machine.
- 1 - SJJX Zero Delay Arcade DIY Kit Parts USB Encoder to PC Joystick 5Pin Rocker + 10pcs Black Push Buttons 822a Black (Amazon). Not required unless you are building the arcade machine.
- 1 - Lemeng 1FT Flat Slim High Speed HDMI Extension Cable A male to A male Cord (Amazon). Only required for arcade and desktop machines.
The Model
I managed to find a VT101 Video Terminal User Guide online, and basically, for someone that often does reproductions of artifacts that they can't actually afford to buy, struck gold.
Figure 6-1 is all I need to create a suitably scaled VT100 3D model as seen above.
Preparing to Print
Now came the task of printing the model. Even at 2:3 scale this is by far the largest thing that I have ever 3D printed. For my Prusa MK3S, this meant slicing the keyboard model into 2 parts, and the terminal body into 12 separate pieces. All the parts are rather large, barely fit onto my print bed, and took 14-18 hours each to print. Oh ya, and I burned through two 1Kg spools of white filament!
I used the Microsoft 3D Builder software to slice up the models. It's easy to use and not only does a great job of slicing a model, but will repair any model issues as well.
Printing Tips
Printing such large pieces requires some extra care especially with respect to bed adhesion. I printed all of the parts using a 5 mm/sec first layer speed, which will add hours to the print, but for me was worth it since the prints were taking so long anyway and failure was not an option. Also all parts were printed with a 5 mm brim. Other print settings:
Print Resolution:.2 mm
Infill: 10%
Filament: AMZ3D PLA
Notes: Print the parts in their default orientation. Most parts can be printed without supports. Use your discretion here. I have included the STL files for the complete models and for the various sliced parts. Depending on the size of your print bed choose the largest slices that will fit on your print bed.
Step 2: Assemble the Terminal BodyAfter ten days of non-stop printing I was finally able to put together the terminal body. I used an E6000 adhesive to join the parts together. I like E6000 for this job because it has a fairly long work time of 10 minutes or more. This allows you to precisely align the pieces before they set. Take your time with this step as a small misalignment of the first few pieces will get worse as you add more. When positioned I used blue painters tape to keep the parts together and in place then allowed the glue to set for 24 hours.
There are STL files for some braces to reinforce the seams on the inside bottom and back of the terminal. There is also a back plate with the oval hole to install.
The logo was printed in multiple colors by pausing the print and switching filaments. It should be noted that the log was printed full size because at 2:3 scale it was too small to print with a.4 mm nozzle.
Step 3: Assemble the KeyboardWhen I scaled down the keyboard frame and measured, I found that at most I had an area of 295 x 110 mm to fit the actual keyboard. Yikes! So I began my quest for a suitable keyboard for this project. Eventually I found the MOTOSPEED CK61.
At 290 x 100 mm, the CK61 just fit into my design. It was well reviewed and reasonably priced enough that I could afford to use it for this project. I ordered the version with the "Blue Switch" which I assumed were Cherry MX BLUE (or clones) and in fact turned out to be nice and "clicky". The more conventional staggered layout is definitely a better look for this reproduction. I knew that I would never find a keyboard with a number pad that would fit, so I feel that this keyboard is a reasonable choice.
The keyboard frame was printed in two pieces, glued together, and reinforced with the cross piece you can see in the photo above. The cross piece also supports the CK61 at the proper height. On the other photo above the finished keyboard.
Step 4: Prepare the DisplayI was lucky enough to find the perfect LCD display for this project. The PIM372 (Digi-Key part number 1778-1225-ND), is an 8 inch 1024x768 XGA display. The optimal size for a 2:3 scaled down display for this project is about 168 x 126 mm. Well the viewing area for this display is 165 x 124 mm. It doesn't get much better than that.
The Screen Frame has been designed to look like the original VT100 CRT frame on the front and hold the PIM372 securely on back.
I printed a carrier for the driver board (Display PCB Holder) and used two sided tape to hold the PCB in place. Then I attached the carrier with PCB to the back of the display (also with two sided tape). I mounted the display onto the frame with painters tape. Also note that I added a 90 degree HDMI “elbow “ so that the cable would go straight out the back.
Step 5: Attach to the PiDP-8/IAt this point you should have everything need to attach this reproduction to the PiPD-8/I. What we have so far is essentially just a 3D printed enclosure for the monitor and keyboard that will be connected to the Pi in the PiDP-8/I.
Snap the Screen Frame with display to the front of the Terminal. Run an HDMI cable from the VT100 display to the Raspberry Pi in the PiDP-8/I. Similarly attach the keyboard to the USB connector on the Pi. Add the Top Cover onto the Terminal and voila you have a PDP-8/I running OS/8 with a "terminal" connected.
I might have stopped there having accomplished my original goal, but I got it in my head that the scaled VT100 reproduction would make a pretty funky and unique mini arcade console. So read on.
Step 6: Assemble the "Gamepad" KeyboardI purchased a DIY Arcade Kit with a USB Encoder.
I designed a new VT100 style keyboard frame along with a top plate to hold the controls in place.
The keyboard frame was printed in two pieces glued together with the help of some braces.
I mounted the joystick in a frame printed on the bottom of the top plate and held it in place with some printed "tabs". The longer tabs also join the two top plate pieces together. Wiring is pretty straight forward as the kit comes with a USB interface board and all the cables necessary to build a working arcade console. I mounted the USB board to the side of the keyboard frame with (you guessed it) two sided tape.
The top plate then slides into the keyboard frame.
Step 7: Make a Mini Arcade ConsoleI had an ancient Raspberry Pi B laying around which should be OK for the older classic arcade games that I like. I added it to the terminal body (more two sided tape) and connected it to the display with a short flexible HDMI cable.
The black cable is the USB connection to the arcade controls, and the two grey cables are power to the Pi and the display.
I flashed the SD card with the RetroPie image using the tutorial on the RetroPie Docs site and booted everything up. After configuring the arcade controls it all works really well.
This configuration is similar to the Mini Arcade except:
- I plugged in the keyboard to the Pi instead of the arcade controls.
- I installed a Raspbian image on the SD card. I actually have this setup so that I can switch between RetroPie and the Pixel desktop.
- I added a wireless mouse.
Now at this point you could add any software you like. I could see this VT100 Reproduction running all of your home automation for instance. Use you imagination.
Step 9: What If I Really Want an RS-232 Terminal?I didn't have any cool serial devices to connect to, or the bandwidth to try this out, but it looks like it would be pretty straight forward to purchase an RS-232 Serial HAT for the Raspberry Pi like the one pictured above, and run a terminal program like minicom to accomplish this.
Here is a great tutorial that describes how to do this in detail, Raspberry Pi Dumb Terminal.
Step 10: Wrapping UpSo I started this journey wanting to build something that I could use as a "front-end" when showing off Oscar Vermeulen's wonderful PiDP-8/I replica to my maker mates. The iconic DEC VT100, despite not quite being era authentic, fits the bill nicely. They look great together.
Along the way I realized there was more that could be done with this cool form factor and ended up with additional stand alone mini arcade and desktop configurations. It's great when a single idea can inspire multiple interesting results.
Comments