Close
0%
0%

Bus Extender for RC2014

A buffered I/O extender to allow a second (and third) backplane to be used and free up I/O ports

Similar projects worth following
The RC2014 bus extender allows a second (and third) backplane to be added to an RC2014 system and hold the usual 8bit addressed I/O devices with or without interrupts. The devices are remapped to a 16bit port address, the lows of which are fixed by extender settings. This allows the extender to know the direction of flow and also means multiple potentially clashing devices can be used.

I ran out of slots. 12 is not enough, and I didn't feel comfortable trying to do 24 or 36 slots with active termination because.. lets face it.. termination is deep magic.

Instead the board is a combination of buffers driving the unidirectional signals onto the secondary bus, some very generic decode logic to match a specific 8bit port, and a very standard bidirectional 8bit I/O port that happens to be wired to the data bus of the secondary.

When the low 8bits of the I/O port in question match, the request ends up on the secondary bus with the upper 8bits of the port remapped to the lower bits on the secondary bus. The data bus is buffered in the right direction according to the R/W lines. The first version has a slight glitch in that I forgot to add jumpers so you can avoid driving RX/TX across the boards when they are in use on the primary (as would be normal). Hence the pin sticking out in the picture.


0.2 should fix that but will not get tested until the next PCB orders.

ioexpander.kicad_pcb

Kicad PCB layout

x-kicad-pcb - 302.48 kB - 11/08/2019 at 21:03

Download

ioexpander.sch

Kicad Schematic

x-kicad-schematic - 20.48 kB - 11/08/2019 at 21:03

Download

  • 1 × 74HCT32 Electronic Components / Misc. Electronic Components
  • 1 × 74HCT688 Electronic Components / Misc. Electronic Components
  • 3 × 74HCT245 Electronic Components / Misc. Electronic Components
  • 5 × 0.1µF capacitor
  • 1 × 10K resistor

View all 8 components

  • Notes I forgot long ago

    EtchedPixels04/10/2023 at 18:06 0 comments

    There is a bug in the board as it stands in that the IOCS line is not connected to pin 19 of U2 as it should  be. Just run a wire from there (or pin 2 or 4 of U1 to IOCS (pin 19) on U5 and all should be good.

    There is also an interesting quirk that was rather more unexpected. The Z80 PIO watches for an M1 cycle when you do an operation and things change after the M1 cycle. It turns out the PIO looks for more than just M1 in order to distinguish IM2 cycles and behind the bus extender it doesn't see sufficient. In short Z80 PIO's don't work behind the extender.

View project log

  • 1
    Construction Notes

    I found it easier to solder the two 40 pin connectors and then work on the component side of the board. Everything is through hole so it's easiest to just work up by height until assembly is complete.

    The jumpers do the following

    JP1: determines if A8-A15 should always be driven across the bus or only when the port matches.

    JP2: fit this jumper to drive the TX from the secondary bus onto the primary.

    JP3: fit this jumper to drive the RX from the primary onto the secondary.

    If you really need 36 slots you should be able to solder the two 40pin connectors the other way up and install an inverted board between the front of the primary and the back of the tertiary. It will need a different I/O address to the secondary.

  • 2
    Power

    The board does not address power consumption power is simply carried across the bus. It might help to also wire the backplanes together directly using the screw terminals many have I don't know.


    If you need a really long case hold a 6x4 index card up in front of your system and it should fit well within the profile. In the UK at least ebay is full of old index card drawers and holders - just be sure that it's a 6x4 not 5x3 size.

View all instructions

Enjoy this project?

Share

Discussions

EtchedPixels wrote 10/27/2020 at 13:25 point

Right now

Z80 CPU card

512K/512K RAM/ROM

Z80DMA card

CF adapter

RTC

TMS9918A video

PS2 keyboard/mouse

Clock generator

4 port serial

Dual serial

SAA1099 sound (at the moment, usually an AY-3-8910)

Floppy controller


which isn't enough to then add Z80 PIO, PPIDE for real hard disk, SC129 debug card, and multi-i2c card 8)

I've been taking a break doing other more sociable online things but the reason for the dual port shared memory card work is that once I get back to it I want to put an I/O processor the other end and move the serial ports, some SPI SD cards and networking etc off the main board onto a second CPU (possibly a 68HC11 so the SPI is easy) rather than just the bus extender trick and run it more like the classic bigger systems with the I/O offloaded and maybe even try and push as far as having Fuzix offload the line editing and input modes on the tty/serial ports to the co-processor the way System 5 Unix could.

  Are you sure? yes | no

Sean R. Lynch wrote 10/27/2020 at 06:19 point

"12 slots is not enough." I was already wondering about your "big rc2014 system" and now you've got me REALLY curious. What all do you have connected to that thing?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates