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); } }
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); } }
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); }
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; }
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; } } } }