PLASMA is not very interesting for the purposes of this post; it has load/exec addresses with the high order bits clear, so it loads and runs on a 6502 second processor if one is active, and it uses the relevant OS calls to read OSHWM/HIMEM and everything's just peachy.
PLAS128 is a BAS128-ish version which bank switches sideways RAM to use it for storing the user's program. This is not something I think can reasonably be made second processor compatible. I seem to have two options here:
- Set the high order bits of the load/exec addresses to 0, so it loads into the second processor if one is active. The first thing it does is check to see if that's the case, and exits with an error saying it's not second processor compatible.
- Set the high order bits of the load/exec addresses to &FFFF, so it loads and runs in the host even if a second processor is active. It will then proceed to trample all over &00-&8F, &400-&800 and all memory between OSHWM and HIMEM in the host. Pragmatically, this does mostly seem to work - I experience some weird failures, but I haven't made the necessary adjustments to all parts of my code as this was just a quick experiment.
Are these both viable options or not? And is there a third option I've overlooked?