diff options
Diffstat (limited to 'src/devices/cpu/m6502/m6500_1.h')
-rw-r--r-- | src/devices/cpu/m6502/m6500_1.h | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/src/devices/cpu/m6502/m6500_1.h b/src/devices/cpu/m6502/m6500_1.h index 5b48d358b77..0736e927ae5 100644 --- a/src/devices/cpu/m6502/m6500_1.h +++ b/src/devices/cpu/m6502/m6500_1.h @@ -39,9 +39,9 @@ #pragma once -#include "m6502.h" +#include "m6502mcu.h" -class m6500_1_device : public m6502_mcu_device +class m6500_1_device : public m6502_mcu_device_base<m6502_device> { public: m6500_1_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); @@ -56,16 +56,16 @@ public: auto pd_out_cb() { return m_port_out_cb[3].bind(); } auto cntr_out_cb() { return m_cntr_out_cb.bind(); } - DECLARE_READ8_MEMBER(pa_r) { return m_port_buf[0]; } - DECLARE_READ8_MEMBER(pb_r) { return m_port_buf[1]; } - DECLARE_READ8_MEMBER(pc_r) { return m_port_buf[2]; } - DECLARE_READ8_MEMBER(pd_r) { return m_port_buf[3]; } - DECLARE_WRITE8_MEMBER(pa_w); - DECLARE_WRITE8_MEMBER(pb_w); - DECLARE_WRITE8_MEMBER(pc_w); - DECLARE_WRITE8_MEMBER(pd_w); + u8 pa_r() { return m_port_buf[0]; } + u8 pb_r() { return m_port_buf[1]; } + u8 pc_r() { return m_port_buf[2]; } + u8 pd_r() { return m_port_buf[3]; } + void pa_w(u8 data); + void pb_w(u8 data); + void pc_w(u8 data); + void pd_w(u8 data); - DECLARE_WRITE_LINE_MEMBER(cntr_w); + void cntr_w(int state); protected: enum @@ -77,32 +77,31 @@ protected: M6500_1_LC }; - virtual void device_resolve_objects() override; - virtual void device_start() override; - virtual void device_reset() override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; - virtual u64 execute_clocks_to_cycles(u64 clocks) const override; - virtual u64 execute_cycles_to_clocks(u64 cycles) const override; + virtual u64 execute_clocks_to_cycles(u64 clocks) const noexcept override; + virtual u64 execute_cycles_to_clocks(u64 cycles) const noexcept override; virtual void state_import(device_state_entry const &entry) override; virtual void state_export(device_state_entry const &entry) override; virtual void internal_update(u64 current_time) override; - using m6502_mcu_device::internal_update; + using m6502_mcu_device_base<m6502_device>::internal_update; - DECLARE_READ8_MEMBER(read_control_register); - DECLARE_WRITE8_MEMBER(write_control_register); + u8 read_control_register(); + void write_control_register(u8 data); void update_irq(); - DECLARE_READ8_MEMBER(read_port); - DECLARE_WRITE8_MEMBER(write_port); - DECLARE_WRITE8_MEMBER(clear_edge); + u8 read_port(offs_t offset); + void write_port(offs_t offset, u8 data); + void clear_edge(offs_t offset, u8 data); template <unsigned Port> TIMER_CALLBACK_MEMBER(set_port_in); - DECLARE_READ8_MEMBER(read_upper_count); - DECLARE_READ8_MEMBER(read_lower_count); - template <bool Transfer> DECLARE_WRITE8_MEMBER(write_upper_latch); - DECLARE_WRITE8_MEMBER(write_lower_latch); + u8 read_upper_count(); + u8 read_lower_count(); + template <bool Transfer> void write_upper_latch(u8 data); + void write_lower_latch(u8 data); u64 update_counter(u64 current_time); bool should_count() const; bool pulse_generator_mode() const; @@ -110,12 +109,12 @@ protected: TIMER_CALLBACK_MEMBER(set_cntr_in); void toggle_cntr(); - void memory_map(address_map &map); + void memory_map(address_map &map) ATTR_COLD; private: - devcb_read8 m_port_in_cb[4]; - devcb_write8 m_port_out_cb[4]; - devcb_write_line m_cntr_out_cb; + devcb_read8::array<4> m_port_in_cb; + devcb_write8::array<4> m_port_out_cb; + devcb_write_line m_cntr_out_cb; u8 m_cr; |