Working RK05j removable disk drive replica
        for the PiDP-11/70
scaled RK05 cartridge

Introduction

After playing for a while with the PiDP-11/70, I wanted more "look & feel" and more "the experience" of using a real PDP-11/70 system. The choice for an add-on peripheral was quickly made, because I always liked the looks of the RK05 diks drive.
Two models of the RK05 disk drive exist(ed), the one with a fixed disk (RK05f), and the one with a removable disk (RK05j or RK05). For both models a front panel must be designed, including the two switches and eight indicator lights. That's all for the RK05f. But for the RK05j a working front door has to be designed, and not least an RK05 cartridge has to be made for a complete experience of swapping the disk cartridge, just like you do on the real thing!
The major objects to realize a functional RK05 disk drive are the following.


RK05j front panel and drive box

The front panel is the mounting base for the door, the switches and the indicator lights. For that reason I decided that the front panel must be made of metal, not of some sort of plastic. Looking at a real RK05 drive, you see that there are a lot of "features" on the front panel, such as lines, text, drive number, the D|I|G|IT|A|L logo, and a row of ventilation slits. As "looks" define the success of the replica, I decided to draw the front panel using Front Panel Express. The result is great, but it comes at a cost ... every item, drilled hole, engraved line, text, etc, costs ten to fifty Euro cents, and it all adds up. I already had the D|I|G|IT|A|L logo from the "pedestal PDP8i" project, otherwise this front panel would have been really expensive. On the rear side of the front panel are several M3 threaded holes which are used to mount the front door and inner box for the cartridge, and the outer box enclosure.

RK05 box front view RK05 box rear view
front view of the RK05 box rear view of the RK05 box

The aluminum sides walls and bottom plate are attached to the front panel using "L" angled aluminum profiles. The bottom of the cartridge "bay" is also mounted to the front panel using an "L" profile, and supported at the rear side using "L" profiles that are mounted on the side walls.
As you can see in the rear view, two small "L" profiles are also mounted at the left and right side of the door opening. These profiles are used to mount the cartridge "bay" left and right side walls, and have a filed "D" shape notch right behind the rear side of the front panel. These notches are the pivot points for the front door.


Front panel switches and indicator lights

On the front panel are two switches. LOAD/RUN is a standard ON/OFF switch, WT PROT is a momentary switch. The switches are mounted on a separate aluminum bracket. I used Front Panel Express to design the bracket. The aluminum bracket is mounted on the rear side of the front panel using M3 screws and stand-offs so that the switches are leveled with the front panel.

white indicator lens The front panel has 8 indicator lights, one red and 7 "white" lenses. In the picture at the right side is a white lens of the real RK05 drive, and a 3D printed lens. The rear side of this lens has an inner diameter of 3 mm, so that a 3 mm LED fits snug in the lens.

I decided to make a small PCB on which the LEDs are mounted. On this PCB is also the interface to the PiDP-11/70 I2C connection of the Raspberry Pi. The interface uses one MCP23017 which has 16 digital I/O pins. All 16 I/O pins are used! 7 are needed for the indicator lights (PWR is connected directly to the power supply), 2 are needed for the two front panel switches, 2 are used to define the drive number (the interface hardware supports 4 drives), 3 are used to define the disk file container (see RK05 data cartridge), one I/O pin is used to detect whether the front door is opened or closed, and the last I/O pin is used to control the door lock solenoid.
RK05 interface PCB
The assembly of the PCB is straight-forward.
Note that the LEDs are soldered at the rear side of the PCB!
After all components (except LEDs) are soldered, put the LEDs on the PCB at the rear side, but do *not* solder the leads!
Install the indicator lenses on the front panel (make sure that the red lens is the FAULT indicator).
Then put the front panel with the lenses on a soft cloth. Now you can install the PCB on the rear side of the front panel using stand-offs and M3 screws of appropriate length. Push the LEDs by the leads into the rear opening of the lenses (make sure that the red LED is the FAULT indicator).
Check that the lenses are snug against the front panel, aligned and horizontally positioned, then use hot glue at the rear side to fix the lenses in their position. Finally, solder the leads of the 8 LEDs on the PCB.

interface PCB and switches
front panel rear side with interface PCB, LEDs, lenses and switches mounted


Front panel door and locking mechanism

