Exemplo n.º 1
0
void msm58321_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
	switch (id)
	{
	case TIMER_CLOCK:
		advance_seconds();
		break;

	case TIMER_BUSY:
		m_out_busy_func(m_busy);
		m_busy = !m_busy;
		break;
	}
}
Exemplo n.º 2
0
inline void wd11c00_17_device::check_interrupt()
{
	if (BIT(m_ra, 10))
	{
		m_status &= ~STATUS_DRQ;
	}

	int ra3 = BIT(m_ra, 3);

	if (m_ra3 != ra3)
	{
		m_out_ra3_func(ra3 ? ASSERT_LINE : CLEAR_LINE);
		m_ra3 = ra3;
	}

	int irq5 = ((m_status & STATUS_IRQ) && (m_mask & MASK_IRQ)) ? ASSERT_LINE : CLEAR_LINE;

	if (m_irq5 != irq5)
	{
		m_out_irq5_func(irq5);
		m_irq5 = irq5;
	}

	int drq3 = ((m_status & STATUS_DRQ) && (m_mask & MASK_DMA)) ? ASSERT_LINE : CLEAR_LINE;

	if (m_drq3 != drq3)
	{
		m_out_drq3_func(drq3);
		m_drq3 = drq3;
	}

	int busy = (m_status & STATUS_BUSY) ? 0 : 1;

	if (m_busy != busy)
	{
		m_out_busy_func(busy);
		m_busy = busy;
	}

	int req = (m_status & STATUS_REQ) ? 1 : 0;

	if (m_req != req)
	{
		m_out_req_func(req);
		m_req = req;
	}
}