Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
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();
	}
}
Ejemplo n.º 3
0
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();
	}
}
Ejemplo n.º 4
0
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();
	}
}