[Coco] How does the cartridge port work, anyway?

William Astle lost at l-w.ca
Sat Feb 16 11:04:09 EST 2013


On 13-02-16 08:31 AM, Harry Hurst wrote:
>> The Disk ROM detection is done by the extended basic ROM during its
>> initialization just before it transfers control to the basic main loop.
>> There is no interrupt involved in this detection at all. This is the DK
>> detection business.
>
> Lost, there must be something wrong with this. If this is correct then the
> trick with the tape on the CART* (or Q clock) contact, for capturing the
> ROM image, would not work. I think I did this successfully back in the
> early 80s on a CoCo1, so I believe it does work. Does the initialization
> routine check bit 7 of $FF23 before making a decision between BASIC or
> cartridge?

No, this is exactly correct as can be seen from the ROM code. You cannot 
prevent Disk Basic from starting by taping over the CART* contact but it 
does work for CART* based autostart packs.

The CART* stuff is detected as soon as the basic initialization process 
enables interrupts when it goes into its main loop. FIRQ is an 
interrupt, after all, and needs no special polling to check for it. If 
you follow the ROM code, you'll find that the cartridge start code is 
all in the FIRQ handler and there is no special check anywhere else.



More information about the Coco mailing list