Esempio n. 1
0
void cdp1871_device::detect_keypress()
{
	UINT8 data = 0;

	data = m_in_d_func[m_drive](0);

	if (data == (1 << m_sense))
	{
		if (!m_inhibit)
		{
			m_shift = m_in_shift_func();
			m_control = m_in_control_func();
			m_inhibit = true;
			m_next_da = ASSERT_LINE;
		}
		else
		{
			m_next_rpt = ASSERT_LINE;
		}
	}
	else
	{
		m_inhibit = false;
		m_next_rpt = CLEAR_LINE;
	}
}
Esempio n. 2
0
void ay3600_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
	int ako = 0;

	for (int x = 0; x < 9; x++)
	{
		UINT16 data = m_in_x_func[x](0,0xffff);

		for (int y = 0; y < 10; y++)
		{
			if (BIT(data, y))
			{
				int b = (x * 10) + y;

				ako = 1;

				if (b > 63)
				{
					b -= 64;
					b = 0x100 | b;
				}

				b |= (m_in_shift_func() << 6);
				b |= (m_in_control_func() << 7);

				if (m_b != b)
				{
					m_b = b;

					m_out_data_ready_func(1);
					return;
				}
			}
		}
	}

	if (!ako)
	{
		m_b = -1;
	}

	if (ako != m_ako)
	{
		m_out_ako_func(ako);
		m_ako = ako;
	}
}