6502 future-proofing: do not overwrite the variable with the access address on a read in case we want to rerun it

This commit is contained in:
Olivier Galibert 2022-09-06 17:26:46 +02:00
parent 98c6ead6ed
commit 6563dfe9cf
9 changed files with 369 additions and 369 deletions

View File

@ -7,8 +7,8 @@
adc_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
prefetch();
adc_abx
@ -18,8 +18,8 @@ adc_abx
read(set_l(TMP, TMP+X));
}
TMP += X;
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
prefetch();
adc_aby
@ -29,8 +29,8 @@ adc_aby
read(set_l(TMP, TMP+Y));
}
TMP += Y;
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
prefetch();
adc_idx
@ -59,15 +59,15 @@ adc_imm
adc_zpg
TMP = read_pc();
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
prefetch();
adc_zpx
TMP = read_pc();
read(TMP);
TMP = read(uint8_t(TMP+X));
do_adc(TMP);
TMP2 = read(uint8_t(TMP+X));
do_adc(TMP2);
prefetch();
and_aba
@ -332,8 +332,8 @@ clv_imp
cmp_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_cmp(A, TMP);
TMP2 = read(TMP);
do_cmp(A, TMP2);
prefetch();
cmp_abx
@ -343,8 +343,8 @@ cmp_abx
read(set_l(TMP, TMP+X));
}
TMP += X;
TMP = read(TMP);
do_cmp(A, TMP);
TMP2 = read(TMP);
do_cmp(A, TMP2);
prefetch();
cmp_aby
@ -354,8 +354,8 @@ cmp_aby
read(set_l(TMP, TMP+Y));
}
TMP += Y;
TMP = read(TMP);
do_cmp(A, TMP);
TMP2 = read(TMP);
do_cmp(A, TMP2);
prefetch();
cmp_idx
@ -384,22 +384,22 @@ cmp_imm
cmp_zpg
TMP = read_pc();
TMP = read(TMP);
do_cmp(A, TMP);
TMP2 = read(TMP);
do_cmp(A, TMP2);
prefetch();
cmp_zpx
TMP = read_pc();
read(TMP);
TMP = read(uint8_t(TMP+X));
do_cmp(A, TMP);
TMP2 = read(uint8_t(TMP+X));
do_cmp(A, TMP2);
prefetch();
cpx_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_cmp(X, TMP);
TMP2 = read(TMP);
do_cmp(X, TMP2);
prefetch();
cpx_imm
@ -409,15 +409,15 @@ cpx_imm
cpx_zpg
TMP = read_pc();
TMP = read(TMP);
do_cmp(X, TMP);
TMP2 = read(TMP);
do_cmp(X, TMP2);
prefetch();
cpy_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_cmp(Y, TMP);
TMP2 = read(TMP);
do_cmp(Y, TMP2);
prefetch();
cpy_imm
@ -427,8 +427,8 @@ cpy_imm
cpy_zpg
TMP = read_pc();
TMP = read(TMP);
do_cmp(Y, TMP);
TMP2 = read(TMP);
do_cmp(Y, TMP2);
prefetch();
dec_aba
@ -1021,8 +1021,8 @@ rts_imp
sbc_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
prefetch();
sbc_abx
@ -1032,8 +1032,8 @@ sbc_abx
read(set_l(TMP, TMP+X));
}
TMP += X;
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
prefetch();
sbc_aby
@ -1043,8 +1043,8 @@ sbc_aby
read(set_l(TMP, TMP+Y));
}
TMP += Y;
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
prefetch();
sbc_idx
@ -1073,15 +1073,15 @@ sbc_imm
sbc_zpg
TMP = read_pc();
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
prefetch();
sbc_zpx
TMP = read_pc();
read(TMP);
TMP = read(uint8_t(TMP+X));
do_sbc(TMP);
TMP2 = read(uint8_t(TMP+X));
do_sbc(TMP2);
prefetch();
sec_imp

View File

