[Coco] ML Question: MMU Block Switching

William Mikrut wmikrut72 at gmail.com
Mon Feb 16 23:14:15 EST 2015


Yes, I did miss that mismatch of bits and will correct that.
Thank you!


On Mon, Feb 16, 2015 at 8:22 PM, William Astle <lost at l-w.ca> wrote:

> If having interrupts active while the memory block is switched doesn't
> cause a crash and if the interrupts themselves don't touch the MMU register
> you're changing, there's no need to disable them while making the switch.
>
> If, however, you're switching out something that the interrupts rely on,
> you'll have to disable them for the duration of your operations with the
> switched memory map.
>
> Also, as has been noted elsewhere, you need to match your orcc and andcc
> to use the same bits. Your example code only re-enables IRQ but you're
> disabling both IRQ and FIRQ. #$af is the right one to re-enable both.
>
>
> On 15-02-16 05:32 PM, William Mikrut wrote:
>
>> I do have a another ML question about memory block switching.
>> When processing I will have a controlling program setup at $1200
>>
>>          orcc     #$50    Interrupts off
>> lda $ffa1     Load current page
>> anda   #63
>> pshs a           Push for later
>> lda #$36 Map in Hi-res Text
>> sta $ffa1     Tell MMU to switch page
>> andcc  #$ef      Interrupts on
>>
>> Now I can manipulate data in $2000-$3FFF and essentially display text on
>> the hi-res text screen.
>>
>> When I am done and ending the program I cleanup with this:
>>          orcc #$50
>> puls a
>> sta $ffa1
>> andcc  #$ef
>>
>> Is there any reason that would cause a program fault while my lower memory
>> program is operating and the MMU is set to map in page 36 to $2000-$3FFF?
>>
>> My lower memory program is no where near $2000 in ending size.
>>
>>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
>


More information about the Coco mailing list