void z80sti_device::rcv_callback() { if (m_in_si_func.isnull()) receive_register_update_bit(get_in_data_bit()); else receive_register_update_bit(m_in_si_func()); }
void mos6551_device::rcv_callback() { if (m_read_rxd.isnull()) receive_register_update_bit(get_in_data_bit()); else receive_register_update_bit(m_read_rxd()); }
static TIMER_CALLBACK(poly88_cassette_timer_callback) { poly88_state *state = machine.driver_data<poly88_state>(); int data; int current_level; // if (!(input_port_read(machine, "DSW0") & 0x02)) /* V.24 / Tape Switch */ //{ /* tape reading */ if (cassette_get_state(machine.device("cassette"))&CASSETTE_PLAY) { if (state->m_clk_level_tape) { state->m_previous_level = (cassette_input(machine.device("cassette")) > 0.038) ? 1 : 0; state->m_clk_level_tape = 0; } else { current_level = (cassette_input(machine.device("cassette")) > 0.038) ? 1 : 0; if (state->m_previous_level!=current_level) { data = (!state->m_previous_level && current_level) ? 1 : 0; //data = current_level; set_out_data_bit(state->m_cassette_serial_connection.State, data); serial_connection_out(machine, &state->m_cassette_serial_connection); msm8251_receive_clock(machine.device("uart")); state->m_clk_level_tape = 1; } } } /* tape writing */ if (cassette_get_state(machine.device("cassette"))&CASSETTE_RECORD) { data = get_in_data_bit(state->m_cassette_serial_connection.input_state); data ^= state->m_clk_level_tape; cassette_output(machine.device("cassette"), data&0x01 ? 1 : -1); if (!state->m_clk_level_tape) msm8251_transmit_clock(machine.device("uart")); state->m_clk_level_tape = state->m_clk_level_tape ? 0 : 1; return; } state->m_clk_level_tape = 1; if (!state->m_clk_level) msm8251_transmit_clock(machine.device("uart")); state->m_clk_level = state->m_clk_level ? 0 : 1; // } }
void z80dart_channel::rcv_callback() { if (m_wr[3] & WR3_RX_ENABLE) { if (m_in_rxd_func.isnull()) receive_register_update_bit(get_in_data_bit()); else receive_register_update_bit(m_in_rxd_func()); } }
inline void im6402_device::receive() { int bit = 1; if (m_in_rri_func.isnull()) { bit = get_in_data_bit(); } else { bit = m_in_rri_func(); } receive_bit(bit); }
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()); } } }
void i8251_device::receive_clock() { m_rxc++; if (m_rxc == m_br_factor) m_rxc = 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(get_in_data_bit()); 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); } }
void z80sti_device::rcv_callback() { receive_register_update_bit(get_in_data_bit()); }