The construction of the front door is "easy" in principle. The door consists of two aluminum side plates (2 mm thick), three 8 mm square aluminum rods, and a piece of "smoke grey" plexiglass (3 mm thick). The side plates have a specific shape, because they are also used to limit how far the door can be opened, the stop when the door is closed (nicely parallel to the front panel), the door open/closed detection, and the door lock mechanism.

Side plates
door side plate
drawing of a side plate
The side plates are made of 2 mm thick aluminum, see the picture at the right side.
  1. Door side plate. You need two of these.

  2. Top front square aluminum rod. The rod is attached to the door plate using a countersunk M3 screw. In the rod is an M3 thread.

  3. Rear square aluminum rod. The rod is attached to the door plate using a countersunk M3 screw. In the rod is an M3 thread.

  4. Bottom front square aluminum rod. The rod is not attached to the door plate. In the rod is an M2 thread. The hole in the door side plate is just a 2 mm hole.

  5. Small "L"-shaped bracket. It is attached to the square rod with an M2.5 screw (length 4 mm), and attached to the door side plate using a countersunk M3 screw and an M3 nut.

  6. The upper side of this "protruding" square is the stop for the door in the opened position.
    It "bumps" against the top of the front panel.

  7. The lower side of this "protruding" square is the stop for the door in the closed position.
    It "bumps" against the bottom plate of the inner box.

  8. The arm that goes through an opening in the bottom plate of the inner box. Only when the front door is closed the arm is in the slotted sensor. When the front door is opened approximately 10 to 15 mm, the arm is no longer in the slotted sensor.

Construction of the door
The side plates are connected to each other with three 8 mm square aluminum rods.
Both ends of two rods (the door top one and the rear one) have a 3 mm threaded hole. Countersunk M3 screws attach the side plates to these rods. The third rod (the bottom rod on which the door can pivot) has at both ends a 2 mm threaded hole. The side plates have a 2 mm hole through which M2 threaded rods (length 10 mm) goes into the square rod. The M2 threaded rods are the pivot point of the front door.

Plexiglass of the door
The plexigalss of the door was a bit difficult, because I did not know how to cut and bend the plexiglass in the desired shape. Searching for "How to" videos on YouTube explained how to do it! Cutting of plexiglass (in a straight line) is easy, as long as the thickness of the material is not too much. I used 3 mm plexiglass that is a "smoke grey" transparent. Cutting the plexiglass is simply cutting with a shap (exacto) knife along a metal ruler. After cutting a few times to make a groove in the plexiglass, you can put the plexiglass on a table corner, the groove parallel to the edge of the table. On top of the plexiglass you put a straight piece of wood, and then put force at the end of the plexiglass. It will break along the groove. If the cut is a bit rough you can use a file too remove the sharp pieces.
I did the cutting of the plexiglass in two steps. First, I have cut it to the exact width. As I did not exactly know what the length would be, I decided to bend the plexiglass in the desired shape, and then cut off the excessive length. Doing it in this order gives you sufficient length to hold the plexiglass while bending it. Bending the plexiglass is nicely explained in the YouTube movie  
How to make a DIY acrylic bender (Cheap & easy).  It is a 8:52 minute video. You need simple materials to make the construction. I made a paper template so that I had an idea how much the plexiglass had to be bent. Bend one angle, then check if it is ok. Then bend the other angle. By test-fitting you can adjust the angles. If it all looks good, mark the excess of plexiglass and cut it off.
At both sides where the plexiglass is on the quare rods, 2 mm holes are drilled. The square rods are marked where these holes are. Then you drill a small hole in the square rods and make an M2 threading in it. With M2 screws (length 6 mm) the plexiglass is attached to the square rods.

Door locking mechanism door locking mechanism
The door locking mechanism is a solenoid mounted on two "U"-shaped aluminum profiles. In one of the "U" profiles is an other smaller "U" profile mounted which forms the pivot point for the arm. One side of the arm is attached to the core of the solenoid, the other end is attached to a "hook". I know, the arm and the hook part could have been made from one piece of aluminum, but it was difficult to get the correct length of the arm.
The mechanism is mounted underneath the bottom "floor" of the cartridge "bay", and the arm is between the side plate of the inner box and the outer box. When the solenoid is not energized the top part rests against the the outside of the inner box plate, and the hook goes through a hole in the inner box plate into an opening in a side plate of the front door, thus locking the front door. When the solenoid is energized the top part is pulled against the outer box side plate. The hook is no longer holding the front door, and it can be opened.

