summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6502/m6500_1.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6502/m6500_1.h')
-rw-r--r--src/devices/cpu/m6502/m6500_1.h59
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;