Remote Console: Exit simulation when a master mode connection is dropped (equivalent to master power switch).

This commit is contained in:
Mark Pizzolato 2015-02-11 11:14:52 -08:00
parent c7131700c0
commit c869a973d3

View file

@ -394,6 +394,7 @@ static int32 sim_rem_step_line = -1; /* step in progress on line # */
static t_bool sim_log_temp = FALSE; /* temporary log file active */ static t_bool sim_log_temp = FALSE; /* temporary log file active */
static char sim_rem_con_temp_name[PATH_MAX+1]; static char sim_rem_con_temp_name[PATH_MAX+1];
static int32 sim_rem_master_mode = 0; /* Master Mode Enabled Flag */ static int32 sim_rem_master_mode = 0; /* Master Mode Enabled Flag */
static t_bool sim_rem_master_was_connected = FALSE; /* Master Mode has been connected */
static t_offset sim_rem_cmd_log_start = 0; /* Log File saved position */ static t_offset sim_rem_cmd_log_start = 0; /* Log File saved position */
@ -666,6 +667,7 @@ for (i=(was_stepping ? sim_rem_step_line : 0);
i++) { i++) {
t_bool master_session = (sim_rem_master_mode && (i == 0)); t_bool master_session = (sim_rem_master_mode && (i == 0));
sim_rem_master_was_connected |= master_session; /* Remember if master ever connected */
lp = &sim_rem_con_tmxr.ldsc[i]; lp = &sim_rem_con_tmxr.ldsc[i];
if (!lp->conn) if (!lp->conn)
continue; continue;
@ -1000,6 +1002,8 @@ for (i=(was_stepping ? sim_rem_step_line : 0);
sim_rem_single_mode[i] = FALSE; sim_rem_single_mode[i] = FALSE;
} }
} }
if (sim_rem_master_was_connected && !sim_rem_con_tmxr.ldsc[0].sock) /* Master Connection lost? */
return SCPE_EXIT;
if (stepping) if (stepping)
sim_activate(uptr, steps); /* check again after 'steps' instructions */ sim_activate(uptr, steps); /* check again after 'steps' instructions */
else else
@ -1156,6 +1160,8 @@ if (sim_rem_master_mode) {
} }
stat |= stat_nomessage; stat |= stat_nomessage;
} }
else
sim_rem_master_was_connected = FALSE;
return stat; return stat;
} }