mirror of
https://github.com/andrew-jacobs/emu816.git
synced 2024-12-21 18:30:05 +00:00
changes per #1 from pi1541
This commit is contained in:
parent
72a21b6af3
commit
db9d5467b6
@ -118,7 +118,7 @@ void emu816::step()
|
||||
case 0x1e: op_asl(am_absx()); break;
|
||||
case 0x1f: op_ora(am_alnx()); break;
|
||||
|
||||
case 0x20: op_jsr(am_absl()); break;
|
||||
case 0x20: op_jsr(am_absl2()); break;
|
||||
case 0x21: op_and(am_dpix()); break;
|
||||
case 0x22: op_jsl(am_alng()); break;
|
||||
case 0x23: op_and(am_srel()); break;
|
||||
@ -164,7 +164,7 @@ void emu816::step()
|
||||
case 0x49: op_eor(am_immm()); break;
|
||||
case 0x4a: op_lsra(am_impl()); break;
|
||||
case 0x4b: op_phk(am_impl()); break;
|
||||
case 0x4c: op_jmp(am_absl()); break;
|
||||
case 0x4c: op_jmp(am_absl2()); break;
|
||||
case 0x4d: op_eor(am_absl()); break;
|
||||
case 0x4e: op_lsr(am_absl()); break;
|
||||
case 0x4f: op_eor(am_alng()); break;
|
||||
@ -176,7 +176,7 @@ void emu816::step()
|
||||
case 0x54: op_mvn(am_immw()); break;
|
||||
case 0x55: op_eor(am_dpgx()); break;
|
||||
case 0x56: op_lsr(am_dpgx()); break;
|
||||
case 0x57: op_eor(am_dpil()); break;
|
||||
case 0x57: op_eor(am_dpiy()); break;
|
||||
case 0x58: op_cli(am_impl()); break;
|
||||
case 0x59: op_eor(am_absy()); break;
|
||||
case 0x5a: op_phy(am_impl()); break;
|
||||
|
29
emu816.h
29
emu816.h
@ -145,6 +145,16 @@ private:
|
||||
return (ea);
|
||||
}
|
||||
|
||||
// Absolute - a (fix for 4c and 20)
|
||||
INLINE static Addr am_absl2()
|
||||
{
|
||||
register Addr ea = join(pbr, getWord(bank(pbr) | pc));
|
||||
|
||||
BYTES(2);
|
||||
cycles += 2;
|
||||
return (ea);
|
||||
}
|
||||
|
||||
// Absolute Indexed X - a,X
|
||||
INLINE static Addr am_absx()
|
||||
{
|
||||
@ -168,7 +178,7 @@ private:
|
||||
// Absolute Indirect - (a)
|
||||
INLINE static Addr am_absi()
|
||||
{
|
||||
register Addr ia = join(0, getWord(bank(pbr) | pc));
|
||||
register Addr ia = join(pbr, getWord(bank(pbr) | pc));
|
||||
|
||||
BYTES(2);
|
||||
cycles += 4;
|
||||
@ -531,12 +541,12 @@ private:
|
||||
if (e || p.f_m) {
|
||||
setc(a.b & 0x80);
|
||||
setnz_b(a.b <<= 1);
|
||||
setByte(ea, a.b);
|
||||
//setByte(ea, a.b);
|
||||
}
|
||||
else {
|
||||
setc(a.w & 0x8000);
|
||||
setnz_w(a.w <<= 1);
|
||||
setWord(ea, a.w);
|
||||
//setWord(ea, a.w);
|
||||
}
|
||||
cycles += 2;
|
||||
}
|
||||
@ -771,7 +781,7 @@ private:
|
||||
Byte data = getByte(ea);
|
||||
Word temp = a.b - data;
|
||||
|
||||
setc(temp & 0x100);
|
||||
setc(a.b >= data);
|
||||
setnz_b(lo(temp));
|
||||
cycles += 2;
|
||||
}
|
||||
@ -779,7 +789,7 @@ private:
|
||||
Word data = getWord(ea);
|
||||
Addr temp = a.w - data;
|
||||
|
||||
setc(temp & 0x10000L);
|
||||
setc(a.w >= data);
|
||||
setnz_w((Word)temp);
|
||||
cycles += 3;
|
||||
}
|
||||
@ -822,7 +832,7 @@ private:
|
||||
Byte data = getByte(ea);
|
||||
Word temp = x.b - data;
|
||||
|
||||
setc(temp & 0x100);
|
||||
setc(x.b >= data);
|
||||
setnz_b(lo(temp));
|
||||
cycles += 2;
|
||||
}
|
||||
@ -830,7 +840,7 @@ private:
|
||||
Word data = getWord(ea);
|
||||
Addr temp = x.w - data;
|
||||
|
||||
setc(temp & 0x10000);
|
||||
setc(x.w >= data);
|
||||
setnz_w((Word) temp);
|
||||
cycles += 3;
|
||||
}
|
||||
@ -844,7 +854,7 @@ private:
|
||||
Byte data = getByte(ea);
|
||||
Word temp = y.b - data;
|
||||
|
||||
setc(temp & 0x100);
|
||||
setc(y.b >= data);
|
||||
setnz_b(lo(temp));
|
||||
cycles += 2;
|
||||
}
|
||||
@ -852,7 +862,7 @@ private:
|
||||
Word data = getWord(ea);
|
||||
Addr temp = y.w - data;
|
||||
|
||||
setc(temp & 0x10000);
|
||||
setc(y.w >= data);
|
||||
setnz_w((Word) temp);
|
||||
cycles += 3;
|
||||
}
|
||||
@ -1432,7 +1442,6 @@ private:
|
||||
pbr = pullByte();
|
||||
cycles += 7;
|
||||
}
|
||||
p.f_i = 0;
|
||||
}
|
||||
|
||||
INLINE static void op_rtl(Addr ea)
|
||||
|
Loading…
Reference in New Issue
Block a user