static void UpdateIFR(SY6522_AY8910* pMB) { pMB->sy6522.IFR &= 0x7F; if(pMB->sy6522.IFR & pMB->sy6522.IER & 0x7F) pMB->sy6522.IFR |= 0x80; // Now update the IRQ signal from all 6522s // . OR-sum of all active TIMER1, TIMER2 & SPEECH sources (from all 6522s) UINT bIRQ = 0; for(UINT i=0; i<NUM_SY6522; i++) bIRQ |= g_MB[i].sy6522.IFR & 0x80; // NB. Mockingboard generates IRQ on both 6522s: // . SSI263's IRQ (A/!R) is routed via the 2nd 6522 (at $Cx80) and must generate a 6502 IRQ (not NMI) // . SC-01's IRQ (A/!R) is also routed via a (2nd?) 6522 // Phasor's SSI263 appears to be wired directly to the 6502's IRQ (ie. not via a 6522) // . I assume Phasor's 6522s just generate 6502 IRQs (not NMIs) if (bIRQ) { CpuIrqAssert(IS_6522); } else { CpuIrqDeassert(IS_6522); } }
void CSuperSerialCard::CommTcpSerialReceive() { if (m_hCommAcceptSocket != INVALID_SOCKET) { char Data[0x80]; int nReceived = 0; while ((nReceived = recv(m_hCommAcceptSocket, Data, sizeof(Data), 0)) > 0) { for (int i = 0; i < nReceived; i++) { m_qTcpSerialBuffer.push_back(Data[i]); } } if (m_bRxIrqEnabled && !m_qTcpSerialBuffer.empty()) { CpuIrqAssert(IS_SSC); } } }
static void UpdateIFR(SY6522_AY8910* pMB) { pMB->sy6522.IFR &= 0x7F; if(pMB->sy6522.IFR & pMB->sy6522.IER & 0x7F) pMB->sy6522.IFR |= 0x80; // Now update the IRQ signal from all 6522s // . OR-sum of all active TIMER1, TIMER2 & SPEECH sources (from all 6522s) UINT bIRQ = 0; for(UINT i=0; i<NUM_SY6522; i++) bIRQ |= g_MB[i].sy6522.IFR & 0x80; if (bIRQ) if (pMB->nAY8910Number & 1) CpuNmiAssert(IS_6522); else CpuIrqAssert(IS_6522); else if (pMB->nAY8910Number & 1) CpuNmiDeassert(IS_6522); else CpuIrqDeassert(IS_6522); }