The goal was to build a RLV12 Emulator which emulates a real RLV12 controller close enough to be able to boot and use the most common operating systems available for a PDP-11. In other words it must support the same device registers as a real RLV12 controller and it must support all commands a RLV12 controller supported, except for the maintenance command which was not used by any operating system but only by the DEC maintenance programs. Storage is provided via a SD-Card that sits on the controller itself. In other words the RLV12 emulator not only emulates the controller but also emulates up to four disk drives. It is not a replacement for the RLV12 as it does not interface to real RL01/02 disk drives.
The Q-Bus version is just a derivate of the RLV12 emulator I have initially built for the PDP-11/Hack. Both design use the same microcontroller and the same software. Although the bus interface is slightly different the CPLD design is very similar it only is different when it comes to the bus interface.
The RLV12 Emulator is a board that plugs directly into the Q-Bus. It emulates a RLV12 controller and up to four disk drives attached to it. The data is stored on a SD-Card.
The hardware is divided into several sections, the bus transceivers, the interface CPLD and the AVR microcontroller (MCU). The board has the width of a dual-width Q-Bus board but it’s height measures only 100mm.
The current design uses four 4-bit bus transceivers DC005 or C2324N from Signetics for the multiplexed address/data bus part. For all other signals the transmitters are using 73S38 Schottky TTL open collector NAND gates and the receivers are using DS8837 unified bus receivers.
The C2324N and the DS8837 are no longer produced and can be hard to find, currently I’m investigating a solution to replace these parts with a solution that uses only devices still in production, a first step was made with the Q-Bus memory where the DS8837 have been replaced with 74HC4049 operated at 3v3.
The C2324N pop up quite often on auctions so in a first step I plan to take the same approach as with the Q-Bus memory and replace the DS8837 with 74HC4049 bus drivers. Replacing the C2324N requires a substantial change in the design and probably even requires to add an additional CPLD.
The interface logic is based on the Q-Bridge concept described in a dedicated section. It uses an Atmel/Microchip CPLD, the ATF1508 with 128 Macrocells. This CPLD operates at 5Volts and does not require level shifters when used in a system running at 5V.
The emulation itself runs on a AVR microcontroller. Here I use the Atmega1284P. This processor was selected mainly because of it’s large RAM of 16kbyte. Also it provides 128kbyte of FLASH memory and even the complete source code is written in assembler the code already reaches 32kbyte. I must admit that I have not done any clean-up and all test and debug routines only required during development are still included.
This version of the RLV12 emulator is a small Q-Bus board that plugs directly into the Q-Bus of a PDP-11 system. The microcontroller handles most access to the device registers and executes the disk commands. An SD-Card is used to store the data. The MCU has also a user interface (via the serial port) which allows to map partitions and disk-images to individual units manually and other features to control the controller and “drives”.
The disk images are store on a SD-Card, the card must be formatted with a MBR. Using MBR allows to create partitions on the SD-Card. Disk Images can either be partitions which are exactly the size of a RL01/02 disk or disk image files on a FAT-32 formatted partition. The MCU software supports multiple partitions of the size of a RL01/02 disk and one FAT-32 formatted partition. At power-up the first partitions of the size of a RL01/02 will be attached to the disk units.
Although the board is fully functional and has been successfully used to boot and run RT-11 and RSX-11MPlus it has some deficiencies.
- The AVR ISP and the CPLD JTAG connector cannot be used when the card is plugged into the Q-Bus making it difficult to upgrade when installed
- The SD-Card is not very accessible when the card is plugged into the Q-Bus, you need good access to the card and a long tweezer to effectively remove or insert the SD-Card you could use a SD-Card extender cable