void JERRYPIT2Callback(void) { if (TOMIRQEnabled(IRQ_DSP)) { if (jerryInterruptMask & IRQ2_TIMER2) // CPU Timer 2 IRQ { jerryPendingInterrupt |= IRQ2_TIMER2; m68k_set_irq(2); // Generate 68K IPL 2 } } DSPSetIRQLine(DSPIRQ_TIMER1, ASSERT_LINE); // This does the 'IRQ enabled' checking... JERRYResetPIT2(); }
// This is the cause of the regressions in Cybermorph and Missile Command 3D... // Solution: Probably have to check the DSP enable bit before sending these thru. void JERRYPIT1Callback(void) { if (TOMIRQEnabled(IRQ_DSP)) { if (jerryInterruptMask & IRQ2_TIMER1) // CPU Timer 1 IRQ { // Not sure, but I think we don't generate another IRQ if one's already going... // But this seems to work... :-/ jerryPendingInterrupt |= IRQ2_TIMER1; m68k_set_irq(2); // Generate 68K IPL 2 } } DSPSetIRQLine(DSPIRQ_TIMER0, ASSERT_LINE); // This does the 'IRQ enabled' checking... JERRYResetPIT1(); }
void JERRYPIT2Callback(void) { #ifndef JERRY_NO_IRQS if (TOMIRQEnabled(IRQ_DSP)) { //WriteLog("JERRY: In PIT2 callback, IRQM=$%04X\n", jerryInterruptMask); if (jerryInterruptMask & IRQ2_TIMER2) // CPU Timer 2 IRQ { jerryPendingInterrupt |= IRQ2_TIMER2; m68k_set_irq(2); // Generate 68K IPL 2 } } #endif DSPSetIRQLine(DSPIRQ_TIMER1, ASSERT_LINE); // This does the 'IRQ enabled' checking... JERRYResetPIT2(); }