static TIMER_CALLBACK( timerC_cb ) { scsp_state *scsp = (scsp_state *)ptr; scsp->TimCnt[2] = 0xFFFF; scsp->udata.data[0x20/2]|=0x100; scsp->udata.data[0x1c/2]&=0xff00; scsp->udata.data[0x1c/2]|=scsp->TimCnt[2]>>8; CheckPendingIRQ(scsp); }
static TIMER_CALLBACK( timerC_cb ) { aica_state *AICA = (aica_state *)ptr; AICA->TimCnt[2] = 0xFFFF; AICA->udata.data[0xa0/2]|=0x100; AICA->udata.data[0x98/2]&=0xff00; AICA->udata.data[0x98/2]|=AICA->TimCnt[2]>>8; CheckPendingIRQ(AICA); }
static TIMER_CALLBACK( timerA_cb ) { scsp_state *scsp = (scsp_state *)ptr; scsp->TimCnt[0] = 0xFFFF; scsp->udata.data[0x20/2]|=0x40; scsp->udata.data[0x18/2]&=0xff00; scsp->udata.data[0x18/2]|=scsp->TimCnt[0]>>8; CheckPendingIRQ(scsp); MainCheckPendingIRQ(scsp, 0x40); }
static TIMER_CALLBACK( timerB_cb ) { aica_state *AICA = (aica_state *)ptr; AICA->TimCnt[1] = 0xFFFF; AICA->udata.data[0xa0/2]|=0x80; AICA->mcipd |= 0x80; AICA->udata.data[0x94/2]&=0xff00; AICA->udata.data[0x94/2]|=AICA->TimCnt[1]>>8; CheckPendingIRQ(AICA); CheckPendingIRQ_SH4(AICA); }
static void ResetInterrupts(scsp_state *scsp) { UINT32 reset = scsp->udata.data[0x22/2]; if (reset & 0x40) { scsp->Int68kCB(-scsp->IrqTimA); } if (reset & 0x180) { scsp->Int68kCB(-scsp->IrqTimBC); } if (reset & 0x8) { scsp->Int68kCB(-scsp->IrqMidi); } CheckPendingIRQ(scsp); }
void scsp_device::ResetInterrupts() { UINT32 reset = m_udata.data[0x22/2]; if (reset & 0x40) { m_irq_cb(m_IrqTimA, CLEAR_LINE); } if (reset & 0x180) { m_irq_cb(m_IrqTimBC, CLEAR_LINE); } if (reset & 0x8) { m_irq_cb(m_IrqMidi, CLEAR_LINE); } CheckPendingIRQ(); }