void acia6850_device::rx_clock_in() { check_dcd_input(); m_rx_counter ++; if ( m_rx_counter > m_divide - 1) { rx_tick(); m_rx_counter = 0; } }
void acia6850_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { switch (id) { case TIMER_ID_TRANSMIT: tx_tick(); m_tx_counter = 0; break; case TIMER_ID_RECEIVE: rx_tick(); m_rx_counter = 0; break; } }
static void test_loop(long duration) { g_app.wall_clock.sec = 0; g_app.wall_clock.msec = 0; while (PJ_TIME_VAL_MSEC(g_app.wall_clock) <= duration) { /* Run TX tick */ tx_tick(&g_app.wall_clock); /* Run RX tick */ rx_tick(&g_app.wall_clock); /* Increment tick */ g_app.wall_clock.msec += WALL_CLOCK_TICK; pj_time_val_normalize(&g_app.wall_clock); } }
void acia6850_device::rx_clock_in() { int dcd = m_in_dcd_func(); if (dcd) { m_status |= ACIA6850_STATUS_DCD; check_interrupts(); } else if ((m_status & (ACIA6850_STATUS_DCD|ACIA6850_STATUS_IRQ)) == ACIA6850_STATUS_DCD) { m_status &= ~ACIA6850_STATUS_DCD; } m_rx_counter ++; if ( m_rx_counter > m_divide - 1) { rx_tick(); m_rx_counter = 0; } }
void acia6850_device::receive_event() { rx_tick(); m_rx_counter = 0; }