On 12/14/2021 at 9:01 AM, Edmond D said:
In the original post the idea was to send the basic code to a sub-system that would compile the code into machine code then store that output into a location followed by executing it. The subsystem suggested would fit into a stock X16 as a card. My understanding of the concept is that it might be possible to do so.
Probably not using the Pi Pico - at least not directly. I just don't expect that CPU to be able to keep up with the timing resolution needed to brute force the 6502 bus at 8MHz. When you look at the actual timing requirements, you're looking a minimum of 32MHz time slices, but possibly 64MHz. Even with a superscalar processor, you'd only get 2 to 4 machine code instructions per 6502 bus cycle, and you literally can't manipulate GPIO on the Amtel fast enough to manage the I/O in that amount of time. I could be wrong... maybe it's possible using DMA, but it just seems unlikely to be reliable.
What you'd need to do is add some sort of UART to act as a bridge between the Pico and the CPU. It could be a parallel UART, like a CIA chip, or it could be a serial device like a 6551 ACIA.
Of course, at this point - having it on a card is pointless. We already have two CIAs in the system, and if you wanted to build a 6551 VIA card, it makes sense to make that a more general purpose serial card with a TTL Serial or RS-232 connection to the outside world.
It seems like a lot of discussion regarding things kind of thing keeps coming back to the same issue: we need a parallel device I/O implementation on the User port in the KERNAL, something fast and reliable, which can be accessed via a device number. Considering the speed of the 6502 based FAT implementation, I think we could build a faster external device than the built in SD card storage.
Anyway - coming back to the original point. A device like this is possible, but the expansion bus is not the place for it. Either the IEC or User port is a good place for something like this.