diff options
Diffstat (limited to 'src/devices/cpu/m6502/m740.cpp')
-rw-r--r-- | src/devices/cpu/m6502/m740.cpp | 52 |
1 files changed, 19 insertions, 33 deletions
diff --git a/src/devices/cpu/m6502/m740.cpp b/src/devices/cpu/m6502/m740.cpp index 684bff6773b..4e42db0cb67 100644 --- a/src/devices/cpu/m6502/m740.cpp +++ b/src/devices/cpu/m6502/m740.cpp @@ -2,7 +2,7 @@ // copyright-holders:Olivier Galibert /*************************************************************************** - m740.c + m740.cpp Mitsubishi M740 series (M507xx/M509xx) @@ -11,13 +11,6 @@ #include "emu.h" #include "m740.h" -DEFINE_DEVICE_TYPE(M740, m740_device, "m740", "Mitsubishi M740") - -m740_device::m740_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - m740_device(mconfig, M740, tag, owner, clock) -{ -} - m740_device::m740_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : m6502_device(mconfig, type, tag, owner, clock), m_irq_multiplex(0), m_irq_vector(0) { @@ -43,18 +36,11 @@ void m740_device::device_start() void m740_device::device_reset() { - inst_state_base = 0; - inst_state = STATE_RESET; - inst_substate = 0; - nmi_state = false; + m6502_device::device_reset(); + irq_state = false; m_irq_multiplex = 0; m_irq_vector = 0xfffc; - apu_irq_state = false; - irq_taken = false; - v_state = false; - sync = false; - inhibit_interrupts = false; SP = 0x00ff; } @@ -96,37 +82,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) @@ -141,37 +127,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) |