[Coco] Interrupt Confusion
rtaylor at bayou.com
Mon Jan 12 00:40:06 EST 2004
Here's what's going on - I revised the interrupt code in Mocha to work
>>>according to the rules as I understand them (I had known it wasn't
>>>right but most stuff still worked). As a result, the Cyrus Chess
>>>program stopped processing keystrokes. I found if I set bit 7 of
>>>0xff03 after an interrupt but ONLY when the CC IRQ mask was on, the
>>>program would work fine. Before that, I was setting bit 7 as soon as
>>>mocha fired the IRQ (regardless of the state of CC register). I
>>>thought that fixed everything until...
>>>"Temple Of ROM" now breaks. If I turn on bit 7 of 0xff03 everytime I
>>>fire an IRQ regardless of the CC register's IRQ mask, TOR will work
>>>but Cyrus breaks! In TOR, it appears the CC IRQ mask is always on
>>>meaning the 6809 isn't processing IRQs but the program is somehow
>>>dependent on bit 7 of 0xff03 being handled as if IRQs were firing.
>>>What's going on?
To the best of my knowledge, bit 7 of 65283 should be going high 60 times a
second no matter if you have the CPU IRQ masked or not.
The game that seems to be dependant on bit 7 of 65283 is probably manually
checking this bit to see when the 60hz refresh signal is occuring. A
typical VSYNC call might be:
vsync tst 65283
Why one game works while the other breaks, and vice-versa, is beyond
me. It sounds like something else is not being handled correctly.
More information about the Coco