I'm minded to use a 65C02 for this build. The 6502A topped out at 3MHz rated speed, but subsequent versions of the 65C02 go much higher. So I got thinking: why not connect the CPU to a different subdivision of the 24MHz clock and go faster?
The main sticking point is with peripherals. I can sort out faster RAM and ROM, and the 65C22 should keep pace with the faster clock speed, but Acorn's System used a 6845-based video card, and a 6854-based networking (Econet) interface. Disregarding the networking for a moment, let's concentrate on the video interface. From what I've been able to work out, the 6845 and third-party compatibles (such as the HD46505) all topped out at a bus speed of 2MHz. (The CRT display timing may go to 3MHz or 3.7MHz, for higher resolutions, but the bus speed was still 2MHz.) So unless someone can tell me otherwise, I wouldn't be able to get the CRTC running at the same speed as my speedy CPU.
Dealing with access to the video RAM would be straight-forward: a few kilobytes of dual-port RAM is easily affordable, and would let either side read and write in the appropriate phases of their own clock cycles. But I'd still need to address how the CPU will access the 6845's registers. A few ideas present themselves:
- Interrupt the clock circuitry while the 6845 is accessed - the 6502A card has a Memory Ready (MR) signal for this purpose, but no guidance on how to trigger it from other peripherals. (It's designed for the NMOS 6502, so leaves the Phi0 signal high.) Could I decide that any access of the expansion bus' I/O space will automatically trigger a low MR signal for the equivalent of a 2MHz clock cycle?
- Use the READY pin on the CPU to halt execution for a few clock cycles when it accesses the 6845 - the 6502A card has a Bus Request feature of this design, intended for DMA use. I'm not sure whether this would be a better or worse approach than the one above
- Copy the BBC Micro - The Beeb ran at 2MHz but had a lot of 1MHz peripharals on-board (and a 1MHz expansion bus), so it included a clock-stretching circuit that would run the CPU at 1MHz instead of 2MHz when accessing the slower peripherals
- Use a 65C22 as a buffer - I could look at using a fast 65C22 to buffer writes to slow I/O, but reads would still be problematic.