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:
parent
ee4c33ead2
commit
39c5217740
1 changed files with 4 additions and 6 deletions
10
scp.c
10
scp.c
|
@ -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')))) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue