diff --git a/scp.c b/scp.c index 0777bc22..b42523ca 100644 --- a/scp.c +++ b/scp.c @@ -10417,7 +10417,7 @@ do { uptr->next = NULL; /* hygiene */ uptr->time = 0; if (sim_clock_queue != QUEUE_LIST_END) - sim_interval = sim_clock_queue->time; + sim_interval += sim_clock_queue->time; else sim_interval = noqueue_time = NOQUEUE_WAIT; AIO_EVENT_BEGIN(uptr); diff --git a/sim_timer.c b/sim_timer.c index 9fc33dd3..437f5606 100644 --- a/sim_timer.c +++ b/sim_timer.c @@ -1557,10 +1557,7 @@ act_ms = sim_idle_ms_sleep (w_ms); /* wait */ rtc_clock_time_idled[tmr] += act_ms; act_cyc = act_ms * sim_idle_cyc_ms; act_cyc += (sim_idle_cyc_ms * sim_idle_rate_ms) / 2; /* account for half an interval's worth of cycles */ -if (sim_interval > act_cyc) - sim_interval = sim_interval - act_cyc; /* count down sim_interval */ -else - sim_interval = 0; /* or fire immediately */ +sim_interval = sim_interval - act_cyc; /* count down sim_interval to reflect idle period */ if (sim_clock_queue == QUEUE_LIST_END) sim_debug (DBG_IDL, &sim_timer_dev, "slept for %d ms - pending event in %d instructions\n", act_ms, sim_interval); else