SCP: Properly reset the event queue prior to run/boot

Need to call sim_cancel to remove entries from the event queue since
canceling some events may involve other components.
This commit is contained in:
Mark Pizzolato 2018-01-07 13:56:16 -08:00
parent ee4c33ead2
commit 39c5217740

10
scp.c
View file

@ -7272,16 +7272,14 @@ if (sim_deb && (sim_deb != stdout) && (sim_deb != sim_log)) {/* debug if enabled
t_stat sim_run_boot_prep (int32 flag) t_stat sim_run_boot_prep (int32 flag)
{ {
UNIT *uptr;
t_stat r; t_stat r;
sim_interval = 0; /* reset queue */ sim_interval = 0; /* reset queue */
sim_time = sim_rtime = 0; sim_time = sim_rtime = 0;
noqueue_time = 0; noqueue_time = 0; /* reset queue */
for (uptr = sim_clock_queue; uptr != QUEUE_LIST_END; uptr = sim_clock_queue) { while (sim_clock_queue != QUEUE_LIST_END)
sim_clock_queue = uptr->next; sim_cancel (sim_clock_queue);
uptr->next = NULL; noqueue_time = sim_interval = 0;
}
r = reset_all (0); r = reset_all (0);
if ((r == SCPE_OK) && (flag == RU_RUN)) { if ((r == SCPE_OK) && (flag == RU_RUN)) {
if ((run_cmd_did_reset) && (0 == (sim_switches & SWMASK ('Q')))) { if ((run_cmd_did_reset) && (0 == (sim_switches & SWMASK ('Q')))) {