diff options
Diffstat (limited to 'src/devices/cpu/i8085/i8085.h')
-rw-r--r-- | src/devices/cpu/i8085/i8085.h | 47 |
1 files changed, 18 insertions, 29 deletions
diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h index 899dd0b85b8..fd8628961d7 100644 --- a/src/devices/cpu/i8085/i8085.h +++ b/src/devices/cpu/i8085/i8085.h @@ -16,29 +16,6 @@ #define I8085_TRAP_LINE INPUT_LINE_NMI -// STATUS changed callback -#define MCFG_I8085A_STATUS(_devcb) \ - downcast<i8085a_cpu_device &>(*device).set_out_status_func(DEVCB_##_devcb); - -// INTE changed callback -#define MCFG_I8085A_INTE(_devcb) \ - downcast<i8085a_cpu_device &>(*device).set_out_inte_func(DEVCB_##_devcb); - -// SID changed callback (8085A only) -#define MCFG_I8085A_SID(_devcb) \ - downcast<i8085a_cpu_device &>(*device).set_in_sid_func(DEVCB_##_devcb); - -// SOD changed callback (8085A only) -#define MCFG_I8085A_SOD(_devcb) \ - downcast<i8085a_cpu_device &>(*device).set_out_sod_func(DEVCB_##_devcb); - -// CLK rate callback (8085A only) -#define MCFG_I8085A_CLK_OUT_DEVICE(_tag) \ - downcast<i8085a_cpu_device &>(*device).set_clk_out(clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr)); -#define MCFG_I8085A_CLK_OUT_CUSTOM(_class, _func) \ - downcast<i8085a_cpu_device &>(*device).set_clk_out(clock_update_delegate(&_class::_func, #_class "::" _func, owner)); - - class i8085a_cpu_device : public cpu_device { public: @@ -65,15 +42,27 @@ public: // construction/destruction i8085a_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // configuration helpers - template <class Object> devcb_base &set_out_status_func(Object &&cb) { return m_out_status_func.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_inte_func(Object &&cb) { return m_out_inte_func.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_in_sid_func(Object &&cb) { return m_in_sid_func.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_sod_func(Object &&cb) { return m_out_sod_func.set_callback(std::forward<Object>(cb)); } - template <typename Object> void set_clk_out(Object &&cb) { m_clk_out_func = std::forward<Object>(cb); } + // CLK rate callback (8085A only) + void set_clk_out(clock_update_delegate callback) { m_clk_out_func = callback; } + template <class FunctionClass> void set_clk_out(const char *devname, void (FunctionClass::*callback)(uint32_t), const char *name) + { + set_clk_out(clock_update_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); + } + template <class FunctionClass> void set_clk_out(void (FunctionClass::*callback)(uint32_t), const char *name) + { + set_clk_out(clock_update_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); + } + + // STATUS changed callback auto out_status_func() { return m_out_status_func.bind(); } + + // INTE changed callback auto out_inte_func() { return m_out_inte_func.bind(); } + + // SID changed callback (8085A only) auto in_sid_func() { return m_in_sid_func.bind(); } + + // SOD changed callback (8085A only) auto out_sod_func() { return m_out_sod_func.bind(); } protected: |