New Harddisk Controller for PDP-11/Hack
A new start
As it is often the case the first version has some deficiencies and as well are constantly learning. So after some time the idea of creating a new version comes to your mind and depending on the issues you have with the first version the faster you start building the second one. Even so the first version fo the RLV12 Emulator for the PDP‑11/Hack hat some fatal design errors from the beginning it was easy enough to add the missing parts, although in a rather ugly way. Later I learned to pay more attention to the placement of pins and features of the CPLDs I’m using. But this as well I could manage with some engineering changes to the first version as it was all throughhole and therefore cutting connections and use a small wire for new ones was an easy task.
Slowly the idea to build another disk controller for the PDP‑11/Hack started to come to my mind. First I wanted to have all my disk controllers the same break-out board. The PDP‑11/Hack version did not suffer the same as the Q-Bus version, the programming interfaces and serial port could be accessed easily even so they were not placed in the best way. And the SD-Card slot was easily accessible as well.
Later I decided to start something completely new. From the beginning it was clear that a RLV12 Emulation is a very nice thing but the optimal solution would be an MSCP compatible disk controller as it would allow to have larger and more disks.
New Disk Emulator for the PDP‑11/Hack
This was the start of a new disk emulator with the following hardware features
- Same break-out board as used for the RLV12 Emulator V2.0 for the Q-Bus
- Universal Interrupt Acknowledge with software controller interrupt vector address
- DMA word transfer with DMA data register implemented in the CPLD
There is not much to see. I still used the PLCC-84 package for the CPLD as I wanted to avoid the time required to solder a TQFP-100 package. The PLCC-84 version has still enough pins when interfacing with the Q-Bus of the PDP‑11/Hack. The MCU now uses a SMD package as more and more my designs start to use SMD packages. There are just so many advantages when using SMD over throughhole that, ever since I managed to solder 0.5mm pitch packages, I use them whenever fit. As mentioned the only disadvantage is that it takes quite some time to solder and check a TQFP-100 package.
It runs the same software to emulate a RLV12 as does the first version. As I stopped to have the CSR integrated into the CPLD there are now enough resources to implement the DMA data register which speeds up DMA. Also the interrupt vector address is no longer programmed into the CPLD itself but the MCU will handle the IACK and provide the vector. These features have then be ported back to the first version.
The hardware was used as RLV12 emulator for only a short time to test the hardware design and the new interrupt acknowledge interface. Now the hardware serves as the development plattform for the MSCP Emulation software I started to write. However it definitively will still require some time (as of January 2021) until it will be finished.
The goal is to have several emulations available
- RLV12 - done
- MSCP - in progress
- SC03 - planned
The SC03 emulation is actually something rather special as the SC03 from Emulex was already an emulator, which was register compatible with the RH70 mass bus controller of the PDP‑11/70 for the Q-Bus.
Update October 2021
So many things happened and the development stalled. And as a result this new version of the RLV12 emulator for my PDP‑11/Hack is already outdated. A even newer version is planned that will use the newer AVR128DB processors that add some very interesting features that make it easier to build a universal disk adapter like
- One port can run at a different voltage level which makes the use of level shifters for the SD-Card obsolete
- Two interrupt levels so I can now implement a real OS kernel and still have guarnateed response time for the Q-Bus handling
- More IO PINs, already the AVR128DB48 has 8 more pins than the ATMega1284P
- The fractal baud rate generater no longer requries an external crystal for the USART timing so I can use the internal precision high frequency oscillator which saves components