示例#1
0
文件: h83337.c 项目: dinkc64/mame
void h83337_device::internal_update(UINT64 current_time)
{
    UINT64 event_time = 0;

    add_event(event_time, adc->internal_update(current_time));
    add_event(event_time, sci0->internal_update(current_time));
    add_event(event_time, sci1->internal_update(current_time));
    add_event(event_time, timer8_0->internal_update(current_time));
    add_event(event_time, timer8_1->internal_update(current_time));
    add_event(event_time, timer16_0->internal_update(current_time));

    recompute_bcount(event_time);
}
示例#2
0
文件: h83337.cpp 项目: MASHinfo/mame
void h83337_device::internal_update(uint64_t current_time)
{
	uint64_t event_time = 0;

	add_event(event_time, adc->internal_update(current_time));
	add_event(event_time, sci0->internal_update(current_time));
	add_event(event_time, sci1->internal_update(current_time));
	add_event(event_time, timer8_0->internal_update(current_time));
	add_event(event_time, timer8_1->internal_update(current_time));
	add_event(event_time, timer16_0->internal_update(current_time));
	add_event(event_time, watchdog->internal_update(current_time));

	recompute_bcount(event_time);
}
示例#3
0
文件: i8x9x.c 项目: opicron/mame
void i8x9x_device::internal_update(UINT64 current_time)
{
	UINT16 current_timer1 = timer_value(1, current_time);
	UINT16 current_timer2 = timer_value(2, current_time);

	for(int i=0; i<8; i++)
		if(hso_info[i].active) {
			UINT8 cmd = hso_info[i].command;
			UINT16 t = hso_info[i].time;
			if(((cmd & 0x40) && t == current_timer2) ||
				(!(cmd & 0x40) && t == current_timer1)) {
				if(cmd != 0x18 && cmd != 0x19)
					logerror("%s: hso cam %02x %04x in slot %d triggered\n",
								tag(), cmd, t, i);
				trigger_cam(i, current_time);
			}
		}

	if(current_time == ad_done) {
		ad_done = 0;
		ad_result &= ~8;
	}

	if(current_time == serial_send_timer)
		serial_send_done();

	UINT64 event_time = 0;
	for(int i=0; i<8; i++) {
		if(!hso_info[i].active && hso_cam_hold.active) {
			hso_info[i] = hso_cam_hold;
			hso_cam_hold.active = false;
			logerror("%s: hso cam %02x %04x in slot %d from hold\n", tag(), hso_cam_hold.command, hso_cam_hold.time, i);
		}
		if(hso_info[i].active) {
			UINT64 new_time = timer_time_until(hso_info[i].command & 0x40 ? 2 : 1, current_time, hso_info[i].time);
			if(!event_time || new_time < event_time)
				event_time = new_time;
		}
	}

	if(ad_done && ad_done < event_time)
		event_time = ad_done;

	if(serial_send_timer && serial_send_timer < event_time)
		event_time = serial_send_timer;

	recompute_bcount(event_time);
}