Example #1
0
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);
}
Example #2
0
File: main.c Project: kkaneda/vm
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;     
}
Example #3
0
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);
	}
}
Example #4
0
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);
}
Example #5
0
void mc146818_device::set_year(int year)
{
	m_data[REG_YEAR] = to_ram(year);
}
Example #6
0
void mc146818_device::set_month(int month)
{
	m_data[REG_MONTH] = to_ram(month);
}
Example #7
0
void mc146818_device::set_dayofmonth(int dayofmonth)
{
	m_data[REG_DAYOFMONTH] = to_ram(dayofmonth);
}
Example #8
0
void mc146818_device::set_dayofweek(int dayofweek)
{
	m_data[REG_DAYOFWEEK] = to_ram(dayofweek);
}
Example #9
0
void mc146818_device::set_minutes(int minutes)
{
	m_data[REG_MINUTES] = to_ram(minutes);
}
Example #10
0
void mc146818_device::set_seconds(int seconds)
{
	m_data[REG_SECONDS] = to_ram(seconds);
}