[Coco] Interrupt Confusion

Roger Taylor 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
  bpl vsync
  rts

Why one game works while the other breaks, and vice-versa, is beyond 
me.  It sounds like something else is not being handled correctly.


----------
Roger Taylor






More information about the Coco mailing list