@ -5,8 +5,8 @@
adc_c_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -20,8 +20,8 @@ adc_c_abx
read(set_l(TMP, TMP+X));
}
TMP += X;
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -35,8 +35,8 @@ adc_c_aby
read(set_l(TMP, TMP+Y));
}
TMP += Y;
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -81,8 +81,8 @@ adc_c_imm
adc_c_zpg
TMP = read_pc();
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -103,8 +103,8 @@ adc_c_zpi
adc_c_zpx
TMP = read_pc();
read(TMP);
TMP = read(uint8_t(TMP+X));
do_adc(TMP);
TMP2 = read(uint8_t(TMP+X));
do_adc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -206,8 +206,8 @@ bit_imm
bit_zpx
TMP = read_pc();
read(TMP);
TMP = read(uint8_t(TMP+X));
do_bit(TMP);
TMP2 = read(uint8_t(TMP+X));
do_bit(TMP2);
prefetch();
bra_rel
@ -563,8 +563,8 @@ ror_c_zpx
sbc_c_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -578,8 +578,8 @@ sbc_c_abx
read(set_l(TMP, TMP+X));
}
TMP += X;
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -593,8 +593,8 @@ sbc_c_aby
read(set_l(TMP, TMP+Y));
}
TMP += Y;
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -639,8 +639,8 @@ sbc_c_imm
sbc_c_zpg
TMP = read_pc();
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -661,8 +661,8 @@ sbc_c_zpi
sbc_c_zpx
TMP = read_pc();
read(TMP);
TMP = read(uint8_t(TMP+X));
do_sbc(TMP);
TMP2 = read(uint8_t(TMP+X));
do_sbc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);

View File

@ -5,8 +5,8 @@
adc_ce_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
if(P & F_D)
set_nz(A);
prefetch();
@ -15,8 +15,8 @@ adc_ce_abx
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP += X;
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
if(P & F_D)
set_nz(A);
prefetch();
@ -25,8 +25,8 @@ adc_ce_aby
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP += Y;
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
if(P & F_D)
set_nz(A);
prefetch();
@ -71,16 +71,16 @@ adc_ce_imm
adc_ce_zpg
TMP = read_pc();
TMP = read(B|TMP);
do_adc(TMP);
TMP2 = read(B|TMP);
do_adc(TMP2);
if(P & F_D)
set_nz(A);
prefetch();
adc_ce_zpx
TMP = read_pc();
TMP = read(B|uint8_t(TMP+X));
do_adc(TMP);
TMP2 = read(B|uint8_t(TMP+X));
do_adc(TMP2);
if(P & F_D)
set_nz(A);
prefetch();
@ -295,8 +295,8 @@ bit_ce_zpg
bit_ce_zpx
TMP = read_pc();
TMP = read(B|uint8_t(TMP+X));
do_bit(TMP);
TMP2 = read(B|uint8_t(TMP+X));
do_bit(TMP2);
prefetch();
bmi_ce_rel
@ -436,16 +436,16 @@ cmp_ce_abx
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP += X;
TMP = read(TMP);
do_cmp(A, TMP);
TMP2 = read(TMP);
do_cmp(A, TMP2);
prefetch();
cmp_ce_aby
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP += Y;
TMP = read(TMP);
do_cmp(A, TMP);
TMP2 = read(TMP);
do_cmp(A, TMP2);
prefetch();
cmp_ce_idx
@ -475,34 +475,34 @@ cmp_idz
cmp_ce_zpg
TMP = read_pc();
TMP = read(B|TMP);
do_cmp(A, TMP);
TMP2 = read(B|TMP);
do_cmp(A, TMP2);
prefetch();
cmp_ce_zpx
TMP = read_pc();
read(TMP);
TMP = read(B|uint8_t(TMP+X));
do_cmp(A, TMP);
TMP2 = read(B|uint8_t(TMP+X));
do_cmp(A, TMP2);
prefetch();
cpx_ce_zpg
TMP = read_pc();
TMP = read(B|TMP);
do_cmp(X, TMP);
TMP2 = read(B|TMP);
do_cmp(X, TMP2);
prefetch();
cpy_ce_zpg
TMP = read_pc();
TMP = read(B|TMP);
do_cmp(Y, TMP);
TMP2 = read(B|TMP);
do_cmp(Y, TMP2);
prefetch();
cpz_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_cmp(Z, TMP);
TMP2 = read(TMP);
do_cmp(Z, TMP2);
prefetch();
cpz_imm
@ -512,8 +512,8 @@ cpz_imm
cpz_zpg
TMP = read_pc();
TMP = read(B|TMP);
do_cmp(Z, TMP);
TMP2 = read(B|TMP);
do_cmp(Z, TMP2);
prefetch();
dec_ce_aba
@ -1212,8 +1212,8 @@ rts_ce_imp
sbc_ce_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
if(P & F_D)
set_nz(A);
prefetch();
@ -1222,8 +1222,8 @@ sbc_ce_abx
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP += X;
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
if(P & F_D)
set_nz(A);
prefetch();
@ -1232,8 +1232,8 @@ sbc_ce_aby
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP += Y;
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
if(P & F_D)
set_nz(A);
prefetch();
@ -1278,8 +1278,8 @@ sbc_ce_imm
sbc_ce_zpg
TMP = read_pc();
TMP = read(B|TMP);
do_sbc(TMP);
TMP2 = read(B|TMP);
do_sbc(TMP2);
if(P & F_D)
set_nz(A);
prefetch();
@ -1287,8 +1287,8 @@ sbc_ce_zpg
sbc_ce_zpx
TMP = read_pc();
read(TMP);
TMP = read(B|uint8_t(TMP+X));
do_sbc(TMP);
TMP2 = read(B|uint8_t(TMP+X));
do_sbc(TMP2);
if(P & F_D)
set_nz(A);
prefetch();

