mirror of
https://github.com/andrew-jacobs/emu816.git
synced 2024-06-07 16:45:15 +00:00
Fixed buf with CMP/CPX/CPY not setting carry correctly
This commit is contained in:
parent
00d7348482
commit
a0bf1ecd6b
28
emu816.h
28
emu816.h
|
@ -769,7 +769,7 @@ private:
|
||||||
|
|
||||||
if (e || p.f_m) {
|
if (e || p.f_m) {
|
||||||
Byte data = getByte(ea);
|
Byte data = getByte(ea);
|
||||||
Word temp = a.b - data;
|
Word temp = data - a.b;
|
||||||
|
|
||||||
setc(temp & 0x100);
|
setc(temp & 0x100);
|
||||||
setnz_b(lo(temp));
|
setnz_b(lo(temp));
|
||||||
|
@ -777,7 +777,7 @@ private:
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Word data = getWord(ea);
|
Word data = getWord(ea);
|
||||||
Addr temp = a.w - data;
|
Addr temp = data - a.w;
|
||||||
|
|
||||||
setc(temp & 0x10000L);
|
setc(temp & 0x10000L);
|
||||||
setnz_w((Word)temp);
|
setnz_w((Word)temp);
|
||||||
|
@ -820,14 +820,18 @@ private:
|
||||||
|
|
||||||
if (e || p.f_x) {
|
if (e || p.f_x) {
|
||||||
Byte data = getByte(ea);
|
Byte data = getByte(ea);
|
||||||
setnz_b(x.b - data);
|
Word temp = data - x.b;
|
||||||
setc(x.b >= data);
|
|
||||||
|
setc(temp & 0x100);
|
||||||
|
setnz_b(lo(temp));
|
||||||
cycles += 2;
|
cycles += 2;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Word data = getWord(ea);
|
Word data = getWord(ea);
|
||||||
setnz_w(x.w - data);
|
Addr temp = data - x.w;
|
||||||
setc(x.w >= data);
|
|
||||||
|
setc(temp & 0x10000);
|
||||||
|
setnz_w((Word) temp);
|
||||||
cycles += 3;
|
cycles += 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -838,14 +842,18 @@ private:
|
||||||
|
|
||||||
if (e || p.f_x) {
|
if (e || p.f_x) {
|
||||||
Byte data = getByte(ea);
|
Byte data = getByte(ea);
|
||||||
setnz_b(y.b - data);
|
Word temp = data - y.b;
|
||||||
setc(y.b >= data);
|
|
||||||
|
setc(temp & 0x100);
|
||||||
|
setnz_b(lo(temp));
|
||||||
cycles += 2;
|
cycles += 2;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Word data = getWord(ea);
|
Word data = getWord(ea);
|
||||||
setnz_w(y.w - data);
|
Addr temp = data - y.w;
|
||||||
setc(y.w >= data);
|
|
||||||
|
setc(temp & 0x10000);
|
||||||
|
setnz_w((Word) temp);
|
||||||
cycles += 3;
|
cycles += 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user