The solenoid needs some 15 to 18 Volts for reliable operation. As only 5 Volts and 3.3 Volts are available, a small DC/DC step-up converter is installed. You can buy such DC/DC converters on eBay for less than 5 Euro. I found that switching the solenoid causes spikes that influence proper functioning of the MCP23017 chip. Therefore, a snubber network is added across the solenoid connections. The snubber network consists of a diode in series with a resistor and parallel to that resistor a capacitor. The diode is an 1N4007, the resistor is 100 Ohms 2 Watt, and the capacitor is 100 nF.


RK05 cartridge "bay"

The cartridge bay is sort of a box inside the RK05 box. This inner box is made of two aluminum side plates and a bottom plate. The side plates and the bottom plates are mounted on the frontpanel using small "L" angled aluminum profiles. The "L" profiles are positioned on the front panel in such a way that the attached side plates and bottom plate align with the opening in the front panel. A 2 mm groove is filed in the "L" profile at the lower left and right side. The M2 screws of the front door pivot in this groove, and the side plate keeps the M2 screw in place.

Underneath the cartridge "bay", attached to the bottom plate is a CNY37 slotted optical sensor. When the front door is closed the arm of the side plate moves into the slot. The signal is used for the "door open/closed" detection.

bottom of cartridge bay floor
view at the bottom of cartridge bay floor

cartridge "bay" floor
The cartridge "bay" has a bottom and a floor. The bottom is used to mount the door locking mechanism and the door open/close detection sensor. The floor is a separate 1 mm thick aluminum plate. At the corners of the front side the floor plate has small "L"-shaped brackets with a 2 mm drilled hole. The front door also has small "L"-shaped bracket with an M2 screw. When the front door opens the floor plate pivots on the M2 screws and moves a little up in vertical direction. That movement will affect the position of the floor plate at the rear side. For this reason, the floor plate rests on a roller at the rear side.
The roller is made of an M3 threaded rod which is attached to the vertical sides of the inner box. Between the inner box sides a round metal tube is on the M3 threaded rod.

On the floor plate are two small round metal tubes mounted using an M2 screw through the floor plate. The M2 nut is inside the tube, just at the ends of the tube.
The RK05 cartridge is inserted into the drive and slides on the metal tubes completely into the drive until the front side of the cartridge "bumps" against the USB connectors. The uSB connectors are mounted on a bracket. That bracket is mounted at the rear end of the floor plate.
3 mm solid metal rod is mounted in stand-offs on the floor to guide the cartridge in the correct position and orientation, just like in the real RK05 drive.

cartridge bay floor
floor plate with pivot points, guidance metal rods, and lower part of USB connector bracket

The front door lock mechanism is also mounted on the bottom plate. Note that the lock mechanism is at the right side (view from the rear side) and the indicator lights (and PCB) are at the left side. They cannot be at the same side! The slotted sensor is at the right side. In the picture you can see that the floor of the cartridge "bay" (bottom plate) is mounted on the "L" profile attached to the front panel, and at the rear side with two "L" profiles on the sides of the (outer) box.
Above the floor plate you can see the roller shaft and laying on it the cartridge floor on which the cartridge slides. The cartridge floor (1 mm thick aluminum plate) is attached to the front door. When the front door is opened the cartridge floor is raised a little at the front side. Doing so, the floor is slightly "slanted" upward, thus making siding a cartridge into the cartridge bay easier.


RK05 data cartridge

The RK05 cartridge was not easy to realize. I went to a local shop with 3D scanning equipment, but although the shape of the cartridge *looks* to be relatively simple, it was deceivingly difficult to scan! They needed several attempts and burned a lot of hours on the scanning of the cartridge before a satisfactory result was obtained. Many scans where good at some curves, but were really bad at other surfaces. In the end they charged me just one hour for their service and said that it was also for them an interesting learning.
A collegue at work has a 3D printer, and he learned a few things how to print the .stl file. Don't ask for details, I really have no knowledge at all of 3D printing. First he printed a scaled small model of the cartridge (70 mm diameter) to see how well it would print. This small model still has amazingly much details! I joked that if we scaled the model even more, we could make a key chain RK05 cartridge smile. He split the object in two halves and scaled them so that the diameter is 210 mm. Printing of one halve takes 20 hours!

upper side view
bottom side view
210 mm scaled cartridge model, 70 mm test sample, and original RK05 cartridge

