zx-spectrum-pico-interface-one
zx-spectrum-pico-interface-one copied to clipboard
Incompatible with devices which provide a non-standard ROM
If the user adds a device onto the rear of the ZSES which provides its own ROM in place of the Spectrum's original 16K ROM, that device won't work. The ZSES ties the /ROMCS line to +5V meaning that the Spectrum's internal ROM is disabled. This is normally fine because the ROM Pico provides a copy of the original 16K ROM image and returns data from it for non-IF1 ROM reads. But if another device wants to provide a different ROM image, it won't work. The ZSES controls the ROM memory space.
The original IF1 doesn't carry an original 16K ROM image. It only asserts /ROMCS when it wants to page in the IF1 ROM, leaving the normal ROM either alone, or to any other device which wants to control it. This makes for an incompatibility, one which someone who owns such a device has reported to me.
The solution is not obvious. Switching the /ROMCS line only when the IF1 ROM is paged in is simple enough, but there isn't a spare GPIO on the ROM Pico to do it with. Looking at the circuit, there's no easy way to free one up.
My intention is to address this, since it makes my device incompatible with the original IF1, albeit it in a very tight corner case. But as of this writing I don't know how to fix it.