Indeed, one of the first reasons I'd heard for this change was so cartridges wouldn't have to reserve space in each of their banks for IRQ handlers and/or vectors. Technically, you can still avoid this requirement by carefully ensuring that your code performs sei before setting the ROM bank to cartridge banks, but I think most people would prefer not having to think about it at all and merely pay the 16 clocks penalty (or however much it was) for the kernal in bank 0 to handle it all on their behalf, allowing them to gleefully pretend that interrupts don't exist except within the confines of whatever handler is pointed to by CINV.BruceRMcF wrote: ↑Tue Mar 21, 2023 6:23 pm I would very much like this for any ROM based Forth system, as my approach for defining and combining modules for additional ROM banks is looking toward a "smallest power of two" package with manual fitting together of pieces -- 2^(7+index) where index runs from 0 to 6 for RAM segment modules, 0 to 7 for ROM segment modules ... 128, 256, 512, 1KB, 2KB, 4KB, 8KB, [16KB, ROM only] ... and not having to fit IRQ support into the top page of the ROM segment would substantially simplify module packaging.
What's unfortunate is that it appears very unlikely this feature will be included with retail gen-1 hardware, which means cartridge developers for gen-2 will have to make a choice whether to support gen-1 or not. Worse is that I'm not certain how we could detect the difference between gen-1 and gen-2, for the purposes of preventing incompatible cartridges from executing in the wrong context, unless gen-2 will implement some kind of hardware marker, such as placing a hardware revision byte somewhere in the reserved ($9F42-$9F5F) chunk of I/O memory. I'll ask about that, see if there's a solution planned.