protected virtual void set_rmcr(uint8_t data) { if (m_rmcr == data) { return; } m_rmcr = data; switch ((m_rmcr & M6801_RMCR_CC_MASK) >> 2) { case 0: LOGSER("SCI: Using external serial clock: false\n"); m_sci_timer.enable(false); m_use_ext_serclock = false; break; case 3: // external clock LOGSER("SCI: Using external serial clock: true\n"); m_use_ext_serclock = true; m_sci_timer.enable(false); break; case 1: case 2: { int divisor = M6801_RMCR_SS[m_rmcr & M6801_RMCR_SS_MASK]; attotime period = cycles_to_attotime((uint64_t)divisor); LOGSER("SCI: Setting serial rate, Divisor: {0} Hz: {1}\n", divisor, period.as_hz()); m_sci_timer.adjust(period, 0, period); m_use_ext_serclock = false; } break; } }
void set_rmcr(uint8_t data) { if (m_rmcr == data) { return; } m_rmcr = data; switch ((m_rmcr & M6801_RMCR_CC_MASK) >> 2) { case 0: m_sci_timer.enable(false); m_use_ext_serclock = false; break; case 3: // external clock m_use_ext_serclock = true; m_sci_timer.enable(false); break; case 1: case 2: { int divisor = M6801_RMCR_SS[m_rmcr & M6801_RMCR_SS_MASK]; attotime period = cycles_to_attotime((u64)divisor); m_sci_timer.adjust(period, 0, period); m_use_ext_serclock = false; } break; } }