diff options
Diffstat (limited to 'src/devices/cpu/ccpu/ccpu.h')
-rw-r--r-- | src/devices/cpu/ccpu/ccpu.h | 71 |
1 files changed, 30 insertions, 41 deletions
diff --git a/src/devices/cpu/ccpu/ccpu.h b/src/devices/cpu/ccpu/ccpu.h index c42687aaa0c..d5ee13d85ae 100644 --- a/src/devices/cpu/ccpu/ccpu.h +++ b/src/devices/cpu/ccpu/ccpu.h @@ -27,7 +27,7 @@ public: // public because the cinemat driver accesses A/P/X/Y through state interace - should there be a proper public interface to read registers? enum { - CCPU_PC=1, + CCPU_PC = 1, CCPU_FLAGS, CCPU_A, CCPU_B, @@ -47,30 +47,19 @@ public: // configuration helpers auto external_func() { return m_external_input.bind(); } - template <typename Object> void set_vector_func(Object &&cb) { m_vector_callback = std::forward<Object>(cb); } - void set_vector_func(vector_delegate callback) { m_vector_callback = callback; } - template <class FunctionClass> void set_vector_func(const char *devname, - void (FunctionClass::*callback)(int16_t, int16_t, int16_t, int16_t, uint8_t), const char *name) - { - set_vector_func(vector_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_vector_func(void (FunctionClass::*callback)(int16_t, int16_t, int16_t, int16_t, uint8_t), const char *name) - { - set_vector_func(vector_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_vector_func(T &&... args) { m_vector_callback.set(std::forward<T>(args)...); } - DECLARE_READ8_MEMBER( read_jmi ); - void wdt_timer_trigger(); + uint8_t read_jmi(); + void wdt_trigger(int state); protected: // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; // device_execute_interface overrides - virtual uint32_t execute_min_cycles() const override { return 1; } - virtual uint32_t execute_max_cycles() const override { return 1; } - virtual uint32_t execute_input_lines() const override { return 0; } + virtual uint32_t execute_min_cycles() const noexcept override { return 1; } + virtual uint32_t execute_max_cycles() const noexcept override { return 1; } virtual void execute_run() override; // device_memory_interface overrides @@ -86,34 +75,34 @@ protected: address_space_config m_data_config; address_space_config m_io_config; - uint16_t m_PC; - uint16_t m_A; - uint16_t m_B; - uint8_t m_I; - uint16_t m_J; - uint8_t m_P; - uint16_t m_X; - uint16_t m_Y; - uint16_t m_T; - uint16_t * m_acc; + uint16_t m_PC; + uint16_t m_A; + uint16_t m_B; + uint8_t m_I; + uint16_t m_J; + uint8_t m_P; + uint16_t m_X; + uint16_t m_Y; + uint16_t m_T; + uint16_t * m_acc; - uint16_t m_a0flag, m_ncflag, m_cmpacc, m_cmpval; - uint16_t m_miflag, m_nextmiflag, m_nextnextmiflag; - uint16_t m_drflag; + uint16_t m_a0flag, m_ncflag, m_cmpacc, m_cmpval; + uint16_t m_miflag, m_nextmiflag, m_nextnextmiflag; + uint16_t m_drflag; - devcb_read8 m_external_input; - vector_delegate m_vector_callback; + devcb_read8 m_external_input; + vector_delegate m_vector_callback; - uint8_t m_waiting; - uint8_t m_watchdog; - uint8_t m_extinput; + uint8_t m_waiting; + uint8_t m_watchdog; + uint8_t m_extinput; int m_icount; - address_space *m_program; - memory_access_cache<0, 0, ENDIANNESS_BIG> *m_cache; - address_space *m_data; - address_space *m_io; + memory_access<15, 0, 0, ENDIANNESS_BIG>::cache m_cache; + memory_access<15, 0, 0, ENDIANNESS_BIG>::specific m_program; + memory_access<32, 1, -1, ENDIANNESS_BIG>::specific m_data; + memory_access< 5, 0, 0, ENDIANNESS_BIG>::specific m_io; uint16_t m_flags; }; |