[Coco] Writing a program for a cartridge
Barry Nelson
barry.nelson at amobiledevice.com
Mon Jan 25 04:32:37 EST 2016
Ok, I'm trying to write a program that will manipulate some hardware registers in a cartridge and change the rom that is mapped at $C000 and then cold start the computer once the new rom is mapped in. This is what is haveā¦
ORG $C000
START ORCC #$50 Disable interrupts
LEAX TORAM,PCR
LDY $3000
LOOP CMPX ENDRT Copy code at TORAM into ram
BEQ EXIT
LDA ,X+
STA ,Y+
BRA LOOP
EXIT JMP $3000 Jump to copied code
TORAM ORCC #$50 Disable interrupts
CLRA
STA >$0071 Clear flag to indicate cold start
STA $FF58 Clear cart interrupt flag, This disables the CART line
STA $FF5A Clear bank # high bits for selecting the rom bank #
LDA #4
STA $FF59 Set bank # to 4
STA $FFDE Turn on the ROM in the memory map
ANDCC #$AF Enable interrupts
JMP [$FFFE] Do restart
ENDRT EQU *
END START
If I disable the cartridge autostart and type the commands below from basic it works, but the above code does not.
POKE &HFF58,0:POKE &HFF59,4:POKE &HFF5A,0:POKE &HFFDE,0:POKE &H71,0:EXEC PEEK(&HFFFE)*256+PEEK(&HFFFF)
> msmcdoug msmcdoug at iinet.net.au
> Mon Jan 25 03:46:15 EST 2016
>
> Might be easier if you described the issues you're having.
>
>
> Sent from my Samsung device
>
> -------- Original message --------
> From: Barry Nelson <barry.nelson at amobiledevice.com>
> Date: 25/01/2016 6:59 pm (GMT+10:00)
> To: coco at maltedmedia.com
> Subject: [Coco] Writing a program for a cartridge
>
> I am trying to write a cartridge based program and I am having some issues. I want to make sure I understand the cartridge startup sequence. As I understand it, if the cart pin is enabled, the code in the cartridge is executed starting at $C000. Is that correct? Is there anything else I should know about writing code to run from a cartridge?
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
More information about the Coco
mailing list