[Coco] auto-starting game paks
John Eric
jet.pack at ymail.com
Thu Jan 22 17:44:09 EST 2009
Thanks for the correction Darren. After I sent that, I wondered if perhaps I should have mentioned how the non-maskable interrupt works... :) Jeric
________________________________
From: Darren A <mechacoco at gmail.com>
To: CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>
Sent: Thursday, January 22, 2009 4:23:35 PM
Subject: Re: [Coco] auto-starting game paks
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
--
Coco mailing list
Coco at maltedmedia.com
http://five.pairlist.net/mailman/listinfo/coco
More information about the Coco
mailing list