Пример #1
0
Файл: m5.c Проект: risico/jsmess
static WRITE_LINE_DEVICE_HANDLER(sordm5_video_interrupt_callback)
{
	m5_state *driver_state = device->machine().driver_data<m5_state>();

	if (state)
	{
		z80ctc_trg3_w(driver_state->m_ctc, 1);
		z80ctc_trg3_w(driver_state->m_ctc, 0);
	}
}
Пример #2
0
static void sordm5_video_interrupt_callback(running_machine &machine, int state)
{
	m5_state *driver_state = machine.driver_data<m5_state>();

	if (state)
	{
		z80ctc_trg3_w(driver_state->m_ctc, 1);
		z80ctc_trg3_w(driver_state->m_ctc, 0);
	}
}
Пример #3
0
static TIMER_DEVICE_CALLBACK( cassette_tick )
{
	mtx_state *state = timer.machine().driver_data<mtx_state>();
	int data = (cassette_input(state->m_cassette) > +0.0) ? 0 : 1;

	z80ctc_trg3_w(state->m_z80ctc, data);
}
Пример #4
0
void trs80m2_state::machine_reset()
{
	// clear keyboard interrupt
	m_kbirq = 1;
	z80ctc_trg3_w(m_ctc, m_kbirq);
	m_kb->busy_w(m_kbirq);

	// enable boot ROM
	m_boot_rom = 1;

	// disable video RAM
	m_msel = 0;
}
Пример #5
0
void trs80m2_state::scan_keyboard()
{
	if (!m_kbirq) return;

	static const char *const keynames[] = { "ROW0", "ROW1", "ROW2", "ROW3", "ROW4", "ROW5", "ROW6", "ROW7", "ROW8" };
	int table = 0, row, col;

	if (ioport("ROW9")->read() & 0x07)
	{
		// shift, upper case
		table = 1;
	}

	if (ioport("ROW9")->read() & 0x18)
	{
		// ctrl
		table = 2;
	}

	// scan keyboard
	for (row = 0; row < 9; row++)
	{
		UINT8 data = ioport(keynames[row])->read();

		for (col = 0; col < 8; col++)
		{
			if (BIT(data, col))
			{
				// latch key data
				m_key_data = trs80m2_keycodes[table][row][col];

				// trigger keyboard interrupt
				m_kbirq = 0;
				z80ctc_trg3_w(m_ctc, m_kbirq);

				return;
			}
		}
	}
}