summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6502/m5074x.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6502/m5074x.h')
-rw-r--r--src/devices/cpu/m6502/m5074x.h44
1 files changed, 5 insertions, 39 deletions
diff --git a/src/devices/cpu/m6502/m5074x.h b/src/devices/cpu/m6502/m5074x.h
index cb1b71a962c..1729ff39d25 100644
--- a/src/devices/cpu/m6502/m5074x.h
+++ b/src/devices/cpu/m6502/m5074x.h
@@ -16,34 +16,6 @@
#define M5074X_INTERNAL_ROM(_tag) (_tag ":" M5074X_INTERNAL_ROM_REGION)
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_M5074X_PORT0_READ_CALLBACK(_read) \
- downcast<m5074x_device &>(*device).set_p0_rd_callback(DEVCB_##_read);
-
-#define MCFG_M5074X_PORT1_READ_CALLBACK(_read) \
- downcast<m5074x_device &>(*device).set_p1_rd_callback(DEVCB_##_read);
-
-#define MCFG_M5074X_PORT2_READ_CALLBACK(_read) \
- downcast<m5074x_device &>(*device).set_p2_rd_callback(DEVCB_##_read);
-
-#define MCFG_M5074X_PORT3_READ_CALLBACK(_read) \
- downcast<m5074x_device &>(*device).set_p3_rd_callback(DEVCB_##_read);
-
-#define MCFG_M5074X_PORT0_WRITE_CALLBACK(_write) \
- downcast<m5074x_device &>(*device).set_p0_wr_callback(DEVCB_##_write);
-
-#define MCFG_M5074X_PORT1_WRITE_CALLBACK(_write) \
- downcast<m5074x_device &>(*device).set_p1_wr_callback(DEVCB_##_write);
-
-#define MCFG_M5074X_PORT2_WRITE_CALLBACK(_write) \
- downcast<m5074x_device &>(*device).set_p2_wr_callback(DEVCB_##_write);
-
-#define MCFG_M5074X_PORT3_WRITE_CALLBACK(_write) \
- downcast<m5074x_device &>(*device).set_p3_wr_callback(DEVCB_##_write);
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -73,17 +45,11 @@ class m5074x_device : public m740_device
public:
const address_space_config m_program_config;
- template<class Object> devcb_base &set_p0_rd_callback(Object &&cb) { return read_p0.set_callback(std::forward<Object>(cb)); }
- template<class Object> devcb_base &set_p1_rd_callback(Object &&cb) { return read_p1.set_callback(std::forward<Object>(cb)); }
- template<class Object> devcb_base &set_p2_rd_callback(Object &&cb) { return read_p2.set_callback(std::forward<Object>(cb)); }
- template<class Object> devcb_base &set_p3_rd_callback(Object &&cb) { return read_p3.set_callback(std::forward<Object>(cb)); }
- template<class Object> devcb_base &set_p0_wr_callback(Object &&cb) { return write_p0.set_callback(std::forward<Object>(cb)); }
- template<class Object> devcb_base &set_p1_wr_callback(Object &&cb) { return write_p1.set_callback(std::forward<Object>(cb)); }
- template<class Object> devcb_base &set_p2_wr_callback(Object &&cb) { return write_p2.set_callback(std::forward<Object>(cb)); }
- template<class Object> devcb_base &set_p3_wr_callback(Object &&cb) { return write_p3.set_callback(std::forward<Object>(cb)); }
-
- devcb_read8 read_p0, read_p1, read_p2, read_p3;
- devcb_write8 write_p0, write_p1, write_p2, write_p3;
+ template <std::size_t Bit> auto read_p() { return m_read_p[Bit].bind(); }
+ template <std::size_t Bit> auto write_p() { return m_write_p[Bit].bind(); }
+
+ devcb_read8 m_read_p[4];
+ devcb_write8 m_write_p[4];
DECLARE_READ8_MEMBER(ports_r);
DECLARE_WRITE8_MEMBER(ports_w);