From 7b2aae2fd655b32c1500c375d4576b0980a7b916 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 6 Sep 2022 22:09:36 -0400 Subject: [PATCH] M740 fixes (mostly related to 6563dfe9cf93c4e39b3ea9caa73c050147644075) --- src/devices/cpu/m6502/m740.cpp | 32 ++++++++++++++++---------------- src/devices/cpu/m6502/om740.lst | 20 ++++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/devices/cpu/m6502/m740.cpp b/src/devices/cpu/m6502/m740.cpp index 1178fe62b09..d9feb8071d5 100644 --- a/src/devices/cpu/m6502/m740.cpp +++ b/src/devices/cpu/m6502/m740.cpp @@ -90,37 +90,37 @@ void m740_device::do_sbc_dt(uint8_t val) { uint8_t c = P & F_C ? 0 : 1; P &= ~(F_N|F_V|F_Z|F_C); - uint16_t diff = TMP2 - val - c; - uint8_t al = (TMP2 & 15) - (val & 15) - c; + uint16_t diff = TMP - val - c; + uint8_t al = (TMP & 15) - (val & 15) - c; if(int8_t(al) < 0) al -= 6; - uint8_t ah = (TMP2 >> 4) - (val >> 4) - (int8_t(al) < 0); + uint8_t ah = (TMP >> 4) - (val >> 4) - (int8_t(al) < 0); if(!uint8_t(diff)) P |= F_Z; else if(diff & 0x80) P |= F_N; - if((TMP2^val) & (TMP2^diff) & 0x80) + if((TMP^val) & (TMP^diff) & 0x80) P |= F_V; if(!(diff & 0xff00)) P |= F_C; if(int8_t(ah) < 0) ah -= 6; - TMP2 = (ah << 4) | (al & 15); + TMP = (ah << 4) | (al & 15); } void m740_device::do_sbc_ndt(uint8_t val) { - uint16_t diff = TMP2 - val - (P & F_C ? 0 : 1); + uint16_t diff = TMP - val - (P & F_C ? 0 : 1); P &= ~(F_N|F_V|F_Z|F_C); if(!uint8_t(diff)) P |= F_Z; else if(int8_t(diff) < 0) P |= F_N; - if((TMP2^val) & (TMP2^diff) & 0x80) + if((TMP^val) & (TMP^diff) & 0x80) P |= F_V; if(!(diff & 0xff00)) P |= F_C; - TMP2 = diff; + TMP = diff; } void m740_device::do_sbct(uint8_t val) @@ -135,37 +135,37 @@ void m740_device::do_adc_dt(uint8_t val) { uint8_t c = P & F_C ? 1 : 0; P &= ~(F_N|F_V|F_Z|F_C); - uint8_t al = (TMP2 & 15) + (val & 15) + c; + uint8_t al = (TMP & 15) + (val & 15) + c; if(al > 9) al += 6; - uint8_t ah = (TMP2 >> 4) + (val >> 4) + (al > 15); - if(!uint8_t(TMP2 + val + c)) + uint8_t ah = (TMP >> 4) + (val >> 4) + (al > 15); + if(!uint8_t(TMP + val + c)) P |= F_Z; else if(ah & 8) P |= F_N; - if(~(TMP2^val) & (TMP2^(ah << 4)) & 0x80) + if(~(TMP^val) & (TMP^(ah << 4)) & 0x80) P |= F_V; if(ah > 9) ah += 6; if(ah > 15) P |= F_C; - TMP2 = (ah << 4) | (al & 15); + TMP = (ah << 4) | (al & 15); } void m740_device::do_adc_ndt(uint8_t val) { uint16_t sum; - sum = TMP2 + val + (P & F_C ? 1 : 0); + sum = TMP + val + (P & F_C ? 1 : 0); P &= ~(F_N|F_V|F_Z|F_C); if(!uint8_t(sum)) P |= F_Z; else if(int8_t(sum) < 0) P |= F_N; - if(~(TMP2^val) & (TMP2^sum) & 0x80) + if(~(TMP^val) & (TMP^sum) & 0x80) P |= F_V; if(sum & 0xff00) P |= F_C; - TMP2 = sum; + TMP = sum; } void m740_device::do_adct(uint8_t val) diff --git a/src/devices/cpu/m6502/om740.lst b/src/devices/cpu/m6502/om740.lst index a27db0d834d..f62316f77b7 100644 --- a/src/devices/cpu/m6502/om740.lst +++ b/src/devices/cpu/m6502/om740.lst @@ -1164,7 +1164,7 @@ adct_aba TMP = set_h(TMP, read_pc()); TMP2 = read_data(TMP); TMP = read(X); - read_dummy(TMP); + read_dummy(X); do_adct(TMP2); write(X, TMP); prefetch(); @@ -1220,11 +1220,11 @@ adct_idy prefetch(); adct_imm - TMP = read_pc(); - TMP2 = read(X); + TMP2 = read_pc(); + TMP = read(X); read_dummy(X); - do_adct(TMP); - write(X, TMP2); + do_adct(TMP2); + write(X, TMP); prefetch(); adct_zpg @@ -1390,7 +1390,7 @@ cmpt_idy read_dummy(set_l(TMP, TMP+Y)); TMP2 = read_data(TMP+Y); TMP = read(X); - do_cmp(TMP, read(TMP2+Y)); + do_cmp(TMP, TMP2); prefetch(); cmpt_imm @@ -1748,11 +1748,11 @@ sbct_idy prefetch(); sbct_imm - TMP = read_pc(); - TMP2 = read(X); + TMP2 = read_pc(); + TMP = read(X); read_dummy(X); - do_sbct(TMP); - write(X, TMP2); + do_sbct(TMP2); + write(X, TMP); prefetch(); sbct_zpg