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