View File

@ -235,8 +235,8 @@ brk_m_imp
adc_m_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read_data(TMP);
do_adc(TMP);
TMP2 = read_data(TMP);
do_adc(TMP2);
prefetch();
adc_m_abx
@ -244,8 +244,8 @@ adc_m_abx
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+X));
TMP += X;
TMP = read_data(TMP);
do_adc(TMP);
TMP2 = read_data(TMP);
do_adc(TMP2);
prefetch();
adc_m_aby
@ -253,8 +253,8 @@ adc_m_aby
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+Y));
TMP += Y;
TMP = read_data(TMP);
do_adc(TMP);
TMP2 = read_data(TMP);
do_adc(TMP2);
prefetch();
adc_m_idx
@ -279,8 +279,8 @@ adc_m_zpx
TMP = read_pc_noinc();
read_dummy(PC & 0xff);
PC++;
TMP = read(uint8_t(TMP+X));
do_adc(TMP);
TMP2 = read(uint8_t(TMP+X));
do_adc(TMP2);
prefetch();
and_m_aba
@ -480,8 +480,8 @@ bvs_m_rel
cmp_m_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read_data(TMP);
do_cmp(A, TMP);
TMP2 = read_data(TMP);
do_cmp(A, TMP2);
prefetch();
cmp_m_abx
@ -489,8 +489,8 @@ cmp_m_abx
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+X));
TMP += X;
TMP = read_data(TMP);
do_cmp(A, TMP);
TMP2 = read_data(TMP);
do_cmp(A, TMP2);
prefetch();
cmp_m_aby
@ -498,8 +498,8 @@ cmp_m_aby
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+Y));
TMP += Y;
TMP = read_data(TMP);
do_cmp(A, TMP);
TMP2 = read_data(TMP);
do_cmp(A, TMP2);
prefetch();
cmp_m_idx
@ -524,22 +524,22 @@ cmp_m_zpx
TMP = read_pc_noinc();
read_dummy(PC & 0xff);
PC++;
TMP = read(uint8_t(TMP+X));
do_cmp(A, TMP);
TMP2 = read(uint8_t(TMP+X));
do_cmp(A, TMP2);
prefetch();
cpx_m_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read_data(TMP);
do_cmp(X, TMP);
TMP2 = read_data(TMP);
do_cmp(X, TMP2);
prefetch();
cpy_m_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read_data(TMP);
do_cmp(Y, TMP);
TMP2 = read_data(TMP);
do_cmp(Y, TMP2);
prefetch();
dec_m_aba
@ -1010,8 +1010,8 @@ rts_m_imp
sbc_m_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read_data(TMP);
do_sbc(TMP);
TMP2 = read_data(TMP);
do_sbc(TMP2);
prefetch();
sbc_m_abx
@ -1019,8 +1019,8 @@ sbc_m_abx
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+X));
TMP += X;
TMP = read_data(TMP);
do_sbc(TMP);
TMP2 = read_data(TMP);
do_sbc(TMP2);
prefetch();
sbc_m_aby
@ -1028,8 +1028,8 @@ sbc_m_aby
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+Y));
TMP += Y;
TMP = read_data(TMP);
do_sbc(TMP);
TMP2 = read_data(TMP);
do_sbc(TMP2);
prefetch();
sbc_m_idx
@ -1054,8 +1054,8 @@ sbc_m_zpx
TMP = read_pc_noinc();
read_dummy(PC & 0xff);
PC++;
TMP = read(uint8_t(TMP+X));
do_sbc(TMP);
TMP2 = read(uint8_t(TMP+X));
do_sbc(TMP2);
prefetch();
sta_m_aba
@ -1162,11 +1162,11 @@ sty_m_zpx
adct_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read_data(TMP);
TMP2 = read(X);
read_dummy(X);
do_adct(TMP);
write(X, TMP2);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(TMP);
do_adct(TMP2);
write(X, TMP);
prefetch();
adct_abx
@ -1174,11 +1174,11 @@ adct_abx
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+X));
TMP += X;
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
do_adct(TMP);
write(X, TMP2);
do_adct(TMP2);
write(X, TMP);
prefetch();
adct_aby
@ -1186,11 +1186,11 @@ adct_aby
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+Y));
TMP += Y;
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
do_adct(TMP);
write(X, TMP2);
do_adct(TMP2);
write(X, TMP);
prefetch();
adct_idx
@ -1200,11 +1200,11 @@ adct_idx
TMP2 += X;
TMP = read(TMP2 & 0xff);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
do_adct(TMP);
write(X, TMP2);
do_adct(TMP2);
write(X, TMP);
prefetch();
adct_idy
@ -1212,11 +1212,11 @@ adct_idy
TMP = read(TMP2);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
read_dummy(set_l(TMP, TMP+Y));
TMP = read_data(TMP+Y);
TMP2 = read(X);
TMP2 = read_data(TMP+Y);
TMP = read(X);
read_dummy(X);
do_adct(TMP);
write(X, TMP2);
do_adct(TMP2);
write(X, TMP);
prefetch();
adct_imm
@ -1229,33 +1229,33 @@ adct_imm
adct_zpg
TMP = read_pc();
TMP = read(TMP);
TMP2 = read(X);
TMP2 = read(TMP);
TMP = read(X);
read_dummy(X);
do_adct(TMP);
write(X, TMP2);
do_adct(TMP2);
write(X, TMP);
prefetch();
adct_zpx
TMP = read_pc_noinc();
read_dummy(PC & 0xff);
PC++;
TMP = read(uint8_t(TMP+X));
TMP2 = read(X);
TMP2 = read(uint8_t(TMP+X));
TMP = read(X);
read_dummy(X);
do_adct(TMP);
write(X, TMP2);
do_adct(TMP2);
write(X, TMP);
prefetch();
andt_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 &= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP &= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
andt_abx
@ -1263,12 +1263,12 @@ andt_abx
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+X));
TMP += X;
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 &= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP &= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
andt_aby
@ -1276,12 +1276,12 @@ andt_aby
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+Y));
TMP += Y;
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 &= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP &= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
andt_imm
@ -1300,12 +1300,12 @@ andt_idx
TMP2 += X;
TMP = read(TMP2 & 0xff);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 &= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP &= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
andt_idy
@ -1313,42 +1313,42 @@ andt_idy
TMP = read(TMP2);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
read_dummy(set_l(TMP, TMP+Y));
TMP = read_data(TMP+Y);
TMP2 = read(X);
TMP2 = read_data(TMP+Y);
TMP = read(X);
read_dummy(X);
TMP2 &= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP &= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
andt_zpg
TMP = read_pc();
TMP = read(TMP);
TMP2 = read(X);
TMP2 = read(TMP);
TMP = read(X);
read_dummy(X);
TMP2 &= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP &= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
andt_zpx
TMP = read_pc_noinc();
read_dummy(PC & 0xff);
PC++;
TMP = read(uint8_t(TMP+X));
TMP2 = read(X);
TMP2 = read(uint8_t(TMP+X));
TMP = read(X);
read_dummy(X);
TMP2 &= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP &= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
cmpt_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read_data(TMP);
TMP2 = read(X);
do_cmp(TMP2, TMP);
TMP2 = read_data(TMP);
TMP = read(X);
do_cmp(TMP, TMP2);
prefetch();
cmpt_abx
@ -1356,9 +1356,9 @@ cmpt_abx
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+X));
TMP += X;
TMP = read_data(TMP);
TMP2 = read(X);
do_cmp(TMP2, TMP);
TMP2 = read_data(TMP);
TMP = read(X);
do_cmp(TMP, TMP2);
prefetch();
cmpt_aby
@ -1366,9 +1366,9 @@ cmpt_aby
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+Y));
TMP += Y;
TMP = read_data(TMP);
TMP2 = read(X);
do_cmp(TMP2, TMP);
TMP2 = read_data(TMP);
TMP = read(X);
do_cmp(TMP, TMP2);
prefetch();
cmpt_idx
@ -1378,9 +1378,9 @@ cmpt_idx
TMP2 += X;
TMP = read(TMP2 & 0xff);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
TMP = read_data(TMP);
TMP2 = read(X);
do_cmp(TMP2, TMP);
TMP2 = read_data(TMP);
TMP = read(X);
do_cmp(TMP, TMP2);
prefetch();
cmpt_idy
@ -1388,9 +1388,9 @@ cmpt_idy
TMP = read(TMP2);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
read_dummy(set_l(TMP, TMP+Y));
TMP = read_data(TMP+Y);
TMP2 = read(X);
do_cmp(TMP2, read(TMP+Y));
TMP2 = read_data(TMP+Y);
TMP = read(X);
do_cmp(TMP, read(TMP2+Y));
prefetch();
cmpt_imm
@ -1401,29 +1401,29 @@ cmpt_imm
cmpt_zpg
TMP = read_pc();
TMP = read(TMP);
TMP2 = read(X);
do_cmp(TMP2, TMP);
TMP2 = read(TMP);
TMP = read(X);
do_cmp(TMP, TMP2);
prefetch();
cmpt_zpx
TMP = read_pc_noinc();
read_dummy(PC & 0xff);
PC++;
TMP = read(uint8_t(TMP+X));
TMP2 = read(X);
do_cmp(TMP2, TMP);
TMP2 = read(uint8_t(TMP+X));
TMP = read(X);
do_cmp(TMP, TMP2);
prefetch();
eort_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 ^= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP ^= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
eort_abx
@ -1431,12 +1431,12 @@ eort_abx
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+X));
TMP += X;
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 ^= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP ^= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
eort_aby
@ -1444,12 +1444,12 @@ eort_aby
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+Y));
TMP += Y;
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 ^= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP ^= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
eort_idx
@ -1459,12 +1459,12 @@ eort_idx
TMP2 += X;
TMP = read(TMP2 & 0xff);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 ^= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP ^= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
eort_idy
@ -1472,12 +1472,12 @@ eort_idy
TMP = read(TMP2);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
read_dummy(set_l(TMP, TMP+Y));
TMP = read_data(TMP+Y);
TMP2 = read(X);
TMP2 = read_data(TMP+Y);
TMP = read(X);
read_dummy(X);
TMP2 ^= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP ^= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
eort_imm
@ -1491,24 +1491,24 @@ eort_imm
eort_zpg
TMP = read_pc();
TMP = read(TMP);
TMP2 = read(X);
TMP2 = read(TMP);
TMP = read(X);
read_dummy(X);
TMP2 ^= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP ^= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
eort_zpx
TMP = read_pc_noinc();
read_dummy(PC & 0xff);
PC++;
TMP = read(uint8_t(TMP+X));
TMP2 = read(X);
TMP2 = read(uint8_t(TMP+X));
TMP = read(X);
read_dummy(X);
TMP2 ^= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP ^= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
ldt_aba
@ -1594,12 +1594,12 @@ ldt_zpx
ort_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 |= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP |= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
ort_abx
@ -1607,12 +1607,12 @@ ort_abx
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+X));
TMP += X;
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 |= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP |= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
ort_aby
@ -1620,12 +1620,12 @@ ort_aby
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+Y));
TMP += Y;
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 |= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP |= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
ort_imm
@ -1644,12 +1644,12 @@ ort_idx
TMP2 += X;
TMP = read(TMP2 & 0xff);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
TMP2 |= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP |= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
ort_idy
@ -1657,44 +1657,44 @@ ort_idy
TMP = read(TMP2);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
read_dummy(set_l(TMP, TMP+Y));
TMP = read_data(TMP+Y);
TMP2 = read(X);
TMP2 = read_data(TMP+Y);
TMP = read(X);
read_dummy(X);
TMP2 |= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP |= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
ort_zpg
TMP = read_pc();
TMP = read(TMP);
TMP2 = read(X);
TMP2 = read(TMP);
TMP = read(X);
read_dummy(X);
TMP2 |= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP |= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
ort_zpx
TMP = read_pc_noinc();
read_dummy(PC & 0xff);
PC++;
TMP = read(uint8_t(TMP+X));
TMP2 = read(X);
TMP2 = read(uint8_t(TMP+X));
TMP = read(X);
read_dummy(X);
TMP2 |= TMP;
set_nz(TMP2);
write(X, TMP2);
TMP |= TMP2;
set_nz(TMP);
write(X, TMP);
prefetch();
sbct_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
do_sbct(TMP);
write(X, TMP2);
do_sbct(TMP2);
write(X, TMP);
prefetch();
sbct_abx
@ -1702,11 +1702,11 @@ sbct_abx
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+X));
TMP += X;
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
do_sbct(TMP);
write(X, TMP2);
do_sbct(TMP2);
write(X, TMP);
prefetch();
sbct_aby
@ -1714,11 +1714,11 @@ sbct_aby
TMP = set_h(TMP, read_pc());
read_dummy(set_l(TMP, TMP+Y));
TMP += Y;
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
do_sbct(TMP);
write(X, TMP2);
do_sbct(TMP2);
write(X, TMP);
prefetch();
sbct_idx
@ -1728,11 +1728,11 @@ sbct_idx
TMP2 += X;
TMP = read(TMP2 & 0xff);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
TMP = read_data(TMP);
TMP2 = read(X);
TMP2 = read_data(TMP);
TMP = read(X);
read_dummy(X);
do_sbct(TMP);
write(X, TMP2);
do_sbct(TMP2);
write(X, TMP);
prefetch();
sbct_idy
@ -1740,11 +1740,11 @@ sbct_idy
TMP = read(TMP2);
TMP = set_h(TMP, read((TMP2+1) & 0xff));
read_dummy(set_l(TMP, TMP+Y));
TMP = read_data(TMP+Y);
TMP2 = read(X);
TMP2 = read_data(TMP+Y);
TMP = read(X);
read_dummy(X);
do_sbct(TMP);
write(X, TMP2);
do_sbct(TMP2);
write(X, TMP);
prefetch();
sbct_imm
@ -1757,20 +1757,20 @@ sbct_imm
sbct_zpg
TMP = read_pc();
TMP = read(TMP);
TMP2 = read(X);
TMP2 = read(TMP);
TMP = read(X);
read_dummy(X);
do_sbct(TMP);
write(X, TMP2);
do_sbct(TMP2);
write(X, TMP);
prefetch();
sbct_zpx
TMP = read_pc_noinc();
read_dummy(PC & 0xff);
PC++;
TMP = read(uint8_t(TMP+X));
TMP2 = read(X);
TMP2 = read(uint8_t(TMP+X));
TMP = read(X);
read_dummy(X);
do_sbct(TMP);
write(X, TMP2);
do_sbct(TMP2);
write(X, TMP);
prefetch();

