예제 #1
0
void psxirq_device::psx_irq_update( void )
{
	if( ( n_irqdata & n_irqmask ) != 0 )
	{
		verboselog( machine(), 2, "psx irq assert\n" );
		m_irq_handler( ASSERT_LINE );
	}
	else
	{
		verboselog( machine(), 2, "psx irq clear\n" );
		m_irq_handler( CLEAR_LINE );
	}
}
예제 #2
0
파일: 6522via.c 프로젝트: felipesanches/ume
inline void via6522_device::set_irq_line(int state)
{
	if (m_irq != state)
	{
		m_irq_handler(state);
		m_irq = state;
	}
}
예제 #3
0
void ncr5380n_device::check_irq()
{
	#if 0
	bool oldirq = irq;
	irq = istatus != 0;
	if(irq != oldirq)
		m_irq_handler(irq);
	#endif
}
예제 #4
0
파일: 6522via.cpp 프로젝트: crazii/mameui
void via6522_device::output_irq()
{
	if (m_ier & m_ifr & 0x7f)
	{
		if ((m_ifr & INT_ANY) == 0)
		{
			m_ifr |= INT_ANY;
			m_irq_handler(ASSERT_LINE);
		}
	}
	else
	{
		if (m_ifr & INT_ANY)
		{
			m_ifr &= ~INT_ANY;
			m_irq_handler(CLEAR_LINE);
		}
	}
}
예제 #5
0
파일: idectrl.c 프로젝트: Ilgrim/MAMEHub
void ide_controller_device::set_irq(int state)
{
	if (state == ASSERT_LINE)
		LOG(("IDE interrupt assert\n"));
	else
		LOG(("IDE interrupt clear\n"));

	/* signal an interrupt */
	m_irq_handler(state);
	interrupt_pending = state;
}
예제 #6
0
//-------------------------------------------------
//  update_interrupts
//-------------------------------------------------
void ef9365_device::update_interrupts()
{
    int new_state = ( m_irq_vb  && (m_registers[EF936X_REG_CTRL1] & 0x20) )
                    || ( m_irq_rdy && (m_registers[EF936X_REG_CTRL1] & 0x40) )
                    || ( m_irq_lb  && (m_registers[EF936X_REG_CTRL1] & 0x10) );

    if (new_state != m_irq_state)
    {
        m_irq_state = new_state;
        m_irq_handler(m_irq_state);
    }
}
예제 #7
0
void pc_lpt_device::update_irq()
{
	int irq = 1; // high impedance
	if (!m_irq_enabled)
	{
		irq = m_centronics_ack;
	}

	if (m_irq != irq)
	{
		m_irq = irq;
		m_irq_handler(!irq);
	}
}
예제 #8
0
파일: ym3802.cpp 프로젝트: Dagarman/mame
void ym3802_device::set_irq(uint8_t irq)
{
	uint8_t x;

	m_irq_status |= (irq & m_reg[REG_IER]);
	for(x=0;x<8;x++)
	{
		if(m_irq_status & (1 << x))
			break;
	}
	m_vector = (m_reg[REG_IOR] & 0xe0) | (x << 1);
	if(m_irq_status != 0)
		m_irq_handler(ASSERT_LINE);
}
예제 #9
0
void mos6551_device::tra_complete()
{
	if (!(m_st & ST_TDRE))
	{
		transmit_register_setup(m_tdr);
		m_st |= ST_TDRE;

		if ((m_cmd & CMD_TC_MASK) == CMD_TC_TIE_RTS_LO)
		{
			m_st |= ST_IRQ;
			m_irq_handler(ASSERT_LINE);
		}
	}
}
예제 #10
0
void ncr5380n_device::device_reset()
{
	clock_conv = 2;
	sync_period = 5;
	sync_offset = 0;
	seq = 0;
	status = 0;
	m_tcommand = 0;
	m_icommand = 0;
	istatus = 0;
	m_busstatus = 0;
	irq = false;
	m_irq_handler(irq);
	reset_soft();
}
예제 #11
0
파일: ncr5390.c 프로젝트: Eduardop/mame
void ncr5390_device::device_reset()
{
	fifo_pos = 0;
	memset(fifo, 0, sizeof(fifo));

	clock_conv = 2;
	sync_period = 5;
	sync_offset = 0;
	seq = 0;
	config &= 7;
	status &= 0x90;
	istatus = 0;
	irq = false;
	m_irq_handler(irq);
	reset_soft();
}
예제 #12
0
void mos6551_device::rcv_complete()
{
	if (m_st & ST_RDRF)
	{
		m_st |= ST_OR;
	}

	m_st &= ~(ST_FE | ST_PE);

	m_st |= ST_RDRF;

	if (!(m_cmd & CMD_RIE))
	{
		m_st |= ST_IRQ;
		m_irq_handler(ASSERT_LINE);
	}
}
예제 #13
0
void ef9365_device::device_reset()
{
    m_state = 0;

    m_bf = 0;
    m_irq_state = 0;
    m_irq_vb = 0;
    m_irq_lb = 0;
    m_irq_rdy = 0;

    memset(m_registers, 0, sizeof(m_registers));
    memset(m_border, 0, sizeof(m_border));

    m_screen_out.fill(0);

    set_video_mode();

    m_irq_handler(FALSE);
}
예제 #14
0
파일: sio.cpp 프로젝트: Robbbert/store1
void psxsio_device::sio_interrupt()
{
	verboselog( *this, 1, "sio_interrupt( %s )\n", tag() );
	m_status |= SIO_STATUS_IRQ;
	m_irq_handler(1);
}
예제 #15
0
파일: 3526intf.c 프로젝트: LeWoY/MAMEHub
void ym3526_device::_IRQHandler(int irq)
{
	if (!m_irq_handler.isnull())
		m_irq_handler(irq);
}
예제 #16
0
파일: ataintf.c 프로젝트: fesh0r/old-mame
void ata_interface_device::set_irq(int state)
{
//  printf( "irq %d\n", state );

	m_irq_handler(state);
}
예제 #17
0
void k052109_device::vblank_callback(screen_device &screen, bool state)
{
	if (state)
		m_irq_handler(ASSERT_LINE);
}
예제 #18
0
void am53cf96_device::device_timer(emu_timer &timer, device_timer_id tid, int param, void *ptr)
{
	scsi_regs[REG_IRQSTATE] = 8;    // indicate success
	scsi_regs[REG_STATUS] |= 0x80;  // indicate IRQ
	m_irq_handler(1);
}
예제 #19
0
void y8950_device::_IRQHandler(int irq)
{
	m_irq_handler(irq);
}
예제 #20
0
파일: ym3802.cpp 프로젝트: Dagarman/mame
void ym3802_device::reset_irq(uint8_t irq)
{
	m_irq_status &= ~irq;
	if(m_irq_status == 0)
		m_irq_handler(CLEAR_LINE);
}
예제 #21
0
파일: ataintf.cpp 프로젝트: Ashura-X/mame
void ata_interface_device::set_irq(int state)
{
//  printf( "%s: irq %d\n", machine().describe_context(), state );

	m_irq_handler(state);
}