diff options
Diffstat (limited to 'src/devices/machine/ncr5380n.h')
-rw-r--r-- | src/devices/machine/ncr5380n.h | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/src/devices/machine/ncr5380n.h b/src/devices/machine/ncr5380n.h index 365df032419..973616c65a3 100644 --- a/src/devices/machine/ncr5380n.h +++ b/src/devices/machine/ncr5380n.h @@ -15,6 +15,11 @@ #include "machine/nscsi_bus.h" +#define MCFG_NCR5380N_IRQ_HANDLER(_devcb) \ + downcast<ncr5380n_device &>(*device).set_irq_handler(DEVCB_##_devcb); + +#define MCFG_NCR5380N_DRQ_HANDLER(_devcb) \ + downcast<ncr5380n_device &>(*device).set_drq_handler(DEVCB_##_devcb); class ncr5380n_device : public nscsi_device { @@ -22,11 +27,11 @@ public: ncr5380n_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration helpers - auto irq_handler() { return m_irq_handler.bind(); } - auto drq_handler() { return m_drq_handler.bind(); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq_handler(Object &&cb) { return m_drq_handler.set_callback(std::forward<Object>(cb)); } - uint8_t read(offs_t offset); - void write(offs_t offset, uint8_t data); + DECLARE_READ8_MEMBER(read); + DECLARE_WRITE8_MEMBER(write); uint8_t dma_r(); void dma_w(uint8_t val); @@ -198,22 +203,22 @@ private: void map(address_map &map); - uint8_t scsidata_r(); - void outdata_w(uint8_t data); - uint8_t icmd_r(); - void icmd_w(uint8_t data); - uint8_t mode_r(); - void mode_w(uint8_t data); - uint8_t command_r(); - void command_w(uint8_t data); - uint8_t status_r(); - void selenable_w(uint8_t data); - uint8_t busandstatus_r(); - void startdmasend_w(uint8_t data); - uint8_t indata_r(); - void startdmatargetrx_w(uint8_t data); - uint8_t resetparityirq_r(); - void startdmainitrx_w(uint8_t data); + DECLARE_READ8_MEMBER(scsidata_r); + DECLARE_WRITE8_MEMBER(outdata_w); + DECLARE_READ8_MEMBER(icmd_r); + DECLARE_WRITE8_MEMBER(icmd_w); + DECLARE_READ8_MEMBER(mode_r); + DECLARE_WRITE8_MEMBER(mode_w); + DECLARE_READ8_MEMBER(command_r); + DECLARE_WRITE8_MEMBER(command_w); + DECLARE_READ8_MEMBER(status_r); + DECLARE_WRITE8_MEMBER(selenable_w); + DECLARE_READ8_MEMBER(busandstatus_r); + DECLARE_WRITE8_MEMBER(startdmasend_w); + DECLARE_READ8_MEMBER(indata_r); + DECLARE_WRITE8_MEMBER(startdmatargetrx_w); + DECLARE_READ8_MEMBER(resetparityirq_r); + DECLARE_WRITE8_MEMBER(startdmainitrx_w); devcb_write_line m_irq_handler; devcb_write_line m_drq_handler; |