diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2020-10-25 10:19:13 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2020-10-25 10:19:13 -0400 |
commit | 57baad2dab651c428063bd14cb5adfd3b321ace0 (patch) | |
tree | 1e8c3007090d74f756ed641ec02a629108449dce /src/devices/cpu/m6502 | |
parent | 16a0a0a21c1b39d25cc6945228979794e13443de (diff) |
M740 family updates
- Add cycle clock dividers
- Remove SO input line (not apparently supported on any Mitsubishi model)
Diffstat (limited to 'src/devices/cpu/m6502')
-rw-r--r-- | src/devices/cpu/m6502/m3745x.cpp | 7 | ||||
-rw-r--r-- | src/devices/cpu/m6502/m3745x.h | 10 | ||||
-rw-r--r-- | src/devices/cpu/m6502/m5074x.cpp | 8 | ||||
-rw-r--r-- | src/devices/cpu/m6502/m5074x.h | 14 | ||||
-rw-r--r-- | src/devices/cpu/m6502/m740.h | 3 |
5 files changed, 15 insertions, 27 deletions
diff --git a/src/devices/cpu/m6502/m3745x.cpp b/src/devices/cpu/m6502/m3745x.cpp index 218e16853ec..2532e25d8ab 100644 --- a/src/devices/cpu/m6502/m3745x.cpp +++ b/src/devices/cpu/m6502/m3745x.cpp @@ -170,10 +170,6 @@ void m3745x_device::execute_set_input(int inputnum, int state) m_intreq1 &= ~IRQ1_INT3; } break; - - case M3745X_SET_OVERFLOW: // the base 740 class can handle this - m740_device::execute_set_input(M740_SET_OVERFLOW, state); - break; } recalc_irqs(); @@ -389,8 +385,7 @@ void m3745x_device::adc_w(offs_t offset, uint8_t data) // starting a conversion? this takes 50 cycles. if (!(m_adctrl & ADCTRL_COMPLETE)) { - double hz = (double)clock() / 50.0; - m_timers[TIMER_ADC]->adjust(attotime::from_hz(hz)); + m_timers[TIMER_ADC]->adjust(cycles_to_attotime(50)); } break; } diff --git a/src/devices/cpu/m6502/m3745x.h b/src/devices/cpu/m6502/m3745x.h index 92d31030236..73e16cb0117 100644 --- a/src/devices/cpu/m6502/m3745x.h +++ b/src/devices/cpu/m6502/m3745x.h @@ -33,9 +33,7 @@ public: { M3745X_INT1_LINE = INPUT_LINE_IRQ0, M3745X_INT2_LINE, - M3745X_INT3_LINE, - - M3745X_SET_OVERFLOW = M740_SET_OVERFLOW + M3745X_INT3_LINE }; const address_space_config m_program_config; @@ -61,9 +59,13 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual void execute_set_input(int inputnum, int state) override; virtual space_config_vector memory_space_config() const override; + // device_execute_interface overrides + virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 4 - 1) / 4; } + virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 4); } + virtual void execute_set_input(int inputnum, int state) override; + void send_port(uint8_t offset, uint8_t data); uint8_t read_port(uint8_t offset); diff --git a/src/devices/cpu/m6502/m5074x.cpp b/src/devices/cpu/m6502/m5074x.cpp index 5d7690b60a3..8fa3ea306bc 100644 --- a/src/devices/cpu/m6502/m5074x.cpp +++ b/src/devices/cpu/m6502/m5074x.cpp @@ -174,10 +174,6 @@ void m5074x_device::execute_set_input(int inputnum, int state) m_intctrl &= ~IRQ_INTREQ; } break; - - case M5074X_SET_OVERFLOW: // the base 740 class can handle this - m740_device::execute_set_input(M740_SET_OVERFLOW, state); - break; } recalc_irqs(); @@ -606,10 +602,6 @@ void m50753_device::execute_set_input(int inputnum, int state) m_intctrl &= ~IRQ_50753_INT2REQ; } break; - - case M5074X_SET_OVERFLOW: // the base 740 class can handle this - m740_device::execute_set_input(M740_SET_OVERFLOW, state); - break; } recalc_irqs(); diff --git a/src/devices/cpu/m6502/m5074x.h b/src/devices/cpu/m6502/m5074x.h index ffb57873b15..605a4f6c651 100644 --- a/src/devices/cpu/m6502/m5074x.h +++ b/src/devices/cpu/m6502/m5074x.h @@ -21,9 +21,7 @@ class m5074x_device : public m740_device enum { - M5074X_INT1_LINE = INPUT_LINE_IRQ0, - - M5074X_SET_OVERFLOW = M740_SET_OVERFLOW + M5074X_INT1_LINE = INPUT_LINE_IRQ0 }; enum @@ -56,9 +54,13 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual void execute_set_input(int inputnum, int state) override; virtual space_config_vector memory_space_config() const override; + // device_execute_interface overrides (TODO: /8 in M50740A/41/52/57/58 SLW mode) + virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 4 - 1) / 4; } + virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 4); } + virtual void execute_set_input(int inputnum, int state) override; + void send_port(uint8_t offset, uint8_t data); uint8_t read_port(uint8_t offset); @@ -110,9 +112,7 @@ public: enum { M50753_INT1_LINE = INPUT_LINE_IRQ0, - M50753_INT2_LINE = INPUT_LINE_IRQ1, - - M5074X_SET_OVERFLOW = M740_SET_OVERFLOW + M50753_INT2_LINE = INPUT_LINE_IRQ1 }; template <std::size_t Bit> auto ad_in() { return m_ad_in[Bit].bind(); } diff --git a/src/devices/cpu/m6502/m740.h b/src/devices/cpu/m6502/m740.h index fc5371ebb4c..fd263442a22 100644 --- a/src/devices/cpu/m6502/m740.h +++ b/src/devices/cpu/m6502/m740.h @@ -33,8 +33,7 @@ public: M740_INT12_LINE, // (ffe4) M740_INT13_LINE, // (ffe2) M740_INT14_LINE, // (ffe0) - M740_MAX_INT_LINE = M740_INT14_LINE, - M740_SET_OVERFLOW = m6502_device::V_LINE + M740_MAX_INT_LINE = M740_INT14_LINE }; m740_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); |