Thanks Tom.
This is a 'winter project' with the idea of getting into a full emulation and functional retro rig by 2025 (50th anniversary .... so I am musing with a designation of RC8850). I am away from my personal rig but will post answers to the best of my recollection.
The MKI used three backplane slots for the processor (I probably only needed 2). Between the processor slots and the rest of the backplane I cut the /RD and /WR tracks. Slot 1 holds the processor. Slot 2 had jumpers between the /Z80RD, /Z80WR and 'spare' backplane lines.
The Front Panel Interface (FPI) card used the Z80 /RD and /WR lines to (re)generate the Bus /RD and /WR. In RUN mode it was just gated through. In "Inject" mode it could control the bus to have the processor read the injected JMP XXXX and NOP instructions, read from memory and write, overriding the Z80 signals as necessary.
The FPI buffered (with drivers for the LEDs as necessary) all signals before transmitting them via the ribbon cable to Mike Davis' front panel, so they presented a single TTL load to the RC2014 bus. As I mentioned, the FPI has some logic (including some basic state analysis) to generate some of the LED.
The FPI has a (retro looking DIP) ATmega328 to read the front panel shift registers (that encode the switches).
Meanwhile, I decided to go for a MK II version for a few reasons:
1. The I2C injection was far too slow at 760 bytes per second
2. Limitations in controlling the bus
3. Use cases requiring more complete control over the processor and bus reset
4. Use cases for enhancing the configuration and overall use
MKII has
1. Standard bus (no cut tracks)
2. Simplified FPI (removed inject logic). ATmega transmits the switch status via a serial port over a 'spare' bus line.
3. New Z80 card with some changes
Z80 card now has all of the bus control logic to allow reset management, DMA and Injection.
It also has an Arduino to read the switches and initiate bus control functions.
Reset - Several modes are now possible. The Z80 and Bus can be independently reset. This allows the Bus reset to be released before the Z80, with better control over the timing. It also allows the generation of I/O cycles and selected peripherals to be 'initialized' before the Z80 is released from reset. For the programmable memory cards, they can be configured (All RAM for CP/M, BASIC ROM, Monitor etc.) according to boot switch settings before the Z80 starts. This makes configuration pretty flexible.
Bus Control / DMA to load RAM and configure peripherals from the Arduino. All use the same buffer and bus control chips, simplifying the overall design to support 4 modes of operation (Normal Run, SS/Inject, CPU Card Controller I/M & DMA, RC2014 Bus DMA)
Injection speeds have increased from 760 bytes / sec to 66K for the memory injection.
This winter I hope to get the memory and IO configuration manager to work so that I can select CP/M, BASIC and Monitor modes.
I am working on the ASAD memory card that uses the paged design and can operate in (i) selectable default configuration of RAM/ROM (ii) Paged RAM / ROM (where the boot process can configure it) and (iii) linear mode to support a future Z180 card.
Future work may include 'intelligent peripherals' ... e.g. a graphics card the presents a UART interface to the IO map.