I believe I may have run into a hard limit of using wire-wrap construction. After weeks of trying to debug video memory access with the S3 ViRGE, it's looking like the failures are in the analog domain. I'm not consistently hitting necessary timing requirements, presumably due to the relatively weak drive circuits for the ViRGE memory control signals and higher impedance? capacitance? something? of my hand wiring. Analog domain is where my understanding really breaks down.
I've been through this before with my initial Wrap030 prototype barely being able to run at 4MHz, but the PCB running smoothly even when overclocked up to 56MHz. I think it's time to start thinking about moving PikaPC to a proper PCB.
I'm not sure I'm ready to take this project to a monolithic fully-integrated PCB though. I've not yet built and tested the disk interface I wanted to try. I wanted to test using SIMM DRAM instead of SRAM. There is still the chance that ViRGE won't work out and I'll need to pivot to a different chip. And there is also the long-term goal of graduating up to something like the PPC603.
So modular is the way to go. I can develop and test individual parts without the expense of a complete large motherboard. Modular is good because if I plan things out well, I can reuse the peripheral cards I develop here for future projects (something I could never do with what I developed for Wrap030).
I just need a good bus to use.
I need to support at least 32-bit data so that rules out something like SMEbus or modern hobby buses like RC2014. Anything card-edge is out; good card-edge PCBs are expensive and without external support the connections are not reliable. That rules out ISA, Microchannel, VLB, S-100, etc. PCI can has non-card-edge standards, but uses some weird drivers and bus terminations and is a little too complex for this purpose so it's out too. I am partial to the 96-pin DIN 41612 connectors used for a number of bus standards over the years; VMEbus could be a viable option here. NuBus probably comes closest to what I need, but its control encoding and inverted data bus are annoying.
I'm going to throw a wrench in my own requirements here — I already own a DIN 41612 backplane, but it does not have the center row wired and already has power and ground wired in a non-standard manner. If I want to use the backplane I already have (backplanes are expensive), I'll have to come up with something custom.
I'm taking inspiration from NuBus, but decoding the control signals. For simple peripheral cards, this will minimize the glue logic I'll need compared to what would be required for NuBus proper. I've kept a similar pinout, making allowances for the pre-defined power pins on my backplane and the additional control signals I'll need.
I've started laying out PCBs using this new bus for the initial set of cards I'll need, starting with the host card. I'm planning on a host card (CPU, ROM, bus control, & serial), DRAM card, keyboard controller card, video card, and a power supply & bus termination card.