[Coco] auto-starting game paks

Darren A mechacoco at gmail.com
Thu Jan 22 17:23:35 EST 2009


On 1/22/09, John Eric wrote:

> Roger, the simplest answer to your question is: The 6809 interrupts are
> (obviously) NMI*, FIRQ*, IRQ*, RESET* (yes, that's an interrupt), SWI1,
> SWI2, and SWI3. The reason that the Q clock will not continuously trigger
> the interrupt is that all of the above interrupts, except SWI2 and SWI3,
> will AUTOMATICALLY (when triggered) set the I flag during their respective
> interrupt sequences, thereby disabling interrupts before the interrupt
> service routine even begins execution. Interrupts must then be re-enabled,
> if needed. -Jeric

--

That is correct. However, the auto-start feature requires the
generation of an FIRQ* interrupt so it is the 'F' flag, not 'I' that
must be set to mask further triggering of this particular interrupt.
All of the mentioned interrupt types set the 'F' flag except for IRQ*,
SWI2 and SWI3. Since an FIRQ* sets the 'F' flag, no recursion will
occur.

The FIRQ service routine in BASIC will turn off the CART interrupt
source in the PIA before transferring control to the cartridge ROM.
This means the code can clear the 'F' flag without causing a restart.

Darren



More information about the Coco mailing list