View File

@ -4,8 +4,8 @@
adc_nd_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_adc_nd(TMP);
TMP2 = read(TMP);
do_adc_nd(TMP2);
prefetch();
adc_nd_abx
@ -15,8 +15,8 @@ adc_nd_abx
read(set_l(TMP, TMP+X));
}
TMP += X;
TMP = read(TMP);
do_adc_nd(TMP);
TMP2 = read(TMP);
do_adc_nd(TMP2);
prefetch();
adc_nd_aby
@ -26,8 +26,8 @@ adc_nd_aby
read(set_l(TMP, TMP+Y));
}
TMP += Y;
TMP = read(TMP);
do_adc_nd(TMP);
TMP2 = read(TMP);
do_adc_nd(TMP2);
prefetch();
adc_nd_idx
@ -56,15 +56,15 @@ adc_nd_imm
adc_nd_zpg
TMP = read_pc();
TMP = read(TMP);
do_adc_nd(TMP);
TMP2 = read(TMP);
do_adc_nd(TMP2);
prefetch();
adc_nd_zpx
TMP = read_pc();
read(TMP);
TMP = read(uint8_t(TMP+X));
do_adc_nd(TMP);
TMP2 = read(uint8_t(TMP+X));
do_adc_nd(TMP2);
prefetch();
arr_nd_imm
@ -155,8 +155,8 @@ rra_nd_zpx
sbc_nd_aba
TMP = read_pc();
TMP = set_h(TMP, read_pc());
TMP = read(TMP);
do_sbc_nd(TMP);
TMP2 = read(TMP);
do_sbc_nd(TMP2);
prefetch();
sbc_nd_abx
@ -166,8 +166,8 @@ sbc_nd_abx
read(set_l(TMP, TMP+X));
}
TMP += X;
TMP = read(TMP);
do_sbc_nd(TMP);
TMP2 = read(TMP);
do_sbc_nd(TMP2);
prefetch();
sbc_nd_aby
@ -177,8 +177,8 @@ sbc_nd_aby
read(set_l(TMP, TMP+Y));
}
TMP += Y;
TMP = read(TMP);
do_sbc_nd(TMP);
TMP2 = read(TMP);
do_sbc_nd(TMP2);
prefetch();
sbc_nd_idx
@ -207,15 +207,15 @@ sbc_nd_imm
sbc_nd_zpg
TMP = read_pc();
TMP = read(TMP);
do_sbc_nd(TMP);
TMP2 = read(TMP);
do_sbc_nd(TMP2);
prefetch();
sbc_nd_zpx
TMP = read_pc();
read(TMP);
TMP = read(uint8_t(TMP+X));
do_sbc_nd(TMP);
TMP2 = read(uint8_t(TMP+X));
do_sbc_nd(TMP2);
prefetch();
isb_nd_aba

