Beispiel #1
0
void i8251_device::receive_clock()
{
	/* receive enable? */
	if (BIT(m_command, 2))
	{
		const bool sync = is_receive_register_synchronized();
		if (sync)
		{
			--m_rxc_count;
			if (m_rxc_count)
				return;
		}

		//logerror("I8251\n");
		/* get bit received from other side and update receive register */
		receive_register_update_bit(m_rxd);
		if (is_receive_register_synchronized())
			m_rxc_count = sync ? m_br_factor : (3 * m_br_factor / 2);

		if (is_receive_register_full())
		{
			receive_register_extract();
			receive_character(get_received_char());
		}
	}
}
Beispiel #2
0
void wangpc_keyboard_device::input_callback(UINT8 state)
{
	int bit = (state & RX) ? 1 : 0;

	receive_register_update_bit(bit);

	if (is_receive_register_full())
	{
		m_maincpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE);
		receive_register_extract();

		if (LOG) logerror("Wang PC keyboard receive data %02x\n", get_received_char());
	}
}
void i8251_device::receive_clock()
{
	/* receive enable? */
	if (m_command & (1<<2))
	{
		//logerror("I8251\n");
		/* get bit received from other side and update receive register */
		if(m_in_rxd_func.isnull())
			receive_register_update_bit(get_in_data_bit());
		else
			receive_register_update_bit(m_in_rxd_func());

		if (is_receive_register_full())
		{
			receive_register_extract();
			receive_character(get_received_char());
		}
	}
}
Beispiel #4
0
inline void im6402_device::receive_bit(int state)
{
	if (LOG) logerror("IM6402 '%s' Receive Bit %u\n", tag(), state);

	receive_register_update_bit(state);

	if (is_receive_register_full())
	{
		receive_register_extract();
		m_rbr = get_received_char();

		if (LOG) logerror("IM6402 '%s' Receive Data %02x\n", tag(), m_rbr);

		if (m_dr)
		{
			m_oe = 1;
		}

		set_dr(ASSERT_LINE);
	}
}
Beispiel #5
0
void i8251_device::receive_clock()
{
	m_rxc_count++;

	if (m_rxc_count == m_br_factor)
		m_rxc_count = 0;
	else
		return;

	/* receive enable? */
	if (m_command & (1<<2))
	{
		//logerror("I8251\n");
		/* get bit received from other side and update receive register */
		receive_register_update_bit(m_rxd);

		if (is_receive_register_full())
		{
			receive_register_extract();
			receive_character(get_received_char());
		}
	}
}
Beispiel #6
0
inline void im6402_device::receive()
{
	if (m_in_rri_func.isnull())
	{
		receive_register_update_bit(get_in_data_bit());
	}
	else
	{
		receive_register_update_bit(m_in_rri_func());
	}

	if (is_receive_register_full())
	{
		receive_register_extract();
		m_rbr = get_received_char();

		if (m_dr)
		{
			m_oe = 1;
		}

		set_dr(ASSERT_LINE);
	}
}