diff options
Diffstat (limited to 'src/devices/bus/scsi/scsi.h')
-rw-r--r-- | src/devices/bus/scsi/scsi.h | 64 |
1 files changed, 47 insertions, 17 deletions
diff --git a/src/devices/bus/scsi/scsi.h b/src/devices/bus/scsi/scsi.h index d6c93129667..154b346d6a4 100644 --- a/src/devices/bus/scsi/scsi.h +++ b/src/devices/bus/scsi/scsi.h @@ -18,55 +18,55 @@ #define SCSI_PORT_DEVICE7 "7" #define MCFG_SCSI_BSY_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_bsy_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_bsy_handler(DEVCB_##_devcb); #define MCFG_SCSI_SEL_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_sel_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_sel_handler(DEVCB_##_devcb); #define MCFG_SCSI_CD_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_cd_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_cd_handler(DEVCB_##_devcb); #define MCFG_SCSI_IO_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_io_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_io_handler(DEVCB_##_devcb); #define MCFG_SCSI_MSG_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_msg_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_msg_handler(DEVCB_##_devcb); #define MCFG_SCSI_REQ_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_req_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_req_handler(DEVCB_##_devcb); #define MCFG_SCSI_ACK_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_ack_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_ack_handler(DEVCB_##_devcb); #define MCFG_SCSI_ATN_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_atn_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_atn_handler(DEVCB_##_devcb); #define MCFG_SCSI_RST_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_rst_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_rst_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA0_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_data0_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_data0_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA1_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_data1_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_data1_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA2_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_data2_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_data2_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA3_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_data3_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_data3_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA4_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_data4_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_data4_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA5_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_data5_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_data5_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA6_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_data6_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_data6_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA7_HANDLER(_devcb) \ - devcb = &downcast<scsi_port_device &>(*device).set_data7_handler(DEVCB_##_devcb); + downcast<scsi_port_device &>(*device).set_data7_handler(DEVCB_##_devcb); #define MCFG_SCSI_OUTPUT_LATCH_ADD(_tag, scsi_port_tag) \ MCFG_DEVICE_ADD(_tag, OUTPUT_LATCH, 0) \ @@ -117,6 +117,36 @@ public: template <class Object> devcb_base &set_data5_handler(Object &&cb) { return m_data5_handler.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_data6_handler(Object &&cb) { return m_data6_handler.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_data7_handler(Object &&cb) { return m_data7_handler.set_callback(std::forward<Object>(cb)); } + auto bsy_handler() { return m_bsy_handler.bind(); } + auto sel_handler() { return m_sel_handler.bind(); } + auto cd_handler() { return m_cd_handler.bind(); } + auto io_handler() { return m_io_handler.bind(); } + auto msg_handler() { return m_msg_handler.bind(); } + auto req_handler() { return m_req_handler.bind(); } + auto ack_handler() { return m_ack_handler.bind(); } + auto atn_handler() { return m_atn_handler.bind(); } + auto rst_handler() { return m_rst_handler.bind(); } + auto data0_handler() { return m_data0_handler.bind(); } + auto data1_handler() { return m_data1_handler.bind(); } + auto data2_handler() { return m_data2_handler.bind(); } + auto data3_handler() { return m_data3_handler.bind(); } + auto data4_handler() { return m_data4_handler.bind(); } + auto data5_handler() { return m_data5_handler.bind(); } + auto data6_handler() { return m_data6_handler.bind(); } + auto data7_handler() { return m_data7_handler.bind(); } + + template <typename T> + void set_data_input_buffer(T &&tag) + { + data0_handler().set(tag, FUNC(input_buffer_device::write_bit0)); + data1_handler().set(tag, FUNC(input_buffer_device::write_bit1)); + data2_handler().set(tag, FUNC(input_buffer_device::write_bit2)); + data3_handler().set(tag, FUNC(input_buffer_device::write_bit3)); + data4_handler().set(tag, FUNC(input_buffer_device::write_bit4)); + data5_handler().set(tag, FUNC(input_buffer_device::write_bit5)); + data6_handler().set(tag, FUNC(input_buffer_device::write_bit6)); + data7_handler().set(tag, FUNC(input_buffer_device::write_bit7)); + } DECLARE_WRITE_LINE_MEMBER( write_bsy ); DECLARE_WRITE_LINE_MEMBER( write_sel ); |