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()); } } }
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()); } } }
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); } }
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()); } } }
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); } }