summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/mm74c922.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/mm74c922.h')
-rw-r--r--src/devices/machine/mm74c922.h44
1 files changed, 38 insertions, 6 deletions
diff --git a/src/devices/machine/mm74c922.h b/src/devices/machine/mm74c922.h
index dce81dd40dc..bd448c2eb22 100644
--- a/src/devices/machine/mm74c922.h
+++ b/src/devices/machine/mm74c922.h
@@ -36,6 +36,38 @@
#pragma once
+
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_MM74C922_OSC(_value) \
+ downcast<mm74c922_device &>(*device).set_cap_osc(_value);
+
+#define MCFG_MM74C922_DEBOUNCE(_value) \
+ downcast<mm74c922_device &>(*device).set_cap_debounce(_value);
+
+#define MCFG_MM74C922_DA_CALLBACK(_write) \
+ downcast<mm74c922_device &>(*device).set_da_wr_callback(DEVCB_##_write);
+
+#define MCFG_MM74C922_X1_CALLBACK(_read) \
+ downcast<mm74c922_device &>(*device).set_x1_rd_callback(DEVCB_##_read);
+
+#define MCFG_MM74C922_X2_CALLBACK(_read) \
+ downcast<mm74c922_device &>(*device).set_x2_rd_callback(DEVCB_##_read);
+
+#define MCFG_MM74C922_X3_CALLBACK(_read) \
+ downcast<mm74c922_device &>(*device).set_x3_rd_callback(DEVCB_##_read);
+
+#define MCFG_MM74C922_X4_CALLBACK(_read) \
+ downcast<mm74c922_device &>(*device).set_x4_rd_callback(DEVCB_##_read);
+
+#define MCFG_MM74C922_X5_CALLBACK(_read) \
+ downcast<mm74c922_device &>(*device).set_x5_rd_callback(DEVCB_##_read);
+
+
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -51,12 +83,12 @@ public:
void set_cap_osc(double value) { m_cap_osc = value; }
void set_cap_debounce(double value) { m_cap_debounce = value; }
- auto da_wr_callback() { return m_write_da.bind(); }
- auto x1_rd_callback() { return m_read_x1.bind(); }
- auto x2_rd_callback() { return m_read_x2.bind(); }
- auto x3_rd_callback() { return m_read_x3.bind(); }
- auto x4_rd_callback() { return m_read_x4.bind(); }
- auto x5_rd_callback() { return m_read_x5.bind(); }
+ template <class Object> devcb_base &set_da_wr_callback(Object &&cb) { return m_write_da.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_x1_rd_callback(Object &&cb) { return m_read_x1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_x2_rd_callback(Object &&cb) { return m_read_x2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_x3_rd_callback(Object &&cb) { return m_read_x3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_x4_rd_callback(Object &&cb) { return m_read_x4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_x5_rd_callback(Object &&cb) { return m_read_x5.set_callback(std::forward<Object>(cb)); }
uint8_t read();