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); }
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); }
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); }