Beispiel #1
0
void ttl74153_device::update()
{
	int sel;
	int section;


	sel = (m_b << 1) | m_a;


	/* process both sections */
	for (section = 0; section < 2; section++)
	{
		if (m_enable[section])
			m_output[section] = 0; // row 1 in truth table
		else
			m_output[section] = m_input_lines[section][sel];
	}


	/* call callback if either of the outputs changed */
	if (!m_output_cb.isnull() &&
		((m_output[0] != m_last_output[0]) || (m_output[1] != m_last_output[1])))
	{
		m_last_output[0] = m_output[0];
		m_last_output[1] = m_output[1];

		m_output_cb();
	}
}
Beispiel #2
0
void mm5837_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
	int tap_14 = BIT(m_shift, 13);
	int tap_17 = BIT(m_shift, 16);
	int zero = (m_shift == 0) ? 1 : 0;

	m_shift <<= 1;
	m_shift |= tap_14 ^ tap_17 ^ zero;

	m_output_cb(BIT(m_shift, 16));
}
Beispiel #3
0
void ttl74148_device::update()
{
	if (m_enable_input)
	{
		// row 1 in truth table
		m_output = 0x07;
		m_output_valid = 1;
		m_enable_output = 1;
	}
	else
	{
		int bit0, bit1, bit2;

		/* this comes straight off the data sheet schematics */
		bit0 = !(((!m_input_lines[1]) &
					m_input_lines[2] &
					m_input_lines[4] &
					m_input_lines[6])  |
					((!m_input_lines[3]) &
					m_input_lines[4] &
					m_input_lines[6])  |
					((!m_input_lines[5]) &
					m_input_lines[6])  |
					(!m_input_lines[7]));

		bit1 = !(((!m_input_lines[2]) &
					m_input_lines[4] &
					m_input_lines[5])  |
					((!m_input_lines[3]) &
					m_input_lines[4] &
					m_input_lines[5])  |
					(!m_input_lines[6])  |
					(!m_input_lines[7]));

		bit2 = !((!m_input_lines[4])  |
					(!m_input_lines[5])  |
					(!m_input_lines[6])  |
					(!m_input_lines[7]));

		m_output = (bit2 << 2) | (bit1 << 1) | bit0;

		m_output_valid = (m_input_lines[0] &
										m_input_lines[1] &
										m_input_lines[2] &
										m_input_lines[3] &
										m_input_lines[4] &
										m_input_lines[5] &
										m_input_lines[6] &
										m_input_lines[7]);

		m_enable_output = !m_output_valid;
	}


	/* call callback if any of the outputs changed */
	if (!m_output_cb.isnull() &&
		((m_output != m_last_output) ||
			(m_output_valid != m_last_output_valid) || (m_enable_output != m_last_enable_output)))
	{
		m_last_output = m_output;
		m_last_output_valid = m_output_valid;
		m_last_enable_output = m_enable_output;

		m_output_cb();
	}
}