freebsd-ports/emulators/simh/files/patch-SDS_sds__cpu.c
Matthew Seaman 7c084f620e Fixes to allow building on 12-CURRENT
- fix build failures in i386 and amd64 due to compiler changes
- fix numerous compilation warnings and logical errors that may trap
  in the future
- convert all distribution files from DOS format to ease future changes
- convert legacy patch file to new naming convention

PR:		214990
Submitted by:	bob@eager.cx (maintainer)
2017-01-03 14:00:47 +00:00

533 lines
25 KiB
C

--- SDS/sds_cpu.c.orig 2016-12-01 22:43:43 UTC
+++ SDS/sds_cpu.c
@@ -385,14 +385,14 @@ while (reason == 0) {
}
if (sim_interval <= 0) { /* event queue? */
- if (reason = sim_process_event ()) /* process */
+ if ((reason = sim_process_event ())) /* process */
break;
int_reqhi = api_findreq (); /* recalc int req */
chan_req = chan_testact (); /* recalc chan act */
}
if (chan_req) { /* channel request? */
- if (reason = chan_process ()) /* process */
+ if ((reason = chan_process ())) /* process */
break;
int_reqhi = api_findreq (); /* recalc int req */
chan_req = chan_testact (); /* recalc chan act */
@@ -506,7 +506,7 @@ if (inst & I_POP) {
}
else { /* normal POP */
dat = (OV << 23) | dat; /* ov in <0> */
- if (r = Write (0, dat))
+ if ((r = Write (0, dat)))
return r;
}
}
@@ -525,49 +525,49 @@ switch (op) {
/* Loads and stores */
case LDA:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &A)) /* get operand */
+ if ((r = Read (va, &A))) /* get operand */
return r;
break;
case LDB:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &B)) /* get operand */
+ if ((r = Read (va, &B))) /* get operand */
return r;
break;
case LDX:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &X)) /* get operand */
+ if ((r = Read (va, &X))) /* get operand */
return r;
break;
case STA:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Write (va, A)) /* write operand */
+ if ((r = Write (va, A))) /* write operand */
return r;
break;
case STB:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Write (va, B)) /* write operand */
+ if ((r = Write (va, B))) /* write operand */
return r;
break;
case STX:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Write (va, X)) /* write operand */
+ if ((r = Write (va, X))) /* write operand */
return r;
break;
case EAX:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
if (nml_mode || usr_mode) /* normal or user? */
X = (X & ~VA_MASK) | (va & VA_MASK); /* only 14b */
@@ -575,11 +575,11 @@ switch (op) {
break;
case XMA:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
- if (r = Write (va, A)) /* write A */
+ if ((r = Write (va, A))) /* write A */
return r;
A = dat; /* load A */
break;
@@ -587,95 +587,95 @@ switch (op) {
/* Arithmetic and logical */
case ADD:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
A = Add24 (A, dat, 0); /* add */
break;
case ADC:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
OV = 0; /* clear overflow */
A = Add24 (A, dat, X >> 23); /* add with carry */
break;
case SUB:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
A = Add24 (A, dat ^ DMASK, 1); /* subtract */
break;
case SUC:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
OV = 0; /* clear overflow */
A = Add24 (A, dat ^ DMASK, X >> 23); /* sub with carry */
break;
case ADM:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
dat = AddM24 (dat, A); /* mem + A */
- if (r = Write (va, dat)) /* rewrite */
+ if ((r = Write (va, dat))) /* rewrite */
return r;
break;
case MIN:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
dat = AddM24 (dat, 1); /* mem + 1 */
- if (r = Write (va, dat)) /* rewrite */
+ if ((r = Write (va, dat))) /* rewrite */
return r;
break;
case MUL:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
Mul48 (A, dat); /* multiply */
break;
case DIV:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
Div48 (A, B, dat); /* divide */
break;
case ETR:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
A = A & dat; /* and */
break;
case MRG:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
A = A | dat; /* or */
break;
case EOR:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
A = A ^ dat; /* xor */
break;
@@ -683,75 +683,75 @@ switch (op) {
/* Skips */
case SKE:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
if (A == dat) /* if A = op, skip */
P = (P + 1) & VA_MASK;
break;
case SKG:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
if (SXT (A) > SXT (dat)) /* if A > op, skip */
P = (P + 1) & VA_MASK;
break;
case SKM:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
if (((A ^ dat) & B) == 0) /* if A = op masked */
P = (P + 1) & VA_MASK;
break;
case SKA:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
if ((A & dat) == 0) /* if !(A & op), skip */
P = (P + 1) & VA_MASK;
break;
case SKB:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
if ((B & dat) == 0) /* if !(B & op), skip */
P = (P + 1) & VA_MASK;
break;
case SKN:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
if (dat & SIGN) /* if op < 0, skip */
P = (P + 1) & VA_MASK;
break;
case SKR:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
dat = AddM24 (dat, DMASK); /* decr operand */
- if (r = Write (va, dat)) /* rewrite */
+ if ((r = Write (va, dat))) /* rewrite */
return r;
if (dat & SIGN) /* if op < 0, skip */
P = (P + 1) & VA_MASK;
break;
case SKD:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
if (SXT_EXP (B) < SXT_EXP (dat)) { /* B < dat? */
X = (dat - B) & DMASK; /* X = dat - B */
@@ -774,29 +774,29 @@ switch (op) {
exu_cnt = exu_cnt + 1; /* count chained EXU */
if (exu_cnt > exu_lim) /* too many? */
return STOP_EXULIM;
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
inst = dat;
goto EXU_LOOP;
case BRU:
if (nml_mode && (inst & I_IND)) api_dismiss (); /* normal BRU*, dism */
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
PCQ_ENTRY;
P = va & VA_MASK; /* branch */
break;
case BRX:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
X = (X + 1) & DMASK; /* incr X */
if (X & I_IND) { /* bit 9 set? */
- if (r = Read (va, &dat)) /* test dest access */
+ if ((r = Read (va, &dat))) /* test dest access */
return r;
PCQ_ENTRY;
P = va & VA_MASK; /* branch */
@@ -804,22 +804,22 @@ switch (op) {
break;
case BRM:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
dat = (EM3 << 18) | (EM2 << 15) | pc; /* form return word */
if (!nml_mode && !usr_mode) /* monitor mode? */
dat = dat | (mode << 23) | (OV << 21);
else dat = dat | (OV << 23); /* normal or user */
- if (r = Write (va, dat)) /* write ret word */
+ if ((r = Write (va, dat))) /* write ret word */
return r;
PCQ_ENTRY;
P = (va + 1) & VA_MASK; /* branch */
break;
case BRR:
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
PCQ_ENTRY;
P = (dat + 1) & VA_MASK; /* branch */
@@ -837,9 +837,9 @@ switch (op) {
case BRI:
if (!nml_mode && usr_mode) /* priv inst */
return MM_PRVINS;
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
api_dismiss (); /* dismiss hi api */
PCQ_ENTRY;
@@ -909,7 +909,7 @@ switch (op) {
/* Shifts */
case RSH:
- if (r = EaSh (inst, &va)) /* decode eff addr */
+ if ((r = EaSh (inst, &va))) /* decode eff addr */
return r;
shf_op = I_GETSHFOP (va); /* get eff op */
sc = va & I_SHFMSK; /* get eff count */
@@ -934,7 +934,7 @@ switch (op) {
break;
case LSH:
- if (r = EaSh (inst, &va)) /* decode eff addr */
+ if ((r = EaSh (inst, &va))) /* decode eff addr */
return r;
shf_op = I_GETSHFOP (va); /* get eff op */
sc = va & I_SHFMSK; /* get eff count */
@@ -989,11 +989,11 @@ switch (op) {
case MIW: case MIY:
if (!nml_mode && usr_mode) /* priv inst */
return MM_PRVINS;
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
- if (r = op_miwy (inst, dat)) /* process inst */
+ if ((r = op_miwy (inst, dat))) /* process inst */
return r;
int_reqhi = api_findreq (); /* recalc int req */
chan_req = chan_testact (); /* recalc chan act */
@@ -1002,11 +1002,11 @@ switch (op) {
case WIM: case YIM:
if (!nml_mode && usr_mode) /* priv inst */
return MM_PRVINS;
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = op_wyim (inst, &dat)) /* process inst */
+ if ((r = op_wyim (inst, &dat))) /* process inst */
return r;
- if (r = Write (va, dat))
+ if ((r = Write (va, dat)))
return r; /* write result */
int_reqhi = api_findreq (); /* recalc int req */
chan_req = chan_testact (); /* recalc chan act */
@@ -1015,7 +1015,7 @@ switch (op) {
case EOM: case EOD:
if (!nml_mode && usr_mode) /* priv inst */
return MM_PRVINS;
- if (r = op_eomd (inst)) /* process inst */
+ if ((r = op_eomd (inst))) /* process inst */
return r;
int_reqhi = api_findreq (); /* recalc int req */
chan_req = chan_testact (); /* recalc chan act */
@@ -1025,11 +1025,11 @@ switch (op) {
case POT:
if (!nml_mode && usr_mode) /* priv inst */
return MM_PRVINS;
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = Read (va, &dat)) /* get operand */
+ if ((r = Read (va, &dat))) /* get operand */
return r;
- if (r = op_pot (dat)) /* process inst */
+ if ((r = op_pot (dat))) /* process inst */
return r;
int_reqhi = api_findreq (); /* recalc int req */
chan_req = chan_testact (); /* recalc chan act */
@@ -1038,11 +1038,11 @@ switch (op) {
case PIN:
if (!nml_mode && usr_mode) /* priv inst */
return MM_PRVINS;
- if (r = Ea (inst, &va)) /* decode eff addr */
+ if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
- if (r = op_pin (&dat)) /* process inst */
+ if ((r = op_pin (&dat))) /* process inst */
return r;
- if (r = Write (va, dat)) /* write result */
+ if ((r = Write (va, dat))) /* write result */
return r;
int_reqhi = api_findreq (); /* recalc int req */
chan_req = chan_testact (); /* recalc chan act */
@@ -1051,7 +1051,7 @@ switch (op) {
case SKS:
if (!nml_mode && usr_mode) /* priv inst */
return MM_PRVINS;
- if (r = op_sks (inst, &dat)) /* process inst */
+ if ((r = op_sks (inst, &dat))) /* process inst */
return r;
if (dat)
P = (P + 1) & VA_MASK;
@@ -1085,7 +1085,7 @@ for (i = 0; i < ind_lim; i++) {
hst[hst_p].ea = *addr;
return SCPE_OK;
}
- if (r = Read (va, &wd)) /* read ind; fails? */
+ if ((r = Read (va, &wd))) /* read ind; fails? */
return r;
va = (va & VA_USR) | (wd & XVA_MASK);
}
@@ -1112,7 +1112,7 @@ for (i = 0; i < ind_lim; i++) {
}
if (wd & I_IDX)
va = (va & VA_USR) | ((va + X) & VA_MASK);
- if (r = Read (va, &wd)) /* read ind; fails? */
+ if ((r = Read (va, &wd))) /* read ind; fails? */
return r;
va = (va & VA_USR) | (wd & XVA_MASK);
}
@@ -1341,7 +1341,7 @@ if (sc >= 24) {
A = sgn;
}
else {
- B = ((B >> sc) | (A << (24 - sc)) & DMASK);
+ B = ((B >> sc) | (A << (24 - sc))) & DMASK;
A = ((A >> sc) | (sgn << (24 - sc))) & DMASK;
}
return;
@@ -1569,12 +1569,12 @@ if (op == MIN)
else if (op == SKR) /* decr */
val = DMASK;
else return STOP_RTCINS; /* can't do it */
-if (r = Ea (inst, &va)) /* decode eff addr */
+if ((r = Ea (inst, &va))) /* decode eff addr */
return r;
-if (r = Read (va, &dat)) /* get operand */
+if ((r = Read (va, &dat))) /* get operand */
return r;
dat = AddM24 (dat, val); /* mem +/- 1 */
-if (r = Write (va, dat)) /* rewrite */
+if ((r = Write (va, dat))) /* rewrite */
return r;
if (dat == 0) /* set clk sync int */
int_req = int_req | INT_RTCS;