diff options
Diffstat (limited to 'src/devices/cpu/m6502/m5074x.h')
-rw-r--r-- | src/devices/cpu/m6502/m5074x.h | 44 |
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); |