mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-13 07:05:12 +01:00
Warning fixes in CPU emulation
This commit is contained in:
parent
33ac22c693
commit
c5b7b8e539
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user