diff options
Diffstat (limited to 'emulators/simh/files/patch-PDP1_pdp1__cpu.c')
-rw-r--r-- | emulators/simh/files/patch-PDP1_pdp1__cpu.c | 302 |
1 files changed, 302 insertions, 0 deletions
diff --git a/emulators/simh/files/patch-PDP1_pdp1__cpu.c b/emulators/simh/files/patch-PDP1_pdp1__cpu.c new file mode 100644 index 000000000000..14407a1639f4 --- /dev/null +++ b/emulators/simh/files/patch-PDP1_pdp1__cpu.c @@ -0,0 +1,302 @@ +--- PDP1/pdp1_cpu.c.orig 2016-12-01 22:43:42 UTC ++++ PDP1/pdp1_cpu.c +@@ -546,7 +546,7 @@ reason = 0; + while (reason == 0) { /* loop until halted */ + + if (sim_interval <= 0) { /* check clock queue */ +- if (reason = sim_process_event ()) ++ if ((reason = sim_process_event ())) + break; + sbs_lvl = sbs_eval (); /* eval sbs system */ + } +@@ -610,25 +610,25 @@ while (reason == 0) { + /* Logical, load, store instructions */ + + case 001: /* AND */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + AC = AC & MB; + break; + + case 002: /* IOR */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + AC = AC | MB; + break; + + case 003: /* XOR */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + AC = AC ^ MB; + break; +@@ -638,9 +638,9 @@ while (reason == 0) { + reason = STOP_XCT; + break; + } +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + xct_count = xct_count + 1; /* count XCT's */ + IR = MB; /* get instruction */ +@@ -648,9 +648,9 @@ while (reason == 0) { + + case 005: /* LCH */ + if (cpu_unit.flags & UNIT_1D) { /* PDP-1D? */ +- if (reason = Ea_ch (IR, &byno)) /* MA <- eff addr */ ++ if ((reason = Ea_ch (IR, &byno))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + AC = (MB << byt_shf[byno]) & 0770000; /* extract byte */ + } +@@ -659,9 +659,9 @@ while (reason == 0) { + + case 006: /* DCH */ + if (cpu_unit.flags & UNIT_1D) { /* PDP-1D? */ +- if (reason = Ea_ch (IR, &byno)) /* MA <- eff addr */ ++ if ((reason = Ea_ch (IR, &byno))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + MB = (MB & ~(0770000 >> byt_shf[byno])) | /* insert byte */ + ((AC & 0770000) >> byt_shf[byno]); +@@ -683,55 +683,55 @@ while (reason == 0) { + break; + + case 010: /* LAC */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + AC = MB; + break; + + case 011: /* LIO */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + IO = MB; + break; + + case 012: /* DAC */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; + MB = AC; + reason = Write (); + break; + + case 013: /* DAP */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + MB = (AC & DAMASK) | (MB & ~DAMASK); + reason = Write (); + break; + + case 014: /* DIP */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + MB = (AC & ~DAMASK) | (MB & DAMASK); + reason = Write (); + break; + + case 015: /* DIO */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; + MB = IO; + reason = Write (); + break; + + case 016: /* DZM */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; + MB = 0; + reason = Write (); +@@ -755,9 +755,9 @@ while (reason == 0) { + + case 017: /* TAD */ + if (cpu_unit.flags & UNIT_1D) { /* PDP-1D? */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + AC = AC + MB + ((PF & PF_L)? 1: 0); /* AC + opnd + L */ + if (AC > DMASK) /* carry? set L */ +@@ -769,9 +769,9 @@ while (reason == 0) { + break; + + case 020: /* ADD */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + t = AC; + AC = AC + MB; +@@ -784,9 +784,9 @@ while (reason == 0) { + break; + + case 021: /* SUB */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + t = AC ^ DMASK; /* complement AC */ + AC = t + MB; /* -AC + MB */ +@@ -798,9 +798,9 @@ while (reason == 0) { + break; + + case 022: /* IDX */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + AC = MB + 1; + if (AC >= DMASK) +@@ -810,9 +810,9 @@ while (reason == 0) { + break; + + case 023: /* ISP */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + AC = MB + 1; + if (AC >= DMASK) +@@ -824,18 +824,18 @@ while (reason == 0) { + break; + + case 024: /* SAD */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + if (AC != MB) + PC = INCR_ADDR (PC); + break; + + case 025: /* SAS */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + if (AC == MB) + PC = INCR_ADDR (PC); +@@ -863,7 +863,7 @@ while (reason == 0) { + hst[hst_p].ea = PC; + } + else { /* normal JMP */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; + PCQ_ENTRY; + PC = MA; +@@ -871,7 +871,7 @@ while (reason == 0) { + break; + + case 031: /* JSP */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; + AC = EPC_WORD; + PCQ_ENTRY; +@@ -889,9 +889,9 @@ while (reason == 0) { + */ + + case 026: /* MUL */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + if (cpu_unit.flags & UNIT_MDV) { /* hardware? */ + sign = AC ^ MB; /* result sign */ +@@ -919,9 +919,9 @@ while (reason == 0) { + break; + + case 027: /* DIV */ +- if (reason = Ea (IR)) /* MA <- eff addr */ ++ if ((reason = Ea (IR))) /* MA <- eff addr */ + break; +- if (reason = Read ()) /* MB <- data */ ++ if ((reason = Read ())) /* MB <- data */ + break; + if (cpu_unit.flags & UNIT_MDV) { /* hardware */ + sign = AC ^ MB; /* result sign */ +@@ -1362,13 +1362,13 @@ t_stat r; + MA = (PC & EPCMASK) | (IR & DAMASK); /* direct address */ + if (IR & IA) { /* indirect addr? */ + if (extm) { /* extend? */ +- if (r = Read ()) /* read; err? */ ++ if ((r = Read ())) /* read; err? */ + return r; + MA = MB & AMASK; /* one level */ + } + else { /* multi-level */ + for (i = 0; i < ind_max; i++) { /* count indirects */ +- if (r = Read ()) /* get ind word */ ++ if ((r = Read ())) /* get ind word */ + return r; + MA = (PC & EPCMASK) | (MB & DAMASK); + if ((MB & IA) == 0) +@@ -1392,12 +1392,12 @@ t_stat r; + + MA = (PC & EPCMASK) | (IR & DAMASK); /* direct address */ + if (extm) { /* extend? */ +- if (r = Read ()) /* read; err? */ ++ if ((r = Read ())) /* read; err? */ + return r; + } + else { /* multi-level */ + for (i = 0; i < ind_max; i++) { /* count indirects */ +- if (r = Read ()) /* get ind word */ ++ if ((r = Read ())) /* get ind word */ + return r; + if ((MB & IA) == 0) + break; |