Over the years I have developed a number of specialized interfaces to transfer data to and from the machines in my collection, and to emulate peripherals. As I find time to locate them and set information up for publishing, they will appear here.
At one point I wanted a more convenient way to load my GT40 with Lunar Lander. The GT40 has only one slot available. I have the program on a floppy disk (as well as other media), but lugging an RX01 around is unwieldy. I hit upon the idea of using an Arduino Mega (the Uno doesn’t have enough pins) with an Ethernet shield attached to my PC in order to emulate a PC11R paper tape reader attached to an M7810 PC11 paper tape interface in my GT40.
I corresponded with Henk Gooijen, who had done the inverse: developed an interface from a simulated machine to a real PC05, based on a Microchip PIC chip. You can read about that interface at: http://www.pdp-11.nl/peripherals/tape/pc05-simh-pc.html
I had to use interrupts for signals READ (IOP2) and SELECT (IOP4) because they are pulses, and could be missed if just software polling was used. Also, because the emulation is implemented in software, it cannot always react as quickly as real hardware would. In particular, BUSY may not be set in time on a normal read operation, and DONE may not get reset quickly enough if multiple read operations are initiated (Reader Enable on the PC11) without an intervening data read operation of the PDP-11 read data buffer. This is not expected to affect the bootstrap program or absolute loader, but it might affect paper tape operations in an operating system setting.
The current release requires a separate power supply connection (it does not work when powered just from USB, a USB serial connection (to support a serial console for commands and logging) and an Ethernet connection (it retrieves files using HTTP). I had thought about setting up so that telnet could be used for the command and logging interface, but never implemented that.
My interface code is available at the following link. The Arduino code includes pinout information.
In 2007 I acquired a Documation M600 card reader, that had been used for tabulating votes in Texas (“Hanging chads” anyone?). I like these card readers because the have a very simple, straight card path, and are easy to work on. Mine simply had a vacuum tube that had popped off – an easy fix. Documentation is also easy to find – there were a lot of these card readers made over the years.
I was able to obtain a copy of a card reader interface that was designed by Quarterbyte Systems for the Computer History Museum. I tried to design my interface so that it would be compatible with the PC host software that system utilizes – though it has not been extensively tested. The original interface used an 82C55 programmable peripheral interface and an on-board USB converter, whereas this design uses a Microchip 16F877 and an RS-232 connection on a custom-designed PCB developed using KiCAD. An Arduino Uno did not have enough pins, though the Mega that I used for the PC11 interface likely would.
The PCB design and software (the original w/PC host software, plus my PIC code) are available upon request. The original software is licensed under the GPL as is my PIC code.
In the 1980’s I needed a way to transfer disk and tape images between a PC and my PDP-11/24. The PDP-11/24 has an RL11 controller I can connect to RL01 drives, and also has an RK07 drive that can be re-cabled to connect to my PDP-11/34, which has RK05 drives, so it was a good candidate for this interface. I developed a simple protocol using a hardware handshake/acknowledge to do the transfer with a DR11 interface in the PDP-11, and calculated simple checksums after the fact. It proved to very be reliable with few, if any, data errors.
With the PC parallel port disappearing from PCs (and when it exists, does not have enough input lines to do this), and growing tired of having to haul out an old Pentium II PC with a parallel port to use the setup, I recently decided to program an Arduino to take over the job.
It runs more than twice as fast as the original, and sports an Ethernet interface to connect to the PC. On the PC side I changed over to a pair of simple Perl scripts to talk to the Arduino using TCP/IP. The PDP-11 side did not change.
The PDP-11 side code, the original PC parallel port code, the Arduino code and a pinouts document are currently available on my google drive.
I was lucky enough to obtain a large number of Data General floppy disks with software. Many of these disks are hard sectored. I suppose I could have considered some kind of PC/Data General transfer such as I used with the PDP-11 DR11 interface, above. However, instead I used a Catweasel bit cell floppy disk interface along with an adaptation of the program Jim Battle developed to read hard sectored disks for the Processor Technology Helios disk drive, based on earlier work with the Catweasel by Michael Krause.
My adaptation is available for download.
Unfortunately, the Catweasel cards are no longer in production. To do this sort of thing now, one would probably use a bit cell floppy interface such as the Kryoflux (with which I have no experience), or something like a BeagleBone.