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