From 5ccef2e6f823dcd201c35bd3a40ec32776c87ddc Mon Sep 17 00:00:00 2001 From: Bob Supnik Date: Sat, 21 Jul 2018 10:39:14 -0700 Subject: [PATCH] simh 3.10-RC2 3.10 is mostly an attempt to get aligned with the current head of the GitHub 4.0 sources. While the core libraries and SCP have diverged too far for real forward and backward compatibility, enough 4.0 workalikes have been added to allow much closer convergence of the two streams. 3.10 will provide the basis for my future simulation work. --- PDP11/pdp11_uc15.c | 4 +++- scp.c | 8 +++++--- sigma/sigma_cis.c | 6 +++--- sigma/sigma_dp.c | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/PDP11/pdp11_uc15.c b/PDP11/pdp11_uc15.c index 3bbe6b95..1e85c8b0 100644 --- a/PDP11/pdp11_uc15.c +++ b/PDP11/pdp11_uc15.c @@ -54,6 +54,8 @@ implemented by setting signals with an atomic compare-and-swap. The signals may be polled with non-atomic operations but must be verified with an atomic compare-and-swap. + + 21-Jul-18 RMS Fixed missing size multiplier in reset (Mark Pizzolato) */ #include "pdp11_defs.h" @@ -395,7 +397,7 @@ ucb_buf = 0; CLR_INT (UCA); CLR_INT (UCB); if (uc15_shmem == NULL) { /* allocate shared state */ - r = sim_shmem_open ("UC15SharedState", UC15_STATE_SIZE * sizeof(int32), &uc15_shmem, &basead); + r = sim_shmem_open ("UC15SharedState", UC15_STATE_SIZE * sizeof (int32), &uc15_shmem, &basead); if (r != SCPE_OK) return r; uc15_shstate = (int32 *) basead; diff --git a/scp.c b/scp.c index 0ec203e0..58b4c816 100644 --- a/scp.c +++ b/scp.c @@ -3313,9 +3313,11 @@ for (i = 0, j = addr; i < sim_emax; i++, j = j + dptr->aincr) { else { if (!(uptr->flags & UNIT_ATT)) return SCPE_UNATT; - if (uptr->flags & UNIT_RAW) + if (((uptr->flags & UNIT_RAW) != 0) || + (uptr->fileref == NULL)) return SCPE_NOFNC; - if ((uptr->flags & UNIT_FIX) && (j >= uptr->capac)) { + if (((uptr->flags & UNIT_FIX) != 0) && + (j >= uptr->capac)) { reason = SCPE_NXM; break; } @@ -4509,7 +4511,7 @@ do { if (uptr->action != NULL) reason = uptr->action (uptr); else reason = SCPE_OK; - } while ((reason == SCPE_OK) && (sim_interval == 0)); + } while ((reason == SCPE_OK) && (sim_interval <= 0)); /* Empty queue forces sim_interval != 0 */ diff --git a/sigma/sigma_cis.c b/sigma/sigma_cis.c index 10afdd43..623e163b 100644 --- a/sigma/sigma_cis.c +++ b/sigma/sigma_cis.c @@ -722,11 +722,11 @@ return cy; void SubDstr (dstr_t *s1, dstr_t *s2, dstr_t *ds) { uint32 i; -dstr_t compl; +dstr_t complm; for (i = 0; i < DSTRLNT; i++) /* 9's comp s2 */ - compl.val[i] = 0x99999999 - s1->val[i]; -AddDstr (&compl, s2, ds, 1); /* s1 + ~s2 + 1 */ + complm.val[i] = 0x99999999 - s1->val[i]; +AddDstr (&complm, s2, ds, 1); /* s1 + ~s2 + 1 */ return; } diff --git a/sigma/sigma_dp.c b/sigma/sigma_dp.c index 324dbaf0..e493e58c 100644 --- a/sigma/sigma_dp.c +++ b/sigma/sigma_dp.c @@ -261,7 +261,7 @@ typedef struct { uint32 tpos; /* to position */ } DP_SNSTAB; -static char *dp_cname[] = { +static const char *dp_cname[] = { "7240", "7270", "7260", "7275", "7265", "T3281" };