diff --git a/src/emu/cpu/m6502/m740.c b/src/emu/cpu/m6502/m740.c index 4619dbc313d..bb12b29f84a 100644 --- a/src/emu/cpu/m6502/m740.c +++ b/src/emu/cpu/m6502/m740.c @@ -113,7 +113,6 @@ void m740_device::do_sbc_dt(UINT8 val) { UINT8 c = P & F_C ? 0 : 1; P &= ~(F_N|F_V|F_Z|F_C); - TMP2 = read(X); UINT16 diff = TMP2 - val - c; UINT8 al = (TMP2 & 15) - (val & 15) - c; if(INT8(al) < 0) @@ -130,15 +129,11 @@ void m740_device::do_sbc_dt(UINT8 val) if(INT8(ah) < 0) ah -= 6; TMP2 = (ah << 4) | (al & 15); - write(X, TMP2); } void m740_device::do_sbc_ndt(UINT8 val) { - UINT16 diff; - - TMP2 = read(X); - diff = TMP2 - val - (P & F_C ? 0 : 1); + UINT16 diff = TMP2 - val - (P & F_C ? 0 : 1); P &= ~(F_N|F_V|F_Z|F_C); if(!UINT8(diff)) P |= F_Z; @@ -149,7 +144,6 @@ void m740_device::do_sbc_ndt(UINT8 val) if(!(diff & 0xff00)) P |= F_C; TMP2 = diff; - write(X, TMP2); } void m740_device::do_sbct(UINT8 val) @@ -164,7 +158,6 @@ void m740_device::do_adc_dt(UINT8 val) { UINT8 c = P & F_C ? 1 : 0; P &= ~(F_N|F_V|F_Z|F_C); - TMP2 = read(X); UINT8 al = (TMP2 & 15) + (val & 15) + c; if(al > 9) al += 6; @@ -180,13 +173,11 @@ void m740_device::do_adc_dt(UINT8 val) if(ah > 15) P |= F_C; TMP2 = (ah << 4) | (al & 15); - write(X, TMP2); } void m740_device::do_adc_ndt(UINT8 val) { UINT16 sum; - TMP2 = read(X); sum = TMP2 + val + (P & F_C ? 1 : 0); P &= ~(F_N|F_V|F_Z|F_C); if(!UINT8(sum)) @@ -198,7 +189,6 @@ void m740_device::do_adc_ndt(UINT8 val) if(sum & 0xff00) P |= F_C; TMP2 = sum; - write(X, TMP2); } void m740_device::do_adct(UINT8 val) diff --git a/src/emu/cpu/m6502/om740.lst b/src/emu/cpu/m6502/om740.lst index 4c3821a25bf..70a2b52ddbe 100644 --- a/src/emu/cpu/m6502/om740.lst +++ b/src/emu/cpu/m6502/om740.lst @@ -152,7 +152,9 @@ adct_aba TMP = read_pc(); TMP = set_h(TMP, read_pc()); TMP = read(TMP); + TMP2 = read(X); do_adct(TMP); + write(X, TMP2); prefetch(); adct_abx @@ -163,7 +165,9 @@ adct_abx } TMP += X; TMP = read(TMP); + TMP2 = read(X); do_adct(TMP); + write(X, TMP2); prefetch(); adct_aby @@ -174,7 +178,9 @@ adct_aby } TMP += Y; TMP = read(TMP); + TMP2 = read(X); do_adct(TMP); + write(X, TMP2); prefetch(); adct_idx @@ -183,7 +189,9 @@ adct_idx TMP2 += X; TMP = read(TMP2 & 0xff); TMP = set_h(TMP, read((TMP2+1) & 0xff)); + TMP2 = read(X); do_adct(read(TMP)); + write(X, TMP2); prefetch(); adct_idy @@ -193,25 +201,33 @@ adct_idy if(page_changing(TMP, Y)) { read(set_l(TMP, TMP+Y)); } + TMP2 = read(X); do_adct(read(TMP+Y)); + write(X, TMP2); prefetch(); adct_imm TMP = read_pc(); + TMP2 = read(X); do_adct(TMP); + write(X, TMP2); prefetch(); adct_zpg TMP = read_pc(); TMP = read(TMP); + TMP2 = read(X); do_adct(TMP); + write(X, TMP2); prefetch(); adct_zpx TMP = read_pc(); read(TMP); TMP = read(UINT8(TMP+X)); + TMP2 = read(X); do_adct(TMP); + write(X, TMP2); prefetch(); andt_aba @@ -654,7 +670,9 @@ sbct_aba TMP = read_pc(); TMP = set_h(TMP, read_pc()); TMP = read(TMP); + TMP2 = read(X); do_sbct(TMP); + write(X, TMP2); prefetch(); sbct_abx @@ -665,7 +683,9 @@ sbct_abx } TMP += X; TMP = read(TMP); + TMP2 = read(X); do_sbct(TMP); + write(X, TMP2); prefetch(); sbct_aby @@ -676,7 +696,9 @@ sbct_aby } TMP += Y; TMP = read(TMP); + TMP2 = read(X); do_sbct(TMP); + write(X, TMP2); prefetch(); sbct_idx @@ -685,7 +707,9 @@ sbct_idx TMP2 += X; TMP = read(TMP2 & 0xff); TMP = set_h(TMP, read((TMP2+1) & 0xff)); + TMP2 = read(X); do_sbct(read(TMP)); + write(X, TMP2); prefetch(); sbct_idy @@ -695,24 +719,32 @@ sbct_idy if(page_changing(TMP, Y)) { read(set_l(TMP, TMP+Y)); } + TMP2 = read(X); do_sbct(read(TMP+Y)); + write(X, TMP2); prefetch(); sbct_imm TMP = read_pc(); + TMP2 = read(X); do_sbct(TMP); + write(X, TMP2); prefetch(); sbct_zpg TMP = read_pc(); TMP = read(TMP); + TMP2 = read(X); do_sbct(TMP); + write(X, TMP2); prefetch(); sbct_zpx TMP = read_pc(); read(TMP); TMP = read(UINT8(TMP+X)); + TMP2 = read(X); do_sbct(TMP); + write(X, TMP2); prefetch();