コード例 #1
0
ファイル: 68230pit.cpp プロジェクト: Tauwasser/mame
void pit68230_device::update_tin(uint8_t state)
{
	// Tick clock on falling edge. TODO: check what flank is correct
	if (state == CLEAR_LINE)
	{
		tick_clock();
	}

	pc_update_bit(REG_PCDR_TIN_BIT, state == ASSERT_LINE ? 0 : 1);
}
コード例 #2
0
ファイル: 68230pit.cpp プロジェクト: Tauwasser/mame
//-------------------------------------------------
//  device_timer - handler timer events
//-------------------------------------------------
void pit68230_device::device_timer (emu_timer &timer, device_timer_id id, int32_t param, void *ptr)
{
	switch(id)
	{
	case TIMER_ID_PIT:
		tick_clock();
		break;
	default:
		LOG("Unhandled Timer ID %d\n", id);
		break;
	}
}
コード例 #3
0
void load_clock() {
  time_t now = time(NULL);
#ifdef PBL_SDK_2
  struct tm *t = localtime(&now);
#else
  struct tm *t = gmtime(&now);
#endif
  tick_clock(t, true);
  if(persist_exists(SW_BUTT)) {
    sw_butt = persist_read_int(SW_BUTT);
    persist_read_data(SW_STOP, &reg, sizeof(reg));
    lap.tm_hour = t->tm_hour - reg.tm_hour + 960;
    lap.tm_hour += (t->tm_yday - reg.tm_yday) * 24;//days;
    if(reg.tm_year != t->tm_year) {
      lap.tm_hour += 365 * 24;//happy new year (close enough)
      if((reg.tm_year%4 == 0) && ((reg.tm_year%100 != 0) || (reg.tm_year%400 == 0)))
        lap.tm_hour += 24;//leap year day
      if(t->tm_year - reg.tm_year > 1) {//greater than 1 year
        reset_sw();//get a life!!
        return;
      } 
    }
    lap.tm_min = t->tm_min - reg.tm_min + 60;
    lap.tm_sec = t->tm_sec - reg.tm_sec + 60;
    persist_read_data(SW_STORE, &reg, sizeof(reg));
    if((sw_butt&1)==1) {//add extra running time
      reg.tm_hour += lap.tm_hour;
      reg.tm_hour %= 960;//40 day timer
      reg.tm_min += lap.tm_min;
      reg.tm_min %= 60;
      reg.tm_sec += lap.tm_sec;
      reg.tm_sec %= 60;
    }
    persist_read_data(SW_LAP, &lap, sizeof(lap));
    return;
  }
  reset_sw();
}