From 74482ce4480658c40d4ed3be2e30bf262431ba0d Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Sun, 6 Apr 2014 16:42:10 -0700 Subject: [PATCH] PDP10, PDP11, VAX: Make sure that the DMC and DUP devices produce the right messages when an attach is attempted to an already attached line --- PDP11/pdp11_dmc.c | 7 ++++--- PDP11/pdp11_dup.c | 5 +++-- sim_tmxr.c | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/PDP11/pdp11_dmc.c b/PDP11/pdp11_dmc.c index 65192b82..a2d39bef 100644 --- a/PDP11/pdp11_dmc.c +++ b/PDP11/pdp11_dmc.c @@ -1149,7 +1149,7 @@ DEVICE dmc_dev = #endif dmc_units, dmc_reg, dmc_mod, 3, DMC_RDX, 8, 1, DMC_RDX, 8, NULL, NULL, &dmc_reset, NULL, &dmc_attach, &dmc_detach, - &dmc_dib, DEV_DISABLE | DEV_DIS | DEV_UBUS | DEV_DEBUG, 0, dmc_debug, + &dmc_dib, DEV_DISABLE | DEV_DIS | DEV_UBUS | DEV_DEBUG | DEV_DONTAUTO, 0, dmc_debug, NULL, NULL, &dmc_help, &dmc_help_attach, NULL, &dmc_description }; /* @@ -1168,13 +1168,13 @@ DEVICE dmc_dev = DEVICE dmp_dev = { "DMP", dmp_units, dmp_reg, dmp_mod, 3, DMC_RDX, 8, 1, DMC_RDX, 8, NULL, NULL, &dmc_reset, NULL, &dmc_attach, &dmc_detach, - &dmp_dib, DEV_DISABLE | DEV_DIS | DEV_UBUS | DEV_DEBUG, 0, dmc_debug, + &dmp_dib, DEV_DISABLE | DEV_DIS | DEV_UBUS | DEV_DEBUG | DEV_DONTAUTO, 0, dmc_debug, NULL, NULL, &dmc_help, &dmc_help_attach, NULL, &dmp_description }; DEVICE dmv_dev = { "DMV", dmp_units, dmp_reg, dmv_mod, 3, DMC_RDX, 8, 1, DMC_RDX, 8, NULL, NULL, &dmc_reset, NULL, &dmc_attach, &dmc_detach, - &dmp_dib, DEV_DISABLE | DEV_DIS | DEV_QBUS | DEV_DEBUG, 0, dmc_debug, + &dmp_dib, DEV_DISABLE | DEV_DIS | DEV_QBUS | DEV_DEBUG | DEV_DONTAUTO, 0, dmc_debug, NULL, NULL, &dmc_help, &dmc_help_attach, NULL, &dmp_description }; CTLR dmc_ctrls[DMC_NUMDEVICE + DMP_NUMDEVICE]; @@ -1585,6 +1585,7 @@ dptr->units[newln].ctlr = &dmc_ctrls[(dptr == &dmc_dev) ? 0 : DMC_NUMDEVICE]; dptr->units[newln+1] = dmc_timer_unit_template; dptr->units[newln+1].ctlr = &dmc_ctrls[(dptr == &dmc_dev) ? 0 : DMC_NUMDEVICE]; mp->lines = newln; +mp->uptr = dptr->units + newln; /* Identify polling unit */ return dmc_reset ((DEVICE *)desc); /* setup devices and auto config */ } diff --git a/PDP11/pdp11_dup.c b/PDP11/pdp11_dup.c index 62bfb628..673ddc05 100644 --- a/PDP11/pdp11_dup.c +++ b/PDP11/pdp11_dup.c @@ -454,7 +454,7 @@ DEVICE dup_dev = { 2, 10, 31, 1, DEV_RDX, 8, NULL, NULL, &dup_reset, NULL, &dup_attach, &dup_detach, - &dup_dib, DEV_DIS | DEV_DISABLE | DEV_UBUS | DEV_DEBUG, 0, + &dup_dib, DEV_DIS | DEV_DISABLE | DEV_UBUS | DEV_DEBUG | DEV_DONTAUTO, 0, dup_debug, NULL, NULL, &dup_help, dup_help_attach, &dup_desc, &dup_description }; @@ -464,7 +464,7 @@ DEVICE dpv_dev = { 2, 10, 31, 1, DEV_RDX, 8, NULL, NULL, &dup_reset, NULL, &dup_attach, &dup_detach, - &dup_dib, DEV_DIS | DEV_DISABLE | DEV_QBUS | DEV_DEBUG, 0, + &dup_dib, DEV_DIS | DEV_DISABLE | DEV_QBUS | DEV_DEBUG | DEV_DONTAUTO, 0, dup_debug, NULL, NULL, &dup_help, dup_help_attach, &dup_desc, &dup_description }; @@ -1461,6 +1461,7 @@ for (l=dup_desc.lines; l < newln; l++) { } dup_units[newln] = dup_poll_unit_template; dup_desc.lines = newln; +dup_desc.uptr = dptr->units + newln; /* Identify polling unit */ dptr->numunits = newln + 1; return dup_reset (dptr); /* setup lines and auto config */ } diff --git a/sim_tmxr.c b/sim_tmxr.c index b8c0823b..a4214a8f 100644 --- a/sim_tmxr.c +++ b/sim_tmxr.c @@ -2036,7 +2036,7 @@ if (lp->mp) else if (lp->mp->uptr) uptr = lp->mp->uptr; -if (uptr) { +if (uptr && uptr->filename) { /* Revise the unit's connect string to reflect the current attachments */ uptr->filename = tmxr_mux_attach_string (uptr->filename, lp->mp); /* No connections or listeners exist, then we're equivalent to being fully detached. We should reflect that */