Ejemplo n.º 1
0
void nes_miracle_device::tra_callback()    // Tx send bit
{
	uint8_t bit = transmit_register_get_data_bit();

	// send this to midi out
	m_midiout->write_txd(bit);
}
Ejemplo n.º 2
0
void mos6551_device::tra_callback()
{
	if (m_write_txd.isnull())
		transmit_register_send_bit();
	else
		m_write_txd(transmit_register_get_data_bit());
}
Ejemplo n.º 3
0
void ym3802_device::transmit_clk()
{
	if(m_reg[REG_TCR] & 0x01) // Tx Enable
	{
		if(!m_tx_fifo.empty())
		{
			if (is_transmit_register_empty())
			{
				transmit_register_setup(m_tx_fifo.front());  // start to send first byte in FIFO
				m_tx_fifo.pop();                                // and remove it from the FIFO
				if(m_tx_fifo.empty())
					set_irq(IRQ_FIFOTX_EMPTY);
			}
		}
		/* if diserial has bits to send, make them so */
		if (!is_transmit_register_empty())
		{
			uint8_t data = transmit_register_get_data_bit();
			m_tx_busy = true;
			m_txd_handler(data);
		}
		if (m_tx_fifo.empty() && is_transmit_register_empty())
			m_tx_busy = false;
	}
}
Ejemplo n.º 4
0
void serial_keyboard_device::tra_callback()
{
	m_rbit = transmit_register_get_data_bit();
	if(m_slot)
		m_owner->out_rx(m_rbit);
	else
		m_out_tx_func(m_rbit);
}
Ejemplo n.º 5
0
void i8251_device::transmit_clock()
{
	m_txc_count++;
	if (m_txc_count != m_br_factor)
		return;

	m_txc_count = 0;

	if (is_transmit_register_empty())
	{
		if ((m_status & I8251_STATUS_TX_READY) == 0 && (is_tx_enabled() || (m_flags & I8251_DELAYED_TX_EN) != 0))
			start_tx();
		else
			m_status |= I8251_STATUS_TX_EMPTY;

		update_tx_ready();
		update_tx_empty();
	}

	/* if diserial has bits to send, make them so */
	if (!is_transmit_register_empty())
	{
		uint8_t data = transmit_register_get_data_bit();
		m_txd_handler(data);
	}

#if 0
	/* hunt mode? */
	/* after each bit has been shifted in, it is compared against the current sync byte */
	if (BIT(m_command, 7))
	{
		/* data matches sync byte? */
		if (m_data == m_sync_bytes[m_sync_byte_offset])
		{
			/* sync byte matches */
			/* update for next sync byte? */
			m_sync_byte_offset++;

			/* do all sync bytes match? */
			if (m_sync_byte_offset == m_sync_byte_count)
			{
				/* ent hunt mode */
				m_command &= ~(1<<7);
			}
		}
		else
		{
			/* if there is no match, reset */
			m_sync_byte_offset = 0;
		}
	}
#endif
}
Ejemplo n.º 6
0
void zx8302_device::tra_callback()
{
	switch (m_tcr & MODE_MASK)
	{
	case MODE_SER1:
		m_out_txd1_func(transmit_register_get_data_bit());
		break;

	case MODE_SER2:
		m_out_txd2_func(transmit_register_get_data_bit());
		break;

	case MODE_MDV:
		// TODO
		break;

	case MODE_NET:
		m_out_netout_func(transmit_register_get_data_bit());
		break;
	}
}
Ejemplo n.º 7
0
void z80dart_channel::tra_callback()
{
	if (!(m_wr[5] & WR5_TX_ENABLE))
	{
		// transmit mark
		m_out_txd_func(1);
	}
	else if (m_wr[5] & WR5_SEND_BREAK)
	{
		// transmit break
		m_out_txd_func(0);
	}
	else if (!is_transmit_register_empty())
	{
		// transmit data
		m_out_txd_func(transmit_register_get_data_bit());
	}
}
Ejemplo n.º 8
0
void px4_state::tra_callback()
{
	if (ART_TX_ENABLED)
	{
		if (ART_BREAK)
		{
			// transmit break
			txd_w(0);
		}
		else
		{
			// transmit data
			txd_w(transmit_register_get_data_bit());
		}
	}
	else
	{
		// transmit mark
		txd_w(1);
	}
}
Ejemplo n.º 9
0
inline void im6402_device::transmit()
{
	if (is_transmit_register_empty() && !m_tbre)
	{
		transmit_register_setup(m_tbr);

		set_tbre(ASSERT_LINE);
		set_tre(CLEAR_LINE);
	}

	if (!is_transmit_register_empty())
	{
		int bit = transmit_register_get_data_bit();

		m_out_tro_func(bit);
		serial_connection_out();

		if (is_transmit_register_empty())
		{
			set_tre(ASSERT_LINE);
		}
	}
}
Ejemplo n.º 10
0
//-------------------------------------------------
//  tra_callback -
//-------------------------------------------------
void z80sio_channel::tra_callback()
{
	if (!(m_wr5 & WR5_TX_ENABLE))
	{
		LOG("%s() \"%s \"Channel %c transmit mark 1 m_wr5:%02x\n", FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5);
		// transmit mark
		if (m_index == z80sio_device::CHANNEL_A)
			m_uart->m_out_txda_cb(1);
		else
			m_uart->m_out_txdb_cb(1);
	}
	else if (m_wr5 & WR5_SEND_BREAK)
	{
		LOG("%s() \"%s \"Channel %c send break 1 m_wr5:%02x\n", FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5);
		// transmit break
		if (m_index == z80sio_device::CHANNEL_A)
			m_uart->m_out_txda_cb(0);
		else
			m_uart->m_out_txdb_cb(0);
	}
	else if (!is_transmit_register_empty())
	{
		int db = transmit_register_get_data_bit();

		LOG("%s() \"%s \"Channel %c transmit data bit %d m_wr5:%02x\n", FUNCNAME, m_owner->tag(), 'A' + m_index, db, m_wr5);
		// transmit data
		if (m_index == z80sio_device::CHANNEL_A)
			m_uart->m_out_txda_cb(db);
		else
			m_uart->m_out_txdb_cb(db);
	}
	else
	{
		LOG("%s() \"%s \"Channel %c Failed to transmit m_wr5:%02x\n", FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5);
		logerror("%s \"%s \"Channel %c Failed to transmit\n", FUNCNAME, m_owner->tag(), 'A' + m_index);
	}
}
Ejemplo n.º 11
0
void midiin_device::tra_callback()
{
	int bit = transmit_register_get_data_bit();
	m_input_cb(bit);
}
Ejemplo n.º 12
0
void midi_keyboard_device::tra_callback()
{
	m_out_tx_func(transmit_register_get_data_bit());
}
Ejemplo n.º 13
0
void lk201_device::tra_callback()
{
	m_tx_handler(transmit_register_get_data_bit());
}
Ejemplo n.º 14
0
void sb_device::tra_callback()    // Tx send bit
{
	int bit = transmit_register_get_data_bit();
	m_mdout->write_txd(bit);
}
Ejemplo n.º 15
0
void apollo_kbd_device::tra_callback()    // Tx send bit
{
	int bit = transmit_register_get_data_bit();
	m_tx_w(bit);
}
Ejemplo n.º 16
0
void esqpanel_device::tra_callback()    // Tx send bit
{
	m_write_tx(transmit_register_get_data_bit());
}
Ejemplo n.º 17
0
void graph_link_hle_device::tra_callback()
{
	m_serial_port->write_txd(transmit_register_get_data_bit());
}
Ejemplo n.º 18
0
void mc6852_device::tra_callback()
{
	m_write_tx_data(transmit_register_get_data_bit());
}
Ejemplo n.º 19
0
void esqpanel_device::tra_callback()    // Tx send bit
{
	int bit = transmit_register_get_data_bit();
	m_out_tx_func(bit);
}
Ejemplo n.º 20
0
void i8251_device::transmit_clock()
{
	m_txc_count++;

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

	/* transmit enabled? */
	if (m_command & (1<<0))
	{
		/* do we have a character to send? */
		if ((m_status & I8251_STATUS_TX_READY)==0)
		{
			/* is diserial ready for it? */
			if (is_transmit_register_empty())
			{
				/* set it up */
				transmit_register_setup(m_data);
				/* i8251 transmit reg now empty */
				m_status |=I8251_STATUS_TX_EMPTY;
				/* ready for next transmit */
				m_status |=I8251_STATUS_TX_READY;

				update_tx_empty();
				update_tx_ready();
			}
		}

		/* if diserial has bits to send, make them so */
		if (!is_transmit_register_empty())
		{
			UINT8 data = transmit_register_get_data_bit();
			m_tx_busy = true;
			m_txd_handler(data);
		}

		// is transmitter totally done?
		if ((m_status & I8251_STATUS_TX_READY) && is_transmit_register_empty())
		{
			m_tx_busy = false;

			if (m_disable_tx_pending)
			{
				LOG(("Applying pending disable\n"));
				m_disable_tx_pending = false;
				m_command &= ~(1<<0);
				m_txd_handler(1);
				update_tx_ready();
			}
		}
	}

#if 0
	/* hunt mode? */
	/* after each bit has been shifted in, it is compared against the current sync byte */
	if (m_command & (1<<7))
	{
		/* data matches sync byte? */
		if (m_data == m_sync_bytes[m_sync_byte_offset])
		{
			/* sync byte matches */
			/* update for next sync byte? */
			m_sync_byte_offset++;

			/* do all sync bytes match? */
			if (m_sync_byte_offset == m_sync_byte_count)
			{
				/* ent hunt mode */
				m_command &=~(1<<7);
			}
		}
		else
		{
			/* if there is no match, reset */
			m_sync_byte_offset = 0;
		}
	}
#endif
}
Ejemplo n.º 21
0
void mc2661_device::tra_callback()
{
	m_write_txd(transmit_register_get_data_bit());
}
Ejemplo n.º 22
0
void tms5501_device::tra_callback()
{
	m_write_xmt(transmit_register_get_data_bit());
}
Ejemplo n.º 23
0
void im6402_device::tra_callback()
{
	m_write_tro(transmit_register_get_data_bit());
}
Ejemplo n.º 24
0
void serial_terminal_device::tra_callback()
{
	output_rxd(transmit_register_get_data_bit());
}
Ejemplo n.º 25
0
void i8251_device::transmit_clock()
{
	/* transmit enable? */
	if (m_command & (1<<0))
	{

		/* transmit register full? */
		if ((m_status & I8251_STATUS_TX_READY)==0)
		{
			/* if transmit reg is empty */
			if (is_transmit_register_empty())
			{
				/* set it up */
				transmit_register_setup(m_data);
				/* i8251 transmit reg now empty */
				m_status |=I8251_STATUS_TX_EMPTY;
				/* ready for next transmit */
				m_status |=I8251_STATUS_TX_READY;

				update_tx_empty();
				update_tx_ready();
			}
		}

		/* if transmit is not empty... transmit data */
		if (!is_transmit_register_empty())
		{
			UINT8 data = transmit_register_get_data_bit();
	//      logerror("I8251\n");
			//transmit_register_send_bit();
			m_out_txd_func(data);

			m_connection_state &=~SERIAL_STATE_TX_DATA;
			m_connection_state|=(data<<5);
			serial_connection_out();
		}
	}

#if 0
	/* hunt mode? */
	/* after each bit has been shifted in, it is compared against the current sync byte */
	if (m_command & (1<<7))
	{
		/* data matches sync byte? */
		if (m_data == m_sync_bytes[m_sync_byte_offset])
		{
			/* sync byte matches */
			/* update for next sync byte? */
			m_sync_byte_offset++;

			/* do all sync bytes match? */
			if (m_sync_byte_offset == m_sync_byte_count)
			{
				/* ent hunt mode */
				m_command &=~(1<<7);
			}
		}
		else
		{
			/* if there is no match, reset */
			m_sync_byte_offset = 0;
		}
	}
#endif
}
Ejemplo n.º 26
0
void jvc_xvd701_device::tra_callback()
{
	output_rxd(transmit_register_get_data_bit());
}
Ejemplo n.º 27
0
void mc68901_device::tra_callback()
{
	m_out_so_cb(transmit_register_get_data_bit());
}
Ejemplo n.º 28
0
void null_modem_device::tra_callback()
{
	output_rxd(transmit_register_get_data_bit());
}
Ejemplo n.º 29
0
void apricot_keyboard_hle_device::tra_callback()
{
	m_host->in_w(transmit_register_get_data_bit());
}