void device_rtc_interface::advance_days() { m_register[RTC_DAY]++; m_register[RTC_DAY_OF_WEEK]++; if (m_register[RTC_DAY_OF_WEEK] == 8) { m_register[RTC_DAY_OF_WEEK] = 1; } if (m_register[RTC_DAY] > DAYS_PER_MONTH[m_register[RTC_MONTH] - 1]) { m_register[RTC_DAY] = 1; m_register[RTC_MONTH]++; } if (m_register[RTC_MONTH] == 13) { m_register[RTC_MONTH] = 1; m_register[RTC_YEAR]++; if (!rtc_feature_y2k() && m_register[RTC_YEAR] == 100) { m_register[RTC_YEAR] = 0; } } clock_updated(); }
void device_rtc_interface::adjust_seconds() { int seconds = get_clock_register(RTC_SECOND); set_clock_register(RTC_SECOND, 0); if (seconds >= 30) { advance_minutes(); } else { clock_updated(); } }
void device_rtc_interface::advance_seconds() { m_register[RTC_SECOND]++; if (m_register[RTC_SECOND] == 60) { m_register[RTC_SECOND] = 0; advance_minutes(); } else { clock_updated(); } }
void device_rtc_interface::advance_minutes() { m_register[RTC_MINUTE]++; if (m_register[RTC_MINUTE] == 60) { m_register[RTC_MINUTE] = 0; m_register[RTC_HOUR]++; } if (m_register[RTC_HOUR] == 24) { m_register[RTC_HOUR] = 0; advance_days(); } else { clock_updated(); } }