Hey everyone. I've been trying to figure out E0 bankswitching for a little
while now (from the cartridge side, not the programmer side). I read
through Kevin Horton's sizes.txt file and Thomas' good explanation
(http://www.biglist.com/lists/stella/archives/200211/msg00125.html), but
what I can't figure out is it seems to me like the currently selected
slice/segment relationship needs to be remembered by the cartridge until
the slice is changed for that particular segment (using one of the 24
hotspots, LDA $1FE0, etc.)
From a programmer point-of-view, apparently this requires less overhead to
keep track of what bank you are currently in (compared to something more
standard like F6, F8, etc.), but I don't quite see that, since it seems
that the programmer will need to keep track of which slice is currently
"loaded" into each segment.
The way I'm seeing it, if someone did a:
LDA $1FE0
LDA $1FE8
LDA $1FF0
then slice 0 (0000-03FF) will be mapped to each of the 3 segments
(1000-13FF for segment #0, 1400-17FF for segment #1, 1800-1BFF for segment
#2). Why would something like that ever want to be done?
And then, the memory map will stay as above until someone later on in the
code does a LDA $1FE9, for example, and then slice 1 (0400-07FF) would be
mapped into segment #1 (keeping the mappings of segment #0 and segment #2
untouched)?
Can someone clarify this for me? I confuse myself more the longer I look at
this stuff.. I'm trying to figure out if I can do this with simple
programmable logic or if I have to use some gates as registers to store the
current state of each mapped segment, which would be a bummer.
Thank you, thank you, thank you!
Joe
----------------------------------------------------------------------------------------------
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/