void mc146818_device::set_base_datetime() { system_time systime; system_time::full_time current_time; machine().base_datetime(systime); current_time = (m_use_utc) ? systime.utc_time: systime.local_time; // logerror("mc146818_set_base_datetime %02d/%02d/%02d %02d:%02d:%02d\n", // current_time.year % 100, current_time.month + 1, current_time.mday, // current_time.hour,current_time.minute, current_time.second); set_seconds(current_time.second); set_minutes(current_time.minute); set_hours(current_time.hour); set_dayofweek(current_time.weekday + 1); set_dayofmonth(current_time.mday); set_month(current_time.month + 1); if(m_binyear) set_year((current_time.year - m_epoch) % (m_data[REG_B] & REG_B_DM ? 0x100 : 100)); // pcd actually depends on this else set_year((current_time.year - m_epoch) % 100); if (m_century_index >= 0) m_data[m_century_index] = to_ram(current_time.year / 100); }
static mem_access_emu_kind_t try_handle_signal_by_mem_access_sub_sub ( struct mon_t *mon, struct mem_access_t *x, page_fault_kind_t *page_fault_kind ) { mem_access_emu_kind_t retval = NO_EMULATION; bit32u_t paddr; bool_t is_ok; mem_access_region_t r; bool_t read_write; ASSERT ( mon != NULL ); ASSERT ( x != NULL ); paddr = Monitor_try_vaddr_to_paddr2 ( x->sreg_index, x->vaddr, &is_ok, &read_write ); DPRINT ( "check maccess " ); MemAccess_print ( x ); DPRINT ( "paddr=%#x, is_ok=%d\n", paddr, is_ok ); if ( ! is_ok ) { /* Deliver this page fault to the guest OS. */ *page_fault_kind = PAGE_FAULT_KIND_NO_PAGE; return PAGEFAULT_EMULATION; } r = get_mem_access_region ( mon, paddr, x->len ); switch ( r ) { case MEM_ACCESS_TO_HD_RESERVED: retval = to_hd_reserved ( mon, x, paddr ); break; case MEM_ACCESS_TO_RAM: /* There exists a correspoing physical memory * region that contains the virtual address to which memory * acncess causes a page fault. */ retval = to_ram ( mon, x, paddr, read_write, page_fault_kind ); break; case MEM_ACCESS_TO_APIC: retval = APIC_EMULATION; break; default: Monitor_print_detail ( stderr, mon ); Match_failure ( "try_handle_signal_by_mem_access_sub_sub: eip=%#x, paddr=%#x\n", mon->regs->user.eip, paddr ); } return retval; }
void mc146818_device::set_hours(int hours) { if (!(m_data[REG_B] & REG_B_24_12)) { int pm = 0; if (hours >= 12) { hours -= 12; pm = HOURS_PM; } if (hours == 0) { hours = 12; } m_data[REG_HOURS] = to_ram(hours) | pm; } else { m_data[REG_HOURS] = to_ram(hours); } }
void mc146818_device::set_base_datetime() { system_time systime; system_time::full_time current_time; machine().base_datetime(systime); current_time = (m_use_utc) ? systime.utc_time: systime.local_time; // logerror("mc146818_set_base_datetime %02d/%02d/%02d %02d:%02d:%02d\n", // current_time.year % 100, current_time.month + 1, current_time.mday, // current_time.hour,current_time.minute, current_time.second); set_seconds(current_time.second); set_minutes(current_time.minute); set_hours(current_time.hour); set_dayofweek(current_time.weekday + 1); set_dayofmonth(current_time.mday); set_month(current_time.month + 1); set_year(current_time.year % 100); if (m_century_index >= 0) m_data[m_century_index] = to_ram(current_time.year / 100); }
void mc146818_device::set_year(int year) { m_data[REG_YEAR] = to_ram(year); }
void mc146818_device::set_month(int month) { m_data[REG_MONTH] = to_ram(month); }
void mc146818_device::set_dayofmonth(int dayofmonth) { m_data[REG_DAYOFMONTH] = to_ram(dayofmonth); }
void mc146818_device::set_dayofweek(int dayofweek) { m_data[REG_DAYOFWEEK] = to_ram(dayofweek); }
void mc146818_device::set_minutes(int minutes) { m_data[REG_MINUTES] = to_ram(minutes); }
void mc146818_device::set_seconds(int seconds) { m_data[REG_SECONDS] = to_ram(seconds); }