[Coco] ML Question: MMU Block Switching

William Mikrut wmikrut72 at gmail.com
Tue Feb 17 11:00:34 EST 2015


I guess what I need to do is go back to the Super Extended Basic unravelled
and spend a little more time examining the code.

While I understand mmu pages and the basic function of ff9d-ff9e... I am
still missing a piece.

For example... I can set ff9d-ff9e to point videoram to start at 6c0000 ...
or really any block.

How to store data in that location to display on the page is what I am
missing.

I know its an old subject and I have read Lamont's and Bardens books on
assembly language.

Are there any other guides besides those two that would help me through
learning these intricate details?
On Feb 17, 2015 9:07 AM, "William Mikrut" <wmikrut72 at gmail.com> wrote:

> No, I didn't/don't ... and I am still learning.
>
> After reading Lomont_CoCoHardware.pdf P66 last night I began to suspect
> that if I took $6C000 divided by $800 I ended up with D8... so I knew that
> had to fit in and was going to try it today.
>
> I Picked $800 because the text said the start of video was video location
> * 2048.
> LSB was easy because it's zero.
>
> So much to learn... and I sincerely appreciate all the guidance!
>
>
>
>
> On Tue, Feb 17, 2015 at 8:47 AM, Robert Gault <robert.gault at att.net>
> wrote:
>
>> William Mikrut wrote:
>>
>>> Ahhh.... FF9D and FF9E.
>>>
>>> I can find plenty of documentation that specifies what this offset should
>>> be for video ram.
>>> When I read several articles on these registers, I find that this is
>>> MSB/LSB format.
>>>
>>> The reason I was swapping in page #36 was to be able to access the Hires
>>> mem locations $6C000-$6DFFF through $2000-3FFF.
>>>
>>> Is there a way to set these registers to it allows me to access that
>>> Hiram
>>> location directly from local addressing (meaning within the 64K Address
>>> space) without the need to swap blocks?
>>>
>>> I can see setting $FF9D/$FF9E with $C0/$00 -- but how would it know it
>>> was
>>> in the $60000 range?
>>>
>>>
>>>
>> William,
>>
>> Taking the above verbatim, it looks like you don't know the math for
>> $FF9D-$FF9E. These registers tell the Coco3 in Coco3 mode where to point
>> video memory. That memory being VMem/8=16-bit value in $FF9D-$FF9E. The MMU
>> block numbers are VMem/$2000.
>> Video Memory      16-bit $FF9D
>> $6C000            $D800             MMU block $FFA1  normal value $36
>> default
>> $72000            $E400             MMU block $FFA1  normal value $39
>> $74000            $E800                  "                        $3A
>> etc.
>>
>> This is similar to the video addressing in Coco 1or2 mode controlled by
>> $FFC8-$FFD3 where the VMem/$200=BIT value, even=OFF odd=ON
>> Video Memory      bit value
>> $2000             %10000 ie poke $FFD2, $FFD0, $FFCF, $FFCC, $FFCA,
>> $FFC8, $FFC6
>>                                    0      0      1       0      0     0
>>     0
>> $FE00           %1111111           1      1      1       1      1     1
>>     1
>>
>>
>> Robert
>>
>>
>> --
>> Coco mailing list
>> Coco at maltedmedia.com
>> https://pairlist5.pair.net/mailman/listinfo/coco
>>
>
>


More information about the Coco mailing list