[Coco] CoCo3 and 16K cart roms.....

Steve Ostrom smostrom7 at comcast.net
Mon Apr 11 14:16:07 EDT 2016


This is fascinating stuff !!  Please keep these discussions going.  I have 
written some assembly, but every time I read some of these discussions, I 
learn more.  Thanks!

--- Steve ---


-----Original Message----- 
From: William Astle
Sent: Monday, April 11, 2016 10:32 AM
To: coco at maltedmedia.com
Subject: Re: [Coco] CoCo3 and 16K cart roms.....

You can actually test for ROM mode without burning a register. Also,
"STA" would be faster than "CLR" for the FFDx addresses.

The test for ROM mode involves some cleverness related to the fact that
the opcodes for BRA and BRN differ by 1.

DEC ROMTEST
ROMTEST BRN RAMMODE
JMP ROUTINE
RAMMODE INC ROMTEST
; set up ROM mode with book keeping as needed
JSR ROUTINE
; restore RAM mode with book keeping as needed
RTS

The above has the advantage that it doesn't burn any registers unless
the "book keeping" bits do. It depends what ROUTINE does whether you
need to do any book keeping or not, of course.

The above has the advantage that if someone has previously set the
system to ROM mode for some reason (which can happen), you won't return
it to RAM mode unexpectedly.

It has the disadvantage that the stack will be arranged differently
depending on whether you were vectoring in via ROM or RAM mode but if
you aren't relying on stack contents for parameters, that won't be a
problem.

It will also run ROUTINE in ROM mode on a Coco1/2 that's been switched
to all RAM mode and then return it to RAM mode when done.

On 2016-04-11 08:14, Barry Nelson wrote:
>   To access the contents of $E000-$FE00 in rom on a CoCo 3 you must first 
> set ROM mode.
>
>          LDA $FFFE Get first byte of the reset vector
>          CMPA #$8C Is this a CoCo 3?
>          BNE COCO12
> CLR $FFDE Enable ROM in memory map
> COCO12 JSR ADDRESS Your routine in upper rom
>          LDA $FFFE Get first byte of the reset vector
>          CMPA #$8C Is this a CoCo 3?
>          BNE SKIPRAM
> CLR $FFDF Enable all RAM mode
> SKIPRAM NOP Code continues
>
>> Bill Pierce ooogalapasooo at aol.com
>> Mon Apr 11 09:02:46 EDT 2016
>>
>> Phil, isn't that where Super Extended Basic is at?
>> The Coco 3 transfers it's Roms to ram to patch in SECB after boot, so 
>> your rom is being over written by SECB. That's the same problem with 
>> extending HDBDOS to 16k, it won't work on Coco 3 without doing some bank 
>> switching to keep SECB working.
>
>


-- 
Coco mailing list
Coco at maltedmedia.com
https://pairlist5.pair.net/mailman/listinfo/coco 



More information about the Coco mailing list