summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/tms7000/tms7000.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/tms7000/tms7000.h')
-rw-r--r--src/devices/cpu/tms7000/tms7000.h46
1 files changed, 15 insertions, 31 deletions
diff --git a/src/devices/cpu/tms7000/tms7000.h b/src/devices/cpu/tms7000/tms7000.h
index a1a50084b18..0d1d3b82490 100644
--- a/src/devices/cpu/tms7000/tms7000.h
+++ b/src/devices/cpu/tms7000/tms7000.h
@@ -13,34 +13,6 @@
#include "debugger.h"
-
-// read-only on 70x0
-#define MCFG_TMS7000_IN_PORTA_CB(_devcb) \
- downcast<tms7000_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb);
-#define MCFG_TMS7000_OUT_PORTA_CB(_devcb) \
- downcast<tms7000_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb);
-
-// write-only
-#define MCFG_TMS7000_OUT_PORTB_CB(_devcb) \
- downcast<tms7000_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb);
-
-#define MCFG_TMS7000_IN_PORTC_CB(_devcb) \
- downcast<tms7000_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb);
-#define MCFG_TMS7000_OUT_PORTC_CB(_devcb) \
- downcast<tms7000_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb);
-
-#define MCFG_TMS7000_IN_PORTD_CB(_devcb) \
- downcast<tms7000_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb);
-#define MCFG_TMS7000_OUT_PORTD_CB(_devcb) \
- downcast<tms7000_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb);
-
-// TMS70C46 only
-#define MCFG_TMS7000_IN_PORTE_CB(_devcb) \
- downcast<tms7000_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb);
-#define MCFG_TMS7000_OUT_PORTE_CB(_devcb) \
- downcast<tms7000_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb);
-
-
enum { TMS7000_PC=1, TMS7000_SP, TMS7000_ST };
enum
@@ -57,9 +29,21 @@ public:
// construction/destruction
tms7000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // configuration
- template<class Object> devcb_base &set_port_read_cb(int p, Object &&cb) { return m_port_in_cb[p].set_callback(std::forward<Object>(cb)); }
- template<class Object> devcb_base &set_port_write_cb(int p, Object &&cb) { return m_port_out_cb[p].set_callback(std::forward<Object>(cb)); }
+ // read-only on 70x0
+ auto in_porta() { return m_port_in_cb[0].bind(); }
+ auto out_porta() { return m_port_out_cb[0].bind(); }
+
+ // write-only
+ auto out_portb() { return m_port_out_cb[1].bind(); }
+
+ auto in_portc() { return m_port_in_cb[2].bind(); }
+ auto out_portc() { return m_port_out_cb[2].bind(); }
+ auto in_portd() { return m_port_in_cb[3].bind(); }
+ auto out_portd() { return m_port_out_cb[3].bind(); }
+
+ // TMS70C46 only
+ auto in_porte() { return m_port_in_cb[4].bind(); }
+ auto out_porte() { return m_port_out_cb[4].bind(); }
DECLARE_READ8_MEMBER(tms7000_unmapped_rf_r) { if (!machine().side_effects_disabled()) logerror("'%s' (%04X): unmapped_rf_r @ $%04x\n", tag(), m_pc, offset + 0x80); return 0; };
DECLARE_WRITE8_MEMBER(tms7000_unmapped_rf_w) { logerror("'%s' (%04X): unmapped_rf_w @ $%04x = $%02x\n", tag(), m_pc, offset + 0x80, data); };