Something very retro and a little ambitious...

Being somewhat older than most in the computing world, I remember well the days of 8-bit computers and in particular the Atari XL/XE range, but it's getting harder to link up these ancient plodding beasts to modern hardware, which really wants an HDMI link over an RF modulator, for example... So...

- Design an interface board[1] to the bus that pokes out the back of the computer, this is a simple level-translator and 36-way cable to "the box" (see below).

- The cable is a Mini-SAS type[2], because they're much more appealing to look at than ribbon cable snaking everywhere. This board is intentionally simple so that by swapping out the simple board, the rest of the hardware can interoperate between different machines.

- Design "the box". This has an FPGA on it (Efinix by choice since they're low-cost) which has a bitstream that understands the bus protocol of whichever machine it's plugged into.

- The FPGA has local memory (PSRAM) which it can interface to the 8-bit - indeed, the 8-bit will have its RAM requests be serviced from the PSRAM on the FPGA entirely under most circumstances.

- The FPGA also links to an RP2040 which acts as a sort of system-controller (really I'm using this for the boot loader, to make it easy to upgrade in the field). However, there is also a "slots" interface which will define part and SPI interfaces that can have data transferred bi-directionally to the Pi, and also "dma" directly into the PSRAM that hosts the 8-bit memory.

- And finally the FPGA links to a raspberry Pi - still not sure which one (it depends more on graphics capability) over the SMI (Secondary Memory Interface) bus - which takes pretty much all the GPIO but gives me about 500-600 mbits/sec data throughput from FPGA to Pi, with DMA to userland code happening in about 50uS.

- The FPGA reproduces the bus traffic on the 8-bit into a marked-up set of data streams, and batches them over to the Pi over the SMI. The FPGA will specifically interpret things like video into something easy for the Pi to understand without billions of bit-shifts.

- On the Pi, there's a (currently QT, possibly SDL2/GPU, maybe a.n.other library) application which scales up the incoming video to an HDMI signal, and vends it out over the HDMI port.

- Given this is an Atari, and to provide a few more features, I plan to implement a GEM interface (akin to the ST, but maybe better looking :) to allow a desktop environment for files that can be "downloaded" into the 8-bit's (PSRAM) memory from storage on the Pi.

- If all this actually works, at some point it'd be nice to integrate the Cyclone[3] 68k emulator with that GEM VDI/AES and actually run Atari ST programs on a 1920x1080 HD truecolour display.

- I was planning on implementing the GEM service akin to an X-server, where there's a fullscreen window, and clients (including the desktop) connect to it over a pipe. That way multiple apps can run, and it should even be possible to have a design/development interface with the XL/XE running in a window, and code being compiled/downloaded on the same HDMI display. I can dream :)

Anyway, what makes this a lot more feasible is the low-latency high-bandwidth SMI interface on the Pi, that really ought to have had more attention on it, given it's on every Pi shipped, and it's perfect for an FPGA interface.

[1]: https://imgur.com/rB53IPC

[2]: https://www.amazon.com/OIKWAN-Internal-SFF8087-Controller-Sy...

[3]: https://notaz.gp2x.de/cyclone.php