summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine
diff options
context:
space:
mode:
author Ryan Holtz <ryan.holtz@arrowheadgs.com>2018-08-16 09:41:23 +0200
committer Ryan Holtz <ryan.holtz@arrowheadgs.com>2018-08-16 09:41:30 +0200
commit5ba993152ac02c303444c47fbeb0668b5940be8d (patch)
treee3815337368eadab75f92b9df4b8d0d1065831d7 /src/devices/machine
parenta72be15a3039d6c0499812322ea9c75a715c65e1 (diff)
-bcreader, busmouse, cdp1852, cdp1871, cdp1879, cr511b, cs4031, cs8221, cxd1095: Removed MCFG, nw
Diffstat (limited to 'src/devices/machine')
-rw-r--r--src/devices/machine/bcreader.h10
-rw-r--r--src/devices/machine/busmouse.h20
-rw-r--r--src/devices/machine/cdp1852.h11
-rw-r--r--src/devices/machine/cdp1871.h82
-rw-r--r--src/devices/machine/cdp1879.h21
-rw-r--r--src/devices/machine/cr511b.h33
-rw-r--r--src/devices/machine/cs4031.cpp14
-rw-r--r--src/devices/machine/cs4031.h70
-rw-r--r--src/devices/machine/cs8221.h29
-rw-r--r--src/devices/machine/cxd1095.h47
10 files changed, 65 insertions, 272 deletions
diff --git a/src/devices/machine/bcreader.h b/src/devices/machine/bcreader.h
index b687c19363b..48253de4380 100644
--- a/src/devices/machine/bcreader.h
+++ b/src/devices/machine/bcreader.h
@@ -11,14 +11,7 @@
#ifndef MAME_DEVICES_MACHINE_BCREADER_H
#define MAME_DEVICES_MACHINE_BCREADER_H
-#define MCFG_BARCODE_READER_ADD( _tag ) \
- MCFG_DEVICE_ADD( _tag, BARCODE_READER, 0 )
-
-#define MCFG_BARCODE_READER_REMOVE( _tag ) \
- MCFG_DEVICE_REMOVE( _tag )
-
-
-// ======================> barcode_reader_device
+#pragma once
class barcode_reader_device : public device_t
{
@@ -56,5 +49,4 @@ DECLARE_DEVICE_TYPE(BARCODE_READER, barcode_reader_device)
// device type iterator
typedef device_type_iterator<barcode_reader_device> barcode_reader_device_iterator;
-
#endif // MAME_DEVICES_MACHINE_BCREADER_H
diff --git a/src/devices/machine/busmouse.h b/src/devices/machine/busmouse.h
index b0e4a23370c..256f8891808 100644
--- a/src/devices/machine/busmouse.h
+++ b/src/devices/machine/busmouse.h
@@ -11,28 +11,13 @@
#pragma once
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_BUS_MOUSE_EXTINT_CALLBACK(_write) \
- bus_mouse_device::set_extint_wr_callback(*device, DEVCB_##_write);
-
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-// ======================> bus_mouse_device
-
class bus_mouse_device : public device_t
{
public:
// construction/destruction
bus_mouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_extint_wr_callback(device_t &device, Object &&cb) { return downcast<bus_mouse_device &>(device).m_write_extint.set_callback(std::forward<Object>(cb)); }
+ auto extint_callback() { return m_write_extint.bind(); }
DECLARE_INPUT_CHANGED_MEMBER(mouse_x_changed);
DECLARE_INPUT_CHANGED_MEMBER(mouse_y_changed);
@@ -66,9 +51,6 @@ private:
int8_t m_x, m_y;
};
-
-// device type definition
DECLARE_DEVICE_TYPE(BUS_MOUSE, bus_mouse_device)
-
#endif // MAME_MACHINE_BUSMOUSE_H
diff --git a/src/devices/machine/cdp1852.h b/src/devices/machine/cdp1852.h
index 2ca29541934..fa07d196af2 100644
--- a/src/devices/machine/cdp1852.h
+++ b/src/devices/machine/cdp1852.h
@@ -26,15 +26,6 @@
#pragma once
-
-
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-// ======================> cdp1852_device
-
class cdp1852_device : public device_t
{
public:
@@ -81,8 +72,6 @@ private:
emu_timer *m_update_sr_timer;
};
-
-// device type definition
DECLARE_DEVICE_TYPE(CDP1852, cdp1852_device)
#endif // MAME_MACHINE_CDP1852_H
diff --git a/src/devices/machine/cdp1871.h b/src/devices/machine/cdp1871.h
index 31215164a6f..eb2eb94fbd9 100644
--- a/src/devices/machine/cdp1871.h
+++ b/src/devices/machine/cdp1871.h
@@ -34,79 +34,25 @@
#pragma once
-
-
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_CDP1871_D1_CALLBACK(_read) \
- downcast<cdp1871_device &>(*device).set_d1_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1871_D2_CALLBACK(_read) \
- downcast<cdp1871_device &>(*device).set_d2_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1871_D3_CALLBACK(_read) \
- downcast<cdp1871_device &>(*device).set_d3_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1871_D4_CALLBACK(_read) \
- downcast<cdp1871_device &>(*device).set_d4_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1871_D5_CALLBACK(_read) \
- downcast<cdp1871_device &>(*device).set_d5_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1871_D6_CALLBACK(_read) \
- downcast<cdp1871_device &>(*device).set_d6_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1871_D7_CALLBACK(_read) \
- downcast<cdp1871_device &>(*device).set_d7_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1871_D8_CALLBACK(_read) \
- downcast<cdp1871_device &>(*device).set_d8_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1871_D9_CALLBACK(_read) \
- downcast<cdp1871_device &>(*device).set_d9_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1871_D10_CALLBACK(_read) \
- downcast<cdp1871_device &>(*device).set_d10_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1871_D11_CALLBACK(_read) \
- downcast<cdp1871_device &>(*device).set_d11_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1871_DA_CALLBACK(_write) \
- downcast<cdp1871_device &>(*device).set_da_wr_callback(DEVCB_##_write);
-
-#define MCFG_CDP1871_RPT_CALLBACK(_write) \
- downcast<cdp1871_device &>(*device).set_rpt_wr_callback(DEVCB_##_write);
-
-
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-// ======================> cdp1871_device
-
class cdp1871_device : public device_t
{
public:
// construction/destruction
cdp1871_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_d1_rd_callback(Object &&cb) { return m_read_d1.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_d2_rd_callback(Object &&cb) { return m_read_d2.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_d3_rd_callback(Object &&cb) { return m_read_d3.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_d4_rd_callback(Object &&cb) { return m_read_d4.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_d5_rd_callback(Object &&cb) { return m_read_d5.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_d6_rd_callback(Object &&cb) { return m_read_d6.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_d7_rd_callback(Object &&cb) { return m_read_d7.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_d8_rd_callback(Object &&cb) { return m_read_d8.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_d9_rd_callback(Object &&cb) { return m_read_d9.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_d10_rd_callback(Object &&cb) { return m_read_d10.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_d11_rd_callback(Object &&cb) { return m_read_d11.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_da_wr_callback(Object &&cb) { return m_write_da.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_rpt_wr_callback(Object &&cb) { return m_write_rpt.set_callback(std::forward<Object>(cb)); }
+ auto d1_callback() { return m_read_d1.bind(); }
+ auto d2_callback() { return m_read_d2.bind(); }
+ auto d3_callback() { return m_read_d3.bind(); }
+ auto d4_callback() { return m_read_d4.bind(); }
+ auto d5_callback() { return m_read_d5.bind(); }
+ auto d6_callback() { return m_read_d6.bind(); }
+ auto d7_callback() { return m_read_d7.bind(); }
+ auto d8_callback() { return m_read_d8.bind(); }
+ auto d9_callback() { return m_read_d9.bind(); }
+ auto d10_callback() { return m_read_d10.bind(); }
+ auto d11_callback() { return m_read_d11.bind(); }
+ auto da_callback() { return m_write_da.bind(); }
+ auto rpt_callback() { return m_write_rpt.bind(); }
DECLARE_READ8_MEMBER( read );
@@ -162,8 +108,6 @@ private:
static const uint8_t key_codes[4][11][8];
};
-
-// device type definition
DECLARE_DEVICE_TYPE(CDP1871, cdp1871_device)
#endif // MAME_MACHINE_CDP1871_H
diff --git a/src/devices/machine/cdp1879.h b/src/devices/machine/cdp1879.h
index 4563fe7376a..3f92efec75e 100644
--- a/src/devices/machine/cdp1879.h
+++ b/src/devices/machine/cdp1879.h
@@ -13,21 +13,6 @@
#include "dirtc.h"
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_CDP1879_IRQ_CALLBACK(_cb) \
- downcast<cdp1879_device &>(*device).set_irq_cb(DEVCB_##_cb);
-
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-// ======================> cdp1879_device
-
class cdp1879_device : public device_t,
public device_rtc_interface
{
@@ -38,9 +23,7 @@ public:
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
- template<class Object> devcb_base &set_irq_cb(Object &&cb) { return m_irq_w.set_callback(std::forward<Object>(cb)); }
-
- devcb_write_line m_irq_w;
+ auto irq_callback() { return m_irq_w.bind(); }
protected:
// device-level overrides
@@ -71,6 +54,8 @@ private:
R_ALM_HOURS
};
+ devcb_write_line m_irq_w;
+
u8 m_regs[11];
bool m_comparator_state;
diff --git a/src/devices/machine/cr511b.h b/src/devices/machine/cr511b.h
index e75eb84d4da..149b5a071f1 100644
--- a/src/devices/machine/cr511b.h
+++ b/src/devices/machine/cr511b.h
@@ -38,38 +38,6 @@
#include "imagedev/chd_cd.h"
#include "sound/cdda.h"
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_CR511B_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, CR511B, 0)
-#define MCFG_CR511B_STCH_HANDLER(_devcb) \
- downcast<cr511b_device &>(*device).set_stch_handler(DEVCB_##_devcb);
-
-#define MCFG_CR511B_STEN_HANDLER(_devcb) \
- downcast<cr511b_device &>(*device).set_sten_handler(DEVCB_##_devcb);
-
-#define MCFG_CR511B_DRQ_HANDLER(_devcb) \
- downcast<cr511b_device &>(*device).set_drq_handler(DEVCB_##_devcb);
-
-#define MCFG_CR511B_DTEN_HANDLER(_devcb) \
- downcast<cr511b_device &>(*device).set_dten_handler(DEVCB_##_devcb);
-
-#define MCFG_CR511B_SCOR_HANDLER(_devcb) \
- downcast<cr511b_device &>(*device).set_scor_handler(DEVCB_##_devcb);
-
-#define MCFG_CR511B_XAEN_HANDLER(_devcb) \
- downcast<cr511b_device &>(*device).set_xaen_handler(DEVCB_##_devcb);
-
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-// ======================> cr511b_device
-
class cr511b_device : public device_t
{
public:
@@ -138,7 +106,6 @@ private:
//uint8_t m_sector_buffer[CD_MAX_SECTOR_DATA];
};
-// device type definition
DECLARE_DEVICE_TYPE(CR511B, cr511b_device)
#endif // MAME_MACHINE_CR511B_H
diff --git a/src/devices/machine/cs4031.cpp b/src/devices/machine/cs4031.cpp
index cf45b8bd5f8..1467fb43987 100644
--- a/src/devices/machine/cs4031.cpp
+++ b/src/devices/machine/cs4031.cpp
@@ -418,7 +418,7 @@ void cs4031_device::update_dma_clock()
Not emulated here: Parity check NMI
*/
-void cs4031_device::nmi()
+void cs4031_device::trigger_nmi()
{
if (m_nmi_mask & BIT(m_portb, 6))
{
@@ -445,7 +445,7 @@ WRITE_LINE_MEMBER( cs4031_device::iochck_w )
{
// set channel check latch
m_portb |= 1 << 6;
- nmi();
+ trigger_nmi();
}
m_iochck = state;
@@ -547,7 +547,7 @@ WRITE8_MEMBER( cs4031_device::config_data_w )
break;
case SOFT_RESET_AND_GATEA20:
- a20m();
+ update_a20m();
break;
}
}
@@ -650,7 +650,7 @@ void cs4031_device::update_write_regions()
// KEYBOARD / 8042
//**************************************************************************
-void cs4031_device::a20m()
+void cs4031_device::update_a20m()
{
// external signal is ignored when emulation is on
if (BIT(m_registers[SOFT_RESET_AND_GATEA20], 5))
@@ -674,20 +674,20 @@ void cs4031_device::emulated_gatea20(int state)
if (BIT(m_registers[SOFT_RESET_AND_GATEA20], 5))
{
m_emu_gatea20 = state;
- a20m();
+ update_a20m();
}
}
void cs4031_device::fast_gatea20(int state)
{
m_fast_gatea20 = state;
- a20m();
+ update_a20m();
}
void cs4031_device::keyboard_gatea20(int state)
{
m_ext_gatea20 = state;
- a20m();
+ update_a20m();
}
READ8_MEMBER( cs4031_device::keyb_status_r )
diff --git a/src/devices/machine/cs4031.h b/src/devices/machine/cs4031.h
index c03a1cc0e43..5ffe8562628 100644
--- a/src/devices/machine/cs4031.h
+++ b/src/devices/machine/cs4031.h
@@ -31,56 +31,19 @@
#include "machine/ds128x.h"
#include "machine/at_keybc.h"
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_CS4031_ADD(_tag, _clock, _cputag, _isatag, _biostag, _keybctag) \
- MCFG_DEVICE_ADD(_tag, CS4031, _clock) \
- downcast<cs4031_device &>(*device).set_cputag(_cputag); \
- downcast<cs4031_device &>(*device).set_isatag(_isatag); \
- downcast<cs4031_device &>(*device).set_biostag(_biostag); \
- downcast<cs4031_device &>(*device).set_keybctag(_keybctag);
-
-#define MCFG_CS4031_IOR(_ior) \
- downcast<cs4031_device *>(device)->set_ior_callback(DEVCB_##_ior);
-
-#define MCFG_CS4031_IOW(_iow) \
- downcast<cs4031_device *>(device)->set_iow_callback(DEVCB_##_iow);
-
-#define MCFG_CS4031_TC(_tc) \
- downcast<cs4031_device *>(device)->set_tc_callback(DEVCB_##_tc);
-
-#define MCFG_CS4031_HOLD(_hold) \
- downcast<cs4031_device *>(device)->set_hold_callback(DEVCB_##_hold);
-
-#define MCFG_CS4031_NMI(_nmi) \
- downcast<cs4031_device *>(device)->set_nmi_callback(DEVCB_##_nmi);
-
-#define MCFG_CS4031_INTR(_intr) \
- downcast<cs4031_device *>(device)->set_intr_callback(DEVCB_##_intr);
-
-#define MCFG_CS4031_CPURESET(_cpureset) \
- downcast<cs4031_device *>(device)->set_cpureset_callback(DEVCB_##_cpureset);
-
-#define MCFG_CS4031_A20M(_a20m) \
- downcast<cs4031_device *>(device)->set_a20m_callback(DEVCB_##_a20m);
-
-#define MCFG_CS4031_SPKR(_spkr) \
- downcast<cs4031_device *>(device)->set_spkr_callback(DEVCB_##_spkr);
-
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-// ======================> cs4031_device
-
class cs4031_device : public device_t
{
public:
// construction/destruction
+ cs4031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const char *cputag, const char *isatag, const char *biostag, const char *keybctag)
+ : cs4031_device(mconfig, tag, owner, clock)
+ {
+ set_cputag(cputag);
+ set_isatag(isatag);
+ set_biostag(biostag);
+ set_keybctag(keybctag);
+ }
+
cs4031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
@@ -93,6 +56,15 @@ public:
template <class Obj> devcb_base &set_intr_callback(Obj &&intr) { return m_write_intr.set_callback(std::forward<Obj>(intr)); }
template <class Obj> devcb_base &set_a20m_callback(Obj &&a20m) { return m_write_a20m.set_callback(std::forward<Obj>(a20m)); }
template <class Obj> devcb_base &set_spkr_callback(Obj &&spkr) { return m_write_spkr.set_callback(std::forward<Obj>(spkr)); }
+ auto ior() { return m_read_ior.bind(); }
+ auto iow() { return m_write_iow.bind(); }
+ auto tc() { return m_write_tc.bind(); }
+ auto hold() { return m_write_hold.bind(); }
+ auto cpureset() { return m_write_cpureset.bind(); }
+ auto nmi() { return m_write_nmi.bind(); }
+ auto intr() { return m_write_intr.bind(); }
+ auto a20m() { return m_write_a20m.bind(); }
+ auto spkr() { return m_write_spkr.bind(); }
// internal io
DECLARE_WRITE8_MEMBER( config_address_w );
@@ -170,8 +142,8 @@ private:
void set_dma_channel(int channel, bool state);
void update_dma_clock();
- void nmi();
- void a20m();
+ void trigger_nmi();
+ void update_a20m();
void emulated_kbreset(int state);
void emulated_gatea20(int state);
@@ -278,8 +250,6 @@ private:
DECLARE_WRITE_LINE_MEMBER( ctc_out2_w );
};
-
-// device type definition
DECLARE_DEVICE_TYPE(CS4031, cs4031_device)
#endif // MAME_MACHINE_CS4031_H
diff --git a/src/devices/machine/cs8221.h b/src/devices/machine/cs8221.h
index f93b2a50c58..39f5bfcd709 100644
--- a/src/devices/machine/cs8221.h
+++ b/src/devices/machine/cs8221.h
@@ -20,29 +20,18 @@
#pragma once
-
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_CS8221_ADD(_tag, _cputag, _isatag, _biostag) \
- MCFG_DEVICE_ADD(_tag, CS8221, 0) \
- downcast<cs8221_device &>(*device).set_cputag(_cputag); \
- downcast<cs8221_device &>(*device).set_isatag(_isatag); \
- downcast<cs8221_device &>(*device).set_biostag(_biostag);
-
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-// ======================> cs8221_device
-
class cs8221_device : public device_t
{
public:
// construction/destruction
+ cs8221_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const char *cputag, const char *isatag, const char *biostag)
+ : cs8221_device(mconfig, tag, owner, clock)
+ {
+ set_cputag(cputag);
+ set_isatag(isatag);
+ set_biostag(biostag);
+ }
+
cs8221_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
@@ -80,8 +69,6 @@ private:
DECLARE_WRITE8_MEMBER( data_w );
};
-
-// device type definition
DECLARE_DEVICE_TYPE(CS8221, cs8221_device)
#endif // MAME_MACHINE_CS8221_H
diff --git a/src/devices/machine/cxd1095.h b/src/devices/machine/cxd1095.h
index 86ecb58de65..ec7466e5b4b 100644
--- a/src/devices/machine/cxd1095.h
+++ b/src/devices/machine/cxd1095.h
@@ -44,38 +44,6 @@
#pragma once
-//**************************************************************************
-// CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_CXD1095_IN_PORTA_CB(_devcb) \
- downcast<cxd1095_device &>(*device).set_input_cb(0, DEVCB_##_devcb);
-#define MCFG_CXD1095_IN_PORTB_CB(_devcb) \
- downcast<cxd1095_device &>(*device).set_input_cb(1, DEVCB_##_devcb);
-#define MCFG_CXD1095_IN_PORTC_CB(_devcb) \
- downcast<cxd1095_device &>(*device).set_input_cb(2, DEVCB_##_devcb);
-#define MCFG_CXD1095_IN_PORTD_CB(_devcb) \
- downcast<cxd1095_device &>(*device).set_input_cb(3, DEVCB_##_devcb);
-#define MCFG_CXD1095_IN_PORTE_CB(_devcb) \
- downcast<cxd1095_device &>(*device).set_input_cb(4, DEVCB_##_devcb);
-
-#define MCFG_CXD1095_OUT_PORTA_CB(_devcb) \
- downcast<cxd1095_device &>(*device).set_output_cb(0, DEVCB_##_devcb);
-#define MCFG_CXD1095_OUT_PORTB_CB(_devcb) \
- downcast<cxd1095_device &>(*device).set_output_cb(1, DEVCB_##_devcb);
-#define MCFG_CXD1095_OUT_PORTC_CB(_devcb) \
- downcast<cxd1095_device &>(*device).set_output_cb(2, DEVCB_##_devcb);
-#define MCFG_CXD1095_OUT_PORTD_CB(_devcb) \
- downcast<cxd1095_device &>(*device).set_output_cb(3, DEVCB_##_devcb);
-#define MCFG_CXD1095_OUT_PORTE_CB(_devcb) \
- downcast<cxd1095_device &>(*device).set_output_cb(4, DEVCB_##_devcb);
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-// ======================> cxd1095_device
-
class cxd1095_device : public device_t
{
public:
@@ -83,8 +51,18 @@ public:
cxd1095_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// configuration
- template <class Object> devcb_base &set_input_cb(int p, Object &&cb) { assert(p >= 0 && p < 5); return m_input_cb[p].set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_output_cb(int p, Object &&cb) { assert(p >= 0 && p < 5); return m_output_cb[p].set_callback(std::forward<Object>(cb)); }
+ template <std::size_t Port> auto in_port_cb() { static_assert(Port >= 0 && Port < 5, "invalid port"); return m_input_cb[Port].bind(); }
+ template <std::size_t Port> auto out_port_cb() { static_assert(Port >= 0 && Port < 5, "invalid port"); return m_output_cb[Port].bind(); }
+ auto in_porta_cb() { return in_port_cb<0>(); }
+ auto in_portb_cb() { return in_port_cb<1>(); }
+ auto in_portc_cb() { return in_port_cb<2>(); }
+ auto in_portd_cb() { return in_port_cb<3>(); }
+ auto in_porte_cb() { return in_port_cb<4>(); }
+ auto out_porta_cb() { return out_port_cb<0>(); }
+ auto out_portb_cb() { return out_port_cb<1>(); }
+ auto out_portc_cb() { return out_port_cb<2>(); }
+ auto out_portd_cb() { return out_port_cb<3>(); }
+ auto out_porte_cb() { return out_port_cb<4>(); }
// memory handlers
DECLARE_READ8_MEMBER(read);
@@ -105,7 +83,6 @@ private:
u8 m_data_dir[5];
};
-// device type definition
DECLARE_DEVICE_TYPE(CXD1095, cxd1095_device)
#endif // MAME_MACHINE_CXD1095_H