In the above pictures the two halves are just laid on each other. They are glued together with hobby glue.
To get a working RK05 cartridge it must be possible to write and read data to and from it. Obviously, a magnetic platter driven by a motor and a read/write head would be way too complicated. But inside the printed model is plenty of room to hide a USB stick. The trick is how to make a mechanism to connect the USB stick to the "outside world" when the cartridge is loaded in the RK05 drive. More about that a bit further on ...
On the PiDP-11/70 mail list was a discussion of the scaled RK05 cartridge. It turned out to be a not-so-good idea to have many cartridges, although that would be most realistic to how it was. Given the storage capacity of modern USB sticks, you could easily store hundreds of RK05 cartridges on one USB stick. If you would indeed store many RK05 cartridges on one USB stick, what's the point of making a model of the RK05 cartridge? Just glue a picture of the cartridge in the front door "window" and be done. In my opinion, that was too way off from reality, so some compromise had to be made.
Using a second USB connection, you have four connections to the "outside world". That is good for 3 bits and a common connection. In the cartridge is a 6-pin header on which you can put 3 jumpers. With the jumpers you can specify one of 7 container files stored on the USB stick. The eighth combination (no jumpers) is used for "no cartridge loaded" detection. With this solution you can have 7 "virtual" RK05 cartridges in one "real" cartridge. To acess an other virtual cartridge you have to unload the cartridge from the drive, set the jumpers and load the cartridge again. So, just like it was, you are a "disk jockey".

USB connections USB connections
USB stick and 3 jumpers for container file selection

On the left side is a USB type C female to USB type C female adapter, and on the right side is a USB type C female to USB type A male adapter. At the inside end of the adapter at the left side is a small USB "stick". male adapter. At the inside end of the adapter at the right side is a type A female socket on a piece of perforated board. Next to that are the three jumpers. The PCB is glued in the pocket and the left adapter is glued on the PCB.
magnetic coupled connections
The connection to the "outside world" is realized using USB type C connectors that are magnetically coupled. The small piece is plugged on the adapters inside the cartridge. The opposite magnetic connector is mounted in the RK05 box in a rubber ring for some flexibility.

A standard USB connection would be difficult to make as it requires excellent alignment and you have to push the cartridge (USB connectors) in the "outside world" USB connectors. Using the magnetic coupling the alignment of the connectors is less critical (if one side is mounted with some free movement possibility), and the force to connect (push/pull the cartridge) is almost none.


Software

Software is added to SimH to make the RK05 drive work as the real thing. The software consists of 2 major parts.
The first part is the addition of a "physical" RK05 drive in SimH. The second part is the "RK05 behavior controller".

"physical" RK05 drive in SimH
SimH has the ATTACH command to attach a disk container file to a device. It this case the device is "RK". After the ATTACH command the operating system can access the data in the container file. However, in case of the RK05 box, you do not enter the ATTACH command. When the cartridge is inserted into the drive, Linux (on the Raspberry Pi) will mount the USB stick automatically. The "RK05 behavior controller" software detects that the USB stick is mounted, and will generate the appropriate ATTACH command, selecting the container file depending on the jumpers in the cartridge! A new command must be added to SimH to know that there is a "physical" RK drive available. The added command is (you could guess it) PHYSICAL. So, you enter at start-up of SimH in the script the command PHYSICAL RK or PHYSICAL RK0 command. As a result, whenever you (or the operating system) accesses the RK0: device, appropriate commands are sent from SimH to the I/O chip in the RK05 drive (via the I2C connection of the Raspberry Pi). These commands control the WT PROT, RD, WT and FAULT LEDs on the front panel.
The following files of SimH are modified: scp.c , scp.h , pdp11_cpu.c , pdp11_rk.c , and the makefile.

RK05 behavior controller
A separate controller based on a State Transition Diagram handles the physical behavior of the RK05 drive. This controller in turn calls several sub-controllers to realize specific functionality such as "spinning up" and "spinning down" the disk, handling the LOAD/RUN and WT PROT switches, and the door open/close and loading of a data cartridge.
The main controller controls the RDY, LOAD, ON CYL, WT PROT, and FAULT indicator lights. Note that the WT PROT indicator can be turned on and off via the WT PROT switch on the front panel, but can also be turned on by the operating system running in SimH!
At this moment the following files are added to SimH: rk05_ctrl.h , rk05_ctrl.c , rk05_usb.h , rk05_usb.c .

PiDP-11/70 and RK05 drive stacked
Back to top