summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/ncr5380n.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/ncr5380n.h')
-rw-r--r--src/devices/machine/ncr5380n.h45
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;