From 919f8b78bcc6b8b43ff0465a079ea4842f11c197 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 3 Feb 2022 11:19:09 -0800 Subject: [PATCH] PDP11, Unibus and Qbus VAX: Properly restore DZ device serial settings --- PDP11/pdp11_dz.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/PDP11/pdp11_dz.c b/PDP11/pdp11_dz.c index 7ca11789..5f4c288b 100644 --- a/PDP11/pdp11_dz.c +++ b/PDP11/pdp11_dz.c @@ -841,6 +841,12 @@ if (sim_switches & SWMASK ('M')) { /* modem control? */ } for (dz = 0; dz < dz_desc.lines/DZ_LINES; dz++) { + for (muxln = 0; muxln < DZ_LINES; muxln++) { + TMLN *lp = &dz_ldsc[(dz * DZ_LINES) + muxln]; + + if (lp->serconfig) + tmxr_set_config_line (lp, lp->serconfig); /* make settings consistent */ + } if (!dz_mctl || (0 == (dz_csr[dz] & CSR_MSE))) /* enabled? */ continue; for (muxln = 0; muxln < DZ_LINES; muxln++) { @@ -858,10 +864,19 @@ return SCPE_OK; t_stat dz_detach (UNIT *uptr) { +int32 dz, muxln; t_stat r = tmxr_detach (&dz_desc, uptr); dz_mctl = dz_auto = 0; /* modem ctl off */ tmxr_clear_modem_control_passthru (&dz_desc); +for (dz = 0; dz < dz_desc.lines/DZ_LINES; dz++) { + for (muxln = 0; muxln < DZ_LINES; muxln++) { + TMLN *lp = &dz_ldsc[(dz * DZ_LINES) + muxln]; + + free (lp->serconfig); + lp->serconfig = NULL; + } + } return r; }