From c5b7b8e539bda318e5caf341ef56324a67d3c4a8 Mon Sep 17 00:00:00 2001 From: "simon.kagstrom" Date: Mon, 8 Feb 2010 18:16:38 +0000 Subject: [PATCH] Warning fixes in CPU emulation --- Src/CPU1541.h | 4 ++-- Src/CPU1541_SC.cpp | 40 +++++++++++++++++++++------------------- Src/CPUC64_SC.cpp | 2 +- Src/CPU_emulcycle.h | 28 ++++++++++++++-------------- 4 files changed, 38 insertions(+), 36 deletions(-) diff --git a/Src/CPU1541.h b/Src/CPU1541.h index d70f3e5..e05916a 100644 --- a/Src/CPU1541.h +++ b/Src/CPU1541.h @@ -265,8 +265,8 @@ inline void MOS6502_1541::CountVIATimers(int cycles) inline void MOS6502_1541::NewATNState(void) { uint8 byte = ~via1_prb & via1_ddrb; - IECLines = (byte << 6) & ((~byte ^ TheCIA2->IECLines) << 3) & 0x80 // DATA (incl. ATN acknowledge) - | (byte << 3) & 0x40; // CLK + IECLines = ((byte << 6) & ((~byte ^ TheCIA2->IECLines) << 3) & 0x80) // DATA (incl. ATN acknowledge) + | ((byte << 3) & 0x40); // CLK } diff --git a/Src/CPU1541_SC.cpp b/Src/CPU1541_SC.cpp index 5cdaa90..09b248a 100644 --- a/Src/CPU1541_SC.cpp +++ b/Src/CPU1541_SC.cpp @@ -211,10 +211,10 @@ inline uint8 MOS6502_1541::read_byte_io(uint16 adr) if ((adr & 0xfc00) == 0x1800) // VIA 1 switch (adr & 0xf) { case 0: - return (via1_prb & 0x1a + return ((via1_prb & 0x1a) | ((IECLines & TheCIA2->IECLines) >> 7) // DATA - | ((IECLines & TheCIA2->IECLines) >> 4) & 0x04 // CLK - | (TheCIA2->IECLines << 3) & 0x80) ^ 0x85; // ATN + | (((IECLines & TheCIA2->IECLines) >> 4) & 0x04) // CLK + | (((TheCIA2->IECLines << 3) & 0x80) ^ 0x85)); // ATN case 1: case 15: return 0xff; // Keep 1541C ROMs happy (track 0 sensor) @@ -254,9 +254,9 @@ inline uint8 MOS6502_1541::read_byte_io(uint16 adr) switch (adr & 0xf) { case 0: if (the_job->SyncFound()) - return via2_prb & 0x7f | the_job->WPState(); + return (via2_prb & 0x7f) | the_job->WPState(); else - return via2_prb | 0x80 | the_job->WPState(); + return (via2_prb | 0x80) | the_job->WPState(); case 1: case 15: return the_job->ReadGCRByte(); @@ -334,8 +334,8 @@ void MOS6502_1541::write_byte_io(uint16 adr, uint8 byte) case 0: via1_prb = byte; byte = ~via1_prb & via1_ddrb; - IECLines = (byte << 6) & ((~byte ^ TheCIA2->IECLines) << 3) & 0x80 - | (byte << 3) & 0x40; + IECLines = ((byte << 6) & ((~byte ^ TheCIA2->IECLines) << 3) & 0x80) + | ((byte << 3) & 0x40); break; case 1: case 15: @@ -344,29 +344,29 @@ void MOS6502_1541::write_byte_io(uint16 adr, uint8 byte) case 2: via1_ddrb = byte; byte &= ~via1_prb; - IECLines = (byte << 6) & ((~byte ^ TheCIA2->IECLines) << 3) & 0x80 - | (byte << 3) & 0x40; + IECLines = ((byte << 6) & ((~byte ^ TheCIA2->IECLines) << 3) & 0x80) + | ((byte << 3) & 0x40); break; case 3: via1_ddra = byte; break; case 4: case 6: - via1_t1l = via1_t1l & 0xff00 | byte; + via1_t1l = (via1_t1l & 0xff00) | byte; break; case 5: - via1_t1l = via1_t1l & 0xff | (byte << 8); + via1_t1l = (via1_t1l & 0xff) | (byte << 8); via1_ifr &= 0xbf; via1_t1c = via1_t1l; break; case 7: - via1_t1l = via1_t1l & 0xff | (byte << 8); + via1_t1l = (via1_t1l & 0xff) | (byte << 8); break; case 8: - via1_t2l = via1_t2l & 0xff00 | byte; + via1_t2l = (via1_t2l & 0xff00) | byte; break; case 9: - via1_t2l = via1_t2l & 0xff | (byte << 8); + via1_t2l = (via1_t2l & 0xff) | (byte << 8); via1_ifr &= 0xdf; via1_t2c = via1_t2l; break; @@ -396,10 +396,12 @@ void MOS6502_1541::write_byte_io(uint16 adr, uint8 byte) if ((via2_prb ^ byte) & 8) // Bit 3: Drive LED the_display->UpdateLEDs(byte & 8 ? 1 : 0, 0, 0, 0); if ((via2_prb ^ byte) & 3) // Bits 0/1: Stepper motor + { if ((via2_prb & 3) == ((byte+1) & 3)) the_job->MoveHeadOut(); else if ((via2_prb & 3) == ((byte-1) & 3)) the_job->MoveHeadIn(); + } via2_prb = byte & 0xef; break; case 1: @@ -414,21 +416,21 @@ void MOS6502_1541::write_byte_io(uint16 adr, uint8 byte) break; case 4: case 6: - via2_t1l = via2_t1l & 0xff00 | byte; + via2_t1l = (via2_t1l & 0xff00) | byte; break; case 5: - via2_t1l = via2_t1l & 0xff | (byte << 8); + via2_t1l = (via2_t1l & 0xff) | (byte << 8); via2_ifr &= 0xbf; via2_t1c = via2_t1l; break; case 7: - via2_t1l = via2_t1l & 0xff | (byte << 8); + via2_t1l = (via2_t1l & 0xff) | (byte << 8); break; case 8: - via2_t2l = via2_t2l & 0xff00 | byte; + via2_t2l = (via2_t2l & 0xff00) | byte; break; case 9: - via2_t2l = via2_t2l & 0xff | (byte << 8); + via2_t2l = (via2_t2l & 0xff) | (byte << 8); via2_ifr &= 0xdf; via2_t2c = via2_t2l; break; diff --git a/Src/CPUC64_SC.cpp b/Src/CPUC64_SC.cpp index a2ea434..4192234 100644 --- a/Src/CPUC64_SC.cpp +++ b/Src/CPUC64_SC.cpp @@ -244,7 +244,7 @@ inline uint8 MOS6510::read_byte_io(uint16 adr) case 0x9: case 0xa: case 0xb: - return color_ram[adr & 0x03ff] & 0x0f | TheVIC->LastVICByte & 0xf0; + return (color_ram[adr & 0x03ff] & 0x0f) | (TheVIC->LastVICByte & 0xf0); case 0xc: // CIA 1 return TheCIA1->ReadRegister(adr & 0x0f); case 0xd: // CIA 2 diff --git a/Src/CPU_emulcycle.h b/Src/CPU_emulcycle.h index d43e83f..861206f 100644 --- a/Src/CPU_emulcycle.h +++ b/Src/CPU_emulcycle.h @@ -200,7 +200,7 @@ state = A_ABSX2; else state = A_ABSX3; - ar = (ar + x) & 0xff | (ar2 << 8); + ar = ((ar + x) & 0xff) | (ar2 << 8); break; case A_ABSX2: // No page crossed read_idle(ar); @@ -220,7 +220,7 @@ state = A_ABSY2; else state = A_ABSY3; - ar = (ar + y) & 0xff | (ar2 << 8); + ar = ((ar + y) & 0xff) | (ar2 << 8); break; case A_ABSY2: // No page crossed read_idle(ar); @@ -262,7 +262,7 @@ state = A_INDY3; else state = A_INDY4; - ar = (ar + y) & 0xff | (ar2 << 8); + ar = ((ar + y) & 0xff) | (ar2 << 8); break; case A_INDY3: // No page crossed read_idle(ar); @@ -281,10 +281,10 @@ case AE_ABSX1: read_to(pc++, data); if (ar+x < 0x100) { - ar = (ar + x) & 0xff | (data << 8); + ar = ((ar + x) & 0xff) | (data << 8); Execute; } else { - ar = (ar + x) & 0xff | (data << 8); + ar = ((ar + x) & 0xff) | (data << 8); state = AE_ABSX2; } break; @@ -300,10 +300,10 @@ case AE_ABSY1: read_to(pc++, data); if (ar+y < 0x100) { - ar = (ar + y) & 0xff | (data << 8); + ar = ((ar + y) & 0xff) | (data << 8); Execute; } else { - ar = (ar + y) & 0xff | (data << 8); + ar = ((ar + y) & 0xff) | (data << 8); state = AE_ABSY2; } break; @@ -323,10 +323,10 @@ case AE_INDY2: read_to((ar2 + 1) & 0xff, data); if (ar+y < 0x100) { - ar = (ar + y) & 0xff | (data << 8); + ar = ((ar + y) & 0xff) | (data << 8); Execute; } else { - ar = (ar + y) & 0xff | (data << 8); + ar = ((ar + y) & 0xff) | (data << 8); state = AE_INDY3; } break; @@ -378,7 +378,7 @@ state = M_ABSX2; else state = M_ABSX3; - ar = (ar + x) & 0xff | (data << 8); + ar = ((ar + x) & 0xff) | (data << 8); break; case M_ABSX2: // No page crossed read_idle(ar); @@ -398,7 +398,7 @@ state = M_ABSY2; else state = M_ABSY3; - ar = (ar + y) & 0xff | (data << 8); + ar = ((ar + y) & 0xff) | (data << 8); break; case M_ABSY2: // No page crossed read_idle(ar); @@ -440,7 +440,7 @@ state = M_INDY3; else state = M_INDY4; - ar = (ar + y) & 0xff | (data << 8); + ar = ((ar + y) & 0xff) | (data << 8); break; case M_INDY3: // No page crossed read_idle(ar); @@ -758,7 +758,7 @@ state = O_JMP_I1; break; case O_JMP_I1: - read_to((ar + 1) & 0xff | ar & 0xff00, data); + read_to(((ar + 1) & 0xff) | (ar & 0xff00), data); pc |= data << 8; Last; @@ -1070,7 +1070,7 @@ z_flag = a; v_flag = (data ^ a) & 0x40; if ((data & 0x0f) + (data & 0x01) > 5) - a = a & 0xf0 | (a + 6) & 0x0f; + a = (a & 0xf0) | ((a + 6) & 0x0f); if ((c_flag = ((data + (data & 0x10)) & 0x1f0) > 0x50) != 0) a += 0x60; }