Login
Back to forumSee the full topicGo to last reply

Posted By

gerliczer
on 2023-12-19
06:44:31
 Re: Cartridge and raster interrupts

I find it a bit baffling that you couldn't get any books that has a good explanation on ROM banking. However, here's how it goes. There are four ROM banks: BASIC/KERNAL, internal ROM expansion which is not available in C16 and contains 3-Plus-1 in an unmodified Plus/4, Cartridge1 ROM and Cartridge2 ROM. The lower and upper halves of those banks can be paged independently. So, we have four options for low ROM and four options for High ROM. Four by four is sixteen. What else is sixteen? The length of the $FDDX range in the I/O area. I guess you realised now where this goes. We have four bits (16 possibilities) used as a selection "register" and that is mapped to the above address range. Bottom two bits select low ROM, top two bits select high ROM. And values corresponding to the banks are what you would infer from the enumeration order I listed the banks in. Therefore, what you are doing in your code is obviously take whatever ROM is paged into the low area and force the KERNAL for the high area. Which is exactly what's written in the comment.



Back to top


Copyright © Plus/4 World Team, 2001-2024