void twinhawkYM2151IRQHandler(int irq ) { if (irq) { ZetRaiseIrq(1); } else { ZetLowerIrq(); } }
int QsndSectRun(int nStart,int nEnd) { int nTo; // See if an irq occurs before the end while (nStart+nIrqNext<nEnd) { nTo=nStart+nIrqNext; SectRun(nStart,nTo); ZetRaiseIrq(0xff); ZetRun(0); ZetLowerIrq(); nIrqNext=nIrqPeriod; // Next irq happens after period nStart=nTo; // Done this part now } nTo=nEnd; SectRun(nStart,nTo); nIrqNext-=nTo-nStart; // Next irq happens sooner return 0; }