[Coco] MMU testing utility

RETRO Innovations go4retro at go4retro.com
Sat Sep 23 15:15:30 EDT 2017


On 9/23/2017 12:32 PM, Tormod Volden wrote:
> On Sat, Sep 23, 2017 at 8:29 AM, RETRO Innovations wrote:
>> On 9/23/2017 12:04 AM, William Astle wrote:
>>> On 2017-09-22 09:22 PM, RETRO Innovations wrote:
>>>> And, for others:
>>>>
>>>> what does the GIME do?  where does it map $fexx when I enable CRM bit?
>>>
>>>  From what I recall of when I tested it, FExx comes from the physical range
>>> 7FExx (so block 3F). It has been a long time since I did test it, though.
>>>
>> Hmm, that is interesting.  So, it you mapped any other 8kB block to 3f, the
>> next to last page would get overwritten by CRM activity...
> Like the CoCo3, I store the CRM in the $3F block in my own MMU design.
> Now here is where my MMU diverts a bit from the GIME/CoCo3. I
> currently store it at the last page (upper 256 bytes). So if $3F is
> mapped at $E000-$FEFF, you don't see the CRM bytes unless you actually
> enable CRM.
That was my second implementation (first was forcing bank 7 to be 
task0's value all the time, but that's no good if someone remaps block 7 
in task 0 :-).
> However, this logic is re-programmable, and I might
> consider sacrificing those extra 256 bytes to be more GIME-like.
I like your current idea, so not sure I'd change it yet.
> Further, you cannot map the $3F block anywhere else in my current
> logic design. On the CoCo3, the ROMs and video RAM have their place in
> the 512KB virtual space. In my cartridge design, the ROMs and internal
> RAM including video RAM comes in addition to the external 512KB RAM.
> So I use $3F as the magic "see-through" value to access the internal
> RAM and ROMs. Since I use 6-bit task registers like the CoCo3 I make
> double use of the $3F value, so this value means mapping block $3F for
> the $E000-$FEFF task registers and "see-through" for the 7 other
> address segments.
Since I plan to allow remapping the internal RAM, I didn't go that 
route, but I see where it makes sense in a cart design, since you can't 
alter the native mappings inside.

Jim


More information about the Coco mailing list