Example #1
0
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());
}
Example #2
0
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());
}
Example #3
0
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;
//  }
}
Example #4
0
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());
	}
}
Example #5
0
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());
		}
	}
}
Example #7
0
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());
		}
	}
}
Example #8
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);
	}
}
Example #9
0
void z80sti_device::rcv_callback()
{
	receive_register_update_bit(get_in_data_bit());
}