This card uses a Raspberry Pico to run CP/M on the Apple II, and could be an alternative to a Z80-based card.
https://www.v2retrocomputing.com/analog
CP/M on the X16
Re: CP/M on the X16
That's pretty similar to what I've been thinking. In my case, I would use a UART to talk to the RP2040, which could then run any emulation firmware you want.
Re: CP/M on the X16
One of the main advantages of the Z180 over the Z80 is the built in memory manager, and with the low cost of 128KB SRAM, it's well worth while.
One appealing approach would be to use the ATF1504 as the address decode chip, since it can be programmed in-circuit with a JTAG connector. 64 Macrocells is probably massive overkill for the decoding ... but that opens the possibility of programming a "soft PROM" 1st stage bootloader also programmed into the ATF1504.
What I had been looking at in previous "CP/M card" threads was that, given developments since the heyday of Z80 systems, one could simplify I/O dramatically by focusing on connecting to SPI IC's, which would support an SPI serial Flash IC as an inexpensive "drive", and an SPI UART IC for the terminal connection. Having a SPI serial Flash IC would allow the 1st stage bootloader to be quite small, with the second stage bootloader being contained in the first page of the serial Flash, which would then do whatever operation takes the PROM code out of the memory space and boot the CP/M system.
The post-Z80 CPU's from Zilog simplifies that even further, since both the Z180 and the eZ80 have a pair of UARTs. The Z180 has a single directional clocked serial port, for which adding a serial shift register and some glue logic can create a full fledged SPI interface (all of which can be added by an ATF1504 CPLD), while the eZ80 has a dedicated SPI interface.
Then putting that on a CX16 card would involve having a 65xx address bus compatible serial chip, tied to the internal Z180/eZ80 internal UART, and a CX16 side terminal program would allow operating the Z80 system in the normal CP/M terminal / system setup. So long as there is a CP/M program loaded into the SPI serial flash that allows receiving files sent by the CX16 terminal program, files can get from the CX16 SD card into the CP/M filesystem and away you go.
So a Z180, 128KB RAM, ATF1504, SPI serial flash, and 65xx serial chip ... some voltage dividing circuits to take the three SPI output lines to the SPI serial flash down to its voltage, and I guess something like a diode and a pull-up resister to pull the SPI input line up to 5v.
But might have to hurry before the Z180's go out of market as well.
However, yes, as far as a CX16 "feature" ... the existing CX16 slot is all the feature required to support it, so technically, the supporting CX16 "feature" is already there.
That said, my priority at the moment is getting xForth02 up and running, and then if that is successful, getting xForth16 (that is, the 64KB bitmap version for the 65816) up and running, so I'm not going to be learning the hardware specification language required to translate 74xx glue logic into the equivalent functioning on an AFT1504 anytime soon.
And finally, I'm all for making a board with real IC's, and then making a cheaper version of the board with an RPi0 emulating the whole shebang or an RP pico emulating enough of it to save money. Horses for courses: some people would rather have the real IC's in their Gen1 slot, some people would rather save the money. But for sanity, I would make the board with the real IC's first, and then emulate or simulate that, so that the CP/M implementation is the same for both.
~~~~~~~~~~~~
Note that the eZ80 might, as it name suggests, be the easiest way to get this kind of card built ... it has four chip selects in its memory manager, so no need for chip select circuitry for the SRAM, it has a complete Serial SPI interface rather than half of one, it has better UARTS with 16 deep FIFO buffers, and some versions come with internal flash that can be programmed from a USB port with a USB to JTAG interface cable ... so it would be possible to code the cold boot in Flash, along with having it come up with a menu program if the SPI flash "drive" is empty, so that once the cold boot is programmed, the CP/M system that you want can be installed from your CX16. That system would be a 65xx UART IC, some level shifting on RX/TX to do everything else in a 3.3v domain, the eZ80 and a 20MHz clock module (if going for the cheapest 64K flash eZ80), the SRAM, and the SPI flash "drive" -- no CPLD needed. If all are Surface Mount, that would be a tidy little board.