summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mcs40/mcs40.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/mcs40/mcs40.h')
-rw-r--r--src/devices/cpu/mcs40/mcs40.h27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/devices/cpu/mcs40/mcs40.h b/src/devices/cpu/mcs40/mcs40.h
index d8ca4059631..80f0d1e44d8 100644
--- a/src/devices/cpu/mcs40/mcs40.h
+++ b/src/devices/cpu/mcs40/mcs40.h
@@ -51,7 +51,7 @@ public:
template <typename... T> void set_ram_status_map(T &&... args) { set_addrmap(AS_RAM_STATUS, std::forward<T>(args)...); }
template <typename... T> void set_ram_ports_map(T &&... args) { set_addrmap(AS_RAM_PORTS, std::forward<T>(args)...); }
template <typename... T> void set_program_memory_map(T &&... args) { set_addrmap(AS_PROGRAM_MEMORY, std::forward<T>(args)...); }
- template <typename... T> void set_bus_cycle_cb(T &&... args) { m_bus_cycle_cb = bus_cycle_delegate(std::forward<T>(args)...); }
+ template <typename... T> void set_bus_cycle_cb(T &&... args) { m_bus_cycle_cb.set(std::forward<T>(args)...); }
auto i4289_pm_cb() { return m_4289_pm_cb.bind(); }
auto i4289_f_l_cb() { return m_4289_f_l_cb.bind(); }
@@ -62,8 +62,8 @@ public:
// 4008/4009 or 4289 outputs
u8 get_4289_a() const { return m_4289_a; } // 8-bit address
u8 get_4289_c() const { return m_4289_c; } // 4-bit chip select
- DECLARE_READ_LINE_MEMBER(get_4289_pm) const { return BIT(m_4289_pm, 0); } // 0 = active
- DECLARE_READ_LINE_MEMBER(get_4289_f_l) const { return BIT(m_4289_f_l, 0); } // 1 = odd, 0 = even
+ int get_4289_pm() const { return BIT(m_4289_pm, 0); } // 0 = active
+ int get_4289_f_l() const { return BIT(m_4289_f_l, 0); } // 1 = odd, 0 = even
protected:
enum class cycle : u8 { OP, IM, IN };
@@ -82,8 +82,8 @@ protected:
unsigned cr_mask);
// device_t implementation
- void device_start() override;
- void device_reset() override;
+ void device_start() override ATTR_COLD;
+ void device_reset() override ATTR_COLD;
// device_execute_interface implementation
virtual void execute_run() override;
@@ -182,18 +182,19 @@ private:
// address spaces
address_space_config const m_space_config[7];
address_space *m_spaces[7];
- memory_access_cache<0, 0, ENDIANNESS_LITTLE> *m_cache;
+ memory_access<12, 0, 0, ENDIANNESS_LITTLE>::cache m_cache;
// bus snooping callback
- bus_cycle_delegate m_bus_cycle_cb;
+ bus_cycle_delegate m_bus_cycle_cb;
// output callbacks
- devcb_write_line m_sync_cb;
- devcb_write_line m_cm_rom_cb[2], m_cm_ram_cb[4];
- devcb_write_line m_cy_cb, m_stp_ack_cb;
+ devcb_write_line m_sync_cb;
+ devcb_write_line::array<2> m_cm_rom_cb;
+ devcb_write_line::array<4> m_cm_ram_cb;
+ devcb_write_line m_cy_cb, m_stp_ack_cb;
// 4008/4009 or 4289 output callbacks
- devcb_write_line m_4289_pm_cb, m_4289_f_l_cb;
+ devcb_write_line m_4289_pm_cb, m_4289_f_l_cb;
// configuration
bool const m_extended_cm;
@@ -253,12 +254,12 @@ public:
template <unsigned N> auto cm_ram_cb() { return mcs40_cpu_device_base::cm_ram_cb<N>(); }
i4004_cpu_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
+ virtual ~i4004_cpu_device();
protected:
using mcs40_cpu_device_base::mcs40_cpu_device_base;
// device_execute_interface implementation
- virtual u32 execute_input_lines() const override;
virtual void execute_set_input(int inputnum, int state) override;
// device_disasm_interface implementation
@@ -282,13 +283,13 @@ public:
using mcs40_cpu_device_base::stp_ack_cb;
i4040_cpu_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
+ virtual ~i4040_cpu_device();
protected:
// device_disasm_interface implementation
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
// device_execute_interface implementation
- virtual u32 execute_input_lines() const override;
virtual void execute_set_input(int inputnum, int state) override;
// mcs40_cpu_device_base implementation