diff options
Diffstat (limited to 'src/devices/cpu/m6502/m3745x.h')
-rw-r--r-- | src/devices/cpu/m6502/m3745x.h | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/src/devices/cpu/m6502/m3745x.h b/src/devices/cpu/m6502/m3745x.h index b499019036b..9f7bc5acc93 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; @@ -44,16 +42,12 @@ public: template<std::size_t Bit> auto write_p() { return m_write_p[Bit-3].bind(); } template<std::size_t Bit> auto read_ad() { return m_read_ad[Bit].bind(); } - devcb_read8 m_read_p[4]; - devcb_write8 m_write_p[4]; - devcb_read8 m_read_ad[8]; - - DECLARE_READ8_MEMBER(ports_r); - DECLARE_WRITE8_MEMBER(ports_w); - DECLARE_READ8_MEMBER(adc_r); - DECLARE_WRITE8_MEMBER(adc_w); - DECLARE_READ8_MEMBER(intregs_r); - DECLARE_WRITE8_MEMBER(intregs_w); + uint8_t ports_r(offs_t offset); + void ports_w(offs_t offset, uint8_t data); + uint8_t adc_r(offs_t offset); + void adc_w(offs_t offset, uint8_t data); + uint8_t intregs_r(offs_t offset); + void intregs_w(offs_t offset, uint8_t data); bool are_port_bits_output(uint8_t port, uint8_t mask) { return ((m_ddrs[port] & mask) == mask) ? true : false; } @@ -62,17 +56,26 @@ protected: m3745x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map); // device-level overrides - 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 void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; 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; + + TIMER_CALLBACK_MEMBER(adc_complete); + void send_port(uint8_t offset, uint8_t data); uint8_t read_port(uint8_t offset); void recalc_irqs(); + devcb_read8::array<4> m_read_p; + devcb_write8::array<4> m_write_p; + devcb_read8::array<8> m_read_ad; + uint8_t m_ports[6], m_ddrs[6]; uint8_t m_intreq1, m_intreq2, m_intctrl1, m_intctrl2; uint8_t m_adctrl; @@ -87,7 +90,7 @@ class m37450_device : public m3745x_device public: m37450_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - void m37450_map(address_map &map); + void m37450_map(address_map &map) ATTR_COLD; protected: m37450_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); }; |