From 7dd1f0b89ebde6814949daef0e573533c53284e1 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Sat, 17 Dec 2016 03:50:10 -0800 Subject: [PATCH] SCP: Complete support for automatic detection of WRU (^E) for all simulators commit ef6528bf32e3 added support for automatic WRU detection for simulators that don't have a console port, but it was never documented and the addition of that support potentially interfered with SAVE/RESTORE behavior. The console connection state is now automatically saved and restored. --- doc/simh.doc | Bin 241152 -> 247296 bytes scp.c | 2 +- sim_console.c | 18 ++++++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/doc/simh.doc b/doc/simh.doc index 89a1fadb1a4bdeffd517d0ada7272ba5b1a09cd9..506803a0d04c99fce5b1bdf40ef1c5a529eef54f 100644 GIT binary patch delta 39837 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 URM}GA)oS>A`GgKTY#yin5BOOQg#Z8m diff --git a/scp.c b/scp.c index efe6dc3d..142e0eb6 100644 --- a/scp.c +++ b/scp.c @@ -6113,7 +6113,7 @@ for ( ;; ) { /* device loop */ (!dont_detach_attach)) { r = scp_detach_unit (dptr, uptr); /* detach it */ if (r != SCPE_OK) - return r; + return sim_messagef (r, "Error detaching %s from %s: %s\n", sim_uname (uptr), uptr->filename, sim_error_text (r)); } if ((buf[0] != '\0') && /* unit to be reattached? */ ((uptr->flags & UNIT_ATTABLE) || /* and unit is attachable */ diff --git a/sim_console.c b/sim_console.c index 27ac57f4..9f8caf20 100644 --- a/sim_console.c +++ b/sim_console.c @@ -175,7 +175,10 @@ int32 sim_del_char = 0177; static t_stat sim_con_poll_svc (UNIT *uptr); /* console connection poll routine */ static t_stat sim_con_reset (DEVICE *dptr); /* console reset routine */ -UNIT sim_con_unit = { UDATA (&sim_con_poll_svc, 0, 0) }; /* console connection unit */ +static t_stat sim_con_attach (UNIT *uptr, CONST char *ptr); /* console attach routine (save,restore) */ +static t_stat sim_con_detach (UNIT *uptr); /* console detach routine (save,restore) */ + +UNIT sim_con_unit = { UDATA (&sim_con_poll_svc, UNIT_ATTABLE, 0) };/* console connection unit */ /* debugging bitmaps */ #define DBG_TRC TMXR_DBG_TRC /* trace routine calls */ #define DBG_XMT TMXR_DBG_XMT /* display Transmitted Data */ @@ -211,7 +214,7 @@ static MTAB sim_con_mod[] = { DEVICE sim_con_telnet = { "CON-TEL", &sim_con_unit, sim_con_reg, sim_con_mod, 1, 0, 0, 0, 0, 0, - NULL, NULL, sim_con_reset, NULL, NULL, NULL, + NULL, NULL, sim_con_reset, NULL, sim_con_attach, sim_con_detach, NULL, DEV_DEBUG, 0, sim_con_debug}; TMLN sim_con_ldsc = { 0 }; /* console line descr */ TMXR sim_con_tmxr = { 1, 0, 0, &sim_con_ldsc, NULL, &sim_con_telnet };/* console line mux */ @@ -253,6 +256,17 @@ static t_stat sim_con_reset (DEVICE *dptr) return sim_con_poll_svc (&dptr->units[0]); /* establish polling as needed */ } +/* Console Attach/Detach - only used indirectly in restore */ + +static t_stat sim_con_attach (UNIT *uptr, CONST char *ptr) +{ +return tmxr_attach (&sim_con_tmxr, &sim_con_unit, ptr); +} + +static t_stat sim_con_detach (UNIT *uptr) +{ +return sim_set_notelnet (0, NULL); +} /* Set/show data structures */