After lots of reading, I love the idea of trying a modern version of Don Lancaster's
cheap video with the Pico as an intelligent video decoder. The 'nop slide' thread was also good inpsiration
viewtopic.php?f=4&t=6408Maybe this doesn't make sense, or is overcomplicated, but here's what I was thinking:
The pico would maintain a frame buffer for your current graphics mode (s/w configurable). For example
https://github.com/Panda381/PicoVGA uses one core, one PIO, and 9 gpio pins for R3G3B2 VGA out in many different modes. So the pico would be continuously generating a VGA signal, but we need a way to refresh the frame from the 6502.
Could the pico be interposed between RAM and CPU as a normally transparent read buffer (8 pins in/8 pins out)? To trigger a refresh, signal the pico (e.g. with a VIA pin) that we want to block copy from RAM, then immediately execute `jsr frame_buffer` and have the pico start recording the data bytes fetched from RAM while hiding the result from the CPU and instead returning $A0 (ldy #) to increment the CPU PC one byte per cycle, with a final $60 (rts) when we're done the block and will stop hiding RAM. (I guess 65c02 could use one of the $x3 single cycle nops instead of ldy # ?)
Running at 2MHz it seems like you could block copy an 8K graphics frame in 4ms, so a 25fps refresh rate would only use 10% of the cpu. Is that math right?
I don't know a lot about pico PIO programming, but the vga driver above does leave one free - is that enough to proxy the data bus?
And there still might still not be enough pins (8+8+9 leaves only one, and presumably need phi2 and a signal pin at least). Maybe 6-bit color would work?
Originally I was thinking about only snooping on graphics writes, but that seems to quickly run out of pins (14-16 for address + 8 data + various chip signals + vga output is more than 26?)