From e67bf602a07f11e244d97785d09a4bd733d383c4 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Sat, 28 May 2016 13:32:15 -0700 Subject: [PATCH] SCP: Added shutdown flag for detach_all --- scp.c | 11 +++++++---- sim_defs.h | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/scp.c b/scp.c index 929fce48..66ee4533 100644 --- a/scp.c +++ b/scp.c @@ -1,6 +1,6 @@ /* scp.c: simulator control program - Copyright (c) 1993-2012, Robert M Supnik + Copyright (c) 1993-2016, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -23,6 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 08-Mar-16 RMS Added shutdown flag for detach_all 20-Mar-12 MP Fixes to "SHOW SHOW" commands 06-Jan-12 JDB Fixed "SHOW DEVICE" with only one enabled unit (Dave Bryan) 25-Sep-11 MP Added the ability for a simulator built with @@ -3907,8 +3908,8 @@ while (*cptr != 0) { /* do all mods */ } else if (!mptr->desc) /* value desc? */ break; -// else if (mptr->mask & MTAB_VAL) { /* take a value? */ -// if (!cvptr) return SCPE_MISVAL; /* none? error */ +// else if (mptr->mask & MTAB_VAL) { /* take a value? */ +// if (!cvptr) return SCPE_MISVAL; /* none? error */ // r = dep_reg (0, cvptr, (REG *) mptr->desc, 0); // if (r != SCPE_OK) return r; // } @@ -5402,7 +5403,7 @@ if (strcmp (gbuf, "ALL") == 0) dptr = find_unit (gbuf, &uptr); /* locate unit */ if (dptr == NULL) /* found dev? */ return SCPE_NXDEV; -if (uptr == NULL) /* valid unit? */ +if (uptr == NULL) /* valid unit? */ return SCPE_NXUN; return scp_detach_unit (dptr, uptr); /* detach */ } @@ -5429,6 +5430,8 @@ t_stat r; if ((start < 0) || (start > 1)) return SCPE_IERR; +if (shutdown) + sim_switches = sim_switches | SIM_SW_SHUT; /* flag shutdown */ for (i = start; (dptr = sim_devices[i]) != NULL; i++) { /* loop thru dev */ for (j = 0; j < dptr->numunits; j++) { /* loop thru units */ uptr = (dptr->units) + j; diff --git a/sim_defs.h b/sim_defs.h index 37dea61c..d25f95e3 100644 --- a/sim_defs.h +++ b/sim_defs.h @@ -310,6 +310,7 @@ typedef uint32 t_addr; #define SIM_SW_REST (1u << 27) /* attach/restore */ #define SIM_SW_REG (1u << 28) /* register value */ #define SIM_SW_STOP (1u << 29) /* stop message */ +#define SIM_SW_SHUT (1u << 30) /* shutdown */ /* Simulator status codes