Posted By
KiCHY on 2016-12-26 08:23:08
| IRQs from different sources
Hi,
I never implemented multiple IRQs from different sources before. How to handle a timer interrupt ($ff00/01) and a raster interrupt simultaneously? My IRQ handler routine starts when any of these happens and I can find the interrupt cause in $ff09. But what happens if, for example, I'm handling the raster interrupt and during doing this, the timer reaches its value and another interrupt wants to occur? - Is it skipped entirely? - After done the current interrupt, it fires again with the new flag in ff09? - My IRQ handler fires again, breaking the currently handled interrupt? - Other?
|
|
Posted By
Litwr on 2016-12-26 08:59:31
| Re: IRQs from different sources
Just look at $ff09. It keeps the interrupt request flags. You should reset the flag manually in the end of your interrupt handler. So it is easy, just work with $ff09. You may lose interrupt only if your handler is too slow and continues to work when the next two the same interrupts happen.
|
|
Posted By
JamesC on 2016-12-26 09:07:55
| Re: IRQs from different sources
Are you SEI (stopping interrupts) and then CLI (restoring interrupts) in your IRQ handler?
If IRQs are still on, they will still occur.
|
|
Posted By
Litwr on 2016-12-26 09:49:58
| Re: IRQs from different sources
>Are you SEI (stopping interrupts) and then CLI (restoring interrupts) in your IRQ handler? It is done automatically. Someone needs only to check and to reset $ff09 and doesn't forget RTI.
|
|
Posted By
JamesC on 2016-12-26 19:53:53
| Re: IRQs from different sources
Ha. I grabbed my Programmer's Reference Guide and looked up SEI and CLI ... then realized you're talking about TED interrupts, not CPU interrupts. My apologies for not catching this originally.
|
|
Posted By
Litwr on 2016-12-28 10:21:20
| Re: IRQs from different sources
I was about interrupt handler structure and I can think that SEI/CLI are useful to install this handler.
|
|