View File

@ -25,8 +25,8 @@ add_imm
add_zpg
TMP = read_pc();
TMP = read(TMP);
do_add(TMP);
TMP2 = read(TMP);
do_add(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -36,8 +36,8 @@ add_zpg
add_zpx
TMP = read_pc();
read(TMP);
TMP = read(uint8_t(TMP+X));
do_add(TMP);
TMP2 = read(uint8_t(TMP+X));
do_add(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);

View File

@ -9,8 +9,8 @@ adc_s_abx
read_pc_noinc();
}
TMP += X;
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -25,8 +25,8 @@ adc_s_aby
read_pc_noinc();
}
TMP += Y;
TMP = read(TMP);
do_adc(TMP);
TMP2 = read(TMP);
do_adc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -66,8 +66,8 @@ adc_s_idy
adc_s_zpx
TMP = read_pc_noinc();
read_pc_noinc();
TMP = read(uint8_t(TMP+X));
do_adc(TMP);
TMP2 = read(uint8_t(TMP+X));
do_adc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -174,8 +174,8 @@ bit_s_abx
bit_s_zpx
TMP = read_pc_noinc();
read_pc();
TMP = read(uint8_t(TMP+X));
do_bit(TMP);
TMP2 = read(uint8_t(TMP+X));
do_bit(TMP2);
prefetch();
brk_s_imp
@ -213,8 +213,8 @@ cmp_s_abx
read_pc_noinc();
}
TMP += X;
TMP = read(TMP);
do_cmp(A, TMP);
TMP2 = read(TMP);
do_cmp(A, TMP2);
PC++;
prefetch();
@ -225,8 +225,8 @@ cmp_s_aby
read_pc_noinc();
}
TMP += Y;
TMP = read(TMP);
do_cmp(A, TMP);
TMP2 = read(TMP);
do_cmp(A, TMP2);
PC++;
prefetch();
@ -709,8 +709,8 @@ sbc_s_abx
read_pc_noinc();
}
TMP += X;
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -725,8 +725,8 @@ sbc_s_aby
read_pc_noinc();
}
TMP += Y;
TMP = read(TMP);
do_sbc(TMP);
TMP2 = read(TMP);
do_sbc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);
@ -766,8 +766,8 @@ sbc_s_idy
sbc_s_zpx
TMP = read_pc_noinc();
read_pc_noinc();
TMP = read(uint8_t(TMP+X));
do_sbc(TMP);
TMP2 = read(uint8_t(TMP+X));
do_sbc(TMP2);
if(P & F_D) {
read_pc_noinc();
set_nz(A);

View File

@ -335,8 +335,8 @@ sta_xav_idx
adc_xav_zpg
TMP = read_pc();
TMP = read_zeropage(TMP);
do_adc(TMP);
TMP2 = read_zeropage(TMP);
do_adc(TMP2);
prefetch();
and_xav_zpg
@ -360,20 +360,20 @@ bit_xav_zpg
cmp_xav_zpg
TMP = read_pc();
TMP = read_zeropage(TMP);
do_cmp(A, TMP);
TMP2 = read_zeropage(TMP);
do_cmp(A, TMP2);
prefetch();
cpx_xav_zpg
TMP = read_pc();
TMP = read_zeropage(TMP);
do_cmp(X, TMP);
TMP2 = read_zeropage(TMP);
do_cmp(X, TMP2);
prefetch();
cpy_xav_zpg
TMP = read_pc();
TMP = read_zeropage(TMP);
do_cmp(Y, TMP);
TMP2 = read_zeropage(TMP);
do_cmp(Y, TMP2);
prefetch();
dec_xav_zpg
@ -450,8 +450,8 @@ ror_xav_zpg
sbc_xav_zpg
TMP = read_pc();
TMP = read_zeropage(TMP);
do_sbc(TMP);
TMP2 = read_zeropage(TMP);
do_sbc(TMP2);
prefetch();
sta_xav_zpg
@ -579,8 +579,8 @@ sax_xav_zpy
adc_xav_zpx
TMP = read_pc();
read_zeropage(TMP); // dummy read
TMP = read_zeropage(uint8_t(TMP+X));
do_adc(TMP);
TMP2 = read_zeropage(uint8_t(TMP+X));
do_adc(TMP2);
prefetch();
and_xav_zpx
@ -603,8 +603,8 @@ asl_xav_zpx
cmp_xav_zpx
TMP = read_pc();
read_zeropage(TMP); // dummy read
TMP = read_zeropage(uint8_t(TMP+X));
do_cmp(A, TMP);
TMP2 = read_zeropage(uint8_t(TMP+X));
do_cmp(A, TMP2);
prefetch();
dec_xav_zpx
@ -690,8 +690,8 @@ ror_xav_zpx
sbc_xav_zpx
TMP = read_pc();
read_zeropage(TMP); // dummy read
TMP = read_zeropage(uint8_t(TMP+X));
do_sbc(TMP);
TMP2 = read_zeropage(uint8_t(TMP+X));
do_sbc(TMP2);
prefetch();
sta_xav_zpx

View File

@ -443,8 +443,8 @@ bit_imm
asr_xav_zpg
TMP = read_pc(); // TODO: verify this, should it write back or set A?
TMP = read_zeropage(TMP);
do_asr(TMP);
TMP2 = read_zeropage(TMP);
do_asr(TMP2);
prefetch();
asr_aba