diff options
author | wilbertpol <wilbertpol@users.noreply.github.com> | 2018-03-03 18:18:08 +0100 |
---|---|---|
committer | Vas Crabb <cuavas@users.noreply.github.com> | 2018-03-04 04:18:08 +1100 |
commit | 3b923d59ccb8d2d8e386392518450006f8e644fe (patch) | |
tree | 73c48568e76d69edbde9f96a3f57d173dd05a747 | |
parent | 25472091b626bd01ef47f11389a4b2ebe0fc0008 (diff) |
destaticify initializations (nw) (#3289)
* destaticify initializations (nw)
* fix this->set_screen (nw)
574 files changed, 6862 insertions, 8616 deletions
diff --git a/src/devices/bus/a1bus/a1bus.cpp b/src/devices/bus/a1bus/a1bus.cpp index d1f0bbd7fe0..0b90ed0b000 100644 --- a/src/devices/bus/a1bus/a1bus.cpp +++ b/src/devices/bus/a1bus/a1bus.cpp @@ -36,13 +36,6 @@ a1bus_slot_device::a1bus_slot_device(const machine_config &mconfig, device_type { } -void a1bus_slot_device::static_set_a1bus_slot(device_t &device, const char *tag, const char *slottag) -{ - a1bus_slot_device &a1bus_card = dynamic_cast<a1bus_slot_device &>(device); - a1bus_card.m_a1bus_tag = tag; - a1bus_card.m_a1bus_slottag = slottag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -51,7 +44,7 @@ void a1bus_slot_device::device_start() { device_a1bus_card_interface *dev = dynamic_cast<device_a1bus_card_interface *>(get_card_device()); - if (dev) device_a1bus_card_interface::static_set_a1bus_tag(*dev, m_a1bus_tag, m_a1bus_slottag); + if (dev) dev->set_a1bus_tag(m_a1bus_tag, m_a1bus_slottag); } //************************************************************************** @@ -60,12 +53,6 @@ void a1bus_slot_device::device_start() DEFINE_DEVICE_TYPE(A1BUS, a1bus_device, "a1bus", "Apple I Bus") -void a1bus_device::static_set_cputag(device_t &device, const char *tag) -{ - a1bus_device &a1bus = downcast<a1bus_device &>(device); - a1bus.m_cputag = tag; -} - //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -181,12 +168,6 @@ device_a1bus_card_interface::~device_a1bus_card_interface() { } -void device_a1bus_card_interface::static_set_a1bus_tag(device_t &device, const char *tag, const char *slottag) -{ - device_a1bus_card_interface &a1bus_card = dynamic_cast<device_a1bus_card_interface &>(device); - a1bus_card.m_a1bus_tag = tag; - a1bus_card.m_a1bus_slottag = slottag; -} void device_a1bus_card_interface::set_a1bus_device() { diff --git a/src/devices/bus/a1bus/a1bus.h b/src/devices/bus/a1bus/a1bus.h index 320a2d9bc80..c380a5fe46d 100644 --- a/src/devices/bus/a1bus/a1bus.h +++ b/src/devices/bus/a1bus/a1bus.h @@ -17,25 +17,25 @@ //************************************************************************** #define MCFG_A1BUS_CPU(_cputag) \ - a1bus_device::static_set_cputag(*device, _cputag); + downcast<a1bus_device &>(*device).set_cputag(_cputag); #define MCFG_A1BUS_OUT_IRQ_CB(_devcb) \ - devcb = &a1bus_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<a1bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_A1BUS_OUT_NMI_CB(_devcb) \ - devcb = &a1bus_device::set_out_nmi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<a1bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_A1BUS_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, A1BUS_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - a1bus_slot_device::static_set_a1bus_slot(*device, _nbtag, _tag); + downcast<a1bus_slot_device &>(*device).set_a1bus_slot(_nbtag, _tag); #define MCFG_A1BUS_SLOT_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) #define MCFG_A1BUS_ONBOARD_ADD(_nbtag, _tag, _dev_type, _def_inp) \ MCFG_DEVICE_ADD(_tag, _dev_type, 0) \ MCFG_DEVICE_INPUT_DEFAULTS(_def_inp) \ - device_a1bus_card_interface::static_set_a1bus_tag(*device, _nbtag, _tag); + downcast<device_a1bus_card_interface &>(*device).set_a1bus_tag(_nbtag, _tag); //************************************************************************** // TYPE DEFINITIONS @@ -51,7 +51,7 @@ public: a1bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_a1bus_slot(device_t &device, const char *tag, const char *slottag); + void set_a1bus_slot(const char *tag, const char *slottag) { m_a1bus_tag = tag; m_a1bus_slottag = slottag; } protected: a1bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -76,9 +76,9 @@ public: a1bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_cputag(device_t &device, const char *tag); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<a1bus_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<a1bus_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } + void set_cputag(const char *tag) { m_cputag = tag; } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } void add_a1bus_card(device_a1bus_card_interface *card); device_a1bus_card_interface *get_a1bus_card(); @@ -136,7 +136,7 @@ public: void install_bank(offs_t start, offs_t end, char *tag, uint8_t *data); // inline configuration - static void static_set_a1bus_tag(device_t &device, const char *tag, const char *slottag); + void set_a1bus_tag(const char *tag, const char *slottag) { m_a1bus_tag = tag; m_a1bus_slottag = slottag; } protected: device_a1bus_card_interface(const machine_config &mconfig, device_t &device); diff --git a/src/devices/bus/a2bus/a2bus.cpp b/src/devices/bus/a2bus/a2bus.cpp index bd1f1fdfe3a..a279ce3a9d6 100644 --- a/src/devices/bus/a2bus/a2bus.cpp +++ b/src/devices/bus/a2bus/a2bus.cpp @@ -100,13 +100,6 @@ a2bus_slot_device::a2bus_slot_device(const machine_config &mconfig, device_type { } -void a2bus_slot_device::static_set_a2bus_slot(device_t &device, const char *tag, const char *slottag) -{ - a2bus_slot_device &a2bus_card = dynamic_cast<a2bus_slot_device &>(device); - a2bus_card.m_a2bus_tag = tag; - a2bus_card.m_a2bus_slottag = slottag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -115,7 +108,7 @@ void a2bus_slot_device::device_start() { device_a2bus_card_interface *dev = dynamic_cast<device_a2bus_card_interface *>(get_card_device()); - if (dev) device_a2bus_card_interface::static_set_a2bus_tag(*dev, m_a2bus_tag, m_a2bus_slottag); + if (dev) dev->set_a2bus_tag(m_a2bus_tag, m_a2bus_slottag); } //************************************************************************** @@ -124,12 +117,6 @@ void a2bus_slot_device::device_start() DEFINE_DEVICE_TYPE(A2BUS, a2bus_device, "a2bus", "Apple II Bus") -void a2bus_device::static_set_cputag(device_t &device, const char *tag) -{ - a2bus_device &a2bus = downcast<a2bus_device &>(device); - a2bus.m_cputag = tag; -} - //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -304,13 +291,6 @@ device_a2bus_card_interface::~device_a2bus_card_interface() { } -void device_a2bus_card_interface::static_set_a2bus_tag(device_t &device, const char *tag, const char *slottag) -{ - device_a2bus_card_interface &a2bus_card = dynamic_cast<device_a2bus_card_interface &>(device); - a2bus_card.m_a2bus_tag = tag; - a2bus_card.m_a2bus_slottag = slottag; -} - void device_a2bus_card_interface::interface_pre_start() { if (!m_a2bus) diff --git a/src/devices/bus/a2bus/a2bus.h b/src/devices/bus/a2bus/a2bus.h index cf02e2099f9..e008bfcb15c 100644 --- a/src/devices/bus/a2bus/a2bus.h +++ b/src/devices/bus/a2bus/a2bus.h @@ -28,28 +28,28 @@ //************************************************************************** #define MCFG_A2BUS_CPU(_cputag) \ - a2bus_device::static_set_cputag(*device, _cputag); + downcast<a2bus_device &>(*device).set_cputag(_cputag); #define MCFG_A2BUS_OUT_IRQ_CB(_devcb) \ - devcb = &a2bus_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<a2bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_A2BUS_OUT_NMI_CB(_devcb) \ - devcb = &a2bus_device::set_out_nmi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<a2bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_A2BUS_OUT_INH_CB(_devcb) \ - devcb = &a2bus_device::set_out_inh_callback(*device, DEVCB_##_devcb); + devcb = &downcast<a2bus_device &>(*device).set_out_inh_callback(DEVCB_##_devcb); #define MCFG_A2BUS_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, A2BUS_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - a2bus_slot_device::static_set_a2bus_slot(*device, _nbtag, _tag); + downcast<a2bus_slot_device &>(*device).set_a2bus_slot(_nbtag, _tag); #define MCFG_A2BUS_SLOT_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) #define MCFG_A2BUS_ONBOARD_ADD(_nbtag, _tag, _dev_type, _def_inp) \ MCFG_DEVICE_ADD(_tag, _dev_type, 0) \ MCFG_DEVICE_INPUT_DEFAULTS(_def_inp) \ - device_a2bus_card_interface::static_set_a2bus_tag(*device, _nbtag, _tag); + dynamic_cast<device_a2bus_card_interface &>(*device).set_a2bus_tag(_nbtag, _tag); // 7M = XTAL(14'318'181) / 2 or XTAL(28'636'363) / 4 (for IIgs) static constexpr uint32_t A2BUS_7M_CLOCK = 7159090; @@ -68,7 +68,7 @@ public: a2bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_a2bus_slot(device_t &device, const char *tag, const char *slottag); + void set_a2bus_slot(const char *tag, const char *slottag) { m_a2bus_tag = tag; m_a2bus_slottag = slottag; } protected: a2bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -95,10 +95,10 @@ public: a2bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_cputag(device_t &device, const char *tag); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<a2bus_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<a2bus_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_inh_callback(device_t &device, Object &&cb) { return downcast<a2bus_device &>(device).m_out_inh_cb.set_callback(std::forward<Object>(cb)); } + void set_cputag(const char *tag) { m_cputag = tag; } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_inh_callback(Object &&cb) { return m_out_inh_cb.set_callback(std::forward<Object>(cb)); } void add_a2bus_card(int slot, device_a2bus_card_interface *card); device_a2bus_card_interface *get_a2bus_card(int slot); @@ -188,7 +188,7 @@ public: void slot_dma_write_no_space(uint16_t offset, uint8_t data) { m_a2bus->dma_nospace_w(offset, data); } // inline configuration - static void static_set_a2bus_tag(device_t &device, const char *tag, const char *slottag); + void set_a2bus_tag(const char *tag, const char *slottag) { m_a2bus_tag = tag; m_a2bus_slottag = slottag; } protected: device_a2bus_card_interface(const machine_config &mconfig, device_t &device); diff --git a/src/devices/bus/a2bus/a2eauxslot.cpp b/src/devices/bus/a2bus/a2eauxslot.cpp index 7e3ba7ca8e3..6885d528128 100644 --- a/src/devices/bus/a2bus/a2eauxslot.cpp +++ b/src/devices/bus/a2bus/a2eauxslot.cpp @@ -38,13 +38,6 @@ a2eauxslot_slot_device::a2eauxslot_slot_device(const machine_config &mconfig, de { } -void a2eauxslot_slot_device::static_set_a2eauxslot_slot(device_t &device, const char *tag, const char *slottag) -{ - a2eauxslot_slot_device &a2eauxslot_card = dynamic_cast<a2eauxslot_slot_device &>(device); - a2eauxslot_card.m_a2eauxslot_tag = tag; - a2eauxslot_card.m_a2eauxslot_slottag = slottag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -53,7 +46,7 @@ void a2eauxslot_slot_device::device_start() { device_a2eauxslot_card_interface *dev = dynamic_cast<device_a2eauxslot_card_interface *>(get_card_device()); - if (dev) device_a2eauxslot_card_interface::static_set_a2eauxslot_tag(*dev, m_a2eauxslot_tag, m_a2eauxslot_slottag); + if (dev) dev->set_a2eauxslot_tag(m_a2eauxslot_tag, m_a2eauxslot_slottag); } //************************************************************************** @@ -62,12 +55,6 @@ void a2eauxslot_slot_device::device_start() DEFINE_DEVICE_TYPE(A2EAUXSLOT, a2eauxslot_device, "a2eauxslot", "Apple IIe AUX Bus") -void a2eauxslot_device::static_set_cputag(device_t &device, const char *tag) -{ - a2eauxslot_device &a2eauxslot = downcast<a2eauxslot_device &>(device); - a2eauxslot.m_cputag = tag; -} - //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -167,13 +154,6 @@ device_a2eauxslot_card_interface::~device_a2eauxslot_card_interface() { } -void device_a2eauxslot_card_interface::static_set_a2eauxslot_tag(device_t &device, const char *tag, const char *slottag) -{ - device_a2eauxslot_card_interface &a2eauxslot_card = dynamic_cast<device_a2eauxslot_card_interface &>(device); - a2eauxslot_card.m_a2eauxslot_tag = tag; - a2eauxslot_card.m_a2eauxslot_slottag = slottag; -} - void device_a2eauxslot_card_interface::set_a2eauxslot_device() { m_a2eauxslot = dynamic_cast<a2eauxslot_device *>(device().machine().device(m_a2eauxslot_tag)); diff --git a/src/devices/bus/a2bus/a2eauxslot.h b/src/devices/bus/a2bus/a2eauxslot.h index efc7917221d..2101f5cfc6b 100644 --- a/src/devices/bus/a2bus/a2eauxslot.h +++ b/src/devices/bus/a2bus/a2eauxslot.h @@ -20,18 +20,18 @@ //************************************************************************** #define MCFG_A2EAUXSLOT_CPU(_cputag) \ - a2eauxslot_device::static_set_cputag(*device, _cputag); + downcast<a2eauxslot_device &>(*device).set_cputag(_cputag); #define MCFG_A2EAUXSLOT_OUT_IRQ_CB(_devcb) \ - devcb = &a2eauxslot_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<a2eauxslot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_A2EAUXSLOT_OUT_NMI_CB(_devcb) \ - devcb = &a2eauxslot_device::set_out_nmi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<a2eauxslot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_A2EAUXSLOT_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, A2EAUXSLOT_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - a2eauxslot_slot_device::static_set_a2eauxslot_slot(*device, _nbtag, _tag); + downcast<a2eauxslot_slot_device &>(*device).set_a2eauxslot_slot(_nbtag, _tag); #define MCFG_A2EAUXSLOT_SLOT_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) @@ -52,7 +52,7 @@ public: virtual void device_start() override; // inline configuration - static void static_set_a2eauxslot_slot(device_t &device, const char *tag, const char *slottag); + void set_a2eauxslot_slot(const char *tag, const char *slottag) { m_a2eauxslot_tag = tag; m_a2eauxslot_slottag = slottag; } protected: a2eauxslot_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -75,9 +75,9 @@ public: a2eauxslot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_cputag(device_t &device, const char *tag); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<a2eauxslot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<a2eauxslot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } + void set_cputag(const char *tag) { m_cputag = tag; } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } void add_a2eauxslot_card(device_a2eauxslot_card_interface *card); device_a2eauxslot_card_interface *get_a2eauxslot_card(); @@ -136,7 +136,7 @@ public: void lower_slot_nmi() { m_a2eauxslot->set_nmi_line(CLEAR_LINE); } // inline configuration - static void static_set_a2eauxslot_tag(device_t &device, const char *tag, const char *slottag); + void set_a2eauxslot_tag(const char *tag, const char *slottag) { m_a2eauxslot_tag = tag; m_a2eauxslot_slottag = slottag; } protected: device_a2eauxslot_card_interface(const machine_config &mconfig, device_t &device); diff --git a/src/devices/bus/a2bus/a2mcms.cpp b/src/devices/bus/a2bus/a2mcms.cpp index e3e8260a98c..2a7912a6a84 100644 --- a/src/devices/bus/a2bus/a2mcms.cpp +++ b/src/devices/bus/a2bus/a2mcms.cpp @@ -39,7 +39,7 @@ DEFINE_DEVICE_TYPE(A2BUS_MCMS2, a2bus_mcms2_device, "a2mcms2", "Mountain Compute #define ENGINE_TAG "engine" #define MCFG_MCMS_IRQ_CALLBACK(_cb) \ - devcb = &mcms_device::set_irq_cb(*device, DEVCB_##_cb); + devcb = &downcast<mcms_device &>(*device).set_irq_cb(DEVCB_##_cb); /*************************************************************************** FUNCTION PROTOTYPES diff --git a/src/devices/bus/a2bus/a2mcms.h b/src/devices/bus/a2bus/a2mcms.h index 2a2a469049d..f1026d97afd 100644 --- a/src/devices/bus/a2bus/a2mcms.h +++ b/src/devices/bus/a2bus/a2mcms.h @@ -33,7 +33,7 @@ public: void set_bus_device(a2bus_mcms1_device *pDev) { m_pBusDevice = pDev; } - template<class _Object> static devcb_base &set_irq_cb(device_t &device, _Object wr) { return downcast<mcms_device &>(device).m_write_irq.set_callback(wr); } + template<class Object> devcb_base &set_irq_cb(Object &&wr) { return m_write_irq.set_callback(std::forward<Object>(wr)); } devcb_write_line m_write_irq; protected: diff --git a/src/devices/bus/a800/a8sio.cpp b/src/devices/bus/a800/a8sio.cpp index cfbef3b47e4..0d5d248c11e 100644 --- a/src/devices/bus/a800/a8sio.cpp +++ b/src/devices/bus/a800/a8sio.cpp @@ -59,13 +59,6 @@ a8sio_slot_device::a8sio_slot_device(const machine_config &mconfig, device_type { } -void a8sio_slot_device::static_set_a8sio_slot(device_t &device, const char *tag, const char *slottag) -{ - a8sio_slot_device &a8sio_ext = dynamic_cast<a8sio_slot_device &>(device); - a8sio_ext.m_a8sio_tag = tag; - a8sio_ext.m_a8sio_slottag = slottag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -76,7 +69,7 @@ void a8sio_slot_device::device_start() if (dev) { - device_a8sio_card_interface::static_set_a8sio_tag(*dev, m_a8sio_tag, m_a8sio_slottag); + dev->set_a8sio_tag(m_a8sio_tag, m_a8sio_slottag); } } @@ -191,13 +184,6 @@ device_a8sio_card_interface::~device_a8sio_card_interface() { } -void device_a8sio_card_interface::static_set_a8sio_tag(device_t &device, const char *tag, const char *slottag) -{ - device_a8sio_card_interface &a8sio_card = dynamic_cast<device_a8sio_card_interface &>(device); - a8sio_card.m_a8sio_tag = tag; - a8sio_card.m_a8sio_slottag = slottag; -} - void device_a8sio_card_interface::set_a8sio_device() { m_a8sio = dynamic_cast<a8sio_device *>(device().machine().device(m_a8sio_tag)); diff --git a/src/devices/bus/a800/a8sio.h b/src/devices/bus/a800/a8sio.h index 31d853ec633..a9a1b4eec8b 100644 --- a/src/devices/bus/a800/a8sio.h +++ b/src/devices/bus/a800/a8sio.h @@ -43,10 +43,10 @@ #define MCFG_A8SIO_SLOT_ADD(_nbtag, _tag, _def_slot) \ MCFG_DEVICE_ADD(_tag, A8SIO_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(a8sio_cards, _def_slot, false) \ - a8sio_slot_device::static_set_a8sio_slot(*device, _nbtag, _tag); + downcast<a8sio_slot_device &>(*device).set_a8sio_slot(_nbtag, _tag); #define MCFG_A8SIO_DATA_IN_CB(_devcb) \ - devcb = &a8sio_device::set_data_in_callback(*device, DEVCB_##_devcb); + devcb = &downcast<a8sio_device &>(*device).set_data_in_callback(DEVCB_##_devcb); class a8sio_slot_device : public device_t, @@ -57,7 +57,7 @@ public: a8sio_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_a8sio_slot(device_t &device, const char *tag, const char *slottag); + void set_a8sio_slot(const char *tag, const char *slottag) { m_a8sio_tag = tag; m_a8sio_slottag = slottag; } protected: a8sio_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -84,9 +84,9 @@ public: a8sio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - template <class Object> static devcb_base &set_clock_in_callback(device_t &device, Object &&cb) { return downcast<a8sio_device &>(device).m_out_clock_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data_in_callback(device_t &device, Object &&cb) { return downcast<a8sio_device &>(device).m_out_data_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_audio_in_callback(device_t &device, Object &&cb) { return downcast<a8sio_device &>(device).m_out_audio_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_clock_in_callback(Object &&cb) { return m_out_clock_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data_in_callback(Object &&cb) { return m_out_data_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_audio_in_callback(Object &&cb) { return m_out_audio_in_cb.set_callback(std::forward<Object>(cb)); } void add_a8sio_card(device_a8sio_card_interface *card); device_a8sio_card_interface *get_a8sio_card(); @@ -129,7 +129,7 @@ public: void set_a8sio_device(); // inline configuration - static void static_set_a8sio_tag(device_t &device, const char *tag, const char *slottag); + void set_a8sio_tag(const char *tag, const char *slottag) { m_a8sio_tag = tag; m_a8sio_slottag = slottag; } virtual DECLARE_WRITE_LINE_MEMBER( motor_w ); diff --git a/src/devices/bus/abckb/abckb.h b/src/devices/bus/abckb/abckb.h index c876e261a2f..73c62ac6a0e 100644 --- a/src/devices/bus/abckb/abckb.h +++ b/src/devices/bus/abckb/abckb.h @@ -23,13 +23,13 @@ MCFG_DEVICE_SLOT_INTERFACE(abc_keyboard_devices, _def_slot, false) #define MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(_devcb) \ - devcb = &abc_keyboard_port_device::set_out_rx_handler(*device, DEVCB_##_devcb); + devcb = &downcast<abc_keyboard_port_device &>(*device).set_out_rx_handler(DEVCB_##_devcb); #define MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(_devcb) \ - devcb = &abc_keyboard_port_device::set_out_trxc_handler(*device, DEVCB_##_devcb); + devcb = &downcast<abc_keyboard_port_device &>(*device).set_out_trxc_handler(DEVCB_##_devcb); #define MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(_devcb) \ - devcb = &abc_keyboard_port_device::set_out_keydown_handler(*device, DEVCB_##_devcb); + devcb = &downcast<abc_keyboard_port_device &>(*device).set_out_keydown_handler(DEVCB_##_devcb); @@ -45,9 +45,9 @@ public: // construction/destruction abc_keyboard_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_rx_handler(device_t &device, Object &&cb) { return downcast<abc_keyboard_port_device &>(device).m_out_rx_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_trxc_handler(device_t &device, Object &&cb) { return downcast<abc_keyboard_port_device &>(device).m_out_trxc_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_keydown_handler(device_t &device, Object &&cb) { return downcast<abc_keyboard_port_device &>(device).m_out_keydown_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rx_handler(Object &&cb) { return m_out_rx_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_trxc_handler(Object &&cb) { return m_out_trxc_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_keydown_handler(Object &&cb) { return m_out_keydown_handler.set_callback(std::forward<Object>(cb)); } // computer interface DECLARE_WRITE_LINE_MEMBER( txd_w ); diff --git a/src/devices/bus/adam/exp.h b/src/devices/bus/adam/exp.h index 6a856faa826..e59ea191ab4 100644 --- a/src/devices/bus/adam/exp.h +++ b/src/devices/bus/adam/exp.h @@ -34,7 +34,7 @@ #define MCFG_ADAM_EXPANSION_SLOT_IRQ_CALLBACK(_write) \ - devcb = &adam_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<adam_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write); @@ -55,7 +55,7 @@ public: adam_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~adam_expansion_slot_device() { } - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<adam_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } // computer interface uint8_t bd_r(address_space &space, offs_t offset, uint8_t data, int bmreq, int biorq, int aux_rom_cs, int cas1, int cas2); diff --git a/src/devices/bus/amiga/keyboard/keyboard.h b/src/devices/bus/amiga/keyboard/keyboard.h index 4066ebd9d53..d78d1bcc6cd 100644 --- a/src/devices/bus/amiga/keyboard/keyboard.h +++ b/src/devices/bus/amiga/keyboard/keyboard.h @@ -28,13 +28,13 @@ MCFG_DEVICE_SLOT_INTERFACE(amiga_keyboard_devices, _def_slot, false) #define MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(_devcb) \ - devcb = &amiga_keyboard_bus_device::set_kclk_handler(*device, DEVCB_##_devcb); + devcb = &downcast<amiga_keyboard_bus_device &>(*device).set_kclk_handler(DEVCB_##_devcb); #define MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(_devcb) \ - devcb = &amiga_keyboard_bus_device::set_kdat_handler(*device, DEVCB_##_devcb); + devcb = &downcast<amiga_keyboard_bus_device &>(*device).set_kdat_handler(DEVCB_##_devcb); #define MCFG_AMIGA_KEYBOARD_KRST_HANDLER(_devcb) \ - devcb = &amiga_keyboard_bus_device::set_krst_handler(*device, DEVCB_##_devcb); + devcb = &downcast<amiga_keyboard_bus_device &>(*device).set_krst_handler(DEVCB_##_devcb); //************************************************************************** @@ -53,14 +53,9 @@ public: virtual ~amiga_keyboard_bus_device(); // callbacks - template <class Object> static devcb_base &set_kclk_handler(device_t &device, Object &&cb) - { return downcast<amiga_keyboard_bus_device &>(device).m_kclk_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_kdat_handler(device_t &device, Object &&cb) - { return downcast<amiga_keyboard_bus_device &>(device).m_kdat_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_krst_handler(device_t &device, Object &&cb) - { return downcast<amiga_keyboard_bus_device &>(device).m_krst_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_kclk_handler(Object &&cb) { return m_kclk_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_kdat_handler(Object &&cb) { return m_kdat_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_krst_handler(Object &&cb) { return m_krst_handler.set_callback(std::forward<Object>(cb)); } // called from keyboard DECLARE_WRITE_LINE_MEMBER(kclk_w) { m_kclk_handler(state); } diff --git a/src/devices/bus/amiga/zorro/zorro.cpp b/src/devices/bus/amiga/zorro/zorro.cpp index 0e29f13893f..fec5d745015 100644 --- a/src/devices/bus/amiga/zorro/zorro.cpp +++ b/src/devices/bus/amiga/zorro/zorro.cpp @@ -34,13 +34,6 @@ zorro_slot_device::zorro_slot_device(const machine_config &mconfig, device_type { } -void zorro_slot_device::set_zorro_slot(device_t &device, device_t *owner, const char *zorro_tag) -{ - zorro_slot_device &zorro_card = dynamic_cast<zorro_slot_device &>(device); - zorro_card.m_owner = owner; - zorro_card.m_zorro_tag = zorro_tag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -76,16 +69,6 @@ zorro_device::zorro_device(const machine_config &mconfig, device_type type, cons } //------------------------------------------------- -// set_cputag - set cpu we are attached to -//------------------------------------------------- - -void zorro_device::set_cputag(device_t &device, const char *tag) -{ - zorro_device &zorro = downcast<zorro_device &>(device); - zorro.m_cputag = tag; -} - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/bus/amiga/zorro/zorro.h b/src/devices/bus/amiga/zorro/zorro.h index 38c172ead49..02ece4b59a4 100644 --- a/src/devices/bus/amiga/zorro/zorro.h +++ b/src/devices/bus/amiga/zorro/zorro.h @@ -159,59 +159,59 @@ #define MCFG_ZORRO_SLOT_ADD(_zorrotag, _tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, ZORRO_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - zorro_slot_device::set_zorro_slot(*device, this, _zorrotag); + downcast<zorro_slot_device &>(*device).set_zorro_slot(this, _zorrotag); // ======================> expansion slot #define MCFG_EXPANSION_SLOT_ADD(_cputag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(EXP_SLOT_TAG, EXP_SLOT, 0) \ device_t *temp = device; \ - zorro_device::set_cputag(*device, _cputag); \ + downcast<zorro_device &>(*device).set_cputag(_cputag); \ MCFG_ZORRO_SLOT_ADD(EXP_SLOT_TAG, "slot", _slot_intf, _def_slot) \ device = temp; // callbacks #define MCFG_EXPANSION_SLOT_OVR_HANDLER(_devcb) \ - devcb = &zorro_device::set_ovr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<zorro_device &>(*device).set_ovr_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_SLOT_INT2_HANDLER(_devcb) \ - devcb = &zorro_device::set_int2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<zorro_device &>(*device).set_int2_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_SLOT_INT6_HANDLER(_devcb) \ - devcb = &zorro_device::set_int6_handler(*device, DEVCB_##_devcb); + devcb = &downcast<zorro_device &>(*device).set_int6_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_SLOT_IPL_HANDLER(_devcb) \ - devcb = &exp_slot_device::set_ipl_handler(*device, DEVCB_##_devcb); + devcb = &downcast<exp_slot_device &>(*device).set_ipl_handler(DEVCB_##_devcb); // ======================> zorro 2 bus #define MCFG_ZORRO2_ADD(_cputag) \ MCFG_DEVICE_ADD(ZORROBUS_TAG, ZORRO2, 0) \ - zorro_device::set_cputag(*device, _cputag); + downcast<zorro_device &>(*device).set_cputag(_cputag); #define MCFG_ZORRO2_SLOT_ADD(_tag, _slot_intf, _def_slot) \ MCFG_ZORRO_SLOT_ADD(ZORROBUS_TAG, _tag, _slot_intf, _def_slot) #define MCFG_ZORRO2_OVR_HANDLER(_devcb) \ - devcb = &zorro_device::set_ovr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<zorro_device &>(*device).set_ovr_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_INT2_HANDLER(_devcb) \ - devcb = &zorro_device::set_int2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<zorro_device &>(*device).set_int2_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_INT6_HANDLER(_devcb) \ - devcb = &zorro_device::set_int6_handler(*device, DEVCB_##_devcb); + devcb = &downcast<zorro_device &>(*device).set_int6_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_EINT1_HANDLER(_devcb) \ - devcb = &zorro2_device::set_eint1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<zorro2_device &>(*device).set_eint1_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_EINT4_HANDLER(_devcb) \ - devcb = &zorro2_device::set_eint4_handler(*device, DEVCB_##_devcb); + devcb = &downcast<zorro2_device &>(*device).set_eint4_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_EINT5_HANDLER(_devcb) \ - devcb = &zorro2_device::set_eint5_handler(*device, DEVCB_##_devcb); + devcb = &downcast<zorro2_device &>(*device).set_eint5_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_EINT7_HANDLER(_devcb) \ - devcb = &zorro2_device::set_eint7_handler(*device, DEVCB_##_devcb); + devcb = &downcast<zorro2_device &>(*device).set_eint7_handler(DEVCB_##_devcb); //************************************************************************** @@ -235,7 +235,7 @@ public: virtual void device_start() override; // inline configuration - static void set_zorro_slot(device_t &device, device_t *owner, const char *zorro_tag); + void set_zorro_slot(device_t *owner, const char *zorro_tag) { m_owner = owner; m_zorro_tag = zorro_tag; } protected: zorro_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -252,15 +252,12 @@ DECLARE_DEVICE_TYPE(ZORRO_SLOT, zorro_slot_device) class zorro_device : public device_t { public: - // static configuration helpers - static void set_cputag(device_t &device, const char *tag); + // configuration helpers + void set_cputag(const char *tag) { m_cputag = tag; } - template <class Object> static devcb_base &set_int2_handler(device_t &device, Object &&cb) - { return downcast<zorro_device &>(device).m_int2_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_int6_handler(device_t &device, Object &&cb) - { return downcast<zorro_device &>(device).m_int6_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ovr_handler(device_t &device, Object &&cb) - { return downcast<zorro_device &>(device).m_ovr_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int2_handler(Object &&cb) { return m_int2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int6_handler(Object &&cb) { return m_int6_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ovr_handler(Object &&cb) { return m_ovr_handler.set_callback(std::forward<Object>(cb)); } virtual void add_card(device_zorro_card_interface *card) = 0; @@ -300,8 +297,7 @@ public: // construction/destruction exp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_ipl_handler(device_t &device, Object &&cb) - { return downcast<exp_slot_device &>(device).m_ipl_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ipl_handler(Object &&cb) { return m_ipl_handler.set_callback(std::forward<Object>(cb)); } // the expansion slot can only have a single card virtual void add_card(device_zorro_card_interface *card) override; @@ -337,14 +333,10 @@ public: zorro2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~zorro2_device(); - template <class Object> static devcb_base &set_eint1_handler(device_t &device, Object &&cb) - { return downcast<zorro2_device &>(device).m_eint1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_eint4_handler(device_t &device, Object &&cb) - { return downcast<zorro2_device &>(device).m_eint4_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_eint5_handler(device_t &device, Object &&cb) - { return downcast<zorro2_device &>(device).m_eint5_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_eint7_handler(device_t &device, Object &&cb) - { return downcast<zorro2_device &>(device).m_eint7_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_eint1_handler(Object &&cb) { return m_eint1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_eint4_handler(Object &&cb) { return m_eint4_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_eint5_handler(Object &&cb) { return m_eint5_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_eint7_handler(Object &&cb) { return m_eint7_handler.set_callback(std::forward<Object>(cb)); } // the zorro2 bus supports multiple cards virtual void add_card(device_zorro_card_interface *card) override; diff --git a/src/devices/bus/apricot/expansion/expansion.cpp b/src/devices/bus/apricot/expansion/expansion.cpp index b5717d320a5..a7b04ca3cb7 100644 --- a/src/devices/bus/apricot/expansion/expansion.cpp +++ b/src/devices/bus/apricot/expansion/expansion.cpp @@ -121,26 +121,6 @@ void apricot_expansion_bus_device::add_card(device_apricot_expansion_card_interf m_dev.append(*card); } -//------------------------------------------------- -// set_cpu_tag - set cpu we are attached to -//------------------------------------------------- - -void apricot_expansion_bus_device::set_cpu_tag(device_t &device, device_t *owner, const char *tag) -{ - apricot_expansion_bus_device &bus = dynamic_cast<apricot_expansion_bus_device &>(device); - bus.m_cpu_tag = tag; -} - -//------------------------------------------------- -// set_iop_tag - set iop we are attached to -//------------------------------------------------- - -void apricot_expansion_bus_device::set_iop_tag(device_t &device, device_t *owner, const char *tag) -{ - apricot_expansion_bus_device &bus = dynamic_cast<apricot_expansion_bus_device &>(device); - bus.m_iop_tag = tag; -} - // callbacks from slot device to the host WRITE_LINE_MEMBER( apricot_expansion_bus_device::dma1_w ) { m_dma1_handler(state); } WRITE_LINE_MEMBER( apricot_expansion_bus_device::dma2_w ) { m_dma2_handler(state); } diff --git a/src/devices/bus/apricot/expansion/expansion.h b/src/devices/bus/apricot/expansion/expansion.h index 72746b7160e..21b991ed810 100644 --- a/src/devices/bus/apricot/expansion/expansion.h +++ b/src/devices/bus/apricot/expansion/expansion.h @@ -54,32 +54,32 @@ #define MCFG_EXPANSION_ADD(_tag, _cpu_tag) \ MCFG_DEVICE_ADD(_tag, APRICOT_EXPANSION_BUS, 0) \ - apricot_expansion_bus_device::set_cpu_tag(*device, this, _cpu_tag); + downcast<apricot_expansion_bus_device &>(*device).set_cpu_tag(this, _cpu_tag); #define MCFG_EXPANSION_IOP_ADD(_tag) \ - apricot_expansion_bus_device::set_iop_tag(*device, this, _tag); + downcast<apricot_expansion_bus_device &>(*device).set_iop_tag(this, _tag); #define MCFG_EXPANSION_SLOT_ADD(_tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, APRICOT_EXPANSION_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_EXPANSION_DMA1_HANDLER(_devcb) \ - devcb = &apricot_expansion_bus_device::set_dma1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<apricot_expansion_bus_device &>(*device).set_dma1_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_DMA2_HANDLER(_devcb) \ - devcb = &apricot_expansion_bus_device::set_dma2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<apricot_expansion_bus_device &>(*device).set_dma2_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_EXT1_HANDLER(_devcb) \ - devcb = &apricot_expansion_bus_device::set_ext1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<apricot_expansion_bus_device &>(*device).set_ext1_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_EXT2_HANDLER(_devcb) \ - devcb = &apricot_expansion_bus_device::set_ext2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<apricot_expansion_bus_device &>(*device).set_ext2_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_INT2_HANDLER(_devcb) \ - devcb = &apricot_expansion_bus_device::set_int2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<apricot_expansion_bus_device &>(*device).set_int2_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_INT3_HANDLER(_devcb) \ - devcb = &apricot_expansion_bus_device::set_int3_handler(*device, DEVCB_##_devcb); + devcb = &downcast<apricot_expansion_bus_device &>(*device).set_int3_handler(DEVCB_##_devcb); //************************************************************************** @@ -118,27 +118,16 @@ public: apricot_expansion_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~apricot_expansion_bus_device(); - template <class Object> static devcb_base &set_dma1_handler(device_t &device, Object &&cb) - { return downcast<apricot_expansion_bus_device &>(device).m_dma1_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_dma2_handler(device_t &device, Object &&cb) - { return downcast<apricot_expansion_bus_device &>(device).m_dma2_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ext1_handler(device_t &device, Object &&cb) - { return downcast<apricot_expansion_bus_device &>(device).m_ext1_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ext2_handler(device_t &device, Object &&cb) - { return downcast<apricot_expansion_bus_device &>(device).m_ext2_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_int2_handler(device_t &device, Object &&cb) - { return downcast<apricot_expansion_bus_device &>(device).m_int2_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_int3_handler(device_t &device, Object &&cb) - { return downcast<apricot_expansion_bus_device &>(device).m_int3_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma1_handler(Object &&cb) { return m_dma1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma2_handler(Object &&cb) { return m_dma2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ext1_handler(Object &&cb) { return m_ext1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ext2_handler(Object &&cb) { return m_ext2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int2_handler(Object &&cb) { return m_int2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int3_handler(Object &&cb) { return m_int3_handler.set_callback(std::forward<Object>(cb)); } // inline configuration - static void set_cpu_tag(device_t &device, device_t *owner, const char *tag); - static void set_iop_tag(device_t &device, device_t *owner, const char *tag); + void set_cpu_tag(device_t *owner, const char *tag) { m_cpu_tag = tag; } + void set_iop_tag(device_t *owner, const char *tag) { m_iop_tag = tag; } void add_card(device_apricot_expansion_card_interface *card); diff --git a/src/devices/bus/apricot/keyboard/keyboard.h b/src/devices/bus/apricot/keyboard/keyboard.h index e7cc28ef584..97896e87a33 100644 --- a/src/devices/bus/apricot/keyboard/keyboard.h +++ b/src/devices/bus/apricot/keyboard/keyboard.h @@ -43,7 +43,7 @@ MCFG_DEVICE_SLOT_INTERFACE(apricot_keyboard_devices, _def_slot, false) #define MCFG_APRICOT_KEYBOARD_IN_HANDLER(_devcb) \ - devcb = &apricot_keyboard_bus_device::set_in_handler(*device, DEVCB_##_devcb); + devcb = &downcast<apricot_keyboard_bus_device &>(*device).set_in_handler(DEVCB_##_devcb); //************************************************************************** @@ -62,8 +62,7 @@ public: virtual ~apricot_keyboard_bus_device(); // callbacks - template <class Object> static devcb_base &set_in_handler(device_t &device, Object &&cb) - { return downcast<apricot_keyboard_bus_device &>(device).m_in_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_handler(Object &&cb) { return m_in_handler.set_callback(std::forward<Object>(cb)); } // called from keyboard DECLARE_WRITE_LINE_MEMBER( in_w ) { m_in_handler(state); } diff --git a/src/devices/bus/bbc/1mhzbus/1mhzbus.h b/src/devices/bus/bbc/1mhzbus/1mhzbus.h index d2d3a3c6765..de83f89632c 100644 --- a/src/devices/bus/bbc/1mhzbus/1mhzbus.h +++ b/src/devices/bus/bbc/1mhzbus/1mhzbus.h @@ -100,10 +100,10 @@ MCFG_BBC_1MHZBUS_SLOT_NMI_HANDLER(DEVWRITELINE(DEVICE_SELF_OWNER, bbc_1mhzbus_slot_device, nmi_w)) #define MCFG_BBC_1MHZBUS_SLOT_IRQ_HANDLER(_devcb) \ - devcb = &bbc_1mhzbus_slot_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<bbc_1mhzbus_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_BBC_1MHZBUS_SLOT_NMI_HANDLER(_devcb) \ - devcb = &bbc_1mhzbus_slot_device::set_nmi_handler(*device, DEVCB_##_devcb); + devcb = &downcast<bbc_1mhzbus_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb); //************************************************************************** @@ -122,11 +122,8 @@ public: virtual ~bbc_1mhzbus_slot_device(); // callbacks - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) - { return downcast<bbc_1mhzbus_slot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb) - { return downcast<bbc_1mhzbus_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); } + 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_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( rst_w ); DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_irq_handler(state); } diff --git a/src/devices/bus/bbc/fdc/fdc.h b/src/devices/bus/bbc/fdc/fdc.h index 81f515000b1..2472b5582be 100644 --- a/src/devices/bus/bbc/fdc/fdc.h +++ b/src/devices/bus/bbc/fdc/fdc.h @@ -22,10 +22,10 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed) #define MCFG_BBC_FDC_SLOT_INTRQ_HANDLER(_devcb) \ - devcb = &bbc_fdc_slot_device::set_intrq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<bbc_fdc_slot_device &>(*device).set_intrq_handler(DEVCB_##_devcb); #define MCFG_BBC_FDC_SLOT_DRQ_HANDLER(_devcb) \ - devcb = &bbc_fdc_slot_device::set_drq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<bbc_fdc_slot_device &>(*device).set_drq_handler(DEVCB_##_devcb); //************************************************************************** @@ -44,10 +44,8 @@ public: virtual ~bbc_fdc_slot_device(); // callbacks - template <class Object> static devcb_base &set_intrq_handler(device_t &device, Object &&cb) - { return downcast<bbc_fdc_slot_device &>(device).m_intrq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb) - { return downcast<bbc_fdc_slot_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intrq_handler(Object &&cb) { return m_intrq_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)); } DECLARE_WRITE_LINE_MEMBER( intrq_w ) { m_intrq_handler(state); } DECLARE_WRITE_LINE_MEMBER( drq_w) { m_drq_handler(state); } diff --git a/src/devices/bus/bbc/tube/tube.h b/src/devices/bus/bbc/tube/tube.h index 34137594026..7a7d4351e1c 100644 --- a/src/devices/bus/bbc/tube/tube.h +++ b/src/devices/bus/bbc/tube/tube.h @@ -54,7 +54,7 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_BBC_TUBE_SLOT_IRQ_HANDLER(_devcb) \ - devcb = &bbc_tube_slot_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<bbc_tube_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb); //************************************************************************** @@ -74,8 +74,7 @@ public: virtual ~bbc_tube_slot_device(); // callbacks - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) - { return downcast<bbc_tube_slot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( host_r ); DECLARE_WRITE8_MEMBER( host_w ); diff --git a/src/devices/bus/bbc/userport/userport.h b/src/devices/bus/bbc/userport/userport.h index 632ad412f63..de2f8c4c8ff 100644 --- a/src/devices/bus/bbc/userport/userport.h +++ b/src/devices/bus/bbc/userport/userport.h @@ -41,10 +41,10 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_BBC_USERPORT_CB1_HANDLER(_devcb) \ - devcb = &bbc_userport_slot_device::set_cb1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<bbc_userport_slot_device &>(*device).set_cb1_handler(DEVCB_##_devcb); #define MCFG_BBC_USERPORT_CB2_HANDLER(_devcb) \ - devcb = &bbc_userport_slot_device::set_cb2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<bbc_userport_slot_device &>(*device).set_cb2_handler(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -62,10 +62,8 @@ public: bbc_userport_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // callbacks - template <class Object> static devcb_base &set_cb1_handler(device_t &device, Object &&cb) - { return downcast<bbc_userport_slot_device &>(device).m_cb1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cb2_handler(device_t &device, Object &&cb) - { return downcast<bbc_userport_slot_device &>(device).m_cb2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cb1_handler(Object &&cb) { return m_cb1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cb2_handler(Object &&cb) { return m_cb2_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(cb1_w) { m_cb1_handler(state); } DECLARE_WRITE_LINE_MEMBER(cb2_w) { m_cb2_handler(state); } diff --git a/src/devices/bus/bml3/bml3bus.cpp b/src/devices/bus/bml3/bml3bus.cpp index 5eed3140a52..e1ff1ad39ab 100644 --- a/src/devices/bus/bml3/bml3bus.cpp +++ b/src/devices/bus/bml3/bml3bus.cpp @@ -70,13 +70,6 @@ bml3bus_slot_device::bml3bus_slot_device(const machine_config &mconfig, device_t { } -void bml3bus_slot_device::static_set_bml3bus_slot(device_t &device, const char *tag, const char *slottag) -{ - bml3bus_slot_device &bml3bus_card = dynamic_cast<bml3bus_slot_device &>(device); - bml3bus_card.m_bml3bus_tag = tag; - bml3bus_card.m_bml3bus_slottag = slottag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -85,7 +78,7 @@ void bml3bus_slot_device::device_start() { device_bml3bus_card_interface *dev = dynamic_cast<device_bml3bus_card_interface *>(get_card_device()); - if (dev) device_bml3bus_card_interface::static_set_bml3bus_tag(*dev, m_bml3bus_tag, m_bml3bus_slottag); + if (dev) dev->set_bml3bus_tag(m_bml3bus_tag, m_bml3bus_slottag); } //************************************************************************** @@ -94,12 +87,6 @@ void bml3bus_slot_device::device_start() DEFINE_DEVICE_TYPE(BML3BUS, bml3bus_device, "bml3bus", "Hitachi MB-6890 Bus") -void bml3bus_device::static_set_cputag(device_t &device, const char *tag) -{ - bml3bus_device &bml3bus = downcast<bml3bus_device &>(device); - bml3bus.m_maincpu.set_tag(tag); -} - //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -212,13 +199,6 @@ device_bml3bus_card_interface::~device_bml3bus_card_interface() { } -void device_bml3bus_card_interface::static_set_bml3bus_tag(device_t &device, const char *tag, const char *slottag) -{ - device_bml3bus_card_interface &bml3bus_card = dynamic_cast<device_bml3bus_card_interface &>(device); - bml3bus_card.m_bml3bus_tag = tag; - bml3bus_card.m_bml3bus_slottag = slottag; -} - void device_bml3bus_card_interface::set_bml3bus_device() { // extract the slot number from the last digit of the slot tag diff --git a/src/devices/bus/bml3/bml3bus.h b/src/devices/bus/bml3/bml3bus.h index bd1de270af2..b18642b44ac 100644 --- a/src/devices/bus/bml3/bml3bus.h +++ b/src/devices/bus/bml3/bml3bus.h @@ -21,27 +21,27 @@ //************************************************************************** #define MCFG_BML3BUS_CPU(_cputag) \ - bml3bus_device::static_set_cputag(*device, "^" _cputag); + downcast<bml3bus_device &>(*device).set_cputag("^" _cputag); #define MCFG_BML3BUS_OUT_NMI_CB(_devcb) \ - devcb = &bml3bus_device::set_out_nmi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<bml3bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_BML3BUS_OUT_IRQ_CB(_devcb) \ - devcb = &bml3bus_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<bml3bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_BML3BUS_OUT_FIRQ_CB(_devcb) \ - devcb = &bml3bus_device::set_out_firq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<bml3bus_device &>(*device).set_out_firq_callback(DEVCB_##_devcb); #define MCFG_BML3BUS_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, BML3BUS_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - bml3bus_slot_device::static_set_bml3bus_slot(*device, _nbtag, _tag); + downcast<bml3bus_slot_device &>(*device).set_bml3bus_slot(_nbtag, _tag); #define MCFG_BML3BUS_SLOT_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) #define MCFG_BML3BUS_ONBOARD_ADD(_nbtag, _tag, _dev_type) \ MCFG_DEVICE_ADD(_tag, _dev_type, 0) \ - device_bml3bus_card_interface::static_set_bml3bus_tag(*device, _nbtag, _tag); + downcast<device_bml3bus_card_interface &>(*device).set_bml3bus_tag(_nbtag, _tag); //************************************************************************** @@ -61,7 +61,7 @@ public: virtual void device_start() override; // inline configuration - static void static_set_bml3bus_slot(device_t &device, const char *tag, const char *slottag); + void set_bml3bus_slot(const char *tag, const char *slottag) { m_bml3bus_tag = tag; m_bml3bus_slottag = slottag; } protected: bml3bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -83,10 +83,10 @@ public: bml3bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_cputag(device_t &device, const char *tag); - template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<bml3bus_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<bml3bus_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_firq_callback(device_t &device, Object &&cb) { return downcast<bml3bus_device &>(device).m_out_firq_cb.set_callback(std::forward<Object>(cb)); } + void set_cputag(const char *tag) { m_maincpu.set_tag(tag); } + template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_firq_callback(Object &&cb) { return m_out_firq_cb.set_callback(std::forward<Object>(cb)); } void add_bml3bus_card(int slot, device_bml3bus_card_interface *card); device_bml3bus_card_interface *get_bml3bus_card(int slot); @@ -145,7 +145,7 @@ public: void lower_slot_firq() { m_bml3bus->set_firq_line(CLEAR_LINE); } // inline configuration - static void static_set_bml3bus_tag(device_t &device, const char *tag, const char *slottag); + void set_bml3bus_tag(const char *tag, const char *slottag) { m_bml3bus_tag = tag; m_bml3bus_slottag = slottag; } protected: device_bml3bus_card_interface(const machine_config &mconfig, device_t &device); diff --git a/src/devices/bus/c64/exp.h b/src/devices/bus/c64/exp.h index 655c619c139..46c4101aabf 100644 --- a/src/devices/bus/c64/exp.h +++ b/src/devices/bus/c64/exp.h @@ -68,22 +68,22 @@ #define MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACK(_write) \ - devcb = &c64_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c64_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_C64_EXPANSION_SLOT_NMI_CALLBACK(_write) \ - devcb = &c64_expansion_slot_device::set_nmi_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c64_expansion_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write); #define MCFG_C64_EXPANSION_SLOT_RESET_CALLBACK(_write) \ - devcb = &c64_expansion_slot_device::set_reset_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c64_expansion_slot_device &>(*device).set_reset_wr_callback(DEVCB_##_write); #define MCFG_C64_EXPANSION_SLOT_CD_INPUT_CALLBACK(_read) \ - devcb = &c64_expansion_slot_device::set_cd_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<c64_expansion_slot_device &>(*device).set_cd_rd_callback(DEVCB_##_read); #define MCFG_C64_EXPANSION_SLOT_CD_OUTPUT_CALLBACK(_write) \ - devcb = &c64_expansion_slot_device::set_cd_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c64_expansion_slot_device &>(*device).set_cd_wr_callback(DEVCB_##_write); #define MCFG_C64_EXPANSION_SLOT_DMA_CALLBACK(_write) \ - devcb = &c64_expansion_slot_device::set_dma_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c64_expansion_slot_device &>(*device).set_dma_wr_callback(DEVCB_##_write); @@ -103,12 +103,12 @@ public: // construction/destruction c64_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_reset_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_reset.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cd_rd_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_read_dma_cd.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cd_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_dma_cd.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_dma.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_reset_wr_callback(Object &&cb) { return m_write_reset.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cd_rd_callback(Object &&cb) { return m_read_dma_cd.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cd_wr_callback(Object &&cb) { return m_write_dma_cd.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_wr_callback(Object &&cb) { return m_write_dma.set_callback(std::forward<Object>(cb)); } // computer interface uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2); diff --git a/src/devices/bus/cbm2/user.h b/src/devices/bus/cbm2/user.h index 9c764d7315b..3802879e822 100644 --- a/src/devices/bus/cbm2/user.h +++ b/src/devices/bus/cbm2/user.h @@ -48,16 +48,16 @@ #define MCFG_CBM2_USER_PORT_IRQ_CALLBACK(_write) \ - devcb = &cbm2_user_port_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cbm2_user_port_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_CBM2_USER_PORT_SP_CALLBACK(_write) \ - devcb = &cbm2_user_port_device::set_sp_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cbm2_user_port_device &>(*device).set_sp_wr_callback(DEVCB_##_write); #define MCFG_CBM2_USER_PORT_CNT_CALLBACK(_write) \ - devcb = &cbm2_user_port_device::set_cnt_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cbm2_user_port_device &>(*device).set_cnt_wr_callback(DEVCB_##_write); #define MCFG_CBM2_USER_PORT_FLAG_CALLBACK(_write) \ - devcb = &cbm2_user_port_device::set_flag_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cbm2_user_port_device &>(*device).set_flag_wr_callback(DEVCB_##_write); @@ -105,10 +105,10 @@ public: // construction/destruction cbm2_user_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sp_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_sp.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cnt_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_cnt.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_flag_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_flag.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sp_wr_callback(Object &&cb) { return m_write_sp.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cnt_wr_callback(Object &&cb) { return m_write_cnt.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_flag_wr_callback(Object &&cb) { return m_write_flag.set_callback(std::forward<Object>(cb)); } // computer interface DECLARE_READ8_MEMBER( d1_r ) { uint8_t data = 0xff; if (m_card != nullptr) data = m_card->cbm2_d1_r(space, offset); return data; } diff --git a/src/devices/bus/centronics/ctronics.h b/src/devices/bus/centronics/ctronics.h index 62c1cf5a94e..5d8a24d5793 100644 --- a/src/devices/bus/centronics/ctronics.h +++ b/src/devices/bus/centronics/ctronics.h @@ -19,55 +19,55 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_CENTRONICS_STROBE_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_strobe_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_strobe_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA0_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_data0_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_data0_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA1_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_data1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_data1_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA2_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_data2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_data2_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA3_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_data3_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_data3_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA4_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_data4_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_data4_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA5_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_data5_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_data5_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA6_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_data6_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_data6_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA7_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_data7_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_data7_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_ACK_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_ack_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_ack_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_BUSY_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_busy_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_busy_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_PERROR_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_perror_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_perror_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_SELECT_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_select_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_select_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_AUTOFD_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_autofd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_autofd_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_FAULT_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_fault_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_fault_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_INIT_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_init_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_init_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_SELECT_IN_HANDLER(_devcb) \ - devcb = ¢ronics_device::set_select_in_handler(*device, DEVCB_##_devcb); + devcb = &downcast<centronics_device &>(*device).set_select_in_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_OUTPUT_LATCH_ADD(_tag, _centronics_tag) \ MCFG_DEVICE_ADD(_tag, OUTPUT_LATCH, 0) \ @@ -102,23 +102,23 @@ class centronics_device : public device_t, public: centronics_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_strobe_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_strobe_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data0_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data0_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data1_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data2_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data2_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data3_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data3_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data4_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data4_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data5_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data5_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data6_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data6_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data7_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data7_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ack_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_ack_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_busy_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_busy_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_perror_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_perror_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_select_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_select_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_autofd_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_autofd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_fault_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_fault_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_init_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_init_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_select_in_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_select_in_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_strobe_handler(Object &&cb) { return m_strobe_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data0_handler(Object &&cb) { return m_data0_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data1_handler(Object &&cb) { return m_data1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data2_handler(Object &&cb) { return m_data2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data3_handler(Object &&cb) { return m_data3_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data4_handler(Object &&cb) { return m_data4_handler.set_callback(std::forward<Object>(cb)); } + 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)); } + template <class Object> devcb_base &set_ack_handler(Object &&cb) { return m_ack_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_busy_handler(Object &&cb) { return m_busy_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_perror_handler(Object &&cb) { return m_perror_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_select_handler(Object &&cb) { return m_select_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_autofd_handler(Object &&cb) { return m_autofd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_fault_handler(Object &&cb) { return m_fault_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_init_handler(Object &&cb) { return m_init_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_select_in_handler(Object &&cb) { return m_select_in_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( write_strobe ); DECLARE_WRITE_LINE_MEMBER( write_data0 ); diff --git a/src/devices/bus/cgenie/expansion/expansion.h b/src/devices/bus/cgenie/expansion/expansion.h index 6c752efb331..cc7a6b04828 100644 --- a/src/devices/bus/cgenie/expansion/expansion.h +++ b/src/devices/bus/cgenie/expansion/expansion.h @@ -50,13 +50,13 @@ MCFG_DEVICE_SLOT_INTERFACE(cg_exp_slot_carts, nullptr, false) #define MCFG_CG_EXP_SLOT_INT_HANDLER(_devcb) \ - devcb = &cg_exp_slot_device::set_int_handler(*device, DEVCB_##_devcb); + devcb = &downcast<cg_exp_slot_device &>(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_CG_EXP_SLOT_NMI_HANDLER(_devcb) \ - devcb = &cg_exp_slot_device::set_nmi_handler(*device, DEVCB_##_devcb); + devcb = &downcast<cg_exp_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb); #define MCFG_CG_EXP_SLOT_RESET_HANDLER(_devcb) \ - devcb = &cg_exp_slot_device::set_reset_handler(*device, DEVCB_##_devcb); + devcb = &downcast<cg_exp_slot_device &>(*device).set_reset_handler(DEVCB_##_devcb); //************************************************************************** @@ -76,14 +76,9 @@ public: void set_io_space(address_space *io); // callbacks - template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) - { return downcast<cg_exp_slot_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb) - { return downcast<cg_exp_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb) - { return downcast<cg_exp_slot_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_reset_handler(Object &&cb) { return m_reset_handler.set_callback(std::forward<Object>(cb)); } // called from cart device DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); } diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h index 395ea2471dd..440630e05a3 100644 --- a/src/devices/bus/coco/cococart.h +++ b/src/devices/bus/coco/cococart.h @@ -26,13 +26,13 @@ typedef delegate<void (uint8_t *)> cococart_base_update_delegate; #define MCFG_COCO_CARTRIDGE_CART_CB(_devcb) \ - devcb = &cococart_slot_device::static_set_cart_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cococart_slot_device &>(*device).set_cart_callback(DEVCB_##_devcb); #define MCFG_COCO_CARTRIDGE_NMI_CB(_devcb) \ - devcb = &cococart_slot_device::static_set_nmi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cococart_slot_device &>(*device).set_nmi_callback(DEVCB_##_devcb); #define MCFG_COCO_CARTRIDGE_HALT_CB(_devcb) \ - devcb = &cococart_slot_device::static_set_halt_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cococart_slot_device &>(*device).set_halt_callback(DEVCB_##_devcb); // ======================> cococart_slot_device @@ -63,9 +63,9 @@ public: // construction/destruction cococart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &static_set_cart_callback(device_t &device, Object &&cb) { return downcast<cococart_slot_device &>(device).m_cart_callback.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_nmi_callback(device_t &device, Object &&cb) { return downcast<cococart_slot_device &>(device).m_nmi_callback.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_halt_callback(device_t &device, Object &&cb) { return downcast<cococart_slot_device &>(device).m_halt_callback.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cart_callback(Object &&cb) { return m_cart_callback.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_callback(Object &&cb) { return m_nmi_callback.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_halt_callback(Object &&cb) { return m_halt_callback.set_callback(std::forward<Object>(cb)); } // device-level overrides virtual void device_start() override; diff --git a/src/devices/bus/coleco/ctrl.h b/src/devices/bus/coleco/ctrl.h index df39b41944c..75d1610e698 100644 --- a/src/devices/bus/coleco/ctrl.h +++ b/src/devices/bus/coleco/ctrl.h @@ -27,7 +27,7 @@ #define MCFG_COLECOVISION_CONTROL_PORT_IRQ_CALLBACK(_write) \ - devcb = &colecovision_control_port_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<colecovision_control_port_device &>(*device).set_irq_wr_callback(DEVCB_##_write); @@ -68,7 +68,7 @@ public: colecovision_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<colecovision_control_port_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } // computer interface uint8_t read() { uint8_t data = 0xff; if (exists()) data = m_device->joy_r(); return data; } diff --git a/src/devices/bus/comx35/exp.h b/src/devices/bus/comx35/exp.h index c52b7eee849..fb5831e31fe 100644 --- a/src/devices/bus/comx35/exp.h +++ b/src/devices/bus/comx35/exp.h @@ -57,7 +57,7 @@ #define MCFG_COMX_EXPANSION_SLOT_IRQ_CALLBACK(_write) \ - devcb = &comx_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<comx_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write); @@ -76,7 +76,7 @@ public: // construction/destruction comx_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<comx_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } uint8_t mrd_r(address_space &space, offs_t offset, int *extrom); void mwr_w(address_space &space, offs_t offset, uint8_t data); diff --git a/src/devices/bus/cpc/cpcexp.h b/src/devices/bus/cpc/cpcexp.h index 0f99ea051aa..0633ffd4c6b 100644 --- a/src/devices/bus/cpc/cpcexp.h +++ b/src/devices/bus/cpc/cpcexp.h @@ -60,19 +60,19 @@ //************************************************************************** #define MCFG_CPC_EXPANSION_SLOT_OUT_IRQ_CB(_devcb) \ - devcb = &cpc_expansion_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_CPC_EXPANSION_SLOT_OUT_NMI_CB(_devcb) \ - devcb = &cpc_expansion_slot_device::set_out_nmi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_CPC_EXPANSION_SLOT_OUT_RESET_CB(_devcb) \ - devcb = &cpc_expansion_slot_device::set_out_reset_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_reset_callback(DEVCB_##_devcb); #define MCFG_CPC_EXPANSION_SLOT_OUT_ROMDIS_CB(_devcb) \ - devcb = &cpc_expansion_slot_device::set_out_romdis_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_romdis_callback(DEVCB_##_devcb); #define MCFG_CPC_EXPANSION_SLOT_ROM_SELECT(_devcb) \ - devcb = &cpc_expansion_slot_device::set_out_rom_select_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_rom_select_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -121,11 +121,11 @@ public: cpc_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~cpc_expansion_slot_device(); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_reset_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_reset_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_romdis_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_romdis_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rom_select_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_rom_select.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_reset_callback(Object &&cb) { return m_out_reset_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_romdis_callback(Object &&cb) { return m_out_romdis_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rom_select_callback(Object &&cb) { return m_out_rom_select.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( irq_w ); DECLARE_WRITE_LINE_MEMBER( nmi_w ); diff --git a/src/devices/bus/dmv/dmvbus.h b/src/devices/bus/dmv/dmvbus.h index 62a1d7254b9..2c683ef7a31 100644 --- a/src/devices/bus/dmv/dmvbus.h +++ b/src/devices/bus/dmv/dmvbus.h @@ -62,11 +62,11 @@ public: dmvcart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~dmvcart_slot_device(); - template <class Object> static devcb_base &set_prog_read_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_prog_read_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_prog_write_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_prog_write_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_thold_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_out_thold_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_prog_read_callback(Object &&cb) { return m_prog_read_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_prog_write_callback(Object &&cb) { return m_prog_write_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_thold_callback(Object &&cb) { return m_out_thold_cb.set_callback(std::forward<Object>(cb)); } // device-level overrides virtual void device_start() override; @@ -111,16 +111,16 @@ DECLARE_DEVICE_TYPE(DMVCART_SLOT, dmvcart_slot_device) ***************************************************************************/ #define MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(_read_devcb, _write_devcb) \ - devcb = &dmvcart_slot_device::set_prog_read_callback(*device, DEVCB_##_read_devcb); \ - devcb = &dmvcart_slot_device::set_prog_write_callback(*device, DEVCB_##_write_devcb); + devcb = &downcast<dmvcart_slot_device &>(*device).set_prog_read_callback(DEVCB_##_read_devcb); \ + devcb = &downcast<dmvcart_slot_device &>(*device).set_prog_write_callback(DEVCB_##_write_devcb); #define MCFG_DMVCART_SLOT_OUT_INT_CB(_devcb) \ - devcb = &dmvcart_slot_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<dmvcart_slot_device &>(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_DMVCART_SLOT_OUT_IRQ_CB(_devcb) \ - devcb = &dmvcart_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<dmvcart_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_DMVCART_SLOT_OUT_THOLD_CB(_devcb) \ - devcb = &dmvcart_slot_device::set_out_thold_callback(*device, DEVCB_##_devcb); + devcb = &downcast<dmvcart_slot_device &>(*device).set_out_thold_callback(DEVCB_##_devcb); #endif // MAME_BUS_DMV_DMVBUS_H diff --git a/src/devices/bus/ecbbus/ecbbus.cpp b/src/devices/bus/ecbbus/ecbbus.cpp index 7649dea491a..625f2e46086 100644 --- a/src/devices/bus/ecbbus/ecbbus.cpp +++ b/src/devices/bus/ecbbus/ecbbus.cpp @@ -36,18 +36,6 @@ ecbbus_slot_device::ecbbus_slot_device(const machine_config &mconfig, const char //------------------------------------------------- -// static_set_ecbbus_slot - -//------------------------------------------------- - -void ecbbus_slot_device::static_set_ecbbus_slot(device_t &device, const char *tag, int num) -{ - ecbbus_slot_device &ecbbus_card = dynamic_cast<ecbbus_slot_device &>(device); - ecbbus_card.m_bus_tag = tag; - ecbbus_card.m_bus_num = num; -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/bus/ecbbus/ecbbus.h b/src/devices/bus/ecbbus/ecbbus.h index 9a4943e0a19..442486c052c 100644 --- a/src/devices/bus/ecbbus/ecbbus.h +++ b/src/devices/bus/ecbbus/ecbbus.h @@ -66,14 +66,14 @@ #define MCFG_ECBBUS_SLOT_ADD(_num, _tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, ECBBUS_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - ecbbus_slot_device::static_set_ecbbus_slot(*device, ECBBUS_TAG, _num); + downcast<ecbbus_slot_device &>(*device).set_ecbbus_slot(ECBBUS_TAG, _num); #define MCFG_ECBBUS_IRQ_CALLBACK(_write) \ - devcb = &ecbbus_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<ecbbus_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_ECBBUS_NMI_CALLBACK(_write) \ - devcb = &ecbbus_device::set_nmi_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<ecbbus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write); @@ -96,7 +96,7 @@ public: virtual void device_start() override; // inline configuration - static void static_set_ecbbus_slot(device_t &device, const char *tag, int num); + void set_ecbbus_slot(const char *tag, int num) { m_bus_tag = tag; m_bus_num = num; } private: // configuration @@ -123,8 +123,8 @@ public: // construction/destruction ecbbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<ecbbus_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<ecbbus_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); } void add_card(device_ecbbus_card_interface *card, int pos); diff --git a/src/devices/bus/econet/econet.cpp b/src/devices/bus/econet/econet.cpp index e4acfe3c3d6..2b9b961af88 100644 --- a/src/devices/bus/econet/econet.cpp +++ b/src/devices/bus/econet/econet.cpp @@ -63,17 +63,6 @@ econet_slot_device::econet_slot_device(const machine_config &mconfig, const char //------------------------------------------------- -// static_set_slot - -//------------------------------------------------- - -void econet_slot_device::static_set_slot(device_t &device, int address) -{ - econet_slot_device &econet_card = dynamic_cast<econet_slot_device &>(device); - econet_card.m_address = address; -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/bus/econet/econet.h b/src/devices/bus/econet/econet.h index e02a5b74e4a..9bed6727da0 100644 --- a/src/devices/bus/econet/econet.h +++ b/src/devices/bus/econet/econet.h @@ -32,14 +32,14 @@ #define MCFG_ECONET_SLOT_ADD(_tag, _num, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, ECONET_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - econet_slot_device::static_set_slot(*device, _num); + downcast<econet_slot_device &>(*device).set_slot(_num); #define MCFG_ECONET_CLK_CALLBACK(_write) \ - devcb = &econet_device::set_clk_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<econet_device &>(*device).set_clk_wr_callback(DEVCB_##_write); #define MCFG_ECONET_DATA_CALLBACK(_write) \ - devcb = &econet_device::set_data_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<econet_device &>(*device).set_data_wr_callback(DEVCB_##_write); @@ -57,8 +57,8 @@ public: // construction/destruction econet_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_clk_wr_callback(device_t &device, Object &&cb) { return downcast<econet_device &>(device).m_write_clk.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data_wr_callback(device_t &device, Object &&cb) { return downcast<econet_device &>(device).m_write_data.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_clk_wr_callback(Object &&cb) { return m_write_clk.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data_wr_callback(Object &&cb) { return m_write_data.set_callback(std::forward<Object>(cb)); } void add_device(device_t *target, int address); @@ -121,7 +121,7 @@ public: virtual void device_start() override; // inline configuration - static void static_set_slot(device_t &device, int address); + void set_slot(int address) { m_address = address; } private: // configuration diff --git a/src/devices/bus/einstein/pipe/pipe.h b/src/devices/bus/einstein/pipe/pipe.h index 02be494cb2e..222ebe18e0c 100644 --- a/src/devices/bus/einstein/pipe/pipe.h +++ b/src/devices/bus/einstein/pipe/pipe.h @@ -54,13 +54,13 @@ MCFG_DEVICE_SLOT_INTERFACE(tatung_pipe_cards, nullptr, false) #define MCFG_TATUNG_PIPE_INT_HANDLER(_devcb) \ - devcb = &tatung_pipe_device::set_int_handler(*device, DEVCB_##_devcb); + devcb = &downcast<tatung_pipe_device &>(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_TATUNG_PIPE_NMI_HANDLER(_devcb) \ - devcb = &tatung_pipe_device::set_nmi_handler(*device, DEVCB_##_devcb); + devcb = &downcast<tatung_pipe_device &>(*device).set_nmi_handler(DEVCB_##_devcb); #define MCFG_TATUNG_PIPE_RESET_HANDLER(_devcb) \ - devcb = &tatung_pipe_device::set_reset_handler(*device, DEVCB_##_devcb); + devcb = &downcast<tatung_pipe_device &>(*device).set_reset_handler(DEVCB_##_devcb); //************************************************************************** @@ -81,14 +81,9 @@ public: void set_io_space(address_space *io); // callbacks - template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) - { return downcast<tatung_pipe_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb) - { return downcast<tatung_pipe_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb) - { return downcast<tatung_pipe_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_reset_handler(Object &&cb) { return m_reset_handler.set_callback(std::forward<Object>(cb)); } // called from host DECLARE_WRITE_LINE_MEMBER( host_int_w ); diff --git a/src/devices/bus/einstein/userport/userport.h b/src/devices/bus/einstein/userport/userport.h index 59301644aa3..ea00d229b08 100644 --- a/src/devices/bus/einstein/userport/userport.h +++ b/src/devices/bus/einstein/userport/userport.h @@ -32,7 +32,7 @@ MCFG_DEVICE_SLOT_INTERFACE(einstein_userport_cards, nullptr, false) #define MCFG_EINSTEIN_USERPORT_BSTB_HANDLER(_devcb) \ - devcb = &einstein_userport_device::set_bstb_handler(*device, DEVCB_##_devcb); + devcb = &downcast<einstein_userport_device &>(*device).set_bstb_handler(DEVCB_##_devcb); //************************************************************************** @@ -49,8 +49,7 @@ public: virtual ~einstein_userport_device(); // callbacks - template <class Object> static devcb_base &set_bstb_handler(device_t &device, Object &&cb) - { return downcast<einstein_userport_device &>(device).m_bstb_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_bstb_handler(Object &&cb) { return m_bstb_handler.set_callback(std::forward<Object>(cb)); } // called from card device DECLARE_WRITE_LINE_MEMBER( bstb_w ) { m_bstb_handler(state); } diff --git a/src/devices/bus/electron/cart/slot.h b/src/devices/bus/electron/cart/slot.h index 06d573ccbd1..533c4bb4555 100644 --- a/src/devices/bus/electron/cart/slot.h +++ b/src/devices/bus/electron/cart/slot.h @@ -110,10 +110,10 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_ELECTRON_CARTSLOT_IRQ_HANDLER(_devcb) \ - devcb = &electron_cartslot_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<electron_cartslot_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_ELECTRON_CARTSLOT_NMI_HANDLER(_devcb) \ - devcb = &electron_cartslot_device::set_nmi_handler(*device, DEVCB_##_devcb); + devcb = &downcast<electron_cartslot_device &>(*device).set_nmi_handler(DEVCB_##_devcb); //************************************************************************** @@ -134,11 +134,8 @@ public: virtual ~electron_cartslot_device(); // callbacks - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) - { return downcast<electron_cartslot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb) - { return downcast<electron_cartslot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); } + 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_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); } // device-level overrides virtual void device_start() override; diff --git a/src/devices/bus/electron/exp.h b/src/devices/bus/electron/exp.h index f03ced0bd16..db6d7c46248 100644 --- a/src/devices/bus/electron/exp.h +++ b/src/devices/bus/electron/exp.h @@ -111,10 +111,10 @@ AC RETURNS (pins 3,4) - adaptor. A total of 6W may be drawn from these lines as MCFG_ELECTRON_EXPANSION_SLOT_NMI_HANDLER(DEVWRITELINE(DEVICE_SELF_OWNER, electron_expansion_slot_device, nmi_w)) #define MCFG_ELECTRON_EXPANSION_SLOT_IRQ_HANDLER(_devcb) \ - devcb = &electron_expansion_slot_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<electron_expansion_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_ELECTRON_EXPANSION_SLOT_NMI_HANDLER(_devcb) \ - devcb = &electron_expansion_slot_device::set_nmi_handler(*device, DEVCB_##_devcb); + devcb = &downcast<electron_expansion_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb); //************************************************************************** @@ -133,11 +133,8 @@ public: virtual ~electron_expansion_slot_device(); // callbacks - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) - { return downcast<electron_expansion_slot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb) - { return downcast<electron_expansion_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); } + 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_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); } uint8_t expbus_r(address_space &space, offs_t offset, uint8_t data); void expbus_w(address_space &space, offs_t offset, uint8_t data); diff --git a/src/devices/bus/ep64/exp.h b/src/devices/bus/ep64/exp.h index 5655e6c0e64..f870455996c 100644 --- a/src/devices/bus/ep64/exp.h +++ b/src/devices/bus/ep64/exp.h @@ -68,16 +68,16 @@ MCFG_DEVICE_SLOT_INTERFACE(ep64_expansion_bus_cards, _def_slot, false) #define MCFG_EP64_EXPANSION_BUS_SLOT_DAVE(_tag) \ - ep64_expansion_bus_slot_device::static_set_dave_tag(*device, "^" _tag); + downcast<ep64_expansion_bus_slot_device &>(*device).set_dave_tag("^" _tag); #define MCFG_EP64_EXPANSION_BUS_SLOT_IRQ_CALLBACK(_write) \ - devcb = &ep64_expansion_bus_slot_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<ep64_expansion_bus_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(_write) \ - devcb = &ep64_expansion_bus_slot_device::set_nmi_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<ep64_expansion_bus_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write); #define MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(_write) \ - devcb = &ep64_expansion_bus_slot_device::set_wait_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<ep64_expansion_bus_slot_device &>(*device).set_wait_wr_callback(DEVCB_##_write); @@ -98,10 +98,10 @@ public: // construction/destruction ep64_expansion_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_dave_tag(device_t &device, const char* tag) { downcast<ep64_expansion_bus_slot_device &>(device).m_dave.set_tag(tag); } - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_wait_wr_callback(device_t &device, Object &&cb) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_wait.set_callback(std::forward<Object>(cb)); } + void set_dave_tag(const char* tag) { m_dave.set_tag(tag); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_wait_wr_callback(Object &&cb) { return m_write_wait.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_write_irq(state); } DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_write_nmi(state); } diff --git a/src/devices/bus/gamegear/ggext.h b/src/devices/bus/gamegear/ggext.h index 64ac953b3f4..d89323000b6 100644 --- a/src/devices/bus/gamegear/ggext.h +++ b/src/devices/bus/gamegear/ggext.h @@ -30,11 +30,11 @@ #define MCFG_GG_EXT_PORT_TH_INPUT_HANDLER(_devcb) \ - devcb = &gg_ext_port_device::set_th_input_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gg_ext_port_device &>(*device).set_th_input_handler(DEVCB_##_devcb); #define MCFG_GG_EXT_PORT_PIXEL_HANDLER(_devcb) \ - devcb = &gg_ext_port_device::set_pixel_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gg_ext_port_device &>(*device).set_pixel_handler(DEVCB_##_devcb); @@ -55,9 +55,9 @@ public: virtual ~gg_ext_port_device(); // static configuration helpers - template <class Object> static devcb_base &set_th_input_handler(device_t &device, Object &&cb) { return downcast<gg_ext_port_device &>(device).m_th_pin_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_th_input_handler(Object &&cb) { return m_th_pin_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pixel_handler(device_t &device, Object &&cb) { return downcast<gg_ext_port_device &>(device).m_pixel_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pixel_handler(Object &&cb) { return m_pixel_handler.set_callback(std::forward<Object>(cb)); } // Currently, only the support for SMS Controller Adaptor is emulated, // for when SMS Compatibility mode is enabled. In that mode, the 10 pins diff --git a/src/devices/bus/generic/slot.h b/src/devices/bus/generic/slot.h index fada3158273..154be4db5ae 100644 --- a/src/devices/bus/generic/slot.h +++ b/src/devices/bus/generic/slot.h @@ -86,10 +86,10 @@ enum static_cast<generic_slot_device *>(device)->set_extensions(_ext); #define MCFG_GENERIC_LOAD(_class, _method) \ - generic_slot_device::static_set_device_load(*device, device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this)); + downcast<generic_slot_device &>(*device).set_device_load(device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this)); #define MCFG_GENERIC_UNLOAD(_class, _method) \ - generic_slot_device::static_set_device_unload(*device, device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this)); + downcast<generic_slot_device &>(*device).set_device_unload(device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this)); @@ -104,8 +104,8 @@ public: generic_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); virtual ~generic_slot_device(); - static void static_set_device_load(device_t &device, device_image_load_delegate callback) { downcast<generic_slot_device &>(device).m_device_image_load = callback; } - static void static_set_device_unload(device_t &device, device_image_func_delegate callback) { downcast<generic_slot_device &>(device).m_device_image_unload = callback; } + template <typename Object> void set_device_load(Object &&cb) { m_device_image_load = std::forward<Object>(cb); } + template <typename Object> void set_device_unload(Object &&cb) { m_device_image_unload = std::forward<Object>(cb); } void set_interface(const char * interface) { m_interface = interface; } void set_default_card(const char * def) { m_default_card = def; } diff --git a/src/devices/bus/hp80_io/hp80_io.h b/src/devices/bus/hp80_io/hp80_io.h index 64430f8b6b4..96cc40f562e 100644 --- a/src/devices/bus/hp80_io/hp80_io.h +++ b/src/devices/bus/hp80_io/hp80_io.h @@ -16,13 +16,13 @@ #define MCFG_HP80_IO_SLOT_ADD(_tag , _idx) \ MCFG_DEVICE_ADD(_tag, HP80_IO_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(hp80_io_slot_devices, nullptr, false) \ - hp80_io_slot_device::set_slot_no(*device , _idx); + downcast<hp80_io_slot_device &>(*device).set_slot_no(_idx); #define MCFG_HP80_IO_IRL_CB(_devcb) \ - devcb = &hp80_io_slot_device::set_irl_cb_func(*device , DEVCB_##_devcb); + devcb = &downcast<hp80_io_slot_device &>(*device).set_irl_cb_func(DEVCB_##_devcb); #define MCFG_HP80_IO_HALT_CB(_devcb) \ - devcb = &hp80_io_slot_device::set_halt_cb_func(*device , DEVCB_##_devcb); + devcb = &downcast<hp80_io_slot_device &>(*device).set_halt_cb_func(DEVCB_##_devcb); #define HP80_IO_FIRST_SC 3 // Lowest SC used by I/O cards @@ -46,15 +46,15 @@ public: hp80_io_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~hp80_io_slot_device(); - // static configuration helpers - static void set_slot_no(device_t &device, unsigned slot_no) { downcast<hp80_io_slot_device &>(device).m_slot_no = slot_no; } + // configuration helpers + void set_slot_no(unsigned slot_no) { m_slot_no = slot_no; } // device-level overrides virtual void device_start() override; // Callback setups - template <class Object> static devcb_base &set_irl_cb_func(device_t &device, Object &&cb) { return downcast<hp80_io_slot_device &>(device).m_irl_cb_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_halt_cb_func(device_t &device, Object &&cb) { return downcast<hp80_io_slot_device &>(device).m_halt_cb_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irl_cb_func(Object &&cb) { return m_irl_cb_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_halt_cb_func(Object &&cb) { return m_halt_cb_func.set_callback(std::forward<Object>(cb)); } // SC getter uint8_t get_sc() const; diff --git a/src/devices/bus/hp9845_io/hp9845_io.h b/src/devices/bus/hp9845_io/hp9845_io.h index 2c960a405de..d2ee55b6d39 100644 --- a/src/devices/bus/hp9845_io/hp9845_io.h +++ b/src/devices/bus/hp9845_io/hp9845_io.h @@ -19,13 +19,13 @@ MCFG_DEVICE_SLOT_INTERFACE(hp9845_io_slot_devices, nullptr, false) #define MCFG_HP9845_IO_IRQ_CB(_devcb) \ - devcb = &hp9845_io_slot_device::set_irq_cb_func(*device , DEVCB_##_devcb); + devcb = &downcast<hp9845_io_slot_device &>(*device).set_irq_cb_func(DEVCB_##_devcb); #define MCFG_HP9845_IO_STS_CB(_devcb) \ - devcb = &hp9845_io_slot_device::set_sts_cb_func(*device , DEVCB_##_devcb); + devcb = &downcast<hp9845_io_slot_device &>(*device).set_sts_cb_func(DEVCB_##_devcb); #define MCFG_HP9845_IO_FLG_CB(_devcb) \ - devcb = &hp9845_io_slot_device::set_flg_cb_func(*device , DEVCB_##_devcb); + devcb = &downcast<hp9845_io_slot_device &>(*device).set_flg_cb_func(DEVCB_##_devcb); #define HP9845_IO_FIRST_SC 1 // Lowest SC used by I/O cards @@ -57,9 +57,9 @@ public: virtual void device_start() override; // Callback setups - template <class Object> static devcb_base &set_irq_cb_func(device_t &device, Object &&cb) { return downcast<hp9845_io_slot_device &>(device).m_irq_cb_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sts_cb_func(device_t &device, Object &&cb) { return downcast<hp9845_io_slot_device &>(device).m_sts_cb_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_flg_cb_func(device_t &device, Object &&cb) { return downcast<hp9845_io_slot_device &>(device).m_flg_cb_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_cb_func(Object &&cb) { return m_irq_cb_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sts_cb_func(Object &&cb) { return m_sts_cb_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_flg_cb_func(Object &&cb) { return m_flg_cb_func.set_callback(std::forward<Object>(cb)); } // irq/sts/flg signal handlers void irq_w(uint8_t sc , int state); diff --git a/src/devices/bus/hp_dio/hp_dio.cpp b/src/devices/bus/hp_dio/hp_dio.cpp index 6948beed7e9..76e7f58b545 100644 --- a/src/devices/bus/hp_dio/hp_dio.cpp +++ b/src/devices/bus/hp_dio/hp_dio.cpp @@ -34,13 +34,6 @@ dio16_slot_device::dio16_slot_device(const machine_config &mconfig, device_type { } -void dio16_slot_device::static_set_dio16_slot(device_t &device, device_t *owner, const char *dio_tag) -{ - dio16_slot_device &dio_card = dynamic_cast<dio16_slot_device &>(device); - dio_card.m_owner = owner; - dio_card.m_dio_tag = dio_tag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -55,7 +48,7 @@ void dio16_slot_device::device_start() fatalerror("DIO32 device in DIO16 slot\n"); } - if (dev) device_dio16_card_interface::static_set_diobus(*dev,m_owner->subdevice(m_dio_tag)); + if (dev) dev->set_diobus(m_owner->subdevice(m_dio_tag)); } @@ -78,13 +71,6 @@ dio32_slot_device::dio32_slot_device(const machine_config &mconfig, const char * { } -void dio32_slot_device::static_set_dio32_slot(device_t &device, device_t *owner, const char *dio_tag) -{ - dio32_slot_device &dio_card = dynamic_cast<dio32_slot_device &>(device); - dio_card.m_owner = owner; - dio_card.m_dio_tag = dio_tag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -92,7 +78,7 @@ void dio32_slot_device::static_set_dio32_slot(device_t &device, device_t *owner, void dio32_slot_device::device_start() { device_dio16_card_interface *dev = dynamic_cast<device_dio16_card_interface *>(get_card_device()); - if (dev) device_dio16_card_interface::static_set_diobus(*dev,m_owner->subdevice(m_dio_tag)); + if (dev) dev->set_diobus(m_owner->subdevice(m_dio_tag)); } @@ -102,12 +88,6 @@ void dio32_slot_device::device_start() DEFINE_DEVICE_TYPE(DIO16, dio16_device, "dio16", "16-bit DIO bus") -void dio16_device::static_set_cputag(device_t &device, const char *tag) -{ - dio16_device &dio = downcast<dio16_device &>(device); - dio.m_cputag = tag; -} - //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -230,12 +210,6 @@ device_dio16_card_interface::~device_dio16_card_interface() { } -void device_dio16_card_interface::static_set_diobus(device_t &device, device_t *dio_device) -{ - device_dio16_card_interface &dio_card = dynamic_cast<device_dio16_card_interface &>(device); - dio_card.m_dio_dev = dio_device; -} - void device_dio16_card_interface::set_dio_device() { m_dio = dynamic_cast<dio16_device *>(m_dio_dev); diff --git a/src/devices/bus/hp_dio/hp_dio.h b/src/devices/bus/hp_dio/hp_dio.h index 5e048b7360d..dd8efada7ba 100644 --- a/src/devices/bus/hp_dio/hp_dio.h +++ b/src/devices/bus/hp_dio/hp_dio.h @@ -22,29 +22,29 @@ //************************************************************************** #define MCFG_DIO16_CPU(_cputag) \ - dio16_device::static_set_cputag(*device, _cputag); + downcast<dio16_device &>(*device).set_cputag(_cputag); #define MCFG_DIO16_SLOT_ADD(_diotag, _tag, _slot_intf, _def_slot, _fixed) \ MCFG_DEVICE_ADD(_tag, DIO16_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed) \ - dio16_slot_device::static_set_dio16_slot(*device, this, _diotag); + downcast<dio16_slot_device &>(*device).set_dio16_slot(this, _diotag); #define MCFG_DIO32_CPU(_cputag) \ - dio32_device::static_set_cputag(*device, _cputag); + downcast<dio32_device &>(*device).set_cputag(_cputag); #define MCFG_DIO32_SLOT_ADD(_diotag, _tag, _slot_intf, _def_slot, _fixed) \ MCFG_DEVICE_ADD(_tag, DIO32_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed) \ - dio32_slot_device::static_set_dio32_slot(*device, this, _diotag); + downcast<dio32_slot_device &>(*device).set_dio32_slot(this, _diotag); #define MCFG_ISA_OUT_IRQ3_CB(_devcb) \ - devcb = &dio16_device::set_out_irq3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<dio16_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ4_CB(_devcb) \ - devcb = &dio16_device::set_out_irq4_callback(*device, DEVCB_##_devcb); + devcb = &downcast<dio16_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ5_CB(_devcb) \ - devcb = &dio16_device::set_out_irq5_callback(*device, DEVCB_##_devcb); + devcb = &downcast<dio16_device &>(*device).set_out_irq5_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ6_CB(_devcb) \ - devcb = &dio16_device::set_out_irq6_callback(*device, DEVCB_##_devcb); + devcb = &downcast<dio16_device &>(*device).set_out_irq6_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -63,7 +63,7 @@ public: virtual void device_start() override; // inline configuration - static void static_set_dio16_slot(device_t &device, device_t *owner, const char *dio_tag); + void set_dio16_slot(device_t *owner, const char *dio_tag) { m_owner = owner; m_dio_tag = dio_tag; } protected: dio16_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -84,11 +84,11 @@ public: // construction/destruction dio16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_cputag(device_t &device, const char *tag); - template <class Object> static devcb_base &set_out_irq3_callback(device_t &device, Object &&cb) { return downcast<dio16_device &>(device).m_out_irq3_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq4_callback(device_t &device, Object &&cb) { return downcast<dio16_device &>(device).m_out_irq4_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq5_callback(device_t &device, Object &&cb) { return downcast<dio16_device &>(device).m_out_irq5_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq6_callback(device_t &device, Object &&cb) { return downcast<dio16_device &>(device).m_out_irq6_cb.set_callback(std::forward<Object>(cb)); } + void set_cputag(const char *tag) { m_cputag = tag; } + template <class Object> devcb_base &set_out_irq3_callback(Object &&cb) { return m_out_irq3_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq4_callback(Object &&cb) { return m_out_irq4_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq5_callback(Object &&cb) { return m_out_irq5_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq6_callback(Object &&cb) { return m_out_irq6_cb.set_callback(std::forward<Object>(cb)); } void install_memory(offs_t start, offs_t end, read16_delegate rhandler, write16_delegate whandler); @@ -155,7 +155,7 @@ public: void set_dio_device(); // inline configuration - static void static_set_diobus(device_t &device, device_t *dio_device); + void set_diobus(device_t *dio_device) { m_dio_dev = dio_device; } public: device_dio16_card_interface(const machine_config &mconfig, device_t &device); @@ -178,7 +178,7 @@ public: virtual void device_start() override; // inline configuration - static void static_set_dio32_slot(device_t &device, device_t *owner, const char *dio_tag); + void set_dio32_slot(device_t *owner, const char *dio_tag) { m_owner = owner; m_dio_tag = dio_tag; } }; diff --git a/src/devices/bus/hp_hil/hp_hil.cpp b/src/devices/bus/hp_hil/hp_hil.cpp index 1e6d343f17a..d1e20ec163e 100644 --- a/src/devices/bus/hp_hil/hp_hil.cpp +++ b/src/devices/bus/hp_hil/hp_hil.cpp @@ -44,13 +44,6 @@ hp_hil_slot_device::hp_hil_slot_device(const machine_config &mconfig, const char } -void hp_hil_slot_device::static_set_hp_hil_slot(device_t &device, device_t *owner, const char *mlc_tag) -{ - hp_hil_slot_device &hp_hil = dynamic_cast<hp_hil_slot_device &>(device); - hp_hil.m_owner = owner; - hp_hil.m_mlc_tag = mlc_tag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -59,7 +52,7 @@ void hp_hil_slot_device::device_start() { device_hp_hil_interface *dev = dynamic_cast<device_hp_hil_interface *>(get_card_device()); - if (dev) device_hp_hil_interface::static_set_hp_hil_mlc(*dev,m_owner->subdevice(m_mlc_tag)); + if (dev) dev->set_hp_hil_mlc(m_owner->subdevice(m_mlc_tag)); } @@ -265,13 +258,6 @@ device_hp_hil_interface::~device_hp_hil_interface() } -void device_hp_hil_interface::static_set_hp_hil_mlc(device_t &device, device_t *mlc_device) -{ - device_hp_hil_interface &hp_hil = dynamic_cast<device_hp_hil_interface &>(device); - hp_hil.m_hp_hil_mlc_dev = mlc_device; -} - - void device_hp_hil_interface::set_hp_hil_mlc_device() { m_hp_hil_mlc = dynamic_cast<hp_hil_mlc_device *>(m_hp_hil_mlc_dev); diff --git a/src/devices/bus/hp_hil/hp_hil.h b/src/devices/bus/hp_hil/hp_hil.h index fe4e8bf9e27..f4cdbb5a771 100644 --- a/src/devices/bus/hp_hil/hp_hil.h +++ b/src/devices/bus/hp_hil/hp_hil.h @@ -82,15 +82,15 @@ //************************************************************************** #define MCFG_HP_HIL_INT_CALLBACK(_devcb) \ - devcb = &hp_hil_mlc_device::set_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hp_hil_mlc_device &>(*device).set_int_callback(DEVCB_##_devcb); #define MCFG_HP_HIL_NMI_CALLBACK(_devcb) \ - devcb = &hp_hil_mlc_device::set_nmi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hp_hil_mlc_device &>(*device).set_nmi_callback(DEVCB_##_devcb); #define MCFG_HP_HIL_SLOT_ADD(_mlc_tag, _tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, HP_HIL_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - hp_hil_slot_device::static_set_hp_hil_slot(*device, this, _mlc_tag); + downcast<hp_hil_slot_device &>(*device).set_hp_hil_slot(this, _mlc_tag); //************************************************************************** // TYPE DEFINITIONS @@ -107,7 +107,7 @@ public: virtual void device_start() override; // inline configuration - static void static_set_hp_hil_slot(device_t &device, device_t *owner, const char *mlc_tag); + void set_hp_hil_slot(device_t *owner, const char *mlc_tag) { m_owner = owner; m_mlc_tag = mlc_tag; } protected: // configuration @@ -129,8 +129,8 @@ public: hp_hil_mlc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~hp_hil_mlc_device() { m_device_list.detach_all(); } - template <class Object> static devcb_base &set_int_callback(device_t &device, Object &&cb) { return downcast<hp_hil_mlc_device &>(device).int_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nmi_callback(device_t &device, Object &&cb) { return downcast<hp_hil_mlc_device &>(device).nmi_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_callback(Object &&cb) { return int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_callback(Object &&cb) { return nmi_cb.set_callback(std::forward<Object>(cb)); } void add_hp_hil_device(device_hp_hil_interface *device); bool get_int(void) { return m_r3 & 1; } @@ -176,7 +176,7 @@ public: void set_hp_hil_mlc_device(); // inline configuration - static void static_set_hp_hil_mlc(device_t &device, device_t *mlc_device); + void set_hp_hil_mlc(device_t *mlc_device) { m_hp_hil_mlc_dev = mlc_device; } virtual bool hil_write(uint16_t *data) { return true; }; int device_id() { return m_device_id; }; diff --git a/src/devices/bus/ieee488/c2040fdc.h b/src/devices/bus/ieee488/c2040fdc.h index bbbd799182c..1c552c1c508 100644 --- a/src/devices/bus/ieee488/c2040fdc.h +++ b/src/devices/bus/ieee488/c2040fdc.h @@ -24,13 +24,13 @@ //************************************************************************** #define MCFG_C2040_SYNC_CALLBACK(_write) \ - devcb = &c2040_fdc_device::set_sync_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c2040_fdc_device &>(*device).set_sync_wr_callback(DEVCB_##_write); #define MCFG_C2040_READY_CALLBACK(_write) \ - devcb = &c2040_fdc_device::set_ready_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c2040_fdc_device &>(*device).set_ready_wr_callback(DEVCB_##_write); #define MCFG_C2040_ERROR_CALLBACK(_write) \ - devcb = &c2040_fdc_device::set_error_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c2040_fdc_device &>(*device).set_error_wr_callback(DEVCB_##_write); @@ -46,9 +46,9 @@ public: // construction/destruction c2040_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_sync_wr_callback(device_t &device, Object &&cb) { return downcast<c2040_fdc_device &>(device).m_write_sync.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ready_wr_callback(device_t &device, Object &&cb) { return downcast<c2040_fdc_device &>(device).m_write_ready.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_error_wr_callback(device_t &device, Object &&cb) { return downcast<c2040_fdc_device &>(device).m_write_error.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sync_wr_callback(Object &&cb) { return m_write_sync.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ready_wr_callback(Object &&cb) { return m_write_ready.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_error_wr_callback(Object &&cb) { return m_write_error.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/bus/ieee488/c8050fdc.h b/src/devices/bus/ieee488/c8050fdc.h index 733100327ba..9bae3891284 100644 --- a/src/devices/bus/ieee488/c8050fdc.h +++ b/src/devices/bus/ieee488/c8050fdc.h @@ -23,16 +23,16 @@ //************************************************************************** #define MCFG_C8050_SYNC_CALLBACK(_write) \ - devcb = &c8050_fdc_device::set_sync_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c8050_fdc_device &>(*device).set_sync_wr_callback(DEVCB_##_write); #define MCFG_C8050_READY_CALLBACK(_write) \ - devcb = &c8050_fdc_device::set_ready_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c8050_fdc_device &>(*device).set_ready_wr_callback(DEVCB_##_write); #define MCFG_C8050_BRDY_CALLBACK(_write) \ - devcb = &c8050_fdc_device::set_brdy_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c8050_fdc_device &>(*device).set_brdy_wr_callback(DEVCB_##_write); #define MCFG_C8050_ERROR_CALLBACK(_write) \ - devcb = &c8050_fdc_device::set_error_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c8050_fdc_device &>(*device).set_error_wr_callback(DEVCB_##_write); @@ -48,10 +48,10 @@ public: // construction/destruction c8050_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_sync_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_sync.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ready_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_ready.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_brdy_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_brdy.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_error_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_error.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sync_wr_callback(Object &&cb) { return m_write_sync.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ready_wr_callback(Object &&cb) { return m_write_ready.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_brdy_wr_callback(Object &&cb) { return m_write_brdy.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_error_wr_callback(Object &&cb) { return m_write_error.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/bus/intellec4/intellec4.cpp b/src/devices/bus/intellec4/intellec4.cpp index 7034d4c7b27..17b2df413e0 100644 --- a/src/devices/bus/intellec4/intellec4.cpp +++ b/src/devices/bus/intellec4/intellec4.cpp @@ -26,16 +26,6 @@ univ_slot_device::univ_slot_device(machine_config const &mconfig, char const *ta /*---------------------------------- - configuration helpers -----------------------------------*/ - -void univ_slot_device::set_bus_tag(device_t &device, char const *tag) -{ - downcast<univ_slot_device &>(device).m_bus.set_tag(tag); -} - - -/*---------------------------------- device_t implementation ----------------------------------*/ @@ -88,46 +78,6 @@ univ_bus_device::univ_bus_device(machine_config const &mconfig, char const *tag, /*---------------------------------- - address space configuration -----------------------------------*/ - -void univ_bus_device::set_rom_space(device_t &device, char const *tag, int space) -{ - univ_bus_device &bus(downcast<univ_bus_device &>(device)); - bus.m_rom_device.set_tag(tag); - bus.m_rom_space = space; -} - -void univ_bus_device::set_rom_ports_space(device_t &device, char const *tag, int space) -{ - univ_bus_device &bus(downcast<univ_bus_device &>(device)); - bus.m_rom_ports_device.set_tag(tag); - bus.m_rom_ports_space = space; -} - -void univ_bus_device::set_memory_space(device_t &device, char const *tag, int space) -{ - univ_bus_device &bus(downcast<univ_bus_device &>(device)); - bus.m_memory_device.set_tag(tag); - bus.m_memory_space = space; -} - -void univ_bus_device::set_status_space(device_t &device, char const *tag, int space) -{ - univ_bus_device &bus(downcast<univ_bus_device &>(device)); - bus.m_status_device.set_tag(tag); - bus.m_status_space = space; -} - -void univ_bus_device::set_ram_ports_space(device_t &device, char const *tag, int space) -{ - univ_bus_device &bus(downcast<univ_bus_device &>(device)); - bus.m_ram_ports_device.set_tag(tag); - bus.m_ram_ports_space = space; -} - - -/*---------------------------------- input lines ----------------------------------*/ diff --git a/src/devices/bus/intellec4/intellec4.h b/src/devices/bus/intellec4/intellec4.h index c5e323ccb77..b88cc3d57ed 100644 --- a/src/devices/bus/intellec4/intellec4.h +++ b/src/devices/bus/intellec4/intellec4.h @@ -115,40 +115,40 @@ to implement the card in both systems. #define MCFG_INTELLEC4_UNIV_SLOT_ADD(bus_tag, slot_tag, clock, slot_intf, def_slot) \ - MCFG_DEVICE_ADD(slot_tag, INTELLEC4_UNIV_SLOT, clock) \ - MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false) \ - bus::intellec4::univ_slot_device::set_bus_tag(*device, "^" bus_tag); + MCFG_DEVICE_ADD(slot_tag, INTELLEC4_UNIV_SLOT, clock) \ + MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false) \ + downcast<bus::intellec4::univ_slot_device &>(*device).set_bus_tag("^" bus_tag); #define MCFG_INTELLEC4_UNIV_SLOT_REMOVE(slot_tag) \ - MCFG_DEVICE_REMOVE(slot_tag) + MCFG_DEVICE_REMOVE(slot_tag) #define MCFG_INTELLEC4_UNIV_BUS_ROM_SPACE(tag, space) \ - bus::intellec4::univ_bus_device::set_rom_space(*device, "^" tag, space); + downcast<bus::intellec4::univ_bus_device &>(*device).set_rom_space("^" tag, space); #define MCFG_INTELLEC4_UNIV_BUS_ROM_PORTS_SPACE(tag, space) \ - bus::intellec4::univ_bus_device::set_rom_ports_space(*device, "^" tag, space); + downcast<bus::intellec4::univ_bus_device &>(*device).set_rom_ports_space("^" tag, space); #define MCFG_INTELLEC4_UNIV_BUS_MEMORY_SPACE(tag, space) \ - bus::intellec4::univ_bus_device::set_memory_space(*device, "^" tag, space); + downcast<bus::intellec4::univ_bus_device &>(*device).set_memory_space("^" tag, space); #define MCFG_INTELLEC4_UNIV_BUS_STATUS_SPACE(tag, space) \ - bus::intellec4::univ_bus_device::set_status_space(*device, "^" tag, space); + downcast<bus::intellec4::univ_bus_device &>(*device).set_status_space("^" tag, space); #define MCFG_INTELLEC4_UNIV_BUS_RAM_PORTS_SPACE(tag, space) \ - bus::intellec4::univ_bus_device::set_ram_ports_space(*device, "^" tag, space); + downcast<bus::intellec4::univ_bus_device &>(*device).set_ram_ports_space("^" tag, space); #define MCFG_INTELLEC4_UNIV_BUS_TEST_CB(obj) \ - bus::intellec4::univ_bus_device::set_test_out_cb(*device, DEVCB_##obj); + downcast<bus::intellec4::univ_bus_device &>(*device).set_test_out_cb(DEVCB_##obj); #define MCFG_INTELLEC4_UNIV_BUS_STOP_CB(obj) \ - bus::intellec4::univ_bus_device::set_stop_out_cb(*device, DEVCB_##obj); + downcast<bus::intellec4::univ_bus_device &>(*device).set_stop_out_cb(DEVCB_##obj); #define MCFG_INTELLEC4_UNIV_BUS_RESET_4002_CB(obj) \ - bus::intellec4::univ_bus_device::set_reset_4002_out_cb(*device, DEVCB_##obj); + downcast<bus::intellec4::univ_bus_device &>(*device).set_reset_4002_out_cb(DEVCB_##obj); #define MCFG_INTELLEC4_UNIV_BUS_USER_RESET_CB(obj) \ - bus::intellec4::univ_bus_device::set_user_reset_out_cb(*device, DEVCB_##obj); + downcast<bus::intellec4::univ_bus_device &>(*device).set_user_reset_out_cb(DEVCB_##obj); namespace bus { namespace intellec4 { @@ -162,7 +162,7 @@ class univ_slot_device : public device_t, public device_slot_interface { public: // configuration helpers - static void set_bus_tag(device_t &device, char const *bus_tag); + void set_bus_tag(char const *bus_tag) { m_bus.set_tag(bus_tag); } univ_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); @@ -182,21 +182,17 @@ public: friend class device_univ_card_interface; // address space configuration - static void set_rom_space(device_t &device, char const *tag, int space); - static void set_rom_ports_space(device_t &device, char const *tag, int space); - static void set_memory_space(device_t &device, char const *tag, int space); - static void set_status_space(device_t &device, char const *tag, int space); - static void set_ram_ports_space(device_t &device, char const *tag, int space); + void set_rom_space(char const *tag, int space) { m_rom_device.set_tag(tag); m_rom_space = space; } + void set_rom_ports_space(char const *tag, int space) { m_rom_ports_device.set_tag(tag); m_rom_ports_space = space; } + void set_memory_space(char const *tag, int space) { m_memory_device.set_tag(tag); m_memory_space = space; } + void set_status_space(char const *tag, int space) { m_status_device.set_tag(tag); m_status_space = space; } + void set_ram_ports_space(char const *tag, int space) { m_ram_ports_device.set_tag(tag); m_ram_ports_space = space; } // callback configuration - template <typename Obj> static devcb_base &set_stop_out_cb(device_t &device, Obj &&cb) - { return downcast<univ_bus_device &>(device).m_stop_out_cb.set_callback(std::forward<Obj>(cb)); } - template <typename Obj> static devcb_base &set_test_out_cb(device_t &device, Obj &&cb) - { return downcast<univ_bus_device &>(device).m_test_out_cb.set_callback(std::forward<Obj>(cb)); } - template <typename Obj> static devcb_base &set_reset_4002_out_cb(device_t &device, Obj &&cb) - { return downcast<univ_bus_device &>(device).m_reset_4002_out_cb.set_callback(std::forward<Obj>(cb)); } - template <typename Obj> static devcb_base &set_user_reset_out_cb(device_t &device, Obj &&cb) - { return downcast<univ_bus_device &>(device).m_user_reset_out_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_stop_out_cb(Obj &&cb) { return m_stop_out_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_test_out_cb(Obj &&cb) { return m_test_out_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_reset_4002_out_cb(Obj &&cb) { return m_reset_4002_out_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_user_reset_out_cb(Obj &&cb) { return m_user_reset_out_cb.set_callback(std::forward<Obj>(cb)); } univ_bus_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/bus/interpro/keyboard/keyboard.h b/src/devices/bus/interpro/keyboard/keyboard.h index ca3b1a2eb82..c9def1e6a42 100644 --- a/src/devices/bus/interpro/keyboard/keyboard.h +++ b/src/devices/bus/interpro/keyboard/keyboard.h @@ -10,7 +10,7 @@ MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false) #define MCFG_INTERPRO_KEYBOARD_RXD_HANDLER(cb) \ - devcb = &interpro_keyboard_port_device::set_rxd_handler(*device, DEVCB_##cb); + devcb = &downcast<interpro_keyboard_port_device &>(*device).set_rxd_handler(DEVCB_##cb); class device_interpro_keyboard_port_interface; @@ -23,7 +23,7 @@ public: virtual ~interpro_keyboard_port_device(); // static configuration helpers - template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<interpro_keyboard_port_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxd_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(write_txd); diff --git a/src/devices/bus/interpro/sr/sr.cpp b/src/devices/bus/interpro/sr/sr.cpp index 29fc59c8294..dda3c7f13b8 100644 --- a/src/devices/bus/interpro/sr/sr.cpp +++ b/src/devices/bus/interpro/sr/sr.cpp @@ -280,7 +280,7 @@ void sr_slot_device::device_start() device_sr_card_interface *dev = dynamic_cast<device_sr_card_interface *>(get_card_device()); if (dev) - device_sr_card_interface::static_set_sr_tag(*dev, m_sr_tag, m_sr_slot_tag); + dev->set_sr_tag(m_sr_tag, m_sr_slot_tag); } DEFINE_DEVICE_TYPE(SR, sr_device, "sr", "InterPro SR bus") @@ -338,14 +338,6 @@ device_sr_card_interface::~device_sr_card_interface() { } -void device_sr_card_interface::static_set_sr_tag(device_t &device, const char *tag, const char *slot_tag) -{ - device_sr_card_interface &sr_card = dynamic_cast<device_sr_card_interface &>(device); - - sr_card.m_sr_tag = tag; - sr_card.m_sr_slot_tag = slot_tag; -} - void device_sr_card_interface::set_sr_device() { // get a reference to the bus diff --git a/src/devices/bus/interpro/sr/sr.h b/src/devices/bus/interpro/sr/sr.h index 02b2734d05d..c4a03c42aa5 100644 --- a/src/devices/bus/interpro/sr/sr.h +++ b/src/devices/bus/interpro/sr/sr.h @@ -7,13 +7,13 @@ #pragma once #define MCFG_SR_OUT_IRQ0_CB(_devcb) \ - devcb = &sr_device::set_out_irq0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sr_device &>(*device).set_out_irq0_callback(DEVCB_##_devcb); #define MCFG_SR_OUT_IRQ1_CB(_devcb) \ - devcb = &sr_device::set_out_irq1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sr_device &>(*device).set_out_irq1_callback(DEVCB_##_devcb); #define MCFG_SR_OUT_IRQ2_CB(_devcb) \ - devcb = &sr_device::set_out_irq2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sr_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb); #define MCFG_SR_SLOT_ADD(_srtag, _tag, _slot_intf, _def_slot, _fixed) \ MCFG_DEVICE_ADD(_tag, SR_SLOT, 0) \ @@ -56,9 +56,9 @@ public: sr_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // inline configuration - template <class Object> static devcb_base &set_out_irq0_callback(device_t &device, Object &&cb) { return downcast<sr_device &>(device).m_out_irq0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq1_callback(device_t &device, Object &&cb) { return downcast<sr_device &>(device).m_out_irq1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq2_callback(device_t &device, Object &&cb) { return downcast<sr_device &>(device).m_out_irq2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq0_callback(Object &&cb) { return m_out_irq0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq1_callback(Object &&cb) { return m_out_irq1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq2_callback(Object &&cb) { return m_out_irq2_cb.set_callback(std::forward<Object>(cb)); } void set_memory(const char *const tag, const int main_spacenum, const int io_spacenum); @@ -121,7 +121,7 @@ public: void irq(int status); // inline configuration - static void static_set_sr_tag(device_t &device, const char *tag, const char *slot_tag); + void set_sr_tag(const char *tag, const char *slot_tag) { m_sr_tag = tag; m_sr_slot_tag = slot_tag; } protected: device_sr_card_interface(const machine_config &mconfig, device_t &device); diff --git a/src/devices/bus/iq151/iq151.h b/src/devices/bus/iq151/iq151.h index 649f397d2b9..67dff9df198 100644 --- a/src/devices/bus/iq151/iq151.h +++ b/src/devices/bus/iq151/iq151.h @@ -86,12 +86,12 @@ public: iq151cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~iq151cart_slot_device(); - template <class Object> static devcb_base &set_out_irq0_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq1_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq2_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq2_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq3_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq3_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq4_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq4_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_drq_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq0_callback(Object &&cb) { return m_out_irq0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq1_callback(Object &&cb) { return m_out_irq1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq2_callback(Object &&cb) { return m_out_irq2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq3_callback(Object &&cb) { return m_out_irq3_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq4_callback(Object &&cb) { return m_out_irq4_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_drq_callback(Object &&cb) { return m_out_drq_cb.set_callback(std::forward<Object>(cb)); } // device-level overrides virtual void device_start() override; @@ -139,21 +139,21 @@ DECLARE_DEVICE_TYPE(IQ151CART_SLOT, iq151cart_slot_device) ***************************************************************************/ #define MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(_devcb) \ - devcb = &iq151cart_slot_device::set_out_irq0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq0_callback(DEVCB_##_devcb); #define MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(_devcb) \ - devcb = &iq151cart_slot_device::set_out_irq1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq1_callback(DEVCB_##_devcb); #define MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(_devcb) \ - devcb = &iq151cart_slot_device::set_out_irq2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb); #define MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(_devcb) \ - devcb = &iq151cart_slot_device::set_out_irq3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb); #define MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(_devcb) \ - devcb = &iq151cart_slot_device::set_out_irq4_callback(*device, DEVCB_##_devcb); + devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb); #define MCFG_IQ151CART_SLOT_OUT_DRQ_CB(_devcb) \ - devcb = &iq151cart_slot_device::set_out_drq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<iq151cart_slot_device &>(*device).set_out_drq_callback(DEVCB_##_devcb); #endif // MAME_BUS_IQ151_IQ151_H diff --git a/src/devices/bus/isa/gus.h b/src/devices/bus/isa/gus.h index 7c3bdcea91a..09f86e0b091 100644 --- a/src/devices/bus/isa/gus.h +++ b/src/devices/bus/isa/gus.h @@ -46,37 +46,37 @@ #include "machine/6850acia.h" #define MCFG_GF1_TXIRQ_HANDLER(_devcb) \ - devcb = &gf1_device::set_txirq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gf1_device &>(*device).set_txirq_handler(DEVCB_##_devcb); #define MCFG_GF1_RXIRQ_HANDLER(_devcb) \ - devcb = &gf1_device::set_rxirq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gf1_device &>(*device).set_rxirq_handler(DEVCB_##_devcb); #define MCFG_GF1_WAVE_IRQ_HANDLER(_devcb) \ - devcb = &gf1_device::set_wave_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gf1_device &>(*device).set_wave_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_RAMP_IRQ_HANDLER(_devcb) \ - devcb = &gf1_device::set_ramp_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gf1_device &>(*device).set_ramp_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_TIMER1_IRQ_HANDLER(_devcb) \ - devcb = &gf1_device::set_timer1_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gf1_device &>(*device).set_timer1_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_TIMER2_IRQ_HANDLER(_devcb) \ - devcb = &gf1_device::set_timer2_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gf1_device &>(*device).set_timer2_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_SB_IRQ_HANDLER(_devcb) \ - devcb = &gf1_device::set_sb_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gf1_device &>(*device).set_sb_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_DMA_IRQ_HANDLER(_devcb) \ - devcb = &gf1_device::set_dma_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gf1_device &>(*device).set_dma_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_DRQ1_HANDLER(_devcb) \ - devcb = &gf1_device::set_drq1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gf1_device &>(*device).set_drq1_handler(DEVCB_##_devcb); #define MCFG_GF1_DRQ2_HANDLER(_devcb) \ - devcb = &gf1_device::set_drq2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gf1_device &>(*device).set_drq2_handler(DEVCB_##_devcb); #define MCFG_GF1_NMI_HANDLER(_devcb) \ - devcb = &gf1_device::set_nmi_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gf1_device &>(*device).set_nmi_handler(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -112,17 +112,17 @@ public: // construction/destruction gf1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_txirq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_txirq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rxirq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_rxirq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_wave_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_wave_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ramp_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_ramp_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_timer1_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_timer1_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_timer2_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_timer2_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sb_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_sb_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_dma_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq1_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_drq1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq2_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_drq2_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txirq_handler(Object &&cb) { return m_txirq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxirq_handler(Object &&cb) { return m_rxirq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_wave_irq_handler(Object &&cb) { return m_wave_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ramp_irq_handler(Object &&cb) { return m_ramp_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_timer1_irq_handler(Object &&cb) { return m_timer1_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_timer2_irq_handler(Object &&cb) { return m_timer2_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sb_irq_handler(Object &&cb) { return m_sb_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_irq_handler(Object &&cb) { return m_dma_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq1_handler(Object &&cb) { return m_drq1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq2_handler(Object &&cb) { return m_drq2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); } // current IRQ/DMA channel getters uint8_t gf1_irq() { if(m_gf1_irq != 0) return m_gf1_irq; else return m_midi_irq; } // workaround for win95 loading dumb values diff --git a/src/devices/bus/isa/hdc.h b/src/devices/bus/isa/hdc.h index b8b325f1c6d..a935fe9288d 100644 --- a/src/devices/bus/isa/hdc.h +++ b/src/devices/bus/isa/hdc.h @@ -20,10 +20,10 @@ // XT HD controller device #define MCFG_XTHDC_IRQ_HANDLER(_devcb) \ - devcb = &xt_hdc_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<xt_hdc_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_XTHDC_DRQ_HANDLER(_devcb) \ - devcb = &xt_hdc_device::set_drq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<xt_hdc_device &>(*device).set_drq_handler(DEVCB_##_devcb); class xt_hdc_device : public device_t @@ -32,8 +32,8 @@ public: // construction/destruction xt_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<xt_hdc_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb) { return downcast<xt_hdc_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); } + 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)); } int dack_r(); int dack_rs(); diff --git a/src/devices/bus/isa/isa.cpp b/src/devices/bus/isa/isa.cpp index 68d0ce971d8..91907e4a9f8 100644 --- a/src/devices/bus/isa/isa.cpp +++ b/src/devices/bus/isa/isa.cpp @@ -35,13 +35,6 @@ isa8_slot_device::isa8_slot_device(const machine_config &mconfig, device_type ty { } -void isa8_slot_device::static_set_isa8_slot(device_t &device, device_t *owner, const char *isa_tag) -{ - isa8_slot_device &isa_card = dynamic_cast<isa8_slot_device &>(device); - isa_card.m_owner = owner; - isa_card.m_isa_tag = isa_tag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -53,7 +46,7 @@ void isa8_slot_device::device_start() if (get_card_device() && get_card_device()->interface(intf)) fatalerror("ISA16 device in ISA8 slot\n"); - if (dev) device_isa8_card_interface::static_set_isabus(*dev,m_owner->subdevice(m_isa_tag)); + if (dev) dev->set_isabus(m_owner->subdevice(m_isa_tag)); } @@ -76,13 +69,6 @@ isa16_slot_device::isa16_slot_device(const machine_config &mconfig, const char * { } -void isa16_slot_device::static_set_isa16_slot(device_t &device, device_t *owner, const char *isa_tag) -{ - isa16_slot_device &isa_card = dynamic_cast<isa16_slot_device &>(device); - isa_card.m_owner = owner; - isa_card.m_isa_tag = isa_tag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -90,7 +76,7 @@ void isa16_slot_device::static_set_isa16_slot(device_t &device, device_t *owner, void isa16_slot_device::device_start() { device_isa8_card_interface *dev = dynamic_cast<device_isa8_card_interface *>(get_card_device()); - if (dev) device_isa8_card_interface::static_set_isabus(*dev,m_owner->subdevice(m_isa_tag)); + if (dev) dev->set_isabus(m_owner->subdevice(m_isa_tag)); } @@ -100,19 +86,6 @@ void isa16_slot_device::device_start() DEFINE_DEVICE_TYPE(ISA8, isa8_device, "isa8", "8-bit ISA bus") -void isa8_device::static_set_cputag(device_t &device, const char *tag) -{ - isa8_device &isa = downcast<isa8_device &>(device); - isa.m_maincpu.set_tag(tag); -} - -void isa8_device::static_set_custom_spaces(device_t &device) -{ - isa8_device &isa = downcast<isa8_device &>(device); - - isa.m_allocspaces = true; -} - //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -427,12 +400,6 @@ void device_isa8_card_interface::eop_w(int state) { } -void device_isa8_card_interface::static_set_isabus(device_t &device, device_t *isa_device) -{ - device_isa8_card_interface &isa_card = dynamic_cast<device_isa8_card_interface &>(device); - isa_card.m_isa_dev = isa_device; -} - void device_isa8_card_interface::set_isa_device() { m_isa = dynamic_cast<isa8_device *>(m_isa_dev); diff --git a/src/devices/bus/isa/isa.h b/src/devices/bus/isa/isa.h index 1cbf755e4a4..a8046423e61 100644 --- a/src/devices/bus/isa/isa.h +++ b/src/devices/bus/isa/isa.h @@ -74,80 +74,80 @@ //************************************************************************** #define MCFG_ISA8_CPU(_cputag) \ - isa8_device::static_set_cputag(*device, _cputag); + downcast<isa8_device &>(*device).set_cputag(_cputag); // include this in a driver to have ISA allocate it's own address spaces (e.g. non-x86) #define MCFG_ISA8_BUS_CUSTOM_SPACES() \ - isa8_device::static_set_custom_spaces(*device); + downcast<isa8_device &>(*device).set_custom_spaces(); #define MCFG_ISA8_SLOT_ADD(_isatag, _tag, _slot_intf, _def_slot, _fixed) \ MCFG_DEVICE_ADD(_tag, ISA8_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed) \ - isa8_slot_device::static_set_isa8_slot(*device, this, _isatag); + downcast<isa8_slot_device &>(*device).set_isa8_slot(this, _isatag); #define MCFG_ISA16_CPU(_cputag) \ - isa8_device::static_set_cputag(*device, _cputag); + downcast<isa8_device &>(*device).set_cputag(_cputag); #define MCFG_ISA16_BUS_CUSTOM_SPACES() \ - isa8_device::static_set_custom_spaces(*device); + downcast<isa8_device &>(*device).set_custom_spaces(); #define MCFG_ISA16_SLOT_ADD(_isatag, _tag, _slot_intf, _def_slot, _fixed) \ MCFG_DEVICE_ADD(_tag, ISA16_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed) \ - isa16_slot_device::static_set_isa16_slot(*device, this, _isatag); + downcast<isa16_slot_device &>(*device).set_isa16_slot(this, _isatag); #define MCFG_ISA_BUS_IOCHCK(_iochck) \ devcb = &downcast<isa8_device *>(device)->set_iochck_callback(DEVCB_##_iochck); #define MCFG_ISA_OUT_IRQ2_CB(_devcb) \ - devcb = &isa8_device::set_out_irq2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa8_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ3_CB(_devcb) \ - devcb = &isa8_device::set_out_irq3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa8_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ4_CB(_devcb) \ - devcb = &isa8_device::set_out_irq4_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa8_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ5_CB(_devcb) \ - devcb = &isa8_device::set_out_irq5_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa8_device &>(*device).set_out_irq5_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ6_CB(_devcb) \ - devcb = &isa8_device::set_out_irq6_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa8_device &>(*device).set_out_irq6_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ7_CB(_devcb) \ - devcb = &isa8_device::set_out_irq7_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa8_device &>(*device).set_out_irq7_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ1_CB(_devcb) \ - devcb = &isa8_device::set_out_drq1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa8_device &>(*device).set_out_drq1_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ2_CB(_devcb) \ - devcb = &isa8_device::set_out_drq2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa8_device &>(*device).set_out_drq2_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ3_CB(_devcb) \ - devcb = &isa8_device::set_out_drq3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa8_device &>(*device).set_out_drq3_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ10_CB(_devcb) \ - devcb = &isa16_device::set_out_irq10_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa16_device &>(*device).set_out_irq10_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ11_CB(_devcb) \ - devcb = &isa16_device::set_out_irq11_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa16_device &>(*device).set_out_irq11_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ12_CB(_devcb) \ - devcb = &isa16_device::set_out_irq12_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa16_device &>(*device).set_out_irq12_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ14_CB(_devcb) \ - devcb = &isa16_device::set_out_irq14_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa16_device &>(*device).set_out_irq14_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ15_CB(_devcb) \ - devcb = &isa16_device::set_out_irq15_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa16_device &>(*device).set_out_irq15_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ0_CB(_devcb) \ - devcb = &isa16_device::set_out_drq0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa16_device &>(*device).set_out_drq0_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ5_CB(_devcb) \ - devcb = &isa16_device::set_out_drq5_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa16_device &>(*device).set_out_drq5_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ6_CB(_devcb) \ - devcb = &isa16_device::set_out_drq6_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa16_device &>(*device).set_out_drq6_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ7_CB(_devcb) \ - devcb = &isa16_device::set_out_drq7_callback(*device, DEVCB_##_devcb); + devcb = &downcast<isa16_device &>(*device).set_out_drq7_callback(DEVCB_##_devcb); //************************************************************************** @@ -167,7 +167,7 @@ public: virtual void device_start() override; // inline configuration - static void static_set_isa8_slot(device_t &device, device_t *owner, const char *isa_tag); + void set_isa8_slot(device_t *owner, const char *isa_tag) { m_owner = owner; m_isa_tag = isa_tag; } protected: isa8_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -197,18 +197,18 @@ public: // construction/destruction isa8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_cputag(device_t &device, const char *tag); - static void static_set_custom_spaces(device_t &device); + void set_cputag(const char *tag) { m_maincpu.set_tag(tag); } + void set_custom_spaces() { m_allocspaces = true; } template <class Object> devcb_base &set_iochck_callback(Object &&cb) { return m_write_iochck.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq2_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq2_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq3_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq3_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq4_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq4_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq5_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq5_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq6_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq6_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq7_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq7_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_drq1_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_drq1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_drq2_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_drq2_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_drq3_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_drq3_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq2_callback(Object &&cb) { return m_out_irq2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq3_callback(Object &&cb) { return m_out_irq3_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq4_callback(Object &&cb) { return m_out_irq4_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq5_callback(Object &&cb) { return m_out_irq5_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq6_callback(Object &&cb) { return m_out_irq6_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq7_callback(Object &&cb) { return m_out_irq7_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_drq1_callback(Object &&cb) { return m_out_drq1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_drq2_callback(Object &&cb) { return m_out_drq2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_drq3_callback(Object &&cb) { return m_out_drq3_cb.set_callback(std::forward<Object>(cb)); } // for ISA8, put the 8-bit configs in the primary slots and the 16-bit configs in the secondary virtual space_config_vector memory_space_config() const override; @@ -317,7 +317,7 @@ public: virtual void eop_w(int state); // inline configuration - static void static_set_isabus(device_t &device, device_t *isa_device); + void set_isabus(device_t *isa_device) { m_isa_dev = isa_device; } public: device_isa8_card_interface(const machine_config &mconfig, device_t &device); @@ -340,7 +340,7 @@ public: virtual void device_start() override; // inline configuration - static void static_set_isa16_slot(device_t &device, device_t *owner, const char *isa_tag); + void set_isa16_slot(device_t *owner, const char *isa_tag) { m_owner = owner; m_isa_tag = isa_tag; } }; @@ -354,15 +354,15 @@ public: // construction/destruction isa16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_irq10_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq10_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq11_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq11_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq12_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq12_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq14_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq14_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq15_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq15_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_drq0_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_drq5_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq5_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_drq6_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq6_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_drq7_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq7_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq10_callback(Object &&cb) { return m_out_irq10_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq11_callback(Object &&cb) { return m_out_irq11_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq12_callback(Object &&cb) { return m_out_irq12_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq14_callback(Object &&cb) { return m_out_irq14_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq15_callback(Object &&cb) { return m_out_irq15_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_drq0_callback(Object &&cb) { return m_out_drq0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_drq5_callback(Object &&cb) { return m_out_drq5_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_drq6_callback(Object &&cb) { return m_out_drq6_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_drq7_callback(Object &&cb) { return m_out_drq7_cb.set_callback(std::forward<Object>(cb)); } void install16_device(offs_t start, offs_t end, read16_delegate rhandler, write16_delegate whandler); diff --git a/src/devices/bus/kc/kc.cpp b/src/devices/bus/kc/kc.cpp index 99da30bb188..aa9e75e1951 100644 --- a/src/devices/bus/kc/kc.cpp +++ b/src/devices/bus/kc/kc.cpp @@ -167,13 +167,6 @@ kcexp_slot_device::kcexp_slot_device(const machine_config &mconfig, device_type { } -void kcexp_slot_device::static_set_next_slot(device_t &device, const char *next_slot_tag) -{ - kcexp_slot_device &kc_slot = dynamic_cast<kcexp_slot_device &>(device); - - kc_slot.m_next_slot_tag = next_slot_tag; -} - //------------------------------------------------- // kcexp_slot_device - destructor //------------------------------------------------- diff --git a/src/devices/bus/kc/kc.h b/src/devices/bus/kc/kc.h index a058a80c9af..083f60e3a66 100644 --- a/src/devices/bus/kc/kc.h +++ b/src/devices/bus/kc/kc.h @@ -51,12 +51,12 @@ public: kcexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~kcexp_slot_device(); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<kcexp_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<kcexp_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_halt_callback(device_t &device, Object &&cb) { return downcast<kcexp_slot_device &>(device).m_out_halt_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_halt_callback(Object &&cb) { return m_out_halt_cb.set_callback(std::forward<Object>(cb)); } // inline configuration - static void static_set_next_slot(device_t &device, const char *next_module_tag); + void set_next_slot(const char *next_module_tag) { m_next_slot_tag = next_module_tag; } // reading and writing virtual uint8_t module_id_r(); @@ -121,29 +121,29 @@ DECLARE_DEVICE_TYPE(KCCART_SLOT, kccart_slot_device) ***************************************************************************/ #define MCFG_KCEXP_SLOT_OUT_IRQ_CB(_devcb) \ - devcb = &kcexp_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<kcexp_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_KCEXP_SLOT_OUT_NMI_CB(_devcb) \ - devcb = &kcexp_slot_device::set_out_nmi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<kcexp_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_KCEXP_SLOT_OUT_HALT_CB(_devcb) \ - devcb = &kcexp_slot_device::set_out_halt_callback(*device, DEVCB_##_devcb); + devcb = &downcast<kcexp_slot_device &>(*device).set_out_halt_callback(DEVCB_##_devcb); #define MCFG_KCEXP_SLOT_NEXT_SLOT(_next_slot_tag) \ - kcexp_slot_device::static_set_next_slot(*device, _next_slot_tag); + downcast<kcexp_slot_device &>(*device).set_next_slot(_next_slot_tag); #define MCFG_KCCART_SLOT_OUT_IRQ_CB(_devcb) \ - devcb = &kccart_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<kccart_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_KCCART_SLOT_OUT_NMI_CB(_devcb) \ - devcb = &kccart_slot_device::set_out_nmi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<kccart_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_KCCART_SLOT_OUT_HALT_CB(_devcb) \ - devcb = &kccart_slot_device::set_out_halt_callback(*device, DEVCB_##_devcb); + devcb = &downcast<kccart_slot_device &>(*device).set_out_halt_callback(DEVCB_##_devcb); #define MCFG_KCCART_SLOT_NEXT_SLOT(_next_slot_tag) \ - kccart_slot_device::static_set_next_slot(*device, _next_slot_tag); + downcast<kccart_slot_device &>(*device).set_next_slot(_next_slot_tag); // #define MCFG_KC85_EXPANSION_ADD(_tag,_next_slot_tag,_config,_slot_intf,_def_slot) // MCFG_DEVICE_ADD(_tag, KCEXP_SLOT, 0) diff --git a/src/devices/bus/lpci/i82371sb.h b/src/devices/bus/lpci/i82371sb.h index 325934b2e5c..dfb1f5de498 100644 --- a/src/devices/bus/lpci/i82371sb.h +++ b/src/devices/bus/lpci/i82371sb.h @@ -24,7 +24,7 @@ public: // construction/destruction i82371sb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_boot_state_hook(device_t &device, Object &&cb) { return downcast<i82371sb_device &>(device).m_boot_state_hook.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_boot_state_hook(Object &&cb) { return m_boot_state_hook.set_callback(std::forward<Object>(cb)); } virtual uint32_t pci_read(pci_bus_device *pcibus, int function, int offset, uint32_t mem_mask) override; virtual void pci_write(pci_bus_device *pcibus, int function, int offset, uint32_t data, uint32_t mem_mask) override; @@ -52,6 +52,6 @@ private: DECLARE_DEVICE_TYPE(I82371SB, i82371sb_device) #define MCFG_I82371SB_BOOT_STATE_HOOK(_devcb) \ - devcb = &i82371sb_device::set_boot_state_hook(*device, DEVCB_##_devcb); + devcb = &downcast<i82371sb_device &>(*device).set_boot_state_hook(DEVCB_##_devcb); #endif // MAME_BUS_LPCI_I82371SB_H diff --git a/src/devices/bus/lpci/i82439tx.h b/src/devices/bus/lpci/i82439tx.h index 8853b9b96a6..781ff949089 100644 --- a/src/devices/bus/lpci/i82439tx.h +++ b/src/devices/bus/lpci/i82439tx.h @@ -17,10 +17,10 @@ #include "northbridge.h" #define MCFG_I82439TX_CPU( _tag ) \ - i82439tx_device::static_set_cpu(*device, _tag); + downcast<i82439tx_device &>(*device).set_cpu(_tag); #define MCFG_I82439TX_REGION( _tag ) \ - i82439tx_device::static_set_region(*device, _tag); + downcast<i82439tx_device &>(*device).set_region(_tag); // ======================> i82439tx_device @@ -30,8 +30,8 @@ public: // construction/destruction i82439tx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_cpu(device_t &device, const char *tag) { dynamic_cast<i82439tx_device &>(device).m_cpu_tag = tag; } - static void static_set_region(device_t &device, const char *tag) { dynamic_cast<i82439tx_device &>(device).m_region_tag = tag; } + void set_cpu(const char *tag) { m_cpu_tag = tag; } + void set_region(const char *tag) { m_region_tag = tag; } virtual uint32_t pci_read(pci_bus_device *pcibus, int function, int offset, uint32_t mem_mask) override; virtual void pci_write(pci_bus_device *pcibus, int function, int offset, uint32_t data, uint32_t mem_mask) override; diff --git a/src/devices/bus/lpci/mpc105.h b/src/devices/bus/lpci/mpc105.h index 3b3a726c4b1..65ab5a59637 100644 --- a/src/devices/bus/lpci/mpc105.h +++ b/src/devices/bus/lpci/mpc105.h @@ -18,10 +18,10 @@ #define MPC105_MEMORYBANK_COUNT 8 #define MCFG_MPC105_CPU( _tag ) \ - mpc105_device::static_set_cpu(*device, _tag); + downcast<mpc105_device &>(*device).set_cpu(_tag); #define MCFG_MPC105_BANK_BASE_DEFAULT( bank_base_default ) \ - mpc105_device::static_set_bank_base_default(*device, bank_base_default); + downcast<mpc105_device &>(*device).set_bank_base_default(bank_base_default); // ======================> mpc105_device @@ -32,8 +32,8 @@ public: // construction/destruction mpc105_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_cpu(device_t &device, const char *tag) { dynamic_cast<mpc105_device &>(device).m_cpu_tag = tag; } - static void static_set_bank_base_default(device_t &device, int bank_base_default) { dynamic_cast<mpc105_device &>(device).m_bank_base_default = bank_base_default; } + void set_cpu(const char *tag) { m_cpu_tag = tag; } + void set_bank_base_default(int bank_base_default) { m_bank_base_default = bank_base_default; } virtual uint32_t pci_read(pci_bus_device *pcibus, int function, int offset, uint32_t mem_mask) override; virtual void pci_write(pci_bus_device *pcibus, int function, int offset, uint32_t data, uint32_t mem_mask) override; diff --git a/src/devices/bus/macpds/macpds.cpp b/src/devices/bus/macpds/macpds.cpp index 36f6cf90219..e411064d551 100644 --- a/src/devices/bus/macpds/macpds.cpp +++ b/src/devices/bus/macpds/macpds.cpp @@ -38,13 +38,6 @@ macpds_slot_device::macpds_slot_device(const machine_config &mconfig, device_typ { } -void macpds_slot_device::static_set_macpds_slot(device_t &device, const char *tag, const char *slottag) -{ - macpds_slot_device &macpds_card = dynamic_cast<macpds_slot_device &>(device); - macpds_card.m_macpds_tag = tag; - macpds_card.m_macpds_slottag = slottag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -53,7 +46,7 @@ void macpds_slot_device::device_start() { device_macpds_card_interface *dev = dynamic_cast<device_macpds_card_interface *>(get_card_device()); - if (dev) device_macpds_card_interface::static_set_macpds_tag(*dev, m_macpds_tag, m_macpds_slottag); + if (dev) dev->set_macpds_tag(m_macpds_tag, m_macpds_slottag); } //************************************************************************** @@ -62,12 +55,6 @@ void macpds_slot_device::device_start() DEFINE_DEVICE_TYPE(MACPDS, macpds_device, "macpds", "Mac 68000 Processor-Direct Bus") -void macpds_device::static_set_cputag(device_t &device, const char *tag) -{ - macpds_device &macpds = downcast<macpds_device &>(device); - macpds.m_cputag = tag; -} - //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -164,13 +151,6 @@ device_macpds_card_interface::~device_macpds_card_interface() { } -void device_macpds_card_interface::static_set_macpds_tag(device_t &device, const char *tag, const char *slottag) -{ - device_macpds_card_interface &macpds_card = dynamic_cast<device_macpds_card_interface &>(device); - macpds_card.m_macpds_tag = tag; - macpds_card.m_macpds_slottag = slottag; -} - void device_macpds_card_interface::set_macpds_device() { m_macpds = dynamic_cast<macpds_device *>(device().machine().device(m_macpds_tag)); diff --git a/src/devices/bus/macpds/macpds.h b/src/devices/bus/macpds/macpds.h index fdd62404fac..7e92ec71087 100644 --- a/src/devices/bus/macpds/macpds.h +++ b/src/devices/bus/macpds/macpds.h @@ -21,12 +21,12 @@ #define MCFG_MACPDS_BUS_ADD(_tag, _cputag) \ MCFG_DEVICE_ADD(_tag, MACPDS, 0) \ - macpds_device::static_set_cputag(*device, _cputag); + downcast<macpds_device &>(*device).set_cputag(_cputag); #define MCFG_MACPDS_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, MACPDS_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - macpds_slot_device::static_set_macpds_slot(*device, _nbtag, _tag); + downcast<macpds_slot_device &>(*device).set_macpds_slot(_nbtag, _tag); #define MCFG_MACPDS_SLOT_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) @@ -34,7 +34,7 @@ #define MCFG_MACPDS_ONBOARD_ADD(_nbtag, _tag, _dev_type, _def_inp) \ MCFG_DEVICE_ADD(_tag, _dev_type, 0) \ MCFG_DEVICE_INPUT_DEFAULTS(_def_inp) \ - device_macpds_card_interface::static_set_macpds_tag(*device, _nbtag, _tag); + downcast<device_macpds_card_interface &>(*device).set_macpds_tag(_nbtag, _tag); #define MCFG_MACPDS_BUS_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) @@ -53,7 +53,7 @@ public: macpds_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_macpds_slot(device_t &device, const char *tag, const char *slottag); + void set_macpds_slot(const char *tag, const char *slottag) { m_macpds_tag = tag; m_macpds_slottag = slottag; } protected: macpds_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -79,7 +79,7 @@ public: macpds_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~macpds_device() { m_device_list.detach_all(); } // inline configuration - static void static_set_cputag(device_t &device, const char *tag); + void set_cputag(const char *tag) { m_cputag = tag; } void add_macpds_card(device_macpds_card_interface *card); void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler, uint32_t mask=0xffffffff); @@ -125,7 +125,7 @@ public: void install_rom(device_t *dev, const char *romregion, uint32_t addr); // inline configuration - static void static_set_macpds_tag(device_t &device, const char *tag, const char *slottag); + void set_macpds_tag(const char *tag, const char *slottag) { m_macpds_tag = tag; m_macpds_slottag = slottag; } protected: device_macpds_card_interface(const machine_config &mconfig, device_t &device); diff --git a/src/devices/bus/macpds/pds_tpdfpd.cpp b/src/devices/bus/macpds/pds_tpdfpd.cpp index cce214a6da1..8fd357afdc1 100644 --- a/src/devices/bus/macpds/pds_tpdfpd.cpp +++ b/src/devices/bus/macpds/pds_tpdfpd.cpp @@ -95,7 +95,7 @@ macpds_sedisplay_device::macpds_sedisplay_device(const machine_config &mconfig, m_vram(nullptr), m_vbl_disable(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_assembled_tag(util::string_format("%s:%s", tag, SEDISPLAY_SCREEN_NAME)) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/midi/midi.h b/src/devices/bus/midi/midi.h index dcae78538f8..52c889efbd7 100644 --- a/src/devices/bus/midi/midi.h +++ b/src/devices/bus/midi/midi.h @@ -11,7 +11,7 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_MIDI_RX_HANDLER(_devcb) \ - devcb = &midi_port_device::set_rx_handler(*device, DEVCB_##_devcb); + devcb = &downcast<midi_port_device &>(*device).set_rx_handler(DEVCB_##_devcb); class device_midi_port_interface; @@ -25,7 +25,7 @@ public: virtual ~midi_port_device(); // static configuration helpers - template <class Object> static devcb_base &set_rx_handler(device_t &device, Object &&cb) { return downcast<midi_port_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rx_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( write_txd ); diff --git a/src/devices/bus/msx_cart/yamaha.cpp b/src/devices/bus/msx_cart/yamaha.cpp index 3bb4f7c63dc..a8c7280fdf9 100644 --- a/src/devices/bus/msx_cart/yamaha.cpp +++ b/src/devices/bus/msx_cart/yamaha.cpp @@ -103,7 +103,7 @@ void msx_cart_sfg_device::device_start() // This should probably moved up in the bus/slot hierarchy for the msx driver cpu_device *maincpu = machine().device<cpu_device>("maincpu"); - device_execute_interface::static_set_irq_acknowledge_callback(*maincpu, device_irq_acknowledge_delegate(FUNC(msx_cart_sfg_device::irq_callback),this)); + maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(msx_cart_sfg_device::irq_callback),this)); } diff --git a/src/devices/bus/msx_slot/bunsetsu.h b/src/devices/bus/msx_slot/bunsetsu.h index 0e340d98ae1..da26e5350fb 100644 --- a/src/devices/bus/msx_slot/bunsetsu.h +++ b/src/devices/bus/msx_slot/bunsetsu.h @@ -14,16 +14,16 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_BUNSETSU, msx_slot_bunsetsu_device) #define MCFG_MSX_SLOT_BUNSETSU_ADD(_tag, _startpage, _numpages, _region, _offset, _bunsetsu_region_tag) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_BUNSETSU, _startpage, _numpages) \ - msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \ - msx_slot_bunsetsu_device::set_bunsetsu_region_tag(*device, "^" _bunsetsu_region_tag); + downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \ + downcast<msx_slot_bunsetsu_device &>(*device).set_bunsetsu_region_tag("^" _bunsetsu_region_tag); class msx_slot_bunsetsu_device : public msx_slot_rom_device { public: msx_slot_bunsetsu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_bunsetsu_region_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_bunsetsu_device &>(device).m_bunsetsu_region.set_tag(tag); } + // configuration helpers + void set_bunsetsu_region_tag(const char *tag) { m_bunsetsu_region.set_tag(tag); } virtual DECLARE_READ8_MEMBER(read) override; virtual DECLARE_WRITE8_MEMBER(write) override; diff --git a/src/devices/bus/msx_slot/cartridge.h b/src/devices/bus/msx_slot/cartridge.h index 78d6721263d..ff8fbb96fb3 100644 --- a/src/devices/bus/msx_slot/cartridge.h +++ b/src/devices/bus/msx_slot/cartridge.h @@ -17,13 +17,13 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_YAMAHA_EXPANSION, msx_slot_yamaha_expansion_device) #define MCFG_MSX_SLOT_CARTRIDGE_ADD(_tag, _devcb) \ MCFG_DEVICE_ADD(_tag, MSX_SLOT_CARTRIDGE, 0) \ MCFG_DEVICE_SLOT_INTERFACE(msx_cart, nullptr, false) \ - devcb = &msx_slot_cartridge_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<msx_slot_cartridge_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_MSX_SLOT_YAMAHA_EXPANSION_ADD(_tag, _devcb, _default) \ MCFG_DEVICE_ADD(_tag, MSX_SLOT_YAMAHA_EXPANSION, 0) \ MCFG_DEVICE_SLOT_INTERFACE(msx_yamaha_60pin, _default, false) \ - devcb = &msx_slot_cartridge_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<msx_slot_cartridge_device &>(*device).set_irq_handler(DEVCB_##_devcb); class msx_slot_cartridge_device : public device_t @@ -36,7 +36,7 @@ public: msx_slot_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<msx_slot_cartridge_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } // image-level overrides virtual image_init_result call_load() override; diff --git a/src/devices/bus/msx_slot/disk.h b/src/devices/bus/msx_slot/disk.h index 5bb99811c81..698b49b9764 100644 --- a/src/devices/bus/msx_slot/disk.h +++ b/src/devices/bus/msx_slot/disk.h @@ -29,58 +29,58 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_DISK6, msx_slot_disk6_device) #define MCFG_MSX_SLOT_DISK1_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK1, _startpage, _numpages) \ - msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \ - msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \ - msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \ - msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag); + downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); #define MCFG_MSX_SLOT_DISK2_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK2, _startpage, _numpages) \ - msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \ - msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \ - msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \ - msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag); + downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); #define MCFG_MSX_SLOT_DISK3_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK3, _startpage, _numpages) \ - msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \ - msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \ - msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \ - msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag); + downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); #define MCFG_MSX_SLOT_DISK4_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK4, _startpage, _numpages) \ - msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \ - msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \ - msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \ - msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag); + downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); #define MCFG_MSX_SLOT_DISK5_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag, _floppy2_tag, _floppy3_tag) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK5, _startpage, _numpages) \ - msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \ - msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \ - msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \ - msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag); \ - msx_slot_disk_device::set_floppy2_tag(*device, _floppy2_tag); \ - msx_slot_disk_device::set_floppy3_tag(*device, _floppy3_tag); + downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy2_tag(_floppy2_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy3_tag(_floppy3_tag); #define MCFG_MSX_SLOT_DISK6_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK6, _startpage, _numpages) \ - msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \ - msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \ - msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \ - msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag); + downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); class msx_slot_disk_device : public msx_slot_rom_device { public: - // static configuration helpers - static void set_fdc_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_fdc_tag = tag; } - static void set_floppy0_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_floppy0_tag = tag; } - static void set_floppy1_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_floppy1_tag = tag; } - static void set_floppy2_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_floppy2_tag = tag; } - static void set_floppy3_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_floppy3_tag = tag; } + // configuration helpers + void set_fdc_tag(const char *tag) { m_fdc_tag = tag; } + void set_floppy0_tag(const char *tag) { m_floppy0_tag = tag; } + void set_floppy1_tag(const char *tag) { m_floppy1_tag = tag; } + void set_floppy2_tag(const char *tag) { m_floppy2_tag = tag; } + void set_floppy3_tag(const char *tag) { m_floppy3_tag = tag; } protected: msx_slot_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/bus/msx_slot/fs4600.cpp b/src/devices/bus/msx_slot/fs4600.cpp index 7223744203f..3ec7efc74f7 100644 --- a/src/devices/bus/msx_slot/fs4600.cpp +++ b/src/devices/bus/msx_slot/fs4600.cpp @@ -32,15 +32,6 @@ MACHINE_CONFIG_START(msx_slot_fs4600_device::device_add_mconfig) MACHINE_CONFIG_END -void msx_slot_fs4600_device::set_rom_start(device_t &device, const char *region, uint32_t offset) -{ - msx_slot_fs4600_device &dev = downcast<msx_slot_fs4600_device &>(device); - - dev.m_rom_region.set_tag(region); - dev.m_region_offset = offset; -} - - void msx_slot_fs4600_device::device_start() { // Sanity checks diff --git a/src/devices/bus/msx_slot/fs4600.h b/src/devices/bus/msx_slot/fs4600.h index 59238d786bb..b342b07f3fb 100644 --- a/src/devices/bus/msx_slot/fs4600.h +++ b/src/devices/bus/msx_slot/fs4600.h @@ -14,15 +14,15 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_FS4600, msx_slot_fs4600_device) #define MCFG_MSX_SLOT_FS4600_ADD(_tag, _startpage, _numpages, _region, _offset) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_FS4600, _startpage, _numpages) \ - msx_slot_fs4600_device::set_rom_start(*device, "^" _region, _offset); + downcast<msx_slot_fs4600_device &>(*device).set_rom_start("^" _region, _offset); class msx_slot_fs4600_device : public device_t, public msx_internal_slot_interface { public: msx_slot_fs4600_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_rom_start(device_t &device, const char *region, uint32_t offset); + // configuration helpers + void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; } virtual DECLARE_READ8_MEMBER(read) override; virtual DECLARE_WRITE8_MEMBER(write) override; diff --git a/src/devices/bus/msx_slot/music.h b/src/devices/bus/msx_slot/music.h index c7e2a7bafb9..3e8b54686c9 100644 --- a/src/devices/bus/msx_slot/music.h +++ b/src/devices/bus/msx_slot/music.h @@ -15,16 +15,16 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_MUSIC, msx_slot_music_device) #define MCFG_MSX_SLOT_MUSIC_ADD(_tag, _startpage, _numpages, _region, _offset, _ym2413_tag) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_MUSIC, _startpage, _numpages) \ - msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \ - msx_slot_music_device::set_ym2413_tag(*device, _ym2413_tag); + downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \ + downcast<msx_slot_music_device &>(*device).set_ym2413_tag(_ym2413_tag); class msx_slot_music_device : public msx_slot_rom_device { public: msx_slot_music_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_ym2413_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_music_device &>(device).m_ym2413_tag = tag; } + // configuration helpers + void set_ym2413_tag(const char *tag) { m_ym2413_tag = tag; } virtual DECLARE_READ8_MEMBER(read) override; diff --git a/src/devices/bus/msx_slot/panasonic08.cpp b/src/devices/bus/msx_slot/panasonic08.cpp index d16071a08ec..04630982531 100644 --- a/src/devices/bus/msx_slot/panasonic08.cpp +++ b/src/devices/bus/msx_slot/panasonic08.cpp @@ -38,15 +38,6 @@ MACHINE_CONFIG_START(msx_slot_panasonic08_device::device_add_mconfig) MACHINE_CONFIG_END -void msx_slot_panasonic08_device::set_rom_start(device_t &device, const char *region, uint32_t offset) -{ - msx_slot_panasonic08_device &dev = downcast<msx_slot_panasonic08_device &>(device); - - dev.m_rom_region.set_tag(region); - dev.m_region_offset = offset; -} - - void msx_slot_panasonic08_device::device_start() { // Sanity checks diff --git a/src/devices/bus/msx_slot/panasonic08.h b/src/devices/bus/msx_slot/panasonic08.h index 74e6b3f5575..7b4f62429f5 100644 --- a/src/devices/bus/msx_slot/panasonic08.h +++ b/src/devices/bus/msx_slot/panasonic08.h @@ -14,15 +14,15 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_PANASONIC08, msx_slot_panasonic08_device) #define MCFG_MSX_SLOT_PANASONIC08_ADD(_tag, _startpage, _numpages, _region, _offset) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_PANASONIC08, _startpage, _numpages) \ - msx_slot_panasonic08_device::set_rom_start(*device, "^" _region, _offset); + downcast<msx_slot_panasonic08_device &>(*device).set_rom_start("^" _region, _offset); class msx_slot_panasonic08_device : public device_t, public msx_internal_slot_interface { public: msx_slot_panasonic08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_rom_start(device_t &device, const char *region, uint32_t offset); + // configuration helpers + void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; } virtual DECLARE_READ8_MEMBER(read) override; virtual DECLARE_WRITE8_MEMBER(write) override; diff --git a/src/devices/bus/msx_slot/ram.h b/src/devices/bus/msx_slot/ram.h index 6b6ea760e8f..17bff978148 100644 --- a/src/devices/bus/msx_slot/ram.h +++ b/src/devices/bus/msx_slot/ram.h @@ -9,7 +9,7 @@ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_RAM, _startpage, _numpages) #define MCFG_MSX_SLOT_RAM_8KB \ - msx_slot_ram_device::force_start_address(*device, 0xe000); + downcast<msx_slot_ram_device &>(*device).force_start_address(0xe000); class msx_slot_ram_device : public device_t, @@ -18,7 +18,7 @@ class msx_slot_ram_device : public device_t, public: msx_slot_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void force_start_address(device_t &device, uint16_t start) { downcast<msx_slot_ram_device &>(device).m_start_address = start; } + void force_start_address(uint16_t start) { m_start_address = start; } virtual DECLARE_READ8_MEMBER(read) override; virtual DECLARE_WRITE8_MEMBER(write) override; diff --git a/src/devices/bus/msx_slot/ram_mm.h b/src/devices/bus/msx_slot/ram_mm.h index 584fc064897..87837909b2d 100644 --- a/src/devices/bus/msx_slot/ram_mm.h +++ b/src/devices/bus/msx_slot/ram_mm.h @@ -7,18 +7,18 @@ #define MCFG_MSX_SLOT_RAM_MM_ADD(_tag, _total_size) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_RAM_MM, 0, 4) \ - msx_slot_ram_mm_device::set_total_size(*device, _total_size); + downcast<msx_slot_ram_mm_device &>(*device).set_total_size(_total_size); #define MCFG_MSX_SLOT_RAMM_SET_RAMIO_BITS(_ramio_set_bits) \ - msx_slot_ram_mm_device::set_ramio_set_bits(*device, _ramio_set_bits); + downcast<msx_slot_ram_mm_device &>(*device).set_ramio_set_bits(_ramio_set_bits); class msx_slot_ram_mm_device : public device_t, public msx_internal_slot_interface { public: msx_slot_ram_mm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_total_size(device_t &device, uint32_t total_size) { dynamic_cast<msx_slot_ram_mm_device &>(device).m_total_size = total_size; } - static void set_ramio_set_bits(device_t &device, uint8_t ramio_set_bits) { dynamic_cast<msx_slot_ram_mm_device &>(device).m_ramio_set_bits = ramio_set_bits; } + void set_total_size(uint32_t total_size) { m_total_size = total_size; } + void set_ramio_set_bits(uint8_t ramio_set_bits) { m_ramio_set_bits = ramio_set_bits; } virtual DECLARE_READ8_MEMBER(read) override; virtual DECLARE_WRITE8_MEMBER(write) override; diff --git a/src/devices/bus/msx_slot/rom.cpp b/src/devices/bus/msx_slot/rom.cpp index 05805412762..6e80b9551d1 100644 --- a/src/devices/bus/msx_slot/rom.cpp +++ b/src/devices/bus/msx_slot/rom.cpp @@ -23,15 +23,6 @@ msx_slot_rom_device::msx_slot_rom_device(const machine_config &mconfig, device_t } -void msx_slot_rom_device::set_rom_start(device_t &device, const char *region, uint32_t offset) -{ - msx_slot_rom_device &dev = downcast<msx_slot_rom_device &>(device); - - dev.m_rom_region.set_tag(region); - dev.m_region_offset = offset; -} - - void msx_slot_rom_device::device_start() { // Sanity checks diff --git a/src/devices/bus/msx_slot/rom.h b/src/devices/bus/msx_slot/rom.h index 19081d8d76b..d433cef2c7a 100644 --- a/src/devices/bus/msx_slot/rom.h +++ b/src/devices/bus/msx_slot/rom.h @@ -9,7 +9,7 @@ #define MCFG_MSX_SLOT_ROM_ADD(_tag, _startpage, _numpages, _region, _offset) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_ROM, _startpage, _numpages) \ - msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); + downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); class msx_slot_rom_device : public device_t, public msx_internal_slot_interface @@ -17,8 +17,8 @@ class msx_slot_rom_device : public device_t, public: msx_slot_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_rom_start(device_t &device, const char *region, uint32_t offset); + // configuration helpers + void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; } virtual DECLARE_READ8_MEMBER(read) override; diff --git a/src/devices/bus/msx_slot/slot.cpp b/src/devices/bus/msx_slot/slot.cpp index 165edba37e0..3b826c87fa2 100644 --- a/src/devices/bus/msx_slot/slot.cpp +++ b/src/devices/bus/msx_slot/slot.cpp @@ -19,18 +19,3 @@ msx_internal_slot_interface::msx_internal_slot_interface() , m_end_address(0) { } - -void msx_internal_slot_interface::set_start_address(device_t &device, uint32_t start_address) -{ - msx_internal_slot_interface &dev = dynamic_cast<msx_internal_slot_interface &>(device); - dev.m_start_address = start_address; - dev.m_end_address = dev.m_start_address + dev.m_size; -} - -void msx_internal_slot_interface::set_size(device_t &device, uint32_t size) -{ - msx_internal_slot_interface &dev = dynamic_cast<msx_internal_slot_interface &>(device); - - dev.m_size = size; - dev.m_end_address = dev.m_start_address + dev.m_size; -} diff --git a/src/devices/bus/msx_slot/slot.h b/src/devices/bus/msx_slot/slot.h index 6a2c7f093d9..ad51f0c4f9d 100644 --- a/src/devices/bus/msx_slot/slot.h +++ b/src/devices/bus/msx_slot/slot.h @@ -17,8 +17,8 @@ pages; and multiple pieces of rom/ram/components can occur in a single slot. #define MCFG_MSX_INTERNAL_SLOT_ADD(_tag, _type, _startpage, _numpages) \ MCFG_DEVICE_ADD(_tag, _type, 0) \ - msx_internal_slot_interface::set_start_address(*device, _startpage * 0x4000); \ - msx_internal_slot_interface::set_size(*device, _numpages * 0x4000); + dynamic_cast<msx_internal_slot_interface &>(*device).set_start_address(_startpage * 0x4000); \ + dynamic_cast<msx_internal_slot_interface &>(*device).set_size(_numpages * 0x4000); class msx_internal_slot_interface { @@ -26,9 +26,9 @@ public: msx_internal_slot_interface(); virtual ~msx_internal_slot_interface() { } - // static configuration helpers - static void set_start_address(device_t &device, uint32_t start_address); - static void set_size(device_t &device, uint32_t size); + // configuration helpers + void set_start_address(uint32_t start_address) { m_start_address = start_address; m_end_address = m_start_address + m_size; } + void set_size(uint32_t size) { m_size = size; m_end_address = m_start_address + m_size; } virtual DECLARE_READ8_MEMBER(read) { return 0xFF; } virtual DECLARE_WRITE8_MEMBER(write) { } diff --git a/src/devices/bus/msx_slot/sony08.cpp b/src/devices/bus/msx_slot/sony08.cpp index 27ce312bab5..825b74bec6c 100644 --- a/src/devices/bus/msx_slot/sony08.cpp +++ b/src/devices/bus/msx_slot/sony08.cpp @@ -35,15 +35,6 @@ MACHINE_CONFIG_START(msx_slot_sony08_device::device_add_mconfig) MACHINE_CONFIG_END -void msx_slot_sony08_device::set_rom_start(device_t &device, const char *region, uint32_t offset) -{ - msx_slot_sony08_device &dev = downcast<msx_slot_sony08_device &>(device); - - dev.m_rom_region.set_tag(region); - dev.m_region_offset = offset; -} - - void msx_slot_sony08_device::device_start() { // Sanity checks diff --git a/src/devices/bus/msx_slot/sony08.h b/src/devices/bus/msx_slot/sony08.h index ce34b09b842..383c9b9d3a0 100644 --- a/src/devices/bus/msx_slot/sony08.h +++ b/src/devices/bus/msx_slot/sony08.h @@ -14,7 +14,7 @@ extern const device_type MSX_SLOT_SONY08; #define MCFG_MSX_SLOT_SONY08_ADD(_tag, _startpage, _numpages, _region, _offset) \ MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_SONY08, _startpage, _numpages) \ - msx_slot_sony08_device::set_rom_start(*device, "^" _region, _offset); + downcast<msx_slot_sony08_device &>(*device).set_rom_start("^" _region, _offset); class msx_slot_sony08_device : public device_t, public msx_internal_slot_interface @@ -22,8 +22,8 @@ class msx_slot_sony08_device : public device_t, public: msx_slot_sony08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_rom_start(device_t &device, const char *region, uint32_t offset); + // configuration helpers + void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; } virtual DECLARE_READ8_MEMBER(read) override; virtual DECLARE_WRITE8_MEMBER(write) override; diff --git a/src/devices/bus/nasbus/nasbus.cpp b/src/devices/bus/nasbus/nasbus.cpp index dafe56f68ac..585b1043c07 100644 --- a/src/devices/bus/nasbus/nasbus.cpp +++ b/src/devices/bus/nasbus/nasbus.cpp @@ -34,13 +34,6 @@ nasbus_slot_device::nasbus_slot_device(const machine_config &mconfig, device_typ { } -void nasbus_slot_device::set_nasbus_slot(device_t &device, device_t *owner, const char *nasbus_tag) -{ - nasbus_slot_device &nasbus_card = dynamic_cast<nasbus_slot_device &>(device); - nasbus_card.m_owner = owner; - nasbus_card.m_nasbus_tag = nasbus_tag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/bus/nasbus/nasbus.h b/src/devices/bus/nasbus/nasbus.h index 3b553cd66e8..477a737e7f9 100644 --- a/src/devices/bus/nasbus/nasbus.h +++ b/src/devices/bus/nasbus/nasbus.h @@ -111,10 +111,10 @@ #define MCFG_NASBUS_SLOT_ADD(_tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, NASBUS_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - nasbus_slot_device::set_nasbus_slot(*device, this, NASBUS_TAG); + downcast<nasbus_slot_device &>(*device).set_nasbus_slot(this, NASBUS_TAG); #define MCFG_NASBUS_RAM_DISABLE_HANDLER(_devcb) \ - devcb = &nasbus_device::set_ram_disable_handler(*device, DEVCB_##_devcb); + devcb = &downcast<nasbus_device &>(*device).set_ram_disable_handler(DEVCB_##_devcb); //************************************************************************** @@ -132,7 +132,7 @@ public: // construction/destruction nasbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void set_nasbus_slot(device_t &device, device_t *owner, const char *nasbus_tag); + void set_nasbus_slot(device_t *owner, const char *nasbus_tag) { m_owner = owner; m_nasbus_tag = nasbus_tag; } protected: nasbus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -157,8 +157,7 @@ public: nasbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~nasbus_device(); - template <class Object> static devcb_base &set_ram_disable_handler(device_t &device, Object &&cb) - { return downcast<nasbus_device &>(device).m_ram_disable_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ram_disable_handler(Object &&cb) { return m_ram_disable_handler.set_callback(std::forward<Object>(cb)); } void add_card(device_nasbus_card_interface *card); diff --git a/src/devices/bus/nes_ctrl/ctrl.h b/src/devices/bus/nes_ctrl/ctrl.h index 5b59ebb5f33..a0ca47d4d36 100644 --- a/src/devices/bus/nes_ctrl/ctrl.h +++ b/src/devices/bus/nes_ctrl/ctrl.h @@ -56,7 +56,7 @@ public: nes_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~nes_control_port_device(); - static void set_brightpixel_callback(device_t &device, nesctrl_brightpixel_delegate callback) { downcast<nes_control_port_device &>(device).m_brightpixel_cb = callback; } + template <typename Object> void set_brightpixel_callback(Object &&cb) { m_brightpixel_cb = std::forward<Object>(cb); } uint8_t read_bit0(); uint8_t read_bit34(); @@ -90,7 +90,7 @@ DECLARE_DEVICE_TYPE(NES_CONTROL_PORT, nes_control_port_device) MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_NESCTRL_BRIGHTPIXEL_CB(_class, _method) \ - nes_control_port_device::set_brightpixel_callback(*device, nesctrl_brightpixel_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<nes_control_port_device &>(*device).set_brightpixel_callback(nesctrl_brightpixel_delegate(&_class::_method, #_class "::" #_method, this)); SLOT_INTERFACE_EXTERN( nes_control_port1_devices ); diff --git a/src/devices/bus/nubus/nubus.cpp b/src/devices/bus/nubus/nubus.cpp index c4934cda302..5eee5ad79a5 100644 --- a/src/devices/bus/nubus/nubus.cpp +++ b/src/devices/bus/nubus/nubus.cpp @@ -38,13 +38,6 @@ nubus_slot_device::nubus_slot_device(const machine_config &mconfig, device_type { } -void nubus_slot_device::static_set_nubus_slot(device_t &device, const char *tag, const char *slottag) -{ - nubus_slot_device &nubus_card = dynamic_cast<nubus_slot_device &>(device); - nubus_card.m_nubus_tag = tag; - nubus_card.m_nubus_slottag = slottag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -53,7 +46,7 @@ void nubus_slot_device::device_start() { device_nubus_card_interface *dev = dynamic_cast<device_nubus_card_interface *>(get_card_device()); - if (dev) device_nubus_card_interface::static_set_nubus_tag(*dev, m_nubus_tag, m_nubus_slottag); + if (dev) dev->set_nubus_tag(m_nubus_tag, m_nubus_slottag); } //************************************************************************** @@ -62,12 +55,6 @@ void nubus_slot_device::device_start() DEFINE_DEVICE_TYPE(NUBUS, nubus_device, "nubus", "NuBus") -void nubus_device::static_set_cputag(device_t &device, const char *tag) -{ - nubus_device &nubus = downcast<nubus_device &>(device); - nubus.m_cputag = tag; -} - //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -266,13 +253,6 @@ device_nubus_card_interface::~device_nubus_card_interface() { } -void device_nubus_card_interface::static_set_nubus_tag(device_t &device, const char *tag, const char *slottag) -{ - device_nubus_card_interface &nubus_card = dynamic_cast<device_nubus_card_interface &>(device); - nubus_card.m_nubus_tag = tag; - nubus_card.m_nubus_slottag = slottag; -} - void device_nubus_card_interface::interface_pre_start() { if (!m_nubus) diff --git a/src/devices/bus/nubus/nubus.h b/src/devices/bus/nubus/nubus.h index 2f7fc5c359a..011a87a861d 100644 --- a/src/devices/bus/nubus/nubus.h +++ b/src/devices/bus/nubus/nubus.h @@ -20,37 +20,37 @@ //************************************************************************** #define MCFG_NUBUS_CPU(_cputag) \ - nubus_device::static_set_cputag(*device, _cputag); + downcast<nubus_device &>(*device).set_cputag(_cputag); #define MCFG_NUBUS_OUT_IRQ9_CB(_devcb) \ - devcb = &nubus_device::set_out_irq9_callback(*device, DEVCB_##_devcb); + devcb = &downcast<nubus_device &>(*device).set_out_irq9_callback(DEVCB_##_devcb); #define MCFG_NUBUS_OUT_IRQA_CB(_devcb) \ - devcb = &nubus_device::set_out_irqa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<nubus_device &>(*device).set_out_irqa_callback(DEVCB_##_devcb); #define MCFG_NUBUS_OUT_IRQB_CB(_devcb) \ - devcb = &nubus_device::set_out_irqb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<nubus_device &>(*device).set_out_irqb_callback(DEVCB_##_devcb); #define MCFG_NUBUS_OUT_IRQC_CB(_devcb) \ - devcb = &nubus_device::set_out_irqc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<nubus_device &>(*device).set_out_irqc_callback(DEVCB_##_devcb); #define MCFG_NUBUS_OUT_IRQD_CB(_devcb) \ - devcb = &nubus_device::set_out_irqd_callback(*device, DEVCB_##_devcb); + devcb = &downcast<nubus_device &>(*device).set_out_irqd_callback(DEVCB_##_devcb); #define MCFG_NUBUS_OUT_IRQE_CB(_devcb) \ - devcb = &nubus_device::set_out_irqe_callback(*device, DEVCB_##_devcb); + devcb = &downcast<nubus_device &>(*device).set_out_irqe_callback(DEVCB_##_devcb); #define MCFG_NUBUS_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, NUBUS_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - nubus_slot_device::static_set_nubus_slot(*device, _nbtag, _tag); + downcast<nubus_slot_device &>(*device).set_nubus_slot(_nbtag, _tag); #define MCFG_NUBUS_SLOT_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) #define MCFG_NUBUS_ONBOARD_ADD(_nbtag, _tag, _dev_type, _def_inp) \ MCFG_DEVICE_ADD(_tag, _dev_type, 0) \ MCFG_DEVICE_INPUT_DEFAULTS(_def_inp) \ - device_nubus_card_interface::static_set_nubus_tag(*device, _nbtag, _tag); + downcast<device_nubus_card_interface &>(*device).set_nubus_tag(_nbtag, _tag); //************************************************************************** // TYPE DEFINITIONS @@ -65,7 +65,7 @@ public: nubus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_nubus_slot(device_t &device, const char *tag, const char *slottag); + void set_nubus_slot(const char *tag, const char *slottag) { m_nubus_tag = tag; m_nubus_slottag = slottag; } protected: nubus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -90,13 +90,13 @@ public: ~nubus_device() { m_device_list.detach_all(); } // inline configuration - static void static_set_cputag(device_t &device, const char *tag); - template <class Object> static devcb_base &set_out_irq9_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irq9_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irqa_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irqb_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irqc_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irqd_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqd_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irqe_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqe_cb.set_callback(std::forward<Object>(cb)); } + void set_cputag(const char *tag) { m_cputag = tag; } + template <class Object> devcb_base &set_out_irq9_callback(Object &&cb) { return m_out_irq9_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irqa_callback(Object &&cb) { return m_out_irqa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irqb_callback(Object &&cb) { return m_out_irqb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irqc_callback(Object &&cb) { return m_out_irqc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irqd_callback(Object &&cb) { return m_out_irqd_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irqe_callback(Object &&cb) { return m_out_irqe_cb.set_callback(std::forward<Object>(cb)); } void add_nubus_card(device_nubus_card_interface *card); void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler, uint32_t mask=0xffffffff); @@ -165,7 +165,7 @@ public: void lower_slot_irq() { nubus().set_irq_line(m_slot, CLEAR_LINE); } // inline configuration - static void static_set_nubus_tag(device_t &device, const char *tag, const char *slottag); + void set_nubus_tag(const char *tag, const char *slottag) { m_nubus_tag = tag; m_nubus_slottag = slottag; } protected: device_nubus_card_interface(const machine_config &mconfig, device_t &device); diff --git a/src/devices/bus/nubus/nubus_48gc.cpp b/src/devices/bus/nubus/nubus_48gc.cpp index de2d52fb420..a3696a376ea 100644 --- a/src/devices/bus/nubus/nubus_48gc.cpp +++ b/src/devices/bus/nubus/nubus_48gc.cpp @@ -79,7 +79,7 @@ jmfb_device::jmfb_device(const machine_config &mconfig, device_type type, const m_is824(is824), m_assembled_tag(util::string_format("%s:%s", tag, GC48_SCREEN_NAME)) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } nubus_48gc_device::nubus_48gc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : diff --git a/src/devices/bus/nubus/nubus_m2hires.cpp b/src/devices/bus/nubus/nubus_m2hires.cpp index b267ec4ef27..f7830f2f47a 100644 --- a/src/devices/bus/nubus/nubus_m2hires.cpp +++ b/src/devices/bus/nubus/nubus_m2hires.cpp @@ -73,7 +73,7 @@ nubus_m2hires_device::nubus_m2hires_device(const machine_config &mconfig, device m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_assembled_tag(util::string_format("%s:%s", tag, M2HIRES_SCREEN_NAME)) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/nubus_m2video.cpp b/src/devices/bus/nubus/nubus_m2video.cpp index 2a1b820cee1..45fa1e8d129 100644 --- a/src/devices/bus/nubus/nubus_m2video.cpp +++ b/src/devices/bus/nubus/nubus_m2video.cpp @@ -75,7 +75,7 @@ nubus_m2video_device::nubus_m2video_device(const machine_config &mconfig, device m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_assembled_tag(util::string_format("%s:%s", tag, M2VIDEO_SCREEN_NAME)) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/nubus_radiustpd.cpp b/src/devices/bus/nubus/nubus_radiustpd.cpp index 9b6749f92b2..32e66083ae7 100644 --- a/src/devices/bus/nubus/nubus_radiustpd.cpp +++ b/src/devices/bus/nubus/nubus_radiustpd.cpp @@ -76,7 +76,7 @@ nubus_radiustpd_device::nubus_radiustpd_device(const machine_config &mconfig, de m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_assembled_tag(util::string_format("%s:%s", tag, RADIUSTPD_SCREEN_NAME)) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/nubus_spec8.cpp b/src/devices/bus/nubus/nubus_spec8.cpp index 215ad07a1ab..82d7553bc68 100644 --- a/src/devices/bus/nubus/nubus_spec8.cpp +++ b/src/devices/bus/nubus/nubus_spec8.cpp @@ -78,7 +78,7 @@ nubus_spec8s3_device::nubus_spec8s3_device(const machine_config &mconfig, device m_assembled_tag(util::string_format("%s:%s", tag, SPEC8S3_SCREEN_NAME)), m_vbl_pending(false), m_parameter(0) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/nubus_specpdq.cpp b/src/devices/bus/nubus/nubus_specpdq.cpp index 30012d26e64..9eda2555e87 100644 --- a/src/devices/bus/nubus/nubus_specpdq.cpp +++ b/src/devices/bus/nubus/nubus_specpdq.cpp @@ -92,7 +92,7 @@ nubus_specpdq_device::nubus_specpdq_device(const machine_config &mconfig, device m_width(0), m_height(0), m_patofsx(0), m_patofsy(0), m_vram_addr(0), m_vram_src(0), m_palette(*this, "palette") { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/nubus_wsportrait.cpp b/src/devices/bus/nubus/nubus_wsportrait.cpp index 095c7aa781e..a88c1cbdb9a 100644 --- a/src/devices/bus/nubus/nubus_wsportrait.cpp +++ b/src/devices/bus/nubus/nubus_wsportrait.cpp @@ -76,7 +76,7 @@ nubus_wsportrait_device::nubus_wsportrait_device(const machine_config &mconfig, m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_assembled_tag(util::string_format("%s:%s", tag, WSPORTRAIT_SCREEN_NAME)) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/pds30_30hr.cpp b/src/devices/bus/nubus/pds30_30hr.cpp index b6ae942efb9..4efd30712ef 100644 --- a/src/devices/bus/nubus/pds30_30hr.cpp +++ b/src/devices/bus/nubus/pds30_30hr.cpp @@ -76,7 +76,7 @@ nubus_xceed30hr_device::nubus_xceed30hr_device(const machine_config &mconfig, de m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_assembled_tag(util::string_format("%s:%s", tag, XCEED30HR_SCREEN_NAME)) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/pds30_cb264.cpp b/src/devices/bus/nubus/pds30_cb264.cpp index 7741308dd6b..37846d2f1eb 100644 --- a/src/devices/bus/nubus/pds30_cb264.cpp +++ b/src/devices/bus/nubus/pds30_cb264.cpp @@ -70,7 +70,7 @@ nubus_cb264se30_device::nubus_cb264se30_device(const machine_config &mconfig, de m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_assembled_tag(util::string_format("%s:%s", tag, CB264SE30_SCREEN_NAME)) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/pds30_mc30.cpp b/src/devices/bus/nubus/pds30_mc30.cpp index 1456c88770a..5c6fa193bf6 100644 --- a/src/devices/bus/nubus/pds30_mc30.cpp +++ b/src/devices/bus/nubus/pds30_mc30.cpp @@ -72,7 +72,7 @@ nubus_xceedmc30_device::nubus_xceedmc30_device(const machine_config &mconfig, de m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_assembled_tag(util::string_format("%s:%s", tag, XCEEDMC30_SCREEN_NAME)) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/pds30_procolor816.cpp b/src/devices/bus/nubus/pds30_procolor816.cpp index d0d73a81a7e..81417b33f44 100644 --- a/src/devices/bus/nubus/pds30_procolor816.cpp +++ b/src/devices/bus/nubus/pds30_procolor816.cpp @@ -75,7 +75,7 @@ nubus_procolor816_device::nubus_procolor816_device(const machine_config &mconfig m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_assembled_tag(util::string_format("%s:%s", tag, PROCOLOR816_SCREEN_NAME)) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/pds30_sigmalview.cpp b/src/devices/bus/nubus/pds30_sigmalview.cpp index 0d1daef83ea..1fcbb1ec3aa 100644 --- a/src/devices/bus/nubus/pds30_sigmalview.cpp +++ b/src/devices/bus/nubus/pds30_sigmalview.cpp @@ -70,7 +70,7 @@ nubus_lview_device::nubus_lview_device(const machine_config &mconfig, device_typ m_vram32(nullptr), m_vbl_disable(0), m_toggle(0), m_timer(nullptr), m_protstate(0), m_assembled_tag(util::string_format("%s:%s", tag, LVIEW_SCREEN_NAME)) { - static_set_screen(*this, m_assembled_tag.c_str()); + set_screen(m_assembled_tag.c_str()); } //------------------------------------------------- diff --git a/src/devices/bus/oricext/oricext.h b/src/devices/bus/oricext/oricext.h index 6dc84ed2599..e914ceeefb7 100644 --- a/src/devices/bus/oricext/oricext.h +++ b/src/devices/bus/oricext/oricext.h @@ -17,7 +17,7 @@ MCFG_DEVICE_ADD(_tag, ORICEXT_CONNECTOR, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ downcast<oricext_connector *>(device)->set_cputag(_cputag); \ - devcb = &oricext_connector::set_irq_handler(*device, DEVCB_##_irq); + devcb = &downcast<oricext_connector &>(*device).set_irq_handler(DEVCB_##_irq); class oricext_device; @@ -29,7 +29,7 @@ public: virtual ~oricext_connector(); void set_cputag(const char *tag); - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<oricext_connector &>(device).irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return irq_handler.set_callback(std::forward<Object>(cb)); } void irq_w(int state); protected: diff --git a/src/devices/bus/pc1512/mouse.h b/src/devices/bus/pc1512/mouse.h index f94984ab979..36cf22ce9bd 100644 --- a/src/devices/bus/pc1512/mouse.h +++ b/src/devices/bus/pc1512/mouse.h @@ -37,16 +37,16 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_PC1512_MOUSE_PORT_X_CB(_write) \ - devcb = &pc1512_mouse_port_device::set_x_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<pc1512_mouse_port_device &>(*device).set_x_wr_callback(DEVCB_##_write); #define MCFG_PC1512_MOUSE_PORT_Y_CB(_write) \ - devcb = &pc1512_mouse_port_device::set_y_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<pc1512_mouse_port_device &>(*device).set_y_wr_callback(DEVCB_##_write); #define MCFG_PC1512_MOUSE_PORT_M1_CB(_write) \ - devcb = &pc1512_mouse_port_device::set_m1_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<pc1512_mouse_port_device &>(*device).set_m1_wr_callback(DEVCB_##_write); #define MCFG_PC1512_MOUSE_PORT_M2_CB(_write) \ - devcb = &pc1512_mouse_port_device::set_m2_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<pc1512_mouse_port_device &>(*device).set_m2_wr_callback(DEVCB_##_write); @@ -81,10 +81,10 @@ public: pc1512_mouse_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_x_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_x.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_y_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_y.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_m1_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_m1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_m2_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_m2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_x_wr_callback(Object &&cb) { return m_write_x.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_y_wr_callback(Object &&cb) { return m_write_y.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_m1_wr_callback(Object &&cb) { return m_write_m1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_m2_wr_callback(Object &&cb) { return m_write_m2.set_callback(std::forward<Object>(cb)); } // peripheral interface void x_w(uint8_t data) { m_write_x(data); } diff --git a/src/devices/bus/pc_kbd/pc_kbdc.cpp b/src/devices/bus/pc_kbd/pc_kbdc.cpp index 7fc1ed0419a..9bd50c1ea5f 100644 --- a/src/devices/bus/pc_kbd/pc_kbdc.cpp +++ b/src/devices/bus/pc_kbd/pc_kbdc.cpp @@ -38,12 +38,6 @@ pc_kbdc_slot_device::pc_kbdc_slot_device(const machine_config &mconfig, const ch } -void pc_kbdc_slot_device::static_set_pc_kbdc_slot(device_t &device, device_t *kbdc_device) -{ - pc_kbdc_slot_device &pc_kbdc = dynamic_cast<pc_kbdc_slot_device &>(device); - pc_kbdc.m_kbdc_device = kbdc_device; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -54,7 +48,7 @@ void pc_kbdc_slot_device::device_start() if (pc_kbd) { - device_pc_kbd_interface::static_set_pc_kbdc( *pc_kbd, m_kbdc_device ); + pc_kbd->set_pc_kbdc(m_kbdc_device); } } @@ -219,13 +213,6 @@ WRITE_LINE_MEMBER( device_pc_kbd_interface::data_write ) } -void device_pc_kbd_interface::static_set_pc_kbdc(device_t &device, device_t *kbdc_device) -{ - device_pc_kbd_interface &pc_kbd = dynamic_cast<device_pc_kbd_interface &>(device); - pc_kbd.m_pc_kbdc = dynamic_cast<pc_kbdc_device *>(kbdc_device); -} - - void device_pc_kbd_interface::set_pc_kbdc_device() { if ( m_pc_kbdc ) diff --git a/src/devices/bus/pc_kbd/pc_kbdc.h b/src/devices/bus/pc_kbd/pc_kbdc.h index f6de3d3a86e..75a17da2d19 100644 --- a/src/devices/bus/pc_kbd/pc_kbdc.h +++ b/src/devices/bus/pc_kbd/pc_kbdc.h @@ -21,15 +21,15 @@ set the data line and then set the clock line. //************************************************************************** #define MCFG_PC_KBDC_OUT_CLOCK_CB(_devcb) \ - devcb = &pc_kbdc_device::set_out_clock_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pc_kbdc_device &>(*device).set_out_clock_callback(DEVCB_##_devcb); #define MCFG_PC_KBDC_OUT_DATA_CB(_devcb) \ - devcb = &pc_kbdc_device::set_out_data_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pc_kbdc_device &>(*device).set_out_data_callback(DEVCB_##_devcb); #define MCFG_PC_KBDC_SLOT_ADD(_kbdc_tag, _tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, PC_KBDC_SLOT, 0 ) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - pc_kbdc_slot_device::static_set_pc_kbdc_slot(*device, subdevice(_kbdc_tag) ); + downcast<pc_kbdc_slot_device &>(*device).set_pc_kbdc_slot(subdevice(_kbdc_tag) ); //************************************************************************** // TYPE DEFINITIONS @@ -47,7 +47,7 @@ public: virtual void device_start() override; // inline configuration - static void static_set_pc_kbdc_slot(device_t &device, device_t *kbdc_device); + void set_pc_kbdc_slot(device_t *kbdc_device) { m_kbdc_device = kbdc_device; } protected: // configuration @@ -67,8 +67,8 @@ public: // construction/destruction pc_kbdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_clock_callback(device_t &device, Object &&cb) { return downcast<pc_kbdc_device &>(device).m_out_clock_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_data_callback(device_t &device, Object &&cb) { return downcast<pc_kbdc_device &>(device).m_out_data_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_clock_callback(Object &&cb) { return m_out_clock_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_data_callback(Object &&cb) { return m_out_data_cb.set_callback(std::forward<Object>(cb)); } void set_keyboard(device_pc_kbd_interface *keyboard); @@ -129,7 +129,7 @@ public: virtual DECLARE_WRITE_LINE_MEMBER( data_write ); // inline configuration - static void static_set_pc_kbdc(device_t &device, device_t *kbdc_device); + void set_pc_kbdc(device_t *kbdc_device) { m_pc_kbdc = dynamic_cast<pc_kbdc_device *>(kbdc_device); } protected: pc_kbdc_device *m_pc_kbdc; diff --git a/src/devices/bus/pet/cass.h b/src/devices/bus/pet/cass.h index d5c40c37181..c906f83754b 100644 --- a/src/devices/bus/pet/cass.h +++ b/src/devices/bus/pet/cass.h @@ -39,7 +39,7 @@ #define MCFG_PET_DATASSETTE_PORT_ADD(_tag, _slot_intf, _def_slot, _devcb) \ MCFG_DEVICE_ADD(_tag, PET_DATASSETTE_PORT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - devcb = &pet_datassette_port_device::set_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_datassette_port_device &>(*device).set_read_handler(DEVCB_##_devcb); @@ -59,7 +59,7 @@ public: virtual ~pet_datassette_port_device(); // static configuration helpers - template <class Object> static devcb_base &set_read_handler(device_t &device, Object &&cb) { return downcast<pet_datassette_port_device &>(device).m_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_handler(Object &&cb) { return m_read_handler.set_callback(std::forward<Object>(cb)); } // computer interface DECLARE_READ_LINE_MEMBER( read ); diff --git a/src/devices/bus/pet/user.h b/src/devices/bus/pet/user.h index 52568776882..04034c492e0 100644 --- a/src/devices/bus/pet/user.h +++ b/src/devices/bus/pet/user.h @@ -33,61 +33,61 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_PET_USER_PORT_2_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_2_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_3_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_3_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_3_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_4_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_4_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_4_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_5_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_5_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_5_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_6_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_6_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_6_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_7_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_7_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_7_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_8_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_8_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_8_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_9_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_9_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_9_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_10_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_10_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_10_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_B_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_b_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_b_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_C_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_c_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_c_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_D_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_d_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_d_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_E_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_e_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_e_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_F_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_f_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_f_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_H_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_h_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_h_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_J_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_j_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_j_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_K_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_k_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_k_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_L_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_l_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_l_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_M_HANDLER(_devcb) \ - devcb = &pet_user_port_device::set_m_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pet_user_port_device &>(*device).set_m_handler(DEVCB_##_devcb); DECLARE_DEVICE_TYPE(PET_USER_PORT, pet_user_port_device) @@ -102,25 +102,25 @@ class pet_user_port_device : public device_t, public: pet_user_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_2_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_2_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_3_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_3_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_4_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_4_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_5_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_5_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_6_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_6_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_7_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_7_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_8_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_8_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_9_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_9_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_10_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_10_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_b_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_b_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_c_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_c_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_d_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_e_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_e_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_f_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_f_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_h_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_h_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_j_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_j_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_k_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_k_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_l_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_l_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_m_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_m_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_2_handler(Object &&cb) { return m_2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_3_handler(Object &&cb) { return m_3_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_4_handler(Object &&cb) { return m_4_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_5_handler(Object &&cb) { return m_5_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_6_handler(Object &&cb) { return m_6_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_7_handler(Object &&cb) { return m_7_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_8_handler(Object &&cb) { return m_8_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_9_handler(Object &&cb) { return m_9_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_10_handler(Object &&cb) { return m_10_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_b_handler(Object &&cb) { return m_b_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_c_handler(Object &&cb) { return m_c_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_d_handler(Object &&cb) { return m_d_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_e_handler(Object &&cb) { return m_e_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_f_handler(Object &&cb) { return m_f_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_h_handler(Object &&cb) { return m_h_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_j_handler(Object &&cb) { return m_j_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_k_handler(Object &&cb) { return m_k_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_l_handler(Object &&cb) { return m_l_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_m_handler(Object &&cb) { return m_m_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( write_2 ); DECLARE_WRITE_LINE_MEMBER( write_3 ); diff --git a/src/devices/bus/plus4/exp.h b/src/devices/bus/plus4/exp.h index 20cf09c65ad..4a4d583dd5b 100644 --- a/src/devices/bus/plus4/exp.h +++ b/src/devices/bus/plus4/exp.h @@ -67,16 +67,16 @@ #define MCFG_PLUS4_EXPANSION_SLOT_IRQ_CALLBACK(_write) \ - devcb = &plus4_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<plus4_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_PLUS4_EXPANSION_SLOT_CD_INPUT_CALLBACK(_read) \ - devcb = &plus4_expansion_slot_device::set_cd_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<plus4_expansion_slot_device &>(*device).set_cd_rd_callback(DEVCB_##_read); #define MCFG_PLUS4_EXPANSION_SLOT_CD_OUTPUT_CALLBACK(_write) \ - devcb = &plus4_expansion_slot_device::set_cd_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<plus4_expansion_slot_device &>(*device).set_cd_wr_callback(DEVCB_##_write); #define MCFG_PLUS4_EXPANSION_SLOT_AEC_CALLBACK(_write) \ - devcb = &plus4_expansion_slot_device::set_aec_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<plus4_expansion_slot_device &>(*device).set_aec_wr_callback(DEVCB_##_write); @@ -96,10 +96,10 @@ public: // construction/destruction plus4_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cd_rd_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_read_dma_cd.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cd_wr_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_write_dma_cd.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_aec_wr_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_write_aec.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cd_rd_callback(Object &&cb) { return m_read_dma_cd.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cd_wr_callback(Object &&cb) { return m_write_dma_cd.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_aec_wr_callback(Object &&cb) { return m_write_aec.set_callback(std::forward<Object>(cb)); } // computer interface uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h); diff --git a/src/devices/bus/pofo/exp.h b/src/devices/bus/pofo/exp.h index 2adcddb16f3..fadf724b68f 100644 --- a/src/devices/bus/pofo/exp.h +++ b/src/devices/bus/pofo/exp.h @@ -64,13 +64,13 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_PORTFOLIO_EXPANSION_SLOT_EINT_CALLBACK(_write) \ - devcb = &portfolio_expansion_slot_device::set_eint_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<portfolio_expansion_slot_device &>(*device).set_eint_wr_callback(DEVCB_##_write); #define MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(_write) \ - devcb = &portfolio_expansion_slot_device::set_nmio_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<portfolio_expansion_slot_device &>(*device).set_nmio_wr_callback(DEVCB_##_write); #define MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(_write) \ - devcb = &portfolio_expansion_slot_device::set_wake_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<portfolio_expansion_slot_device &>(*device).set_wake_wr_callback(DEVCB_##_write); @@ -117,9 +117,9 @@ public: // construction/destruction portfolio_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_eint_wr_callback(device_t &device, Object &&cb) { return downcast<portfolio_expansion_slot_device &>(device).m_write_eint.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nmio_wr_callback(device_t &device, Object &&cb) { return downcast<portfolio_expansion_slot_device &>(device).m_write_nmio.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_wake_wr_callback(device_t &device, Object &&cb) { return downcast<portfolio_expansion_slot_device &>(device).m_write_wake.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_eint_wr_callback(Object &&cb) { return m_write_eint.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmio_wr_callback(Object &&cb) { return m_write_nmio.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_wake_wr_callback(Object &&cb) { return m_write_wake.set_callback(std::forward<Object>(cb)); } // computer interface bool nmd1_r() { return (m_card != nullptr) ? m_card->nmd1() : 1; } diff --git a/src/devices/bus/psi_kbd/psi_kbd.h b/src/devices/bus/psi_kbd/psi_kbd.h index d042ad5e444..2381ccc97be 100644 --- a/src/devices/bus/psi_kbd/psi_kbd.h +++ b/src/devices/bus/psi_kbd/psi_kbd.h @@ -40,10 +40,10 @@ MCFG_DEVICE_SLOT_INTERFACE(psi_keyboard_devices, _def_slot, false) #define MCFG_PSI_KEYBOARD_RX_HANDLER(_devcb) \ - devcb = &psi_keyboard_bus_device::set_rx_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psi_keyboard_bus_device &>(*device).set_rx_handler(DEVCB_##_devcb); #define MCFG_PSI_KEYBOARD_KEY_STROBE_HANDLER(_devcb) \ - devcb = &psi_keyboard_bus_device::set_key_strobe_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psi_keyboard_bus_device &>(*device).set_key_strobe_handler(DEVCB_##_devcb); //************************************************************************** @@ -62,11 +62,8 @@ public: virtual ~psi_keyboard_bus_device(); // callbacks - template <class Object> static devcb_base &set_rx_handler(device_t &device, Object &&cb) - { return downcast<psi_keyboard_bus_device &>(device).m_rx_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_key_strobe_handler(device_t &device, Object &&cb) - { return downcast<psi_keyboard_bus_device &>(device).m_key_strobe_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rx_handler(Object &&cb) { return m_rx_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_key_strobe_handler(Object &&cb) { return m_key_strobe_handler.set_callback(std::forward<Object>(cb)); } // called from keyboard DECLARE_WRITE_LINE_MEMBER( rx_w ) { m_rx_handler(state); } diff --git a/src/devices/bus/psx/ctlrport.h b/src/devices/bus/psx/ctlrport.h index 531c32a27dc..55c8d4473d3 100644 --- a/src/devices/bus/psx/ctlrport.h +++ b/src/devices/bus/psx/ctlrport.h @@ -82,10 +82,10 @@ private: }; #define MCFG_PSX_CONTROLLER_PORTS_DSR_HANDLER(_devcb) \ - devcb = &psxcontrollerports_device::set_dsr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcontrollerports_device &>(*device).set_dsr_handler(DEVCB_##_devcb); #define MCFG_PSX_CONTROLLER_PORTS_RXD_HANDLER(_devcb) \ - devcb = &psxcontrollerports_device::set_rxd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcontrollerports_device &>(*device).set_rxd_handler(DEVCB_##_devcb); class psxcontrollerports_device : public device_t { @@ -94,8 +94,8 @@ public: void ack(); - template <class Object> static devcb_base &set_dsr_handler(device_t &device, Object &&cb) { return downcast<psxcontrollerports_device &>(device).m_dsr_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<psxcontrollerports_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dsr_handler(Object &&cb) { return m_dsr_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxd_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(write_sck); DECLARE_WRITE_LINE_MEMBER(write_dtr); diff --git a/src/devices/bus/ql/exp.h b/src/devices/bus/ql/exp.h index 43c6c6e7edc..bdb9e98808a 100644 --- a/src/devices/bus/ql/exp.h +++ b/src/devices/bus/ql/exp.h @@ -59,16 +59,16 @@ #define MCFG_QL_EXPANSION_SLOT_IPL0L_CALLBACK(_write) \ - devcb = &ql_expansion_slot_device::set_ipl0l_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<ql_expansion_slot_device &>(*device).set_ipl0l_wr_callback(DEVCB_##_write); #define MCFG_QL_EXPANSION_SLOT_IPL1L_CALLBACK(_write) \ - devcb = &ql_expansion_slot_device::set_ipl1l_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<ql_expansion_slot_device &>(*device).set_ipl1l_wr_callback(DEVCB_##_write); #define MCFG_QL_EXPANSION_SLOT_BERRL_CALLBACK(_write) \ - devcb = &ql_expansion_slot_device::set_berrl_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<ql_expansion_slot_device &>(*device).set_berrl_wr_callback(DEVCB_##_write); #define MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(_write) \ - devcb = &ql_expansion_slot_device::set_extintl_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<ql_expansion_slot_device &>(*device).set_extintl_wr_callback(DEVCB_##_write); @@ -107,10 +107,10 @@ public: // construction/destruction ql_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_ipl0l_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_ipl0l.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ipl1l_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_ipl1l.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_berrl_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_berrl.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_extintl_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_extintl.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ipl0l_wr_callback(Object &&cb) { return m_write_ipl0l.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ipl1l_wr_callback(Object &&cb) { return m_write_ipl1l.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_berrl_wr_callback(Object &&cb) { return m_write_berrl.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_extintl_wr_callback(Object &&cb) { return m_write_extintl.set_callback(std::forward<Object>(cb)); } // computer interface uint8_t read(address_space &space, offs_t offset, uint8_t data) { if (m_card) data = m_card->read(space, offset, data); return data; } diff --git a/src/devices/bus/rs232/rs232.h b/src/devices/bus/rs232/rs232.h index adc121694ef..dbd372418d2 100644 --- a/src/devices/bus/rs232/rs232.h +++ b/src/devices/bus/rs232/rs232.h @@ -11,25 +11,25 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_RS232_RXD_HANDLER(_devcb) \ - devcb = &rs232_port_device::set_rxd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<rs232_port_device &>(*device).set_rxd_handler(DEVCB_##_devcb); #define MCFG_RS232_DCD_HANDLER(_devcb) \ - devcb = &rs232_port_device::set_dcd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<rs232_port_device &>(*device).set_dcd_handler(DEVCB_##_devcb); #define MCFG_RS232_DSR_HANDLER(_devcb) \ - devcb = &rs232_port_device::set_dsr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<rs232_port_device &>(*device).set_dsr_handler(DEVCB_##_devcb); #define MCFG_RS232_RI_HANDLER(_devcb) \ - devcb = &rs232_port_device::set_ri_handler(*device, DEVCB_##_devcb); + devcb = &downcast<rs232_port_device &>(*device).set_ri_handler(DEVCB_##_devcb); #define MCFG_RS232_CTS_HANDLER(_devcb) \ - devcb = &rs232_port_device::set_cts_handler(*device, DEVCB_##_devcb); + devcb = &downcast<rs232_port_device &>(*device).set_cts_handler(DEVCB_##_devcb); #define MCFG_RS232_RXC_HANDLER(_devcb) \ - devcb = &rs232_port_device::set_rxc_handler(*device, DEVCB_##_devcb); + devcb = &downcast<rs232_port_device &>(*device).set_rxc_handler(DEVCB_##_devcb); #define MCFG_RS232_TXC_HANDLER(_devcb) \ - devcb = &rs232_port_device::set_txc_handler(*device, DEVCB_##_devcb); + devcb = &downcast<rs232_port_device &>(*device).set_txc_handler(DEVCB_##_devcb); #define RS232_BAUD_110 (0x00) #define RS232_BAUD_150 (0x01) @@ -126,13 +126,13 @@ public: virtual ~rs232_port_device(); // static configuration helpers - template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dcd_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_dcd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dsr_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_dsr_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ri_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_ri_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cts_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_cts_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rxc_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_rxc_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txc_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_txc_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxd_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dcd_handler(Object &&cb) { return m_dcd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dsr_handler(Object &&cb) { return m_dsr_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ri_handler(Object &&cb) { return m_ri_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cts_handler(Object &&cb) { return m_cts_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxc_handler(Object &&cb) { return m_rxc_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txc_handler(Object &&cb) { return m_txc_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( write_txd ); DECLARE_WRITE_LINE_MEMBER( write_dtr ); diff --git a/src/devices/bus/s100/s100.h b/src/devices/bus/s100/s100.h index 406876ec20f..99fe0891261 100644 --- a/src/devices/bus/s100/s100.h +++ b/src/devices/bus/s100/s100.h @@ -77,55 +77,55 @@ #define MCFG_S100_IRQ_CALLBACK(_write) \ - devcb = &s100_bus_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_S100_NMI_CALLBACK(_write) \ - devcb = &s100_bus_device::set_nmi_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write); #define MCFG_S100_VI0_CALLBACK(_write) \ - devcb = &s100_bus_device::set_vi0_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_vi0_wr_callback(DEVCB_##_write); #define MCFG_S100_VI1_CALLBACK(_write) \ - devcb = &s100_bus_device::set_vi1_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_vi1_wr_callback(DEVCB_##_write); #define MCFG_S100_VI2_CALLBACK(_write) \ - devcb = &s100_bus_device::set_vi2_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_vi2_wr_callback(DEVCB_##_write); #define MCFG_S100_VI3_CALLBACK(_write) \ - devcb = &s100_bus_device::set_vi3_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_vi3_wr_callback(DEVCB_##_write); #define MCFG_S100_VI4_CALLBACK(_write) \ - devcb = &s100_bus_device::set_vi4_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_vi4_wr_callback(DEVCB_##_write); #define MCFG_S100_VI5_CALLBACK(_write) \ - devcb = &s100_bus_device::set_vi5_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_vi5_wr_callback(DEVCB_##_write); #define MCFG_S100_VI6_CALLBACK(_write) \ - devcb = &s100_bus_device::set_vi6_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_vi6_wr_callback(DEVCB_##_write); #define MCFG_S100_VI7_CALLBACK(_write) \ - devcb = &s100_bus_device::set_vi7_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_vi7_wr_callback(DEVCB_##_write); #define MCFG_S100_DMA0_CALLBACK(_write) \ - devcb = &s100_bus_device::set_dma0_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_dma0_wr_callback(DEVCB_##_write); #define MCFG_S100_DMA1_CALLBACK(_write) \ - devcb = &s100_bus_device::set_dma1_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_dma1_wr_callback(DEVCB_##_write); #define MCFG_S100_DMA2_CALLBACK(_write) \ - devcb = &s100_bus_device::set_dma2_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_dma2_wr_callback(DEVCB_##_write); #define MCFG_S100_DMA3_CALLBACK(_write) \ - devcb = &s100_bus_device::set_dma3_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_dma3_wr_callback(DEVCB_##_write); #define MCFG_S100_RDY_CALLBACK(_write) \ - devcb = &s100_bus_device::set_rdy_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_rdy_wr_callback(DEVCB_##_write); #define MCFG_S100_HOLD_CALLBACK(_write) \ - devcb = &s100_bus_device::set_hold_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_hold_wr_callback(DEVCB_##_write); #define MCFG_S100_ERROR_CALLBACK(_write) \ - devcb = &s100_bus_device::set_error_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<s100_bus_device &>(*device).set_error_wr_callback(DEVCB_##_write); @@ -201,23 +201,23 @@ public: s100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~s100_bus_device() { m_device_list.detach_all(); } - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_vi0_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_vi1_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_vi2_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_vi3_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_vi4_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi4.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_vi5_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi5.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_vi6_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi6.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_vi7_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi7.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma0_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma1_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma2_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma3_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rdy_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_rdy.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_hold_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_hold.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_error_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_error.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_vi0_wr_callback(Object &&cb) { return m_write_vi0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_vi1_wr_callback(Object &&cb) { return m_write_vi1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_vi2_wr_callback(Object &&cb) { return m_write_vi2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_vi3_wr_callback(Object &&cb) { return m_write_vi3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_vi4_wr_callback(Object &&cb) { return m_write_vi4.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_vi5_wr_callback(Object &&cb) { return m_write_vi5.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_vi6_wr_callback(Object &&cb) { return m_write_vi6.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_vi7_wr_callback(Object &&cb) { return m_write_vi7.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma0_wr_callback(Object &&cb) { return m_write_dma0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma1_wr_callback(Object &&cb) { return m_write_dma1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma2_wr_callback(Object &&cb) { return m_write_dma2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma3_wr_callback(Object &&cb) { return m_write_dma3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rdy_wr_callback(Object &&cb) { return m_write_rdy.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_hold_wr_callback(Object &&cb) { return m_write_hold.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_error_wr_callback(Object &&cb) { return m_write_error.set_callback(std::forward<Object>(cb)); } void add_card(device_s100_card_interface *card); diff --git a/src/devices/bus/scsi/scsi.h b/src/devices/bus/scsi/scsi.h index b6e15cecc02..3685a86cddc 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 = &scsi_port_device::set_bsy_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_bsy_handler(DEVCB_##_devcb); #define MCFG_SCSI_SEL_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_sel_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_sel_handler(DEVCB_##_devcb); #define MCFG_SCSI_CD_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_cd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_cd_handler(DEVCB_##_devcb); #define MCFG_SCSI_IO_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_io_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_io_handler(DEVCB_##_devcb); #define MCFG_SCSI_MSG_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_msg_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_msg_handler(DEVCB_##_devcb); #define MCFG_SCSI_REQ_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_req_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_req_handler(DEVCB_##_devcb); #define MCFG_SCSI_ACK_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_ack_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_ack_handler(DEVCB_##_devcb); #define MCFG_SCSI_ATN_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_atn_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_atn_handler(DEVCB_##_devcb); #define MCFG_SCSI_RST_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_rst_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_rst_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA0_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_data0_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_data0_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA1_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_data1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_data1_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA2_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_data2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_data2_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA3_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_data3_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_data3_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA4_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_data4_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_data4_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA5_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_data5_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_data5_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA6_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_data6_handler(*device, DEVCB_##_devcb); + devcb = &downcast<scsi_port_device &>(*device).set_data6_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA7_HANDLER(_devcb) \ - devcb = &scsi_port_device::set_data7_handler(*device, DEVCB_##_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) \ @@ -100,23 +100,23 @@ public: // construction/destruction scsi_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_bsy_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_bsy_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sel_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_sel_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cd_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_cd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_io_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_io_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_msg_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_msg_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_req_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_req_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ack_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_ack_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_atn_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_atn_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rst_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_rst_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data0_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data0_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data1_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data2_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data2_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data3_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data3_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data4_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data4_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data5_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data5_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data6_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data6_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data7_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data7_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_bsy_handler(Object &&cb) { return m_bsy_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sel_handler(Object &&cb) { return m_sel_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cd_handler(Object &&cb) { return m_cd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_io_handler(Object &&cb) { return m_io_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_msg_handler(Object &&cb) { return m_msg_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_req_handler(Object &&cb) { return m_req_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ack_handler(Object &&cb) { return m_ack_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_atn_handler(Object &&cb) { return m_atn_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rst_handler(Object &&cb) { return m_rst_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data0_handler(Object &&cb) { return m_data0_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data1_handler(Object &&cb) { return m_data1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data2_handler(Object &&cb) { return m_data2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data3_handler(Object &&cb) { return m_data3_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data4_handler(Object &&cb) { return m_data4_handler.set_callback(std::forward<Object>(cb)); } + 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)); } DECLARE_WRITE_LINE_MEMBER( write_bsy ); DECLARE_WRITE_LINE_MEMBER( write_sel ); diff --git a/src/devices/bus/sms_ctrl/lphaser.cpp b/src/devices/bus/sms_ctrl/lphaser.cpp index 1782a75a689..1e41556710d 100644 --- a/src/devices/bus/sms_ctrl/lphaser.cpp +++ b/src/devices/bus/sms_ctrl/lphaser.cpp @@ -93,7 +93,7 @@ sms_light_phaser_device::sms_light_phaser_device(const machine_config &mconfig, { // Workaround for failed validation that occurs when running on a driver // with Sega Scope emulation, which adds 2 screens (left/right lenses). - static_set_screen(*this, ":screen"); + set_screen(":screen"); } diff --git a/src/devices/bus/sms_ctrl/smsctrl.h b/src/devices/bus/sms_ctrl/smsctrl.h index f1dd5404408..71cfa2059c4 100644 --- a/src/devices/bus/sms_ctrl/smsctrl.h +++ b/src/devices/bus/sms_ctrl/smsctrl.h @@ -27,11 +27,11 @@ #define MCFG_SMS_CONTROL_PORT_TH_INPUT_HANDLER(_devcb) \ - devcb = &sms_control_port_device::set_th_input_handler(*device, DEVCB_##_devcb); + devcb = &downcast<sms_control_port_device &>(*device).set_th_input_handler(DEVCB_##_devcb); #define MCFG_SMS_CONTROL_PORT_PIXEL_HANDLER(_devcb) \ - devcb = &sms_control_port_device::set_pixel_handler(*device, DEVCB_##_devcb); + devcb = &downcast<sms_control_port_device &>(*device).set_pixel_handler(DEVCB_##_devcb); @@ -52,9 +52,9 @@ public: virtual ~sms_control_port_device(); // static configuration helpers - template <class Object> static devcb_base &set_th_input_handler(device_t &device, Object &&cb) { return downcast<sms_control_port_device &>(device).m_th_pin_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_th_input_handler(Object &&cb) { return m_th_pin_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pixel_handler(device_t &device, Object &&cb) { return downcast<sms_control_port_device &>(device).m_pixel_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pixel_handler(Object &&cb) { return m_pixel_handler.set_callback(std::forward<Object>(cb)); } // Physical DE-9 connector interface diff --git a/src/devices/bus/snes_ctrl/ctrl.h b/src/devices/bus/snes_ctrl/ctrl.h index 943388e3fa0..1e23d1a5ae4 100644 --- a/src/devices/bus/snes_ctrl/ctrl.h +++ b/src/devices/bus/snes_ctrl/ctrl.h @@ -52,8 +52,8 @@ public: snes_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~snes_control_port_device(); - static void set_onscreen_callback(device_t &device, snesctrl_onscreen_delegate callback) { downcast<snes_control_port_device &>(device).m_onscreen_cb = callback; } - static void set_gunlatch_callback(device_t &device, snesctrl_gunlatch_delegate callback) { downcast<snes_control_port_device &>(device).m_gunlatch_cb = callback; } + template <typename Object> void set_onscreen_callback(Object &&cb) { m_onscreen_cb = std::forward<Object>(cb); } + template <typename Object> void set_gunlatch_callback(Object &&cb) { m_gunlatch_cb = std::forward<Object>(cb); } uint8_t read_pin4(); uint8_t read_pin5(); @@ -88,10 +88,10 @@ DECLARE_DEVICE_TYPE(SNES_CONTROL_PORT, snes_control_port_device) MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) #define MCFG_SNESCTRL_ONSCREEN_CB(_class, _method) \ - snes_control_port_device::set_onscreen_callback(*device, snesctrl_onscreen_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<snes_control_port_device &>(*device).set_onscreen_callback(snesctrl_onscreen_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_SNESCTRL_GUNLATCH_CB(_class, _method) \ - snes_control_port_device::set_gunlatch_callback(*device, snesctrl_gunlatch_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<snes_control_port_device &>(*device).set_gunlatch_callback(snesctrl_gunlatch_delegate(&_class::_method, #_class "::" #_method, this)); SLOT_INTERFACE_EXTERN( snes_control_port_devices ); diff --git a/src/devices/bus/spectrum/exp.h b/src/devices/bus/spectrum/exp.h index 0c522d88bb0..1110a3e7021 100644 --- a/src/devices/bus/spectrum/exp.h +++ b/src/devices/bus/spectrum/exp.h @@ -66,10 +66,10 @@ MCFG_SPECTRUM_EXPANSION_SLOT_NMI_HANDLER(DEVWRITELINE(DEVICE_SELF_OWNER, spectrum_expansion_slot_device, nmi_w)) #define MCFG_SPECTRUM_EXPANSION_SLOT_IRQ_HANDLER(_devcb) \ - devcb = &spectrum_expansion_slot_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<spectrum_expansion_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_SPECTRUM_EXPANSION_SLOT_NMI_HANDLER(_devcb) \ - devcb = &spectrum_expansion_slot_device::set_nmi_handler(*device, DEVCB_##_devcb); + devcb = &downcast<spectrum_expansion_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb); //************************************************************************** @@ -88,11 +88,8 @@ public: virtual ~spectrum_expansion_slot_device(); // callbacks - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) - { return downcast<spectrum_expansion_slot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb) - { return downcast<spectrum_expansion_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); } + 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_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( mreq_r ); DECLARE_WRITE8_MEMBER( mreq_w ); diff --git a/src/devices/bus/ss50/interface.h b/src/devices/bus/ss50/interface.h index 2e35b0abf2f..2dd6f5c48b2 100644 --- a/src/devices/bus/ss50/interface.h +++ b/src/devices/bus/ss50/interface.h @@ -20,10 +20,10 @@ MCFG_DEVICE_SLOT_INTERFACE(ss50_##_slot_intf, _def_slot, false) #define MCFG_SS50_INTERFACE_IRQ_CALLBACK(_devcb) \ - devcb = &ss50_interface_port_device::set_irq_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ss50_interface_port_device &>(*device).set_irq_cb(DEVCB_##_devcb); #define MCFG_SS50_INTERFACE_FIRQ_CALLBACK(_devcb) \ - devcb = &ss50_interface_port_device::set_firq_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ss50_interface_port_device &>(*device).set_firq_cb(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -43,8 +43,8 @@ public: ss50_interface_port_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // static configuration - template<class Object> static devcb_base &set_irq_cb(device_t &device, Object &&object) { return downcast<ss50_interface_port_device &>(device).m_irq_cb.set_callback(std::forward<Object>(object)); } - template<class Object> static devcb_base &set_firq_cb(device_t &device, Object &&object) { return downcast<ss50_interface_port_device &>(device).m_firq_cb.set_callback(std::forward<Object>(object)); } + template<class Object> devcb_base &set_irq_cb(Object &&object) { return m_irq_cb.set_callback(std::forward<Object>(object)); } + template<class Object> devcb_base &set_firq_cb(Object &&object) { return m_firq_cb.set_callback(std::forward<Object>(object)); } // memory accesses DECLARE_READ8_MEMBER(read); diff --git a/src/devices/bus/sunkbd/sunkbd.h b/src/devices/bus/sunkbd/sunkbd.h index e1ea42198ef..9693e95cd4e 100644 --- a/src/devices/bus/sunkbd/sunkbd.h +++ b/src/devices/bus/sunkbd/sunkbd.h @@ -12,7 +12,7 @@ MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false) #define MCFG_SUNKBD_RXD_HANDLER(cb) \ - devcb = &sun_keyboard_port_device::set_rxd_handler(*device, DEVCB_##cb); + devcb = &downcast<sun_keyboard_port_device &>(*device).set_rxd_handler(DEVCB_##cb); class device_sun_keyboard_port_interface; @@ -27,7 +27,7 @@ public: virtual ~sun_keyboard_port_device(); // static configuration helpers - template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<sun_keyboard_port_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxd_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( write_txd ); diff --git a/src/devices/bus/svi3x8/expander/expander.h b/src/devices/bus/svi3x8/expander/expander.h index 262d2a8ea77..28320d7012f 100644 --- a/src/devices/bus/svi3x8/expander/expander.h +++ b/src/devices/bus/svi3x8/expander/expander.h @@ -49,25 +49,25 @@ MCFG_DEVICE_ADD(_tag, SVI_EXPANDER, 0) \ MCFG_DEVICE_SLOT_INTERFACE(svi_expander_modules, nullptr, false) #define MCFG_SVI_EXPANDER_INT_HANDLER(_devcb) \ - devcb = &svi_expander_device::set_int_handler(*device, DEVCB_##_devcb); + devcb = &downcast<svi_expander_device &>(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_ROMDIS_HANDLER(_devcb) \ - devcb = &svi_expander_device::set_romdis_handler(*device, DEVCB_##_devcb); + devcb = &downcast<svi_expander_device &>(*device).set_romdis_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_RAMDIS_HANDLER(_devcb) \ - devcb = &svi_expander_device::set_ramdis_handler(*device, DEVCB_##_devcb); + devcb = &downcast<svi_expander_device &>(*device).set_ramdis_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_CTRL1_HANDLER(_devcb) \ - devcb = &svi_expander_device::set_ctrl1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<svi_expander_device &>(*device).set_ctrl1_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_CTRL2_HANDLER(_devcb) \ - devcb = &svi_expander_device::set_ctrl2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<svi_expander_device &>(*device).set_ctrl2_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_EXCSR_HANDLER(_devcb) \ - devcb = &svi_expander_device::set_excsr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<svi_expander_device &>(*device).set_excsr_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_EXCSW_HANDLER(_devcb) \ - devcb = &svi_expander_device::set_excsw_handler(*device, DEVCB_##_devcb); + devcb = &downcast<svi_expander_device &>(*device).set_excsw_handler(DEVCB_##_devcb); //************************************************************************** @@ -86,26 +86,13 @@ public: virtual ~svi_expander_device(); // callbacks - template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) - { return downcast<svi_expander_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_romdis_handler(device_t &device, Object &&cb) - { return downcast<svi_expander_device &>(device).m_romdis_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ramdis_handler(device_t &device, Object &&cb) - { return downcast<svi_expander_device &>(device).m_ramdis_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ctrl1_handler(device_t &device, Object &&cb) - { return downcast<svi_expander_device &>(device).m_ctrl1_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ctrl2_handler(device_t &device, Object &&cb) - { return downcast<svi_expander_device &>(device).m_ctrl2_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_excsr_handler(device_t &device, Object &&cb) - { return downcast<svi_expander_device &>(device).m_excsr_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_excsw_handler(device_t &device, Object &&cb) - { return downcast<svi_expander_device &>(device).m_excsw_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_romdis_handler(Object &&cb) { return m_romdis_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ramdis_handler(Object &&cb) { return m_ramdis_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ctrl1_handler(Object &&cb) { return m_ctrl1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ctrl2_handler(Object &&cb) { return m_ctrl2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_excsr_handler(Object &&cb) { return m_excsr_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_excsw_handler(Object &&cb) { return m_excsw_handler.set_callback(std::forward<Object>(cb)); } // called from cart device DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); } diff --git a/src/devices/bus/svi3x8/slot/slot.cpp b/src/devices/bus/svi3x8/slot/slot.cpp index c8e35ec9c92..c345d864f4b 100644 --- a/src/devices/bus/svi3x8/slot/slot.cpp +++ b/src/devices/bus/svi3x8/slot/slot.cpp @@ -212,17 +212,6 @@ svi_slot_device::svi_slot_device(const machine_config &mconfig, const char *tag, } //------------------------------------------------- -// set_bus - set owner bus tag -//------------------------------------------------- - -void svi_slot_device::set_bus(device_t &device, device_t *owner, const char *bus_tag) -{ - svi_slot_device &card = dynamic_cast<svi_slot_device &>(device); - card.m_owner = owner; - card.m_bus_tag = bus_tag; -} - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/bus/svi3x8/slot/slot.h b/src/devices/bus/svi3x8/slot/slot.h index 722f9aa0c8d..84764b1dc4f 100644 --- a/src/devices/bus/svi3x8/slot/slot.h +++ b/src/devices/bus/svi3x8/slot/slot.h @@ -51,16 +51,16 @@ #define MCFG_SVI_SLOT_ADD(_tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, SVI_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - svi_slot_device::set_bus(*device, this, "slotbus"); + downcast<svi_slot_device &>(*device).set_bus(this, "slotbus"); #define MCFG_SVI_SLOT_INT_HANDLER(_devcb) \ - devcb = &svi_slot_bus_device::set_int_handler(*device, DEVCB_##_devcb); + devcb = &downcast<svi_slot_bus_device &>(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_SVI_SLOT_ROMDIS_HANDLER(_devcb) \ - devcb = &svi_slot_bus_device::set_romdis_handler(*device, DEVCB_##_devcb); + devcb = &downcast<svi_slot_bus_device &>(*device).set_romdis_handler(DEVCB_##_devcb); #define MCFG_SVI_SLOT_RAMDIS_HANDLER(_devcb) \ - devcb = &svi_slot_bus_device::set_ramdis_handler(*device, DEVCB_##_devcb); + devcb = &downcast<svi_slot_bus_device &>(*device).set_ramdis_handler(DEVCB_##_devcb); //************************************************************************** @@ -79,14 +79,9 @@ public: virtual ~svi_slot_bus_device(); // callbacks - template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) - { return downcast<svi_slot_bus_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_romdis_handler(device_t &device, Object &&cb) - { return downcast<svi_slot_bus_device &>(device).m_romdis_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ramdis_handler(device_t &device, Object &&cb) - { return downcast<svi_slot_bus_device &>(device).m_ramdis_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_romdis_handler(Object &&cb) { return m_romdis_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ramdis_handler(Object &&cb) { return m_ramdis_handler.set_callback(std::forward<Object>(cb)); } void add_card(device_svi_slot_interface *card); @@ -130,7 +125,7 @@ public: svi_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void set_bus(device_t &device, device_t *owner, const char *bus_tag); + void set_bus(device_t *owner, const char *bus_tag) { m_owner = owner; m_bus_tag = bus_tag; } protected: // device-level overrides diff --git a/src/devices/bus/ti8x/ti8x.h b/src/devices/bus/ti8x/ti8x.h index 67ddad75747..91b86806885 100644 --- a/src/devices/bus/ti8x/ti8x.h +++ b/src/devices/bus/ti8x/ti8x.h @@ -47,10 +47,10 @@ DECLARE_DEVICE_TYPE(TI8X_LINK_PORT, ti8x_link_port_device) MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false) #define MCFG_TI8X_LINK_TIP_HANDLER(cb) \ - devcb = &ti8x_link_port_device::set_tip_handler(*device, DEVCB_##cb); + devcb = &downcast<ti8x_link_port_device &>(*device).set_tip_handler(DEVCB_##cb); #define MCFG_TI8X_LINK_RING_HANDLER(cb) \ - devcb = &ti8x_link_port_device::set_ring_handler(*device, DEVCB_##cb); + devcb = &downcast<ti8x_link_port_device &>(*device).set_ring_handler(DEVCB_##cb); class device_ti8x_link_port_interface; @@ -62,10 +62,8 @@ public: ti8x_link_port_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); // static configuration helpers - template <class Object> static devcb_base &set_tip_handler(device_t &device, Object &&cb) - { return downcast<ti8x_link_port_device &>(device).m_tip_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ring_handler(device_t &device, Object &&cb) - { return downcast<ti8x_link_port_device &>(device).m_ring_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tip_handler(Object &&cb) { return m_tip_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ring_handler(Object &&cb) { return m_ring_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(tip_w); DECLARE_WRITE_LINE_MEMBER(ring_w); diff --git a/src/devices/bus/ti99/gromport/gromport.h b/src/devices/bus/ti99/gromport/gromport.h index 7a67aac4bd0..1206b231ce8 100644 --- a/src/devices/bus/ti99/gromport/gromport.h +++ b/src/devices/bus/ti99/gromport/gromport.h @@ -38,10 +38,10 @@ public: DECLARE_WRITE8_MEMBER(set_gromlines); // Combined GROM select lines DECLARE_WRITE_LINE_MEMBER(gclock_in); - static void set_mask(device_t &device, int mask) { downcast<gromport_device &>(device).m_mask = mask; } + void set_mask(int mask) { m_mask = mask; } - template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb) { return downcast<gromport_device &>(device).m_console_ready.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_reset_callback(device_t &device, Object &&cb) { return downcast<gromport_device &>(device).m_console_reset.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ready_callback(Object &&cb) { return m_console_ready.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_reset_callback(Object &&cb) { return m_console_reset.set_callback(std::forward<Object>(cb)); } void cartridge_inserted(); bool is_grom_idle(); @@ -97,19 +97,19 @@ SLOT_INTERFACE_EXTERN(gromport8); #define MCFG_GROMPORT4_ADD( _tag ) \ MCFG_DEVICE_ADD(_tag, TI99_GROMPORT, 0) \ - bus::ti99::gromport::gromport_device::set_mask(*device, 0x1fff); \ + downcast<bus::ti99::gromport::gromport_device &>(*device).set_mask(0x1fff); \ MCFG_DEVICE_SLOT_INTERFACE(gromport4, "single", false) #define MCFG_GROMPORT8_ADD( _tag ) \ MCFG_DEVICE_ADD(_tag, TI99_GROMPORT, 0) \ - bus::ti99::gromport::gromport_device::set_mask(*device, 0x3fff); \ + downcast<bus::ti99::gromport::gromport_device &>(*device).set_mask(0x3fff); \ MCFG_DEVICE_SLOT_INTERFACE(gromport8, "single", false) #define MCFG_GROMPORT_READY_HANDLER( _ready ) \ - devcb = &bus::ti99::gromport::gromport_device::static_set_ready_callback( *device, DEVCB_##_ready ); + devcb = &downcast<bus::ti99::gromport::gromport_device &>(*device).set_ready_callback(DEVCB_##_ready); #define MCFG_GROMPORT_RESET_HANDLER( _reset ) \ - devcb = &bus::ti99::gromport::gromport_device::static_set_reset_callback( *device, DEVCB_##_reset ); + devcb = &downcast<bus::ti99::gromport::gromport_device &>(*device).set_reset_callback(DEVCB_##_reset); DECLARE_DEVICE_TYPE_NS(TI99_GROMPORT, bus::ti99::gromport, gromport_device) diff --git a/src/devices/bus/ti99/internal/998board.h b/src/devices/bus/ti99/internal/998board.h index 1787c0f9cec..526fad8bf44 100644 --- a/src/devices/bus/ti99/internal/998board.h +++ b/src/devices/bus/ti99/internal/998board.h @@ -522,20 +522,9 @@ public: DECLARE_WRITE_LINE_MEMBER( holda_line ); - template<class _Object> static devcb_base &set_ready_wr_callback(device_t &device, _Object object) - { - return downcast<mainboard8_device &>(device).m_ready.set_callback(object); - } - - template<class _Object> static devcb_base &set_reset_wr_callback(device_t &device, _Object object) - { - return downcast<mainboard8_device &>(device).m_console_reset.set_callback(object); - } - - template<class _Object> static devcb_base &set_hold_wr_callback(device_t &device, _Object object) - { - return downcast<mainboard8_device &>(device).m_hold_line.set_callback(object); - } + template<class Object> devcb_base &set_ready_wr_callback(Object &&cb) { return m_ready.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_reset_wr_callback(Object &&cb) { return m_console_reset.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_hold_wr_callback(Object &&cb) { return m_hold_line.set_callback(std::forward<Object>(cb)); } void set_paddress(int address); @@ -649,16 +638,16 @@ private: } } } // end namespace bus::ti99::internal #define MCFG_MAINBOARD8_READY_CALLBACK(_write) \ - devcb = &bus::ti99::internal::mainboard8_device::set_ready_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<bus::ti99::internal::mainboard8_device &>(*device).set_ready_wr_callback(DEVCB_##_write); #define MCFG_MAINBOARD8_RESET_CALLBACK(_write) \ - devcb = &bus::ti99::internal::mainboard8_device::set_reset_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<bus::ti99::internal::mainboard8_device &>(*device).set_reset_wr_callback(DEVCB_##_write); #define MCFG_MAINBOARD8_HOLD_CALLBACK(_write) \ - devcb = &bus::ti99::internal::mainboard8_device::set_hold_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<bus::ti99::internal::mainboard8_device &>(*device).set_hold_wr_callback(DEVCB_##_write); #define MCFG_OSO_INT_CALLBACK(_int) \ - devcb = &bus::ti99::internal::oso_device::set_int_callback(*device, DEVCB##_int); + devcb = &downcast<bus::ti99::internal::oso_device &>(*device).set_int_callback(DEVCB##_int); DECLARE_DEVICE_TYPE_NS(TI99_MAINBOARD8, bus::ti99::internal, mainboard8_device) DECLARE_DEVICE_TYPE_NS(TI99_VAQUERRO, bus::ti99::internal, vaquerro_device) diff --git a/src/devices/bus/ti99/internal/datamux.h b/src/devices/bus/ti99/internal/datamux.h index 9d09f3e4c17..d864ee98c53 100644 --- a/src/devices/bus/ti99/internal/datamux.h +++ b/src/devices/bus/ti99/internal/datamux.h @@ -43,10 +43,7 @@ public: DECLARE_WRITE_LINE_MEMBER( gromclk_in ); - template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb) - { - return downcast<datamux_device &>(device).m_ready.set_callback(std::forward<Object>(cb)); - } + template <class Object> devcb_base &set_ready_callback(Object &&cb) { return m_ready.set_callback(std::forward<Object>(cb)); } protected: /* Constructor */ @@ -141,7 +138,7 @@ private: /******************************************************************************/ #define MCFG_DMUX_READY_HANDLER( _intcallb ) \ - devcb = &bus::ti99::internal::datamux_device::static_set_ready_callback( *device, DEVCB_##_intcallb ); + devcb = &downcast<bus::ti99::internal::datamux_device &>(*device).set_ready_callback(DEVCB_##_intcallb); } } } // end namespace bus::ti99::internal diff --git a/src/devices/bus/ti99/internal/evpcconn.h b/src/devices/bus/ti99/internal/evpcconn.h index 4bd95f8f179..9f1af61ccf9 100644 --- a/src/devices/bus/ti99/internal/evpcconn.h +++ b/src/devices/bus/ti99/internal/evpcconn.h @@ -21,10 +21,7 @@ class evpc_clock_connector : public device_t public: evpc_clock_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template<class _Object> static devcb_base &static_set_vdpint_callback(device_t &device, _Object object) - { - return downcast<evpc_clock_connector &>(device).m_vdpint.set_callback(object); - } + template<class Object> devcb_base &set_vdpint_callback(Object &&cb) { return m_vdpint.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( vclock_line ); void device_start() override; @@ -40,6 +37,6 @@ DECLARE_DEVICE_TYPE_NS(TI99_EVPCCONN, bus::ti99::internal, evpc_clock_connector) #define MCFG_ADD_EVPC_CONNECTOR( _tag, _vdpint ) \ MCFG_DEVICE_ADD(_tag, TI99_EVPCCONN, 0) \ - devcb = &bus::ti99::internal::evpc_clock_connector::static_set_vdpint_callback( *device, DEVCB_##_vdpint ); + devcb = &downcast<bus::ti99::internal::evpc_clock_connector &>(*device).set_vdpint_callback(DEVCB_##_vdpint); #endif // MAME_BUS_TI99_INTERNAL_EVPCCONN_H diff --git a/src/devices/bus/ti99/internal/genboard.h b/src/devices/bus/ti99/internal/genboard.h index 80101fb2de8..26e6766adef 100644 --- a/src/devices/bus/ti99/internal/genboard.h +++ b/src/devices/bus/ti99/internal/genboard.h @@ -63,7 +63,7 @@ public: DECLARE_WRITE_LINE_MEMBER( clock_control ); uint8_t get_recent_key(); - template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb) { return downcast<geneve_keyboard_device &>(device).m_interrupt.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_interrupt.set_callback(std::forward<Object>(cb)); } protected: void device_start() override; @@ -109,7 +109,7 @@ private: }; #define MCFG_GENEVE_KBINT_HANDLER( _intcallb ) \ - devcb = &bus::ti99::internal::geneve_keyboard_device::static_set_int_callback( *device, DEVCB_##_intcallb ); + devcb = &downcast<bus::ti99::internal::geneve_keyboard_device &>(*device).set_int_callback(DEVCB_##_intcallb); /*****************************************************************************/ @@ -138,7 +138,7 @@ public: DECLARE_WRITE_LINE_MEMBER( pfm_select_msb ); DECLARE_WRITE_LINE_MEMBER( pfm_output_enable ); - template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb) { return downcast<geneve_mapper_device &>(device).m_ready.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ready_callback(Object &&cb) { return m_ready.set_callback(std::forward<Object>(cb)); } protected: void device_start() override; @@ -222,7 +222,7 @@ private: }; #define MCFG_GENEVE_READY_HANDLER( _intcallb ) \ - devcb = &bus::ti99::internal::geneve_mapper_device::static_set_ready_callback( *device, DEVCB_##_intcallb ); + devcb = &downcast<bus::ti99::internal::geneve_mapper_device &>(*device).set_ready_callback(DEVCB_##_intcallb); } } } // end namespace bus::ti99::internal diff --git a/src/devices/bus/ti99/internal/ioport.h b/src/devices/bus/ti99/internal/ioport.h index 91caf5a34a0..f63518705d4 100644 --- a/src/devices/bus/ti99/internal/ioport.h +++ b/src/devices/bus/ti99/internal/ioport.h @@ -59,8 +59,8 @@ class ioport_device : public device_t, public device_slot_interface public: ioport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template<class _Object> static devcb_base &static_set_extint_callback(device_t &device, _Object object) { return downcast<ioport_device &>(device).m_console_extint.set_callback(object); } - template<class _Object> static devcb_base &static_set_ready_callback(device_t &device, _Object object) { return downcast<ioport_device &>(device).m_console_ready.set_callback(object); } + template<class Object> devcb_base &set_extint_callback(Object &&cb) { return m_console_extint.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_ready_callback(Object &&cb) { return m_console_ready.set_callback(std::forward<Object>(cb)); } // Methods called from the console DECLARE_READ8Z_MEMBER( readz ); @@ -99,9 +99,9 @@ SLOT_INTERFACE_EXTERN(ti99_io_port_ev); MCFG_DEVICE_SLOT_INTERFACE(ti99_io_port_ev, "peb", false) #define MCFG_IOPORT_EXTINT_HANDLER( _extint ) \ - devcb = &bus::ti99::internal::ioport_device::static_set_extint_callback( *device, DEVCB_##_extint ); + devcb = &downcast<bus::ti99::internal::ioport_device &>(*device).set_extint_callback(DEVCB_##_extint); #define MCFG_IOPORT_READY_HANDLER( _ready ) \ - devcb = &bus::ti99::internal::ioport_device::static_set_ready_callback( *device, DEVCB_##_ready ); + devcb = &downcast<bus::ti99::internal::ioport_device &>(*device).set_ready_callback(DEVCB_##_ready); #endif /* __TI99IOPORT__ */ diff --git a/src/devices/bus/ti99/joyport/joyport.h b/src/devices/bus/ti99/joyport/joyport.h index 44afd9f5fea..bf3f5bcf1f3 100644 --- a/src/devices/bus/ti99/joyport/joyport.h +++ b/src/devices/bus/ti99/joyport/joyport.h @@ -55,7 +55,7 @@ public: void set_interrupt(int state); void pulse_clock(); - template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb) { return downcast<joyport_device &>(device).m_interrupt.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_interrupt.set_callback(std::forward<Object>(cb)); } protected: void device_start() override; @@ -75,7 +75,7 @@ SLOT_INTERFACE_EXTERN(ti99_joystick_port_gen); DECLARE_DEVICE_TYPE_NS(TI99_JOYPORT, bus::ti99::joyport, joyport_device) #define MCFG_JOYPORT_INT_HANDLER( _intcallb ) \ - devcb = &bus::ti99::joyport::joyport_device::static_set_int_callback( *device, DEVCB_##_intcallb ); + devcb = &downcast<bus::ti99::joyport::joyport_device &>(*device).set_int_callback(DEVCB_##_intcallb); #define MCFG_GENEVE_JOYPORT_ADD( _tag ) \ MCFG_DEVICE_ADD(_tag, TI99_JOYPORT, 0) \ diff --git a/src/devices/bus/ti99/peb/peribox.h b/src/devices/bus/ti99/peb/peribox.h index bd6dda9be7c..00be0795d10 100644 --- a/src/devices/bus/ti99/peb/peribox.h +++ b/src/devices/bus/ti99/peb/peribox.h @@ -34,10 +34,10 @@ class peribox_device : public bus::ti99::internal::ioport_attached_device public: peribox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &static_set_inta_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_slot1_inta.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_intb_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_slot1_intb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_slot1_ready.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_lcp_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_slot1_lcp.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_inta_callback(Object &&cb) { return m_slot1_inta.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intb_callback(Object &&cb) { return m_slot1_intb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ready_callback(Object &&cb) { return m_slot1_ready.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_lcp_callback(Object &&cb) { return m_slot1_lcp.set_callback(std::forward<Object>(cb)); } // Next eight methods are called from the console DECLARE_READ8Z_MEMBER(readz) override; @@ -238,16 +238,16 @@ private: MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _default, false) #define MCFG_PERIBOX_INTA_HANDLER( _inta ) \ - devcb = &bus::ti99::peb::peribox_device::static_set_inta_callback( *device, DEVCB_##_inta ); + devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_inta_callback(DEVCB_##_inta); #define MCFG_PERIBOX_INTB_HANDLER( _intb ) \ - devcb = &bus::ti99::peb::peribox_device::static_set_intb_callback( *device, DEVCB_##_intb ); + devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_intb_callback(DEVCB_##_intb); #define MCFG_PERIBOX_READY_HANDLER( _ready ) \ - devcb = &bus::ti99::peb::peribox_device::static_set_ready_callback( *device, DEVCB_##_ready ); + devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_ready_callback(DEVCB_##_ready); #define MCFG_PERIBOX_LCP_HANDLER( _lcp ) \ - devcb = &bus::ti99::peb::peribox_device::static_set_lcp_callback( *device, DEVCB_##_lcp ); + devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_lcp_callback(DEVCB_##_lcp); } } } // end namespace bus::ti99::peb diff --git a/src/devices/bus/ti99x/990_dk.h b/src/devices/bus/ti99x/990_dk.h index 97c00ef21d5..79bebc674d6 100644 --- a/src/devices/bus/ti99x/990_dk.h +++ b/src/devices/bus/ti99x/990_dk.h @@ -18,10 +18,7 @@ public: DECLARE_READ8_MEMBER( cru_r ); DECLARE_WRITE8_MEMBER( cru_w ); - template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb) - { - return downcast<fd800_legacy_device &>(device).m_int_line.set_callback(std::forward<Object>(cb)); - } + template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_int_line.set_callback(std::forward<Object>(cb)); } private: enum buf_mode_t @@ -72,6 +69,6 @@ private: // LEGACY_FLOPPY_OPTIONS_EXTERN(fd800); #define MCFG_FD800_INT_HANDLER( _intcallb ) \ - devcb = &fd800_legacy_device::static_set_int_callback( *device, DEVCB_##_intcallb ); + devcb = &downcast<fd800_legacy_device &>(*device).set_int_callback(DEVCB_##_intcallb); #endif // MAME_BUS_TI99X_990_DK_H diff --git a/src/devices/bus/ti99x/990_hd.h b/src/devices/bus/ti99x/990_hd.h index fdeaac0ea88..57f0f55fa27 100644 --- a/src/devices/bus/ti99x/990_hd.h +++ b/src/devices/bus/ti99x/990_hd.h @@ -15,7 +15,7 @@ class ti990_hdc_device : public device_t public: ti990_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb) { return downcast<ti990_hdc_device &>(device).m_interrupt_callback.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_interrupt_callback.set_callback(std::forward<Object>(cb)); } DECLARE_READ16_MEMBER(read); DECLARE_WRITE16_MEMBER(write); @@ -75,7 +75,7 @@ private: }; #define MCFG_TI990_HDC_INT_CALLBACK( _write ) \ - devcb = &ti990_hdc_device::static_set_int_callback( *device, DEVCB_##_write ); + devcb = &downcast<ti990_hdc_device &>(*device).set_int_callback(DEVCB_##_write); DECLARE_DEVICE_TYPE(TI990_HDC, ti990_hdc_device) diff --git a/src/devices/bus/ti99x/990_tap.h b/src/devices/bus/ti99x/990_tap.h index 256d71da134..a86725dd079 100644 --- a/src/devices/bus/ti99x/990_tap.h +++ b/src/devices/bus/ti99x/990_tap.h @@ -14,10 +14,7 @@ class tap_990_device : public device_t { public: tap_990_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb) - { - return downcast<tap_990_device &>(device).m_int_line.set_callback(std::forward<Object>(cb)); - } + template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_int_line.set_callback(std::forward<Object>(cb)); } DECLARE_READ16_MEMBER( read ); DECLARE_WRITE16_MEMBER( write ); @@ -64,6 +61,6 @@ private: }; #define MCFG_TI990_TAPE_INT_HANDLER( _intcallb ) \ - devcb = &tap_990_device::static_set_int_callback( *device, DEVCB_##_intcallb ); + devcb = &downcast<tap_990_device &>(*device).set_int_callback(DEVCB_##_intcallb); #endif // MAME_BUS_TI99X_990_TAP_H diff --git a/src/devices/bus/tiki100/exp.h b/src/devices/bus/tiki100/exp.h index 9ae56520527..78b2dceaa9f 100644 --- a/src/devices/bus/tiki100/exp.h +++ b/src/devices/bus/tiki100/exp.h @@ -39,19 +39,19 @@ #define MCFG_TIKI100_BUS_IRQ_CALLBACK(_write) \ - devcb = &tiki100_bus_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<tiki100_bus_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_TIKI100_BUS_NMI_CALLBACK(_write) \ - devcb = &tiki100_bus_device::set_nmi_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<tiki100_bus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write); #define MCFG_TIKI100_BUS_BUSRQ_CALLBACK(_write) \ - devcb = &tiki100_bus_device::set_busrq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<tiki100_bus_device &>(*device).set_busrq_wr_callback(DEVCB_##_write); #define MCFG_TIKI100_BUS_IN_MREQ_CALLBACK(_read) \ - devcb = &tiki100_bus_device::set_mrq_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<tiki100_bus_device &>(*device).set_mrq_rd_callback(DEVCB_##_read); #define MCFG_TIKI100_BUS_OUT_MREQ_CALLBACK(_write) \ - devcb = &tiki100_bus_device::set_mrq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<tiki100_bus_device &>(*device).set_mrq_wr_callback(DEVCB_##_write); @@ -142,11 +142,11 @@ public: tiki100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~tiki100_bus_device() { m_device_list.detach_all(); } - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_nmi_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_busrq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_busrq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_mrq_rd_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_in_mrq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_mrq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_out_mrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_nmi_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_busrq_wr_callback(Object &&cb) { return m_busrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_mrq_rd_callback(Object &&cb) { return m_in_mrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_mrq_wr_callback(Object &&cb) { return m_out_mrq_cb.set_callback(std::forward<Object>(cb)); } void add_card(device_tiki100bus_card_interface *card); diff --git a/src/devices/bus/tvc/tvc.h b/src/devices/bus/tvc/tvc.h index c3e3ea44cf8..9fd9db95e14 100644 --- a/src/devices/bus/tvc/tvc.h +++ b/src/devices/bus/tvc/tvc.h @@ -94,8 +94,8 @@ public: tvcexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~tvcexp_slot_device(); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<tvcexp_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<tvcexp_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } // reading and writing virtual uint8_t id_r(); @@ -125,9 +125,9 @@ DECLARE_DEVICE_TYPE(TVCEXP_SLOT, tvcexp_slot_device) ***************************************************************************/ #define MCFG_TVCEXP_SLOT_OUT_IRQ_CB(_devcb) \ - devcb = &tvcexp_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tvcexp_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_TVCEXP_SLOT_OUT_NMI_CB(_devcb) \ - devcb = &tvcexp_slot_device::set_out_nmi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tvcexp_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb); #endif // MAME_BUS_TVC_TVC_H diff --git a/src/devices/bus/vcs_ctrl/ctrl.h b/src/devices/bus/vcs_ctrl/ctrl.h index bc018839989..972dab7ec5e 100644 --- a/src/devices/bus/vcs_ctrl/ctrl.h +++ b/src/devices/bus/vcs_ctrl/ctrl.h @@ -27,7 +27,7 @@ #define MCFG_VCS_CONTROL_PORT_TRIGGER_CALLBACK(_write) \ - devcb = &vcs_control_port_device::set_trigger_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<vcs_control_port_device &>(*device).set_trigger_wr_callback(DEVCB_##_write); @@ -70,7 +70,7 @@ public: vcs_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_trigger_wr_callback(device_t &device, Object &&cb) { return downcast<vcs_control_port_device &>(device).m_write_trigger.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_trigger_wr_callback(Object &&cb) { return m_write_trigger.set_callback(std::forward<Object>(cb)); } // computer interface diff --git a/src/devices/bus/vic10/exp.h b/src/devices/bus/vic10/exp.h index 56fe43d5ef9..dc63a62a936 100644 --- a/src/devices/bus/vic10/exp.h +++ b/src/devices/bus/vic10/exp.h @@ -58,16 +58,16 @@ #define MCFG_VIC10_EXPANSION_SLOT_IRQ_CALLBACK(_write) \ - devcb = &vic10_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<vic10_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_VIC10_EXPANSION_SLOT_RES_CALLBACK(_write) \ - devcb = &vic10_expansion_slot_device::set_res_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<vic10_expansion_slot_device &>(*device).set_res_wr_callback(DEVCB_##_write); #define MCFG_VIC10_EXPANSION_SLOT_CNT_CALLBACK(_write) \ - devcb = &vic10_expansion_slot_device::set_cnt_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<vic10_expansion_slot_device &>(*device).set_cnt_wr_callback(DEVCB_##_write); #define MCFG_VIC10_EXPANSION_SLOT_SP_CALLBACK(_write) \ - devcb = &vic10_expansion_slot_device::set_sp_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<vic10_expansion_slot_device &>(*device).set_sp_wr_callback(DEVCB_##_write); #define MCFG_VIC10_EXPANSION_SLOT_IRQ_CALLBACKS(_irq, _res) \ @@ -94,10 +94,10 @@ public: // construction/destruction vic10_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_res_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_res.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cnt_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_cnt.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sp_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_sp.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_res_wr_callback(Object &&cb) { return m_write_res.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cnt_wr_callback(Object &&cb) { return m_write_cnt.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sp_wr_callback(Object &&cb) { return m_write_sp.set_callback(std::forward<Object>(cb)); } // computer interface uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int lorom, int uprom, int exram); diff --git a/src/devices/bus/vic20/exp.h b/src/devices/bus/vic20/exp.h index 559d55f90a0..695db050936 100644 --- a/src/devices/bus/vic20/exp.h +++ b/src/devices/bus/vic20/exp.h @@ -63,13 +63,13 @@ #define MCFG_VIC20_EXPANSION_SLOT_IRQ_CALLBACK(_write) \ - devcb = &vic20_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<vic20_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_VIC20_EXPANSION_SLOT_NMI_CALLBACK(_write) \ - devcb = &vic20_expansion_slot_device::set_nmi_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<vic20_expansion_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write); #define MCFG_VIC20_EXPANSION_SLOT_RES_CALLBACK(_write) \ - devcb = &vic20_expansion_slot_device::set_res_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<vic20_expansion_slot_device &>(*device).set_res_wr_callback(DEVCB_##_write); @@ -89,9 +89,9 @@ public: // construction/destruction vic20_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<vic20_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<vic20_expansion_slot_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_res_wr_callback(device_t &device, Object &&cb) { return downcast<vic20_expansion_slot_device &>(device).m_write_res.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_res_wr_callback(Object &&cb) { return m_write_res.set_callback(std::forward<Object>(cb)); } // computer interface uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3); diff --git a/src/devices/bus/vidbrain/exp.h b/src/devices/bus/vidbrain/exp.h index 23ae2108d3e..60d1f90ec32 100644 --- a/src/devices/bus/vidbrain/exp.h +++ b/src/devices/bus/vidbrain/exp.h @@ -60,7 +60,7 @@ #define MCFG_VIDEOBRAIN_EXPANSION_SLOT_EXTRES_CALLBACK(_write) \ - devcb = &videobrain_expansion_slot_device::set_extres_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<videobrain_expansion_slot_device &>(*device).set_extres_wr_callback(DEVCB_##_write); @@ -112,7 +112,7 @@ public: // construction/destruction videobrain_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_extres_wr_callback(device_t &device, Object &&cb) { return downcast<videobrain_expansion_slot_device &>(device).m_write_extres.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_extres_wr_callback(Object &&cb) { return m_write_extres.set_callback(std::forward<Object>(cb)); } // computer interface uint8_t bo_r(address_space &space, offs_t offset, int cs1, int cs2); diff --git a/src/devices/bus/vip/exp.h b/src/devices/bus/vip/exp.h index 9e49ad4b98c..4e864fc0430 100644 --- a/src/devices/bus/vip/exp.h +++ b/src/devices/bus/vip/exp.h @@ -57,13 +57,13 @@ #define MCFG_VIP_EXPANSION_SLOT_INT_CALLBACK(_write) \ - devcb = &vip_expansion_slot_device::set_int_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<vip_expansion_slot_device &>(*device).set_int_wr_callback(DEVCB_##_write); #define MCFG_VIP_EXPANSION_SLOT_DMA_OUT_CALLBACK(_write) \ - devcb = &vip_expansion_slot_device::set_dma_out_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<vip_expansion_slot_device &>(*device).set_dma_out_wr_callback(DEVCB_##_write); #define MCFG_VIP_EXPANSION_SLOT_DMA_IN_CALLBACK(_write) \ - devcb = &vip_expansion_slot_device::set_dma_in_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<vip_expansion_slot_device &>(*device).set_dma_in_wr_callback(DEVCB_##_write); @@ -82,9 +82,9 @@ public: // construction/destruction vip_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<vip_expansion_slot_device &>(device).m_write_int.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_out_wr_callback(device_t &device, Object &&cb) { return downcast<vip_expansion_slot_device &>(device).m_write_dma_out.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_in_wr_callback(device_t &device, Object &&cb) { return downcast<vip_expansion_slot_device &>(device).m_write_dma_in.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_out_wr_callback(Object &&cb) { return m_write_dma_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_in_wr_callback(Object &&cb) { return m_write_dma_in.set_callback(std::forward<Object>(cb)); } // computer interface uint8_t program_r(address_space &space, offs_t offset, int cs, int cdef, int *minh); diff --git a/src/devices/bus/vme/vme.cpp b/src/devices/bus/vme/vme.cpp index 5f4bf5d20a9..d7d549bb34c 100644 --- a/src/devices/bus/vme/vme.cpp +++ b/src/devices/bus/vme/vme.cpp @@ -117,22 +117,21 @@ vme_slot_device::vme_slot_device(const machine_config &mconfig, device_type type } //------------------------------------------------- -// static_update_vme_chains +// update_vme_chains //------------------------------------------------- -void vme_slot_device::static_update_vme_chains(device_t &device, uint32_t slot_nbr) +void vme_slot_device::update_vme_chains(uint32_t slot_nbr) { - LOG("%s %s - %d\n", FUNCNAME, device.tag(), slot_nbr); + LOG("%s %s - %d\n", FUNCNAME, tag(), slot_nbr); } //------------------------------------------------- -// static_set_vme_slot +// set_vme_slot //------------------------------------------------- -void vme_slot_device::static_set_vme_slot(device_t &device, const char *tag, const char *slottag) +void vme_slot_device::set_vme_slot(const char *tag, const char *slottag) { LOG("%s %s - %s\n", FUNCNAME, tag, slottag); - vme_slot_device &vme_card = dynamic_cast<vme_slot_device&>(device); - vme_card.m_vme_tag = tag; - vme_card.m_vme_slottag = slottag; + m_vme_tag = tag; + m_vme_slottag = slottag; } //------------------------------------------------- @@ -144,7 +143,7 @@ void vme_slot_device::device_start() LOG("%s %s - %s:%s\n", tag(), FUNCNAME, m_vme_tag, m_vme_slottag); if (dev) { - device_vme_card_interface::static_set_vme_tag(*dev, m_vme_tag, m_vme_slottag); + dev->set_vme_tag(m_vme_tag, m_vme_slottag); } // m_card = dynamic_cast<device_vme_card_interface *>(get_card_device()); @@ -212,22 +211,14 @@ device_memory_interface::space_config_vector vme_device::memory_space_config() c }; } -// static_set_cputag - used to be able to lookup the CPU owning this VME bus -void vme_device::static_set_cputag(device_t &device, const char *tag) -{ - vme_device &vme = downcast<vme_device &>(device); - vme.m_cputag = tag; -} - -// static_set_use_owner_spaces - disables use of the memory interface and use the address spaces +// set_use_owner_spaces - disables use of the memory interface and use the address spaces // of the owner instead. This is useful for VME buses where no address modifiers or arbitration is // being used and gives some gain in performance. -void vme_device::static_use_owner_spaces(device_t &device) +void vme_device::use_owner_spaces() { - LOG("%s %s\n", device.tag(), FUNCNAME); - vme_device &vme = downcast<vme_device &>(device); + LOG("%s %s\n", tag(), FUNCNAME); - vme.m_allocspaces = false; + m_allocspaces = false; } vme_device::vme_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) @@ -418,12 +409,11 @@ device_vme_card_interface::~device_vme_card_interface() LOG("%s %s\n", m_device->tag(), FUNCNAME); } -void device_vme_card_interface::static_set_vme_tag(device_t &device, const char *tag, const char *slottag) +void device_vme_card_interface::set_vme_tag(const char *tag, const char *slottag) { LOG("%s %s\n", tag, FUNCNAME); - device_vme_card_interface &vme_card = dynamic_cast<device_vme_card_interface &>(device); - vme_card.m_vme_tag = tag; - vme_card.m_vme_slottag = slottag; + m_vme_tag = tag; + m_vme_slottag = slottag; } void device_vme_card_interface::set_vme_device() diff --git a/src/devices/bus/vme/vme.h b/src/devices/bus/vme/vme.h index 354a1f38978..7fd1a24f9c8 100644 --- a/src/devices/bus/vme/vme.h +++ b/src/devices/bus/vme/vme.h @@ -59,7 +59,7 @@ // Callbacks to the board from the VME bus comes through here #define MCFG_VME_J1_CB(_devcb) \ - devcb = &vme_slot_device::static_set_vme_j1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<vme_slot_device &>(*device).set_vme_j1_callback(DEVCB_##_devcb); //SLOT_INTERFACE_EXTERN(vme_slot1); // Disabled until we know how to combine a board driver and a slot device. SLOT_INTERFACE_EXTERN(vme_slots); @@ -91,10 +91,10 @@ public: // construction/destruction vme_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &static_set_vme_j1_callback(device_t &device, Object &&cb) { return downcast<vme_slot_device &>(device).m_vme_j1_callback.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_vme_j1_callback(Object &&cb) { return m_vme_j1_callback.set_callback(std::forward<Object>(cb)); } - static void static_set_vme_slot(device_t &device, const char *tag, const char *slottag); - static void static_update_vme_chains(device_t &device, uint32_t slot_nbr); + void set_vme_slot(const char *tag, const char *slottag); + void update_vme_chains(uint32_t slot_nbr); virtual DECLARE_READ8_MEMBER(read8); virtual DECLARE_WRITE8_MEMBER(write8); @@ -124,10 +124,10 @@ DECLARE_DEVICE_TYPE(VME, vme_device) MCFG_DEVICE_ADD(_tag, VME, 0) #define MCFG_VME_CPU(_cputag) \ - vme_device::static_set_cputag(*device, _cputag); + downcast<vme_device &>(*device).set_cputag(_cputag); #define MCFG_VME_BUS_OWNER_SPACES() \ - vme_device::static_use_owner_spaces(*device); + downcast<vme_device &>(*device).use_owner_spaces(); class vme_card_interface; @@ -139,8 +139,8 @@ public: ~vme_device(); // inline configuration - static void static_set_cputag(device_t &device, const char *tag); - static void static_use_owner_spaces(device_t &device); + void set_cputag(const char *tag) { m_cputag = tag; } + void use_owner_spaces(); virtual space_config_vector memory_space_config() const override; @@ -219,7 +219,7 @@ class device_vme_card_interface : public device_slot_card_interface template <class ElementType> friend class simple_list; public: // inline configuration - static void static_set_vme_tag(device_t &device, const char *tag, const char *slottag); + void set_vme_tag(const char *tag, const char *slottag); // construction/destruction virtual ~device_vme_card_interface(); @@ -245,8 +245,8 @@ private: { std::string stag = "slot" + std::to_string(_slotnbr); \ MCFG_DEVICE_ADD(stag.c_str(), VME_SLOT, 0); \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false); \ - vme_slot_device::static_set_vme_slot(*device, _tag, stag.c_str()); \ - vme_slot_device::static_update_vme_chains(*device, _slotnbr); \ + downcast<vme_slot_device &>(*device).set_vme_slot(_tag, stag.c_str()); \ + downcast<vme_slot_device &>(*device).update_vme_chains(_slotnbr); \ } #define MCFG_VME_SLOT_REMOVE(_tag) \ diff --git a/src/devices/bus/vtech/memexp/memexp.h b/src/devices/bus/vtech/memexp/memexp.h index 692f10c819a..91737e003bc 100644 --- a/src/devices/bus/vtech/memexp/memexp.h +++ b/src/devices/bus/vtech/memexp/memexp.h @@ -47,13 +47,13 @@ MCFG_DEVICE_SLOT_INTERFACE(vtech_memexp_carts, nullptr, false) #define MCFG_MEMEXP_SLOT_INT_HANDLER(_devcb) \ - devcb = &vtech_memexp_device::set_int_handler(*device, DEVCB_##_devcb); + devcb = &downcast<vtech_memexp_device &>(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_MEMEXP_SLOT_NMI_HANDLER(_devcb) \ - devcb = &vtech_memexp_device::set_nmi_handler(*device, DEVCB_##_devcb); + devcb = &downcast<vtech_memexp_device &>(*device).set_nmi_handler(DEVCB_##_devcb); #define MCFG_MEMEXP_SLOT_RESET_HANDLER(_devcb) \ - devcb = &vtech_memexp_device::set_reset_handler(*device, DEVCB_##_devcb); + devcb = &downcast<vtech_memexp_device &>(*device).set_reset_handler(DEVCB_##_devcb); //************************************************************************** @@ -74,14 +74,9 @@ public: void set_io_space(address_space *io); // callbacks - template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) - { return downcast<vtech_memexp_slot_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb) - { return downcast<vtech_memexp_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb) - { return downcast<vtech_memexp_slot_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_reset_handler(Object &&cb) { return m_reset_handler.set_callback(std::forward<Object>(cb)); } // called from cart device DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); } diff --git a/src/devices/bus/wangpc/wangpc.cpp b/src/devices/bus/wangpc/wangpc.cpp index 8344178ca8d..b7acf07f94c 100644 --- a/src/devices/bus/wangpc/wangpc.cpp +++ b/src/devices/bus/wangpc/wangpc.cpp @@ -35,13 +35,6 @@ wangpcbus_slot_device::wangpcbus_slot_device(const machine_config &mconfig, cons { } -void wangpcbus_slot_device::static_set_wangpcbus_slot(device_t &device, int sid) -{ - wangpcbus_slot_device &wangpcbus_card = dynamic_cast<wangpcbus_slot_device &>(device); - wangpcbus_card.m_sid = sid; -} - - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/bus/wangpc/wangpc.h b/src/devices/bus/wangpc/wangpc.h index 740c7e5ed53..b39c79f12f2 100644 --- a/src/devices/bus/wangpc/wangpc.h +++ b/src/devices/bus/wangpc/wangpc.h @@ -35,38 +35,38 @@ #define MCFG_WANGPC_BUS_SLOT_ADD(_tag, _sid, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, WANGPC_BUS_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - wangpcbus_slot_device::static_set_wangpcbus_slot(*device, _sid); + downcast<wangpcbus_slot_device &>(*device).set_wangpcbus_slot(_sid); #define MCFG_WANGPC_BUS_IRQ2_CALLBACK(_write) \ - devcb = &wangpcbus_device::set_irq2_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wangpcbus_device &>(*device).set_irq2_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IRQ3_CALLBACK(_write) \ - devcb = &wangpcbus_device::set_irq3_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wangpcbus_device &>(*device).set_irq3_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IRQ4_CALLBACK(_write) \ - devcb = &wangpcbus_device::set_irq4_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wangpcbus_device &>(*device).set_irq4_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IRQ5_CALLBACK(_write) \ - devcb = &wangpcbus_device::set_irq5_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wangpcbus_device &>(*device).set_irq5_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IRQ6_CALLBACK(_write) \ - devcb = &wangpcbus_device::set_irq6_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wangpcbus_device &>(*device).set_irq6_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IRQ7_CALLBACK(_write) \ - devcb = &wangpcbus_device::set_irq7_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wangpcbus_device &>(*device).set_irq7_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_DRQ1_CALLBACK(_write) \ - devcb = &wangpcbus_device::set_drq1_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wangpcbus_device &>(*device).set_drq1_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_DRQ2_CALLBACK(_write) \ - devcb = &wangpcbus_device::set_drq2_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wangpcbus_device &>(*device).set_drq2_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_DRQ3_CALLBACK(_write) \ - devcb = &wangpcbus_device::set_drq3_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wangpcbus_device &>(*device).set_drq3_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IOERROR_CALLBACK(_write) \ - devcb = &wangpcbus_device::set_ioerror_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wangpcbus_device &>(*device).set_ioerror_wr_callback(DEVCB_##_write); //************************************************************************** @@ -84,7 +84,7 @@ public: wangpcbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_wangpcbus_slot(device_t &device, int sid); + void set_wangpcbus_slot(int sid) { m_sid = sid; } protected: // device-level overrides @@ -113,16 +113,16 @@ public: wangpcbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~wangpcbus_device() { m_device_list.detach_all(); } - template <class Object> static devcb_base &set_irq2_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq3_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq4_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq4.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq5_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq5.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq6_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq6.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq7_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq7.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq1_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_drq1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq2_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_drq2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq3_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_drq3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ioerror_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_ioerror.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq2_wr_callback(Object &&cb) { return m_write_irq2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq3_wr_callback(Object &&cb) { return m_write_irq3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq4_wr_callback(Object &&cb) { return m_write_irq4.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq5_wr_callback(Object &&cb) { return m_write_irq5.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq6_wr_callback(Object &&cb) { return m_write_irq6.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq7_wr_callback(Object &&cb) { return m_write_irq7.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq1_wr_callback(Object &&cb) { return m_write_drq1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq2_wr_callback(Object &&cb) { return m_write_drq2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq3_wr_callback(Object &&cb) { return m_write_drq3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ioerror_wr_callback(Object &&cb) { return m_write_ioerror.set_callback(std::forward<Object>(cb)); } void add_card(device_wangpcbus_card_interface *card, int sid); diff --git a/src/devices/bus/x68k/x68kexp.h b/src/devices/bus/x68k/x68kexp.h index bc26bda26d4..3b0a0080e1e 100644 --- a/src/devices/bus/x68k/x68kexp.h +++ b/src/devices/bus/x68k/x68kexp.h @@ -78,16 +78,16 @@ //************************************************************************** #define MCFG_X68K_EXPANSION_SLOT_OUT_IRQ2_CB(_devcb) \ - devcb = &x68k_expansion_slot_device::set_out_irq2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<x68k_expansion_slot_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb); #define MCFG_X68K_EXPANSION_SLOT_OUT_IRQ4_CB(_devcb) \ - devcb = &x68k_expansion_slot_device::set_out_irq4_callback(*device, DEVCB_##_devcb); + devcb = &downcast<x68k_expansion_slot_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb); #define MCFG_X68K_EXPANSION_SLOT_OUT_NMI_CB(_devcb) \ - devcb = &x68k_expansion_slot_device::set_out_nmi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<x68k_expansion_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_X68K_EXPANSION_SLOT_OUT_RESET_CB(_devcb) \ - devcb = &x68k_expansion_slot_device::set_out_reset_callback(*device, DEVCB_##_devcb); + devcb = &downcast<x68k_expansion_slot_device &>(*device).set_out_reset_callback(DEVCB_##_devcb); //************************************************************************** @@ -126,10 +126,10 @@ public: x68k_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~x68k_expansion_slot_device(); - template <class Object> static devcb_base &set_out_irq2_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_irq2_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq4_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_irq4_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_reset_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_reset_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq2_callback(Object &&cb) { return m_out_irq2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq4_callback(Object &&cb) { return m_out_irq4_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_reset_callback(Object &&cb) { return m_out_reset_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( irq2_w ); diff --git a/src/devices/bus/z88/z88.h b/src/devices/bus/z88/z88.h index 477b98eca7c..8481c3e7780 100644 --- a/src/devices/bus/z88/z88.h +++ b/src/devices/bus/z88/z88.h @@ -93,7 +93,7 @@ public: z88cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~z88cart_slot_device(); - template <class Object> static devcb_base &set_out_flp_callback(device_t &device, Object &&cb) { return downcast<z88cart_slot_device &>(device).m_out_flp_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_flp_callback(Object &&cb) { return m_out_flp_cb.set_callback(std::forward<Object>(cb)); } // image-level overrides virtual image_init_result call_load() override; @@ -140,6 +140,6 @@ DECLARE_DEVICE_TYPE(Z88CART_SLOT, z88cart_slot_device) ***************************************************************************/ #define MCFG_Z88CART_SLOT_OUT_FLP_CB(_devcb) \ - devcb = &z88cart_slot_device::set_out_flp_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z88cart_slot_device &>(*device).set_out_flp_callback(DEVCB_##_devcb); #endif // MAME_BUS_Z88_Z88_H diff --git a/src/devices/cpu/adsp2100/adsp2100.h b/src/devices/cpu/adsp2100/adsp2100.h index 4b2cbcd98a8..9a7d8561621 100644 --- a/src/devices/cpu/adsp2100/adsp2100.h +++ b/src/devices/cpu/adsp2100/adsp2100.h @@ -181,16 +181,16 @@ enum //************************************************************************** #define MCFG_ADSP21XX_SPORT_RX_CB(_devcb) \ - devcb = &adsp21xx_device::set_sport_rx_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adsp21xx_device &>(*device).set_sport_rx_callback(DEVCB_##_devcb); #define MCFG_ADSP21XX_SPORT_TX_CB(_devcb) \ - devcb = &adsp21xx_device::set_sport_tx_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adsp21xx_device &>(*device).set_sport_tx_callback(DEVCB_##_devcb); #define MCFG_ADSP21XX_TIMER_FIRED_CB(_devcb) \ - devcb = &adsp21xx_device::set_timer_fired_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adsp21xx_device &>(*device).set_timer_fired_callback(DEVCB_##_devcb); #define MCFG_ADSP21XX_DMOVLAY_CB(_devcb) \ - devcb = &adsp21xx_device::set_dmovlay_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adsp21xx_device &>(*device).set_dmovlay_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -204,10 +204,10 @@ public: virtual ~adsp21xx_device(); // inline configuration helpers - template <class Object> static devcb_base &set_sport_rx_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_sport_rx_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sport_tx_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_sport_tx_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_timer_fired_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_timer_fired_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dmovlay_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_dmovlay_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sport_rx_callback(Object &&cb) { return m_sport_rx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sport_tx_callback(Object &&cb) { return m_sport_tx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_timer_fired_callback(Object &&cb) { return m_timer_fired_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dmovlay_callback(Object &&cb) { return m_dmovlay_cb.set_callback(std::forward<Object>(cb)); } // public interfaces void load_boot_data(uint8_t *srcdata, uint32_t *dstdata); diff --git a/src/devices/cpu/amis2000/amis2000.h b/src/devices/cpu/amis2000/amis2000.h index 3dfa68262ba..b592bdd9466 100644 --- a/src/devices/cpu/amis2000/amis2000.h +++ b/src/devices/cpu/amis2000/amis2000.h @@ -14,43 +14,43 @@ // generic input pins (4 bits each) #define MCFG_AMI_S2000_READ_K_CB(_devcb) \ - devcb = &amis2000_base_device::set_read_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<amis2000_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb); #define MCFG_AMI_S2000_READ_I_CB(_devcb) \ - devcb = &amis2000_base_device::set_read_i_callback(*device, DEVCB_##_devcb); + devcb = &downcast<amis2000_base_device &>(*device).set_read_i_callback(DEVCB_##_devcb); // 8-bit external databus coupled as input/output pins #define MCFG_AMI_S2000_READ_D_CB(_devcb) \ - devcb = &amis2000_base_device::set_read_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<amis2000_base_device &>(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_AMI_S2000_WRITE_D_CB(_devcb) \ - devcb = &amis2000_base_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<amis2000_base_device &>(*device).set_write_d_callback(DEVCB_##_devcb); // 13-bit external address bus coupled as output pins #define MCFG_AMI_S2000_WRITE_A_CB(_devcb) \ - devcb = &amis2000_base_device::set_write_a_callback(*device, DEVCB_##_devcb); + devcb = &downcast<amis2000_base_device &>(*device).set_write_a_callback(DEVCB_##_devcb); // F_out pin (only for S2152) #define MCFG_AMI_S2152_FOUT_CB(_devcb) \ - devcb = &amis2000_base_device::set_write_f_callback(*device, DEVCB_##_devcb); + devcb = &downcast<amis2000_base_device &>(*device).set_write_f_callback(DEVCB_##_devcb); // S2000 has a hardcoded 7seg table, that (unlike S2200) is officially // uncustomizable, but wildfire proves to be an exception to that rule. #define MCFG_AMI_S2000_7SEG_DECODER(_ptr) \ - amis2000_base_device::set_7seg_table(*device, _ptr); + downcast<amis2000_base_device &>(*device).set_7seg_table(_ptr); class amis2000_base_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_i_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_i.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_a_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_a.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); } - static void set_7seg_table(device_t &device, const u8 *ptr) { downcast<amis2000_base_device &>(device).m_7seg_table = ptr; } + // configuration helpers + template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_i_callback(Object &&cb) { return m_read_i.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_a_callback(Object &&cb) { return m_write_a.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_f_callback(Object &&cb) { return m_write_f.set_callback(std::forward<Object>(cb)); } + void set_7seg_table(const u8 *ptr) { m_7seg_table = ptr; } void data_64x4(address_map &map); void data_80x4(address_map &map); diff --git a/src/devices/cpu/apexc/apexc.h b/src/devices/cpu/apexc/apexc.h index 46b45e7bc2c..daa42e8ddd8 100644 --- a/src/devices/cpu/apexc/apexc.h +++ b/src/devices/cpu/apexc/apexc.h @@ -7,10 +7,10 @@ #pragma once #define MCFG_APEXC_TAPE_READ_CB(_devcb) \ - devcb = &apexc_cpu_device::set_tape_read_cb(*device, DEVCB_##_devcb); + devcb = &downcast<apexc_cpu_device &>(*device).set_tape_read_cb(DEVCB_##_devcb); #define MCFG_APEXC_TAPE_PUNCH_CB(_devcb) \ - devcb = &apexc_cpu_device::set_tape_punch_cb(*device, DEVCB_##_devcb); + devcb = &downcast<apexc_cpu_device &>(*device).set_tape_punch_cb(DEVCB_##_devcb); enum { @@ -28,17 +28,9 @@ public: // construction/destruction apexc_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - template<class Object> - static devcb_base &set_tape_read_cb(device_t &device, Object &&object) - { - return downcast<apexc_cpu_device &>(device).m_tape_read_cb.set_callback(std::forward<Object>(object)); - } - template<class Object> - static devcb_base &set_tape_punch_cb(device_t &device, Object &&object) - { - return downcast<apexc_cpu_device &>(device).m_tape_punch_cb.set_callback(std::forward<Object>(object)); - } + // configuration + template<class Object> devcb_base &set_tape_read_cb(Object &&object) { return m_tape_read_cb.set_callback(std::forward<Object>(object)); } + template<class Object> devcb_base &set_tape_punch_cb(Object &&object) { return m_tape_punch_cb.set_callback(std::forward<Object>(object)); } protected: // device-level overrides diff --git a/src/devices/cpu/arm/arm.h b/src/devices/cpu/arm/arm.h index 3cfb1386fa9..e1795f0594d 100644 --- a/src/devices/cpu/arm/arm.h +++ b/src/devices/cpu/arm/arm.h @@ -17,7 +17,7 @@ ***************************************************************************************************/ #define MCFG_ARM_COPRO(_type) \ - arm_cpu_device::set_copro_type(*device, arm_cpu_device::copro_type::_type); + downcast<arm_cpu_device &>(*device).set_copro_type(arm_cpu_device::copro_type::_type); class arm_cpu_device : public cpu_device @@ -32,7 +32,7 @@ public: // construction/destruction arm_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_copro_type(device_t &device, copro_type type) { downcast<arm_cpu_device &>(device).m_copro_type = type; } + void set_copro_type(copro_type type) { m_copro_type = type; } protected: enum diff --git a/src/devices/cpu/arm7/arm7.h b/src/devices/cpu/arm7/arm7.h index a1b4dc04a25..def6bed007b 100644 --- a/src/devices/cpu/arm7/arm7.h +++ b/src/devices/cpu/arm7/arm7.h @@ -34,7 +34,7 @@ #define ARM7_MAX_HOTSPOTS 16 #define MCFG_ARM_HIGH_VECTORS() \ - arm7_cpu_device::set_high_vectors(*device); + downcast<arm7_cpu_device &>(*device).set_high_vectors(); /*************************************************************************** @@ -57,11 +57,7 @@ public: // construction/destruction arm7_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_high_vectors(device_t &device) - { - arm7_cpu_device &dev = downcast<arm7_cpu_device &>(device); - dev.m_vectorbase = 0xffff0000; - } + void set_high_vectors() { m_vectorbase = 0xffff0000; } protected: enum diff --git a/src/devices/cpu/arm7/lpc210x.h b/src/devices/cpu/arm7/lpc210x.h index fa5a20999d0..afcc4a57795 100644 --- a/src/devices/cpu/arm7/lpc210x.h +++ b/src/devices/cpu/arm7/lpc210x.h @@ -23,9 +23,6 @@ class lpc210x_device : public arm7_cpu_device public: lpc210x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t); - // static configuration helpers - - DECLARE_READ32_MEMBER(arm_E01FC088_r); DECLARE_READ32_MEMBER(flash_r); DECLARE_WRITE32_MEMBER(flash_w); diff --git a/src/devices/cpu/avr8/avr8.h b/src/devices/cpu/avr8/avr8.h index 344c9ca317b..b898f4efc34 100644 --- a/src/devices/cpu/avr8/avr8.h +++ b/src/devices/cpu/avr8/avr8.h @@ -64,7 +64,7 @@ //************************************************************************** #define MCFG_CPU_AVR8_EEPROM(_tag) \ - avr8_device::set_eeprom_tag(*device, "^" _tag); + downcast<avr8_device &>(*device).set_eeprom_tag("^" _tag); //************************************************************************** @@ -80,7 +80,7 @@ class avr8_device : public cpu_device { public: // inline configuration helpers - static void set_eeprom_tag(device_t &device, const char *tag) { downcast<avr8_device &>(device).m_eeprom.set_tag(tag); } + void set_eeprom_tag(const char *tag) { m_eeprom.set_tag(tag); } // fuse configs void set_low_fuses(uint8_t byte); diff --git a/src/devices/cpu/ccpu/ccpu.h b/src/devices/cpu/ccpu/ccpu.h index 4cad4d66965..6510250e233 100644 --- a/src/devices/cpu/ccpu/ccpu.h +++ b/src/devices/cpu/ccpu/ccpu.h @@ -23,10 +23,10 @@ #define MCFG_CCPU_EXTERNAL_FUNC(_devcb) \ - ccpu_cpu_device::set_external_func(*device, DEVCB_##_devcb); + downcast<ccpu_cpu_device &>(*device).set_external_func(DEVCB_##_devcb); #define MCFG_CCPU_VECTOR_FUNC(d) \ - ccpu_cpu_device::set_vector_func(*device, d); + downcast<ccpu_cpu_device &>(*device).set_vector_func(d); class ccpu_cpu_device : public cpu_device @@ -53,9 +53,9 @@ public: // construction/destruction ccpu_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_external_func(device_t &device, Object &&cb) { return downcast<ccpu_cpu_device &>(device).m_external_input.set_callback(std::forward<Object>(cb)); } - static void set_vector_func(device_t &device, vector_delegate callback) { downcast<ccpu_cpu_device &>(device).m_vector_callback = callback; } + // configuration helpers + template <class Object> devcb_base &set_external_func(Object &&cb) { return m_external_input.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_vector_func(Object &&cb) { m_vector_callback = std::forward<Object>(cb); } DECLARE_READ8_MEMBER( read_jmi ); void wdt_timer_trigger(); diff --git a/src/devices/cpu/cop400/cop400.h b/src/devices/cpu/cop400/cop400.h index 3630c2c41b7..643f6129fe1 100644 --- a/src/devices/cpu/cop400/cop400.h +++ b/src/devices/cpu/cop400/cop400.h @@ -17,40 +17,40 @@ // L pins: 8-bit bi-directional #define MCFG_COP400_READ_L_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_l_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_l_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_L_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_l_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_l_callback(DEVCB_##_devcb); // output state when pins are in tri-state, default 0 #define MCFG_COP400_READ_L_TRISTATE_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_l_tristate_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_l_tristate_callback(DEVCB_##_devcb); // G pins: 4-bit bi-directional #define MCFG_COP400_READ_G_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_g_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_G_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb); // D outputs: 4-bit general purpose output #define MCFG_COP400_WRITE_D_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb); // IN inputs: 4-bit general purpose input #define MCFG_COP400_READ_IN_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_in_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_in_callback(DEVCB_##_devcb); // SI/SO lines: serial in/out or counter/gen.purpose #define MCFG_COP400_READ_SI_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_si_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_si_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_SO_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_so_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_so_callback(DEVCB_##_devcb); // SK output line: logic-controlled clock or gen.purpose #define MCFG_COP400_WRITE_SK_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_sk_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_sk_callback(DEVCB_##_devcb); // CKI/CKO lines: only CKO input here #define MCFG_COP400_READ_CKO_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_cko_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_cko_callback(DEVCB_##_devcb); /*************************************************************************** @@ -112,9 +112,9 @@ enum cop400_cko_bond { #define MCFG_COP400_CONFIG(_cki, _cko, _microbus) \ - cop400_cpu_device::set_cki(*device, _cki); \ - cop400_cpu_device::set_cko(*device, _cko); \ - cop400_cpu_device::set_microbus(*device, _microbus); + downcast<cop400_cpu_device &>(*device).set_cki(_cki); \ + downcast<cop400_cpu_device &>(*device).set_cko(_cko); \ + downcast<cop400_cpu_device &>(*device).set_microbus(_microbus); class cop400_cpu_device : public cpu_device @@ -122,22 +122,22 @@ class cop400_cpu_device : public cpu_device public: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - // static configuration helpers - template<class _Object> static devcb_base &set_read_l_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_l.set_callback(object); } - template<class _Object> static devcb_base &set_read_l_tristate_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_l_tristate.set_callback(object); } - template<class _Object> static devcb_base &set_write_l_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_l.set_callback(object); } - template<class _Object> static devcb_base &set_read_g_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_g.set_callback(object); } - template<class _Object> static devcb_base &set_write_g_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_g.set_callback(object); } - template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_d.set_callback(object); } - template<class _Object> static devcb_base &set_read_in_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_in.set_callback(object); } - template<class _Object> static devcb_base &set_read_si_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_si.set_callback(object); } - template<class _Object> static devcb_base &set_write_so_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_so.set_callback(object); } - template<class _Object> static devcb_base &set_write_sk_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_sk.set_callback(object); } - template<class _Object> static devcb_base &set_read_cko_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_cko.set_callback(object); } - - static void set_cki(device_t &device, cop400_cki_bond cki) { downcast<cop400_cpu_device &>(device).m_cki = cki; } - static void set_cko(device_t &device, cop400_cko_bond cko) { downcast<cop400_cpu_device &>(device).m_cko = cko; } - static void set_microbus(device_t &device, bool has_microbus) { downcast<cop400_cpu_device &>(device).m_has_microbus = has_microbus; } + // configuration helpers + template<class Object> devcb_base &set_read_l_callback(Object &&cb) { return m_read_l.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_l_tristate_callback(Object &&cb) { return m_read_l_tristate.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_l_callback(Object &&cb) { return m_write_l.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_g_callback(Object &&cb) { return m_read_g.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_g_callback(Object &&cb) { return m_write_g.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_in_callback(Object &&cb) { return m_read_in.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_si_callback(Object &&cb) { return m_read_si.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_so_callback(Object &&cb) { return m_write_so.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_sk_callback(Object &&cb) { return m_write_sk.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_cko_callback(Object &&cb) { return m_read_cko.set_callback(std::forward<Object>(cb)); } + + void set_cki(cop400_cki_bond cki) { m_cki = cki; } + void set_cko(cop400_cko_bond cko) { m_cko = cko; } + void set_microbus(bool has_microbus) { m_has_microbus = has_microbus; } DECLARE_READ8_MEMBER( microbus_rd ); DECLARE_WRITE8_MEMBER( microbus_wr ); diff --git a/src/devices/cpu/cosmac/cosmac.h b/src/devices/cpu/cosmac/cosmac.h index 515dde74d45..161b3ea7d5c 100644 --- a/src/devices/cpu/cosmac/cosmac.h +++ b/src/devices/cpu/cosmac/cosmac.h @@ -88,34 +88,34 @@ //************************************************************************** #define MCFG_COSMAC_WAIT_CALLBACK(_read) \ - devcb = &cosmac_device::set_wait_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_wait_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_CLEAR_CALLBACK(_read) \ - devcb = &cosmac_device::set_clear_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_clear_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF1_CALLBACK(_read) \ - devcb = &cosmac_device::set_ef1_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_ef1_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF2_CALLBACK(_read) \ - devcb = &cosmac_device::set_ef2_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_ef2_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF3_CALLBACK(_read) \ - devcb = &cosmac_device::set_ef3_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_ef3_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF4_CALLBACK(_read) \ - devcb = &cosmac_device::set_ef4_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_ef4_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_Q_CALLBACK(_write) \ - devcb = &cosmac_device::set_q_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cosmac_device &>(*device).set_q_wr_callback(DEVCB_##_write); #define MCFG_COSMAC_DMAR_CALLBACK(_read) \ - devcb = &cosmac_device::set_dma_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_dma_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_DMAW_CALLBACK(_write) \ - devcb = &cosmac_device::set_dma_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cosmac_device &>(*device).set_dma_wr_callback(DEVCB_##_write); #define MCFG_COSMAC_SC_CALLBACK(_write) \ - devcb = &cosmac_device::set_sc_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cosmac_device &>(*device).set_sc_wr_callback(DEVCB_##_write); @@ -193,16 +193,16 @@ public: }; - template <class Object> static devcb_base &set_wait_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_wait.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_clear_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_clear.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ef1_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ef2_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ef3_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ef4_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef4.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_q_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_q.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_dma.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_dma.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sc_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_sc.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_wait_rd_callback(Object &&cb) { return m_read_wait.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_clear_rd_callback(Object &&cb) { return m_read_clear.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ef1_rd_callback(Object &&cb) { return m_read_ef1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ef2_rd_callback(Object &&cb) { return m_read_ef2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ef3_rd_callback(Object &&cb) { return m_read_ef3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ef4_rd_callback(Object &&cb) { return m_read_ef4.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_q_wr_callback(Object &&cb) { return m_write_q.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_rd_callback(Object &&cb) { return m_read_dma.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_wr_callback(Object &&cb) { return m_write_dma.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sc_wr_callback(Object &&cb) { return m_write_sc.set_callback(std::forward<Object>(cb)); } // public interfaces offs_t get_memory_address(); diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.h b/src/devices/cpu/cubeqcpu/cubeqcpu.h index 46b3235c6be..90f5b5250c0 100644 --- a/src/devices/cpu/cubeqcpu/cubeqcpu.h +++ b/src/devices/cpu/cubeqcpu/cubeqcpu.h @@ -18,16 +18,16 @@ #define MCFG_CQUESTSND_CONFIG(_dac_w, _sound_tag) \ - cquestsnd_cpu_device::set_dac_w(*device, DEVCB_##_dac_w); \ - cquestsnd_cpu_device::set_sound_region(*device, _sound_tag); + downcast<cquestsnd_cpu_device &>(*device).set_dac_w(DEVCB_##_dac_w); \ + downcast<cquestsnd_cpu_device &>(*device).set_sound_region(_sound_tag); #define MCFG_CQUESTROT_CONFIG(_linedata_w) \ - cquestrot_cpu_device::set_linedata_w(*device, DEVCB_##_linedata_w ); + downcast<cquestrot_cpu_device &>(*device).set_linedata_w(DEVCB_##_linedata_w ); #define MCFG_CQUESTLIN_CONFIG(_linedata_r) \ - cquestlin_cpu_device::set_linedata_r(*device, DEVCB_##_linedata_r ); + downcast<cquestlin_cpu_device &>(*device).set_linedata_r(DEVCB_##_linedata_r ); /*************************************************************************** @@ -40,9 +40,9 @@ public: // construction/destruction cquestsnd_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_dac_w(device_t &device, Object &&cb) { return downcast<cquestsnd_cpu_device &>(device).m_dac_w.set_callback(std::forward<Object>(cb)); } - static void set_sound_region(device_t &device, const char *tag) { downcast<cquestsnd_cpu_device &>(device).m_sound_region_tag = tag; } + // configuration helpers + template <class Object> devcb_base &set_dac_w(Object &&cb) { return m_dac_w.set_callback(std::forward<Object>(cb)); } + void set_sound_region(const char *tag) { m_sound_region_tag = tag; } DECLARE_WRITE16_MEMBER(sndram_w); DECLARE_READ16_MEMBER(sndram_r); @@ -131,8 +131,8 @@ public: // construction/destruction cquestrot_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_linedata_w(device_t &device, Object &&cb) { return downcast<cquestrot_cpu_device &>(device).m_linedata_w.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_linedata_w(Object &&cb) { return m_linedata_w.set_callback(std::forward<Object>(cb)); } DECLARE_READ16_MEMBER(linedata_r); DECLARE_WRITE16_MEMBER(rotram_w); @@ -243,8 +243,8 @@ public: // construction/destruction cquestlin_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_linedata_r(device_t &device, Object &&cb) { return downcast<cquestlin_cpu_device &>(device).m_linedata_r.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_linedata_r(Object &&cb) { return m_linedata_r.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE16_MEMBER( linedata_w ); void cubeqcpu_swap_line_banks(); diff --git a/src/devices/cpu/dsp32/dsp32.h b/src/devices/cpu/dsp32/dsp32.h index 8f8ad369736..1a091fb1c95 100644 --- a/src/devices/cpu/dsp32/dsp32.h +++ b/src/devices/cpu/dsp32/dsp32.h @@ -31,7 +31,7 @@ const int DSP32_OUTPUT_PDF = 0x02; //************************************************************************** #define MCFG_DSP32C_OUTPUT_CALLBACK(_write) \ - devcb = &dsp32c_device::set_output_pins_callback(*device, DEVCB_##_write); + devcb = &downcast<dsp32c_device &>(*device).set_output_pins_callback(DEVCB_##_write); // ======================> dsp32c_device @@ -41,7 +41,7 @@ public: // construction/destruction dsp32c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_output_pins_callback(device_t &device, Object &&cb) { return downcast<dsp32c_device &>(device).m_output_pins_changed.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_pins_callback(Object &&cb) { return m_output_pins_changed.set_callback(std::forward<Object>(cb)); } // public interfaces diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h index d6e35ab2fbf..7e9c4d0f91b 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.h +++ b/src/devices/cpu/e0c6200/e0c6s46.h @@ -16,7 +16,7 @@ // 5 4-bit R output ports #define MCFG_E0C6S46_WRITE_R_CB(R, _devcb) \ - devcb = &e0c6s46_device::set_write_r##R##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<e0c6s46_device &>(*device).set_write_r##R##_callback(DEVCB_##_devcb); enum { @@ -29,9 +29,9 @@ enum // 4 4-bit P I/O ports #define MCFG_E0C6S46_READ_P_CB(R, _devcb) \ - devcb = &hmcs40_cpu_device::set_read_r##P##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hmcs40_cpu_device &>(*device).set_read_r##P##_callback(DEVCB_##_devcb); #define MCFG_E0C6S46_WRITE_P_CB(R, _devcb) \ - devcb = &e0c6s46_device::set_write_r##P##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<e0c6s46_device &>(*device).set_write_r##P##_callback(DEVCB_##_devcb); enum { @@ -57,7 +57,7 @@ enum // lcd driver #define MCFG_E0C6S46_PIXEL_UPDATE_CB(_class, _method) \ - e0c6s46_device::static_set_pixel_update_cb(*device, e0c6s46_device::pixel_update_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<e0c6s46_device &>(*device).set_pixel_update_cb(e0c6s46_device::pixel_update_delegate(&_class::_method, #_class "::" #_method, this)); #define E0C6S46_PIXEL_UPDATE(name) void name(bitmap_ind16 &bitmap, const rectangle &cliprect, int contrast, int seg, int com, int state) @@ -69,23 +69,23 @@ public: e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <class Object> static devcb_base &set_write_r0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r4_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r4.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_read_p0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_p1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_p2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_p3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_p0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_p1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_p2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_p3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p3.set_callback(std::forward<Object>(cb)); } - - static void static_set_pixel_update_cb(device_t &device, pixel_update_delegate &&cb) { downcast<e0c6s46_device &>(device).m_pixel_update_cb = std::move(cb); } + // configuration helpers + template <class Object> devcb_base &set_write_r0_callback(Object &&cb) { return m_write_r0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r1_callback(Object &&cb) { return m_write_r1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r2_callback(Object &&cb) { return m_write_r2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r3_callback(Object &&cb) { return m_write_r3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r4_callback(Object &&cb) { return m_write_r4.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_read_p0_callback(Object &&cb) { return m_read_p0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_p1_callback(Object &&cb) { return m_read_p1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_p2_callback(Object &&cb) { return m_read_p2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_p3_callback(Object &&cb) { return m_read_p3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_p0_callback(Object &&cb) { return m_write_p0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_p1_callback(Object &&cb) { return m_write_p1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_p2_callback(Object &&cb) { return m_write_p2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_p3_callback(Object &&cb) { return m_write_p3.set_callback(std::forward<Object>(cb)); } + + template <typename Object> void set_pixel_update_cb(Object &&cb) { m_pixel_update_cb = std::forward<Object>(cb); } DECLARE_READ8_MEMBER(io_r); DECLARE_WRITE8_MEMBER(io_w); diff --git a/src/devices/cpu/esrip/esrip.h b/src/devices/cpu/esrip/esrip.h index 13320e82a12..d913861cb01 100644 --- a/src/devices/cpu/esrip/esrip.h +++ b/src/devices/cpu/esrip/esrip.h @@ -20,19 +20,19 @@ #define ESRIP_DRAW(name) int name(int l, int r, int fig, int attr, int addr, int col, int x_scale, int bank) #define MCFG_ESRIP_FDT_R_CALLBACK(_read) \ - devcb = &esrip_device::static_set_fdt_r_callback(*device, DEVCB_##_read); + devcb = &downcast<esrip_device &>(*device).set_fdt_r_callback(DEVCB_##_read); #define MCFG_ESRIP_FDT_W_CALLBACK(_write) \ - devcb = &esrip_device::static_set_fdt_w_callback(*device, DEVCB_##_write); + devcb = &downcast<esrip_device &>(*device).set_fdt_w_callback(DEVCB_##_write); #define MCFG_ESRIP_STATUS_IN_CALLBACK(_read) \ - devcb = &esrip_device::static_set_status_in_callback(*device, DEVCB_##_read); + devcb = &downcast<esrip_device &>(*device).set_status_in_callback(DEVCB_##_read); #define MCFG_ESRIP_DRAW_CALLBACK_OWNER(_class, _method) \ - esrip_device::static_set_draw_callback(*device, esrip_device::draw_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<esrip_device &>(*device).set_draw_callback(esrip_device::draw_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ESRIP_LBRM_PROM(_tag) \ - esrip_device::static_lbrm_prom(*device, _tag); + downcast<esrip_device &>(*device).lbrm_prom(_tag); //************************************************************************** @@ -54,11 +54,11 @@ public: esrip_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - template <class Object> static devcb_base &static_set_fdt_r_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_fdt_r.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_fdt_w_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_fdt_w.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_status_in_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_status_in.set_callback(std::forward<Object>(cb)); } - static void static_set_draw_callback(device_t &device, draw_delegate func) { downcast<esrip_device &>(device).m_draw = func; } - static void static_lbrm_prom(device_t &device, const char *name) { downcast<esrip_device &>(device).m_lbrm_prom = name; } + template <class Object> devcb_base &set_fdt_r_callback(Object &&cb) { return m_fdt_r.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_fdt_w_callback(Object &&cb) { return m_fdt_w.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_status_in_callback(Object &&cb) { return m_status_in.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_draw_callback(Object &&cb) { m_draw = std::forward<Object>(cb); } + void lbrm_prom(const char *name) { m_lbrm_prom = name; } // public interfaces uint8_t get_rip_status(); diff --git a/src/devices/cpu/h8/h83002.h b/src/devices/cpu/h8/h83002.h index 613611c92ba..457e604aa21 100644 --- a/src/devices/cpu/h8/h83002.h +++ b/src/devices/cpu/h8/h83002.h @@ -26,16 +26,16 @@ #include "h8_watchdog.h" #define MCFG_H83002_TEND0_CALLBACK(_devcb) \ - devcb = &h83002_device::set_tend0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<h83002_device &>(*device).set_tend0_callback(DEVCB_##_devcb); #define MCFG_H83002_TEND1_CALLBACK(_devcb) \ - devcb = &h83002_device::set_tend1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<h83002_device &>(*device).set_tend1_callback(DEVCB_##_devcb); class h83002_device : public h8h_device { public: h83002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template<class _Object> static devcb_base &set_tend0_callback(device_t &device, _Object object) { return downcast<h83002_device&>(device).tend0_cb.set_callback(object); } - template<class _Object> static devcb_base &set_tend1_callback(device_t &device, _Object object) { return downcast<h83002_device&>(device).tend1_cb.set_callback(object); } + template<class Object> devcb_base &set_tend0_callback(Object &&cb) { return tend0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_tend1_callback(Object &&cb) { return tend1_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(syscr_r); DECLARE_WRITE8_MEMBER(syscr_w); diff --git a/src/devices/cpu/h8/h8_sci.h b/src/devices/cpu/h8/h8_sci.h index ea13f1f65a2..3c2db4147df 100644 --- a/src/devices/cpu/h8/h8_sci.h +++ b/src/devices/cpu/h8/h8_sci.h @@ -25,10 +25,10 @@ downcast<h8_sci_device *>(device)->set_external_clock_period(_period); #define MCFG_H8_SCI_TX_CALLBACK(_devcb) \ - devcb = &h8_sci_device::set_tx_cb(*device, DEVCB_##_devcb); + devcb = &downcast<h8_sci_device &>(*device).set_tx_cb(DEVCB_##_devcb); #define MCFG_H8_SCI_CLK_CALLBACK(_devcb) \ - devcb = &h8_sci_device::set_clk_cb(*device, DEVCB_##_devcb); + devcb = &downcast<h8_sci_device &>(*device).set_clk_cb(DEVCB_##_devcb); class h8_sci_device : public device_t { public: @@ -54,8 +54,8 @@ public: DECLARE_WRITE_LINE_MEMBER(rx_w); DECLARE_WRITE_LINE_MEMBER(clk_w); - template <class Object> static devcb_base &set_tx_cb(device_t &device, Object &&cb) { return downcast<h8_sci_device &>(device).tx_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_clk_cb(device_t &device, Object &&cb) { return downcast<h8_sci_device &>(device).clk_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tx_cb(Object &&cb) { return tx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_clk_cb(Object &&cb) { return clk_cb.set_callback(std::forward<Object>(cb)); } uint64_t internal_update(uint64_t current_time); diff --git a/src/devices/cpu/hcd62121/hcd62121.h b/src/devices/cpu/hcd62121/hcd62121.h index 1b7fb74feba..def79f44681 100644 --- a/src/devices/cpu/hcd62121/hcd62121.h +++ b/src/devices/cpu/hcd62121/hcd62121.h @@ -6,12 +6,12 @@ #pragma once -#define MCFG_HCD62121_KOL_CB(_devcb) devcb = &hcd62121_cpu_device::set_kol_callback(*device, DEVCB_##_devcb); -#define MCFG_HCD62121_KOH_CB(_devcb) devcb = &hcd62121_cpu_device::set_koh_callback(*device, DEVCB_##_devcb); -#define MCFG_HCD62121_PORT_CB(_devcb) devcb = &hcd62121_cpu_device::set_port_callback(*device, DEVCB_##_devcb); -#define MCFG_HCD62121_OPT_CB(_devcb) devcb = &hcd62121_cpu_device::set_opt_callback(*device, DEVCB_##_devcb); -#define MCFG_HCD62121_KI_CB(_devcb) devcb = &hcd62121_cpu_device::set_ki_callback(*device, DEVCB_##_devcb); -#define MCFG_HCD62121_IN0_CB(_devcb) devcb = &hcd62121_cpu_device::set_in0_callback(*device, DEVCB_##_devcb); +#define MCFG_HCD62121_KOL_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_kol_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_KOH_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_koh_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_PORT_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_port_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_OPT_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_opt_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_KI_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_ki_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_IN0_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_in0_callback(DEVCB_##_devcb); class hcd62121_cpu_device : public cpu_device @@ -20,12 +20,12 @@ public: // construction/destruction hcd62121_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_kol_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_kol_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_koh_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_koh_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_port_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_opt_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_opt_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ki_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_ki_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in0_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_in0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_kol_callback(Object &&cb) { return m_kol_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_koh_callback(Object &&cb) { return m_koh_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port_callback(Object &&cb) { return m_port_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_opt_callback(Object &&cb) { return m_opt_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ki_callback(Object &&cb) { return m_ki_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in0_callback(Object &&cb) { return m_in0_cb.set_callback(std::forward<Object>(cb)); } protected: enum diff --git a/src/devices/cpu/hd61700/hd61700.h b/src/devices/cpu/hd61700/hd61700.h index 12da10dece3..971de2fb179 100644 --- a/src/devices/cpu/hd61700/hd61700.h +++ b/src/devices/cpu/hd61700/hd61700.h @@ -16,25 +16,25 @@ //************************************************************************** #define MCFG_HD61700_LCD_CTRL_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_lcd_ctrl_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_lcd_ctrl_callback(DEVCB_##_devcb); #define MCFG_HD61700_LCD_WRITE_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_lcd_write_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_lcd_write_callback(DEVCB_##_devcb); #define MCFG_HD61700_LCD_READ_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_lcd_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_lcd_read_callback(DEVCB_##_devcb); #define MCFG_HD61700_KB_WRITE_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_kb_write_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_kb_write_callback(DEVCB_##_devcb); #define MCFG_HD61700_KB_READ_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_kb_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_kb_read_callback(DEVCB_##_devcb); #define MCFG_HD61700_PORT_WRITE_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_port_write_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_port_write_callback(DEVCB_##_devcb); #define MCFG_HD61700_PORT_READ_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_port_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_port_read_callback(DEVCB_##_devcb); //************************************************************************** @@ -61,13 +61,13 @@ public: // construction/destruction hd61700_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - template<class _Object> static devcb_base &set_lcd_ctrl_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_lcd_ctrl_cb.set_callback(object); } - template<class _Object> static devcb_base &set_lcd_write_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_lcd_write_cb.set_callback(object); } - template<class _Object> static devcb_base &set_lcd_read_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_lcd_read_cb.set_callback(object); } - template<class _Object> static devcb_base &set_kb_write_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_kb_write_cb.set_callback(object); } - template<class _Object> static devcb_base &set_kb_read_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_kb_read_cb.set_callback(object); } - template<class _Object> static devcb_base &set_port_write_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_port_write_cb.set_callback(object); } - template<class _Object> static devcb_base &set_port_read_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_port_read_cb.set_callback(object); } + template<class Object> devcb_base &set_lcd_ctrl_callback(Object &&cb) { return m_lcd_ctrl_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_lcd_write_callback(Object &&cb) { return m_lcd_write_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_lcd_read_callback(Object &&cb) { return m_lcd_read_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_kb_write_callback(Object &&cb) { return m_kb_write_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_kb_read_callback(Object &&cb) { return m_kb_read_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_port_write_callback(Object &&cb) { return m_port_write_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_port_read_callback(Object &&cb) { return m_port_read_cb.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/hmcs40/hmcs40.h b/src/devices/cpu/hmcs40/hmcs40.h index c91b2a99102..4ea6b8f5eeb 100644 --- a/src/devices/cpu/hmcs40/hmcs40.h +++ b/src/devices/cpu/hmcs40/hmcs40.h @@ -16,15 +16,15 @@ // max 8 4-bit R ports #define MCFG_HMCS40_READ_R_CB(R, _devcb) \ - devcb = &hmcs40_cpu_device::set_read_r##R##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hmcs40_cpu_device &>(*device).set_read_r##R##_callback(DEVCB_##_devcb); #define MCFG_HMCS40_WRITE_R_CB(R, _devcb) \ - devcb = &hmcs40_cpu_device::set_write_r##R##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hmcs40_cpu_device &>(*device).set_write_r##R##_callback(DEVCB_##_devcb); // 16-bit discrete #define MCFG_HMCS40_READ_D_CB(_devcb) \ - devcb = &hmcs40_cpu_device::set_read_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hmcs40_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_HMCS40_WRITE_D_CB(_devcb) \ - devcb = &hmcs40_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hmcs40_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb); enum { @@ -105,27 +105,27 @@ public: PORT_R7X }; - // static configuration helpers - template <class Object> static devcb_base &set_read_r0_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r1_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r2_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r3_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r4_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r4.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r5_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r5.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r6_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r6.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r7_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r7.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_write_r0_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r1_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r2_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r3_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r4_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r4.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r5_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r5.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r6_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r6.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r7_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r7.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_r0_callback(Object &&cb) { return m_read_r0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r1_callback(Object &&cb) { return m_read_r1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r2_callback(Object &&cb) { return m_read_r2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r3_callback(Object &&cb) { return m_read_r3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r4_callback(Object &&cb) { return m_read_r4.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r5_callback(Object &&cb) { return m_read_r5.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r6_callback(Object &&cb) { return m_read_r6.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r7_callback(Object &&cb) { return m_read_r7.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_write_r0_callback(Object &&cb) { return m_write_r0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r1_callback(Object &&cb) { return m_write_r1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r2_callback(Object &&cb) { return m_write_r2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r3_callback(Object &&cb) { return m_write_r3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r4_callback(Object &&cb) { return m_write_r4.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r5_callback(Object &&cb) { return m_write_r5.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r6_callback(Object &&cb) { return m_write_r6.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r7_callback(Object &&cb) { return m_write_r7.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_read_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); } protected: enum diff --git a/src/devices/cpu/hphybrid/hphybrid.h b/src/devices/cpu/hphybrid/hphybrid.h index bd362d710ee..63360d0bfdd 100644 --- a/src/devices/cpu/hphybrid/hphybrid.h +++ b/src/devices/cpu/hphybrid/hphybrid.h @@ -41,11 +41,11 @@ // Set boot mode of 5061-3001: either normal (false) or as in HP9845 system (true) #define MCFG_HPHYBRID_SET_9845_BOOT(_mode) \ - hp_5061_3001_cpu_device::set_boot_mode_static(*device, _mode); + downcast<hp_5061_3001_cpu_device &>(*device).set_boot_mode(_mode); // PA changed callback #define MCFG_HPHYBRID_PA_CHANGED(_devcb) \ - devcb = &hp_hybrid_cpu_device::set_pa_changed_func(*device , DEVCB_##_devcb); + devcb = &downcast<hp_hybrid_cpu_device &>(*device).set_pa_changed_func(DEVCB_##_devcb); class hp_hybrid_cpu_device : public cpu_device { @@ -57,7 +57,7 @@ public: uint8_t pa_r() const; - template <class Object> static devcb_base &set_pa_changed_func(device_t &device, Object &&cb) { return downcast<hp_hybrid_cpu_device &>(device).m_pa_changed_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_changed_func(Object &&cb) { return m_pa_changed_func.set_callback(std::forward<Object>(cb)); } protected: hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t addrwidth); @@ -161,7 +161,7 @@ class hp_5061_3001_cpu_device : public hp_hybrid_cpu_device public: hp_5061_3001_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_boot_mode_static(device_t &device, bool mode) { downcast<hp_5061_3001_cpu_device &>(device).m_boot_mode = mode; } + void set_boot_mode(bool mode) { m_boot_mode = mode; } protected: virtual void device_start() override; diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h index 5c56d292280..b0f0ba0fa5b 100644 --- a/src/devices/cpu/i386/i386.h +++ b/src/devices/cpu/i386/i386.h @@ -26,10 +26,10 @@ #define MCFG_I386_SMIACT(_devcb) \ - devcb = &i386_device::set_smiact(*device, DEVCB_##_devcb); + devcb = &downcast<i386_device &>(*device).set_smiact(DEVCB_##_devcb); #define MCFG_I486_FERR_HANDLER(_devcb) \ - devcb = &i386_device::set_ferr(*device, DEVCB_##_devcb); + devcb = &downcast<i386_device &>(*device).set_ferr(DEVCB_##_devcb); #define X86_NUM_CPUS 4 @@ -39,9 +39,9 @@ public: // construction/destruction i386_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_smiact(device_t &device, Object &&cb) { return downcast<i386_device &>(device).m_smiact.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ferr(device_t &device, Object &&cb) { return downcast<i386_device &>(device).m_ferr_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_smiact(Object &&cb) { return m_smiact.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ferr(Object &&cb) { return m_ferr_handler.set_callback(std::forward<Object>(cb)); } uint64_t debug_segbase(symbol_table &table, int params, const uint64_t *param); uint64_t debug_seglimit(symbol_table &table, int params, const uint64_t *param); diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h index b4ab5901c1f..2da4c89acd1 100644 --- a/src/devices/cpu/i8085/i8085.h +++ b/src/devices/cpu/i8085/i8085.h @@ -18,25 +18,25 @@ // STATUS changed callback #define MCFG_I8085A_STATUS(_devcb) \ - devcb = &i8085a_cpu_device::set_out_status_func(*device, DEVCB_##_devcb); + devcb = &downcast<i8085a_cpu_device &>(*device).set_out_status_func(DEVCB_##_devcb); // INTE changed callback #define MCFG_I8085A_INTE(_devcb) \ - devcb = &i8085a_cpu_device::set_out_inte_func(*device, DEVCB_##_devcb); + devcb = &downcast<i8085a_cpu_device &>(*device).set_out_inte_func(DEVCB_##_devcb); // SID changed callback (8085A only) #define MCFG_I8085A_SID(_devcb) \ - devcb = &i8085a_cpu_device::set_in_sid_func(*device, DEVCB_##_devcb); + devcb = &downcast<i8085a_cpu_device &>(*device).set_in_sid_func(DEVCB_##_devcb); // SOD changed callback (8085A only) #define MCFG_I8085A_SOD(_devcb) \ - devcb = &i8085a_cpu_device::set_out_sod_func(*device, DEVCB_##_devcb); + devcb = &downcast<i8085a_cpu_device &>(*device).set_out_sod_func(DEVCB_##_devcb); // CLK rate callback (8085A only) #define MCFG_I8085A_CLK_OUT_DEVICE(_tag) \ - i8085a_cpu_device::static_set_clk_out(*device, clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr)); + downcast<i8085a_cpu_device &>(*device).set_clk_out(clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr)); #define MCFG_I8085A_CLK_OUT_CUSTOM(_class, _func) \ - i8085a_cpu_device::static_set_clk_out(*device, clock_update_delegate(&_class::_func, #_class "::" _func, owner)); + downcast<i8085a_cpu_device &>(*device).set_clk_out(clock_update_delegate(&_class::_func, #_class "::" _func, owner)); class i8085a_cpu_device : public cpu_device @@ -65,12 +65,12 @@ public: // construction/destruction i8085a_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <class Object> static devcb_base &set_out_status_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_status_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_inte_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_inte_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_sid_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_in_sid_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_sod_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_sod_func.set_callback(std::forward<Object>(cb)); } - static void static_set_clk_out(device_t &device, clock_update_delegate &&clk_out) { downcast<i8085a_cpu_device &>(device).m_clk_out_func = std::move(clk_out); } + // configuration helpers + template <class Object> devcb_base &set_out_status_func(Object &&cb) { return m_out_status_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_inte_func(Object &&cb) { return m_out_inte_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_sid_func(Object &&cb) { return m_in_sid_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_sod_func(Object &&cb) { return m_out_sod_func.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_clk_out(Object &&cb) { m_clk_out_func = std::forward<Object>(cb); } protected: i8085a_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int cputype); diff --git a/src/devices/cpu/i8089/i8089.h b/src/devices/cpu/i8089/i8089.h index 1659afd54d9..df72f847b85 100644 --- a/src/devices/cpu/i8089/i8089.h +++ b/src/devices/cpu/i8089/i8089.h @@ -23,7 +23,7 @@ //************************************************************************** #define MCFG_I8089_DATA_WIDTH(_data_width) \ - i8089_device::set_data_width(*device, _data_width); + downcast<i8089_device &>(*device).set_data_width(_data_width); #define MCFG_I8089_SINTR1(_sintr1) \ devcb = &downcast<i8089_device *>(device)->set_sintr1_callback(DEVCB_##_sintr1); @@ -53,8 +53,8 @@ public: template <class Object> devcb_base &set_sintr1_callback(Object &&sintr1) { return m_write_sintr1.set_callback(std::forward<Object>(sintr1)); } template <class Object> devcb_base &set_sintr2_callback(Object &&sintr2) { return m_write_sintr2.set_callback(std::forward<Object>(sintr2)); } - // static configuration helpers - static void set_data_width(device_t &device, uint8_t data_width) { downcast<i8089_device &>(device).m_data_width = data_width; } + // configuration helpers + void set_data_width(uint8_t data_width) { m_data_width = data_width; } // input lines DECLARE_WRITE_LINE_MEMBER( ca_w ); diff --git a/src/devices/cpu/i86/i186.cpp b/src/devices/cpu/i86/i186.cpp index 6bb679a3300..558a36cb912 100644 --- a/src/devices/cpu/i86/i186.cpp +++ b/src/devices/cpu/i86/i186.cpp @@ -126,7 +126,7 @@ i80188_cpu_device::i80188_cpu_device(const machine_config &mconfig, const char * { memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing)); m_fetch_xor = 0; - static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this)); + set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this)); } i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) @@ -134,7 +134,7 @@ i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, const char * { memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing)); m_fetch_xor = BYTE_XOR_LE(0); - static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this)); + set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this)); } i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size) diff --git a/src/devices/cpu/i86/i186.h b/src/devices/cpu/i86/i186.h index ec7acac9bea..7ebb6e1bc4b 100644 --- a/src/devices/cpu/i86/i186.h +++ b/src/devices/cpu/i86/i186.h @@ -16,10 +16,10 @@ public: // construction/destruction i80186_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &static_set_read_slave_ack_callback(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_read_slave_ack_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_chip_select_callback(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_chip_select_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_tmrout0_handler(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_tmrout0_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_tmrout1_handler(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_tmrout1_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_slave_ack_callback(Object &&cb) { return m_read_slave_ack_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_chip_select_callback(Object &&cb) { return m_out_chip_select_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tmrout0_handler(Object &&cb) { return m_out_tmrout0_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tmrout1_handler(Object &&cb) { return m_out_tmrout1_func.set_callback(std::forward<Object>(cb)); } IRQ_CALLBACK_MEMBER(int_callback); DECLARE_WRITE_LINE_MEMBER(drq0_w) { if(state) drq_callback(0); m_dma[0].drq_state = state; } @@ -153,15 +153,15 @@ public: }; #define MCFG_80186_IRQ_SLAVE_ACK(_devcb) \ - devcb = &i80186_cpu_device::static_set_read_slave_ack_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i80186_cpu_device &>(*device).set_read_slave_ack_callback(DEVCB_##_devcb); #define MCFG_80186_CHIP_SELECT_CB(_devcb) \ - devcb = &i80186_cpu_device::static_set_chip_select_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i80186_cpu_device &>(*device).set_chip_select_callback(DEVCB_##_devcb); #define MCFG_80186_TMROUT0_HANDLER(_devcb) \ - devcb = &i80186_cpu_device::static_set_tmrout0_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i80186_cpu_device &>(*device).set_tmrout0_handler(DEVCB_##_devcb); #define MCFG_80186_TMROUT1_HANDLER(_devcb) \ - devcb = &i80186_cpu_device::static_set_tmrout1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i80186_cpu_device &>(*device).set_tmrout1_handler(DEVCB_##_devcb); #endif // MAME_CPU_I86_I186_H diff --git a/src/devices/cpu/i86/i286.h b/src/devices/cpu/i86/i286.h index 8136b0128ce..dbf5e245673 100644 --- a/src/devices/cpu/i86/i286.h +++ b/src/devices/cpu/i86/i286.h @@ -72,8 +72,8 @@ public: virtual space_config_vector memory_space_config() const override; typedef delegate<uint32_t (bool)> a20_cb; - static void static_set_a20_callback(device_t &device, a20_cb object) { downcast<i80286_cpu_device &>(device).m_a20_callback = object; } - template <class Object> static devcb_base &static_set_shutdown_callback(device_t &device, Object &&cb) { return downcast<i80286_cpu_device &>(device).m_out_shutdown_func.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_a20_callback(Object &&cb) { m_a20_callback = std::forward<Object>(cb); } + template <class Object> devcb_base &set_shutdown_callback(Object &&cb) { return m_out_shutdown_func.set_callback(std::forward<Object>(cb)); } protected: virtual void execute_run() override; @@ -162,9 +162,9 @@ private: }; #define MCFG_80286_A20(_class, _a20_cb) \ - i80286_cpu_device::static_set_a20_callback(*device, i80286_cpu_device::a20_cb(&_class::_a20_cb, this)); + downcast<i80286_cpu_device &>(*device).set_a20_callback(i80286_cpu_device::a20_cb(&_class::_a20_cb, this)); #define MCFG_80286_SHUTDOWN(_devcb) \ - devcb = &i80286_cpu_device::static_set_shutdown_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i80286_cpu_device &>(*device).set_shutdown_callback(DEVCB_##_devcb); #endif // MAME_CPU_I86_I286_H diff --git a/src/devices/cpu/i86/i86.h b/src/devices/cpu/i86/i86.h index d0bfd9b8782..3376a37f3b8 100644 --- a/src/devices/cpu/i86/i86.h +++ b/src/devices/cpu/i86/i86.h @@ -17,10 +17,10 @@ DECLARE_DEVICE_TYPE(I8088, i8088_cpu_device) #define MCFG_I8086_LOCK_HANDLER(_write) \ - devcb = &i8086_common_cpu_device::set_lock_handler(*device, DEVCB_##_write); + devcb = &downcast<i8086_common_cpu_device &>(*device).set_lock_handler(DEVCB_##_write); #define MCFG_I8086_IF_HANDLER(_write) \ - devcb = &i8086_cpu_device::set_if_handler(*device, DEVCB_##_write); + devcb = &downcast<i8086_cpu_device &>(*device).set_if_handler(DEVCB_##_write); #define MCFG_I8086_STACK_MAP(map) \ MCFG_DEVICE_ADDRESS_MAP(i8086_cpu_device::AS_STACK, map) @@ -32,10 +32,10 @@ DECLARE_DEVICE_TYPE(I8088, i8088_cpu_device) MCFG_DEVICE_ADDRESS_MAP(i8086_cpu_device::AS_EXTRA, map) #define MCFG_I8086_ESC_OPCODE_HANDLER(_write) \ - devcb = &i8086_cpu_device::set_esc_opcode_handler(*device, DEVCB_##_write); + devcb = &downcast<i8086_cpu_device &>(*device).set_esc_opcode_handler(DEVCB_##_write); #define MCFG_I8086_ESC_DATA_HANDLER(_write) \ - devcb = &i8086_cpu_device::set_esc_data_handler(*device, DEVCB_##_write); + devcb = &downcast<i8086_cpu_device &>(*device).set_esc_data_handler(DEVCB_##_write); enum { @@ -49,8 +49,7 @@ enum class i8086_common_cpu_device : public cpu_device, public i386_disassembler::config { public: - template <class Object> static devcb_base &set_lock_handler(device_t &device, Object &&cb) - { return downcast<i8086_common_cpu_device &>(device).m_lock_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_lock_handler(Object &&cb) { return m_lock_handler.set_callback(std::forward<Object>(cb)); } protected: enum @@ -367,14 +366,9 @@ public: // device_memory_interface overrides virtual space_config_vector memory_space_config() const override; - template <class Object> static devcb_base &set_if_handler(device_t &device, Object &&cb) - { return downcast<i8086_cpu_device &>(device).m_out_if_func.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_esc_opcode_handler(device_t &device, Object &&cb) - { return downcast<i8086_cpu_device &>(device).m_esc_opcode_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_esc_data_handler(device_t &device, Object &&cb) - { return downcast<i8086_cpu_device &>(device).m_esc_data_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_if_handler(Object &&cb) { return m_out_if_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_esc_opcode_handler(Object &&cb) { return m_esc_opcode_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_esc_data_handler(Object &&cb) { return m_esc_data_handler.set_callback(std::forward<Object>(cb)); } protected: i8086_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size); diff --git a/src/devices/cpu/jaguar/jaguar.h b/src/devices/cpu/jaguar/jaguar.h index ac7f406621d..cb88c8a5d41 100644 --- a/src/devices/cpu/jaguar/jaguar.h +++ b/src/devices/cpu/jaguar/jaguar.h @@ -65,7 +65,7 @@ enum ***************************************************************************/ #define MCFG_JAGUAR_IRQ_HANDLER(_devcb) \ - devcb = &jaguar_cpu_device::set_int_func(*device, DEVCB_##_devcb); + devcb = &downcast<jaguar_cpu_device &>(*device).set_int_func(DEVCB_##_devcb); /*************************************************************************** @@ -95,8 +95,8 @@ public: // construction/destruction ~jaguar_cpu_device(); - // static configuration helpers - template <class Object> static devcb_base &set_int_func(device_t &device, Object &&cb) { return downcast<jaguar_cpu_device &>(device).m_cpu_interrupt.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_int_func(Object &&cb) { return m_cpu_interrupt.set_callback(std::forward<Object>(cb)); } virtual DECLARE_WRITE32_MEMBER(ctrl_w) = 0; virtual DECLARE_READ32_MEMBER(ctrl_r) = 0; diff --git a/src/devices/cpu/lc8670/lc8670.h b/src/devices/cpu/lc8670/lc8670.h index 3286c3b1504..3944c864a4a 100644 --- a/src/devices/cpu/lc8670/lc8670.h +++ b/src/devices/cpu/lc8670/lc8670.h @@ -45,14 +45,14 @@ enum //************************************************************************** #define MCFG_LC8670_SET_CLOCK_SOURCES(_sub_clock, _rc_clock, _cf_clock) \ - lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::SUB, _sub_clock); \ - lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::RC, _rc_clock); \ - lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::CF, _cf_clock); + downcast<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::SUB, _sub_clock); \ + downcast<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::RC, _rc_clock); \ + downcast<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::CF, _cf_clock); #define MCFG_LC8670_BANKSWITCH_CB(_devcb) \ - devcb = &lc8670_cpu_device::static_set_bankswitch_cb(*device, DEVCB_##_devcb); + devcb = &downcast<lc8670_cpu_device &>(*device).set_bankswitch_cb(DEVCB_##_devcb); #define MCFG_LC8670_LCD_UPDATE_CB(_cb) \ - lc8670_cpu_device::static_set_lcd_update_cb(*device, _cb); + downcast<lc8670_cpu_device &>(*device).set_lcd_update_cb(_cb); // ======================> lc8670_cpu_device @@ -83,11 +83,11 @@ public: DECLARE_READ8_MEMBER(xram_r); DECLARE_WRITE8_MEMBER(xram_w); - // static configuration helpers - static void static_set_cpu_clock(device_t &device, clock_source source, uint32_t clock) { downcast<lc8670_cpu_device &>(device).m_clocks[unsigned(source)] = clock; } - static void static_set_cpu_clock(device_t &device, clock_source source, const XTAL &clock) { static_set_cpu_clock(device, source, clock.value()); } - static void static_set_lcd_update_cb(device_t &device, lcd_update cb) { downcast<lc8670_cpu_device &>(device).m_lcd_update_func = cb; } - template <class Object> static devcb_base & static_set_bankswitch_cb(device_t &device, Object &&cb) { return downcast<lc8670_cpu_device &>(device).m_bankswitch_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + void set_cpu_clock(clock_source source, uint32_t clock) { m_clocks[unsigned(source)] = clock; } + void set_cpu_clock(clock_source source, const XTAL &clock) { set_cpu_clock(source, clock.value()); } + template <typename Object> void set_lcd_update_cb(Object &&cb) { m_lcd_update_func = std::forward<Object>(cb); } + template <class Object> devcb_base &set_bankswitch_cb(Object &&cb) { return m_bankswitch_func.set_callback(std::forward<Object>(cb)); } void lc8670_internal_map(address_map &map); protected: diff --git a/src/devices/cpu/lh5801/lh5801.h b/src/devices/cpu/lh5801/lh5801.h index 2981bda7d0f..679e2e90fa4 100644 --- a/src/devices/cpu/lh5801/lh5801.h +++ b/src/devices/cpu/lh5801/lh5801.h @@ -61,7 +61,7 @@ enum #define MCFG_LH5801_IN(_devcb) \ - devcb = &lh5801_cpu_device::set_in_func(*device, DEVCB_##_devcb); + devcb = &downcast<lh5801_cpu_device &>(*device).set_in_func(DEVCB_##_devcb); class lh5801_cpu_device : public cpu_device @@ -70,8 +70,8 @@ public: // construction/destruction lh5801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_in_func(device_t &device, Object &&cb) { return downcast<lh5801_cpu_device &>(device).m_in_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_in_func(Object &&cb) { return m_in_func.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/lr35902/lr35902.h b/src/devices/cpu/lr35902/lr35902.h index 0d33bbbe548..d3743209e76 100644 --- a/src/devices/cpu/lr35902/lr35902.h +++ b/src/devices/cpu/lr35902/lr35902.h @@ -7,19 +7,19 @@ #define MCFG_LR35902_TIMER_CB(_devcb) \ - devcb = &lr35902_cpu_device::set_timer_cb(*device, DEVCB_##_devcb); + devcb = &downcast<lr35902_cpu_device &>(*device).set_timer_cb(DEVCB_##_devcb); // The first release of this CPU has a bug where the programcounter // is not incremented properly after an interrupt after the halt opcode. // This was fixed in a newer revision. #define MCFG_LR35902_HALT_BUG \ - lr35902_cpu_device::set_halt_bug(*device); + downcast<lr35902_cpu_device &>(*device).set_halt_bug(true); // The GameBoy has a bug where OAM data gets corrupted if you inc/dec // a 16-bit register in the $fe** region. // note: oldval is in hiword, newval is in loword #define MCFG_LR35902_INCDEC16_CB(_devcb) \ - devcb = &lr35902_cpu_device::set_incdec16_cb(*device, DEVCB_##_devcb); + devcb = &downcast<lr35902_cpu_device &>(*device).set_incdec16_cb(DEVCB_##_devcb); enum @@ -39,10 +39,10 @@ public: // construction/destruction lr35902_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - // static configuration helpers - template<class _Object> static devcb_base &set_timer_cb(device_t &device, _Object object) { return downcast<lr35902_cpu_device &>(device).m_timer_func.set_callback(object); } - template<class _Object> static devcb_base &set_incdec16_cb(device_t &device, _Object object) { return downcast<lr35902_cpu_device &>(device).m_incdec16_func.set_callback(object); } - static void set_halt_bug(device_t &device) { downcast<lr35902_cpu_device &>(device).m_has_halt_bug = true; } + // configuration helpers + template<class Object> devcb_base &set_timer_cb(Object &&cb) { return m_timer_func.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_incdec16_cb(Object &&cb) { return m_incdec16_func.set_callback(std::forward<Object>(cb)); } + void set_halt_bug(bool has_halt_bug) { m_has_halt_bug = has_halt_bug; } uint8_t get_speed(); void set_speed(uint8_t speed_request); diff --git a/src/devices/cpu/m6502/m5074x.h b/src/devices/cpu/m6502/m5074x.h index c9f7ddb4ba6..2782d09f2d7 100644 --- a/src/devices/cpu/m6502/m5074x.h +++ b/src/devices/cpu/m6502/m5074x.h @@ -20,28 +20,28 @@ //************************************************************************** #define MCFG_M5074X_PORT0_READ_CALLBACK(_read) \ - devcb = &m5074x_device::set_p0_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<m5074x_device &>(*device).set_p0_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT1_READ_CALLBACK(_read) \ - devcb = &m5074x_device::set_p1_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<m5074x_device &>(*device).set_p1_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT2_READ_CALLBACK(_read) \ - devcb = &m5074x_device::set_p2_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<m5074x_device &>(*device).set_p2_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT3_READ_CALLBACK(_read) \ - devcb = &m5074x_device::set_p3_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<m5074x_device &>(*device).set_p3_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT0_WRITE_CALLBACK(_write) \ - devcb = &m5074x_device::set_p0_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<m5074x_device &>(*device).set_p0_wr_callback(DEVCB_##_write); #define MCFG_M5074X_PORT1_WRITE_CALLBACK(_write) \ - devcb = &m5074x_device::set_p1_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<m5074x_device &>(*device).set_p1_wr_callback(DEVCB_##_write); #define MCFG_M5074X_PORT2_WRITE_CALLBACK(_write) \ - devcb = &m5074x_device::set_p2_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<m5074x_device &>(*device).set_p2_wr_callback(DEVCB_##_write); #define MCFG_M5074X_PORT3_WRITE_CALLBACK(_write) \ - devcb = &m5074x_device::set_p3_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<m5074x_device &>(*device).set_p3_wr_callback(DEVCB_##_write); //************************************************************************** // TYPE DEFINITIONS @@ -73,14 +73,14 @@ class m5074x_device : public m740_device public: const address_space_config m_program_config; - template<class _Object> static devcb_base &set_p0_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p0.set_callback(object); } - template<class _Object> static devcb_base &set_p1_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p1.set_callback(object); } - template<class _Object> static devcb_base &set_p2_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p2.set_callback(object); } - template<class _Object> static devcb_base &set_p3_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p3.set_callback(object); } - template<class _Object> static devcb_base &set_p0_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p0.set_callback(object); } - template<class _Object> static devcb_base &set_p1_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p1.set_callback(object); } - template<class _Object> static devcb_base &set_p2_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p2.set_callback(object); } - template<class _Object> static devcb_base &set_p3_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p3.set_callback(object); } + template<class Object> devcb_base &set_p0_rd_callback(Object &&cb) { return read_p0.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p1_rd_callback(Object &&cb) { return read_p1.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p2_rd_callback(Object &&cb) { return read_p2.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p3_rd_callback(Object &&cb) { return read_p3.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p0_wr_callback(Object &&cb) { return write_p0.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p1_wr_callback(Object &&cb) { return write_p1.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p2_wr_callback(Object &&cb) { return write_p2.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p3_wr_callback(Object &&cb) { return write_p3.set_callback(std::forward<Object>(cb)); } devcb_read8 read_p0, read_p1, read_p2, read_p3; devcb_write8 write_p0, write_p1, write_p2, write_p3; diff --git a/src/devices/cpu/m6502/m6502.h b/src/devices/cpu/m6502/m6502.h index ab44415ca5a..18c0bdb5c3b 100644 --- a/src/devices/cpu/m6502/m6502.h +++ b/src/devices/cpu/m6502/m6502.h @@ -15,7 +15,7 @@ downcast<m6502_device *>(device)->disable_direct(); #define MCFG_M6502_SYNC_CALLBACK(_cb) \ - devcb = &m6502_device::set_sync_callback(*device, DEVCB_##_cb); + devcb = &downcast<m6502_device &>(*device).set_sync_callback(DEVCB_##_cb); class m6502_device : public cpu_device { public: @@ -31,7 +31,7 @@ public: bool get_sync() const { return sync; } void disable_direct() { direct_disabled = true; } - template<class _Object> static devcb_base &set_sync_callback(device_t &device, _Object object) { return downcast<m6502_device &>(device).sync_w.set_callback(object); } + template<class Object> devcb_base &set_sync_callback(Object &&cb) { return sync_w.set_callback(std::forward<Object>(cb)); } devcb_write_line sync_w; diff --git a/src/devices/cpu/m6502/xavix.h b/src/devices/cpu/m6502/xavix.h index e58a355b35d..67014209aa0 100644 --- a/src/devices/cpu/m6502/xavix.h +++ b/src/devices/cpu/m6502/xavix.h @@ -13,7 +13,7 @@ #include "m6502.h" #define MCFG_XAVIX_VECTOR_CALLBACK(_class, _method) \ - xavix_device::set_vector_callback(*device, xavix_device::xavix_interrupt_vector_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<xavix_device &>(*device).set_vector_callback(xavix_device::xavix_interrupt_vector_delegate(&_class::_method, #_class "::" #_method, this)); class xavix_device : public m6502_device { public: @@ -33,7 +33,7 @@ public: typedef device_delegate<uint8_t (int which, int half)> xavix_interrupt_vector_delegate; - static void set_vector_callback(device_t &device, xavix_interrupt_vector_delegate &&cb) { downcast<xavix_device &>(device).m_vector_callback = std::move(cb); } + template <typename Object> void set_vector_callback(Object &&cb) { m_vector_callback = std::forward<Object>(cb); } #undef O diff --git a/src/devices/cpu/m6800/m6801.h b/src/devices/cpu/m6800/m6801.h index 08a75439827..154c6220ce1 100644 --- a/src/devices/cpu/m6800/m6801.h +++ b/src/devices/cpu/m6800/m6801.h @@ -52,9 +52,9 @@ enum #define MCFG_M6801_SC2(_devcb) \ - devcb = &m6801_cpu_device::set_out_sc2_func(*device, DEVCB_##_devcb); + devcb = &downcast<m6801_cpu_device &>(*device).set_out_sc2_func(DEVCB_##_devcb); #define MCFG_M6801_SER_TX(_devcb) \ - devcb = &m6801_cpu_device::set_out_sertx_func(*device, DEVCB_##_devcb); + devcb = &downcast<m6801_cpu_device &>(*device).set_out_sertx_func(DEVCB_##_devcb); class m6801_cpu_device : public m6800_cpu_device @@ -62,9 +62,9 @@ class m6801_cpu_device : public m6800_cpu_device public: m6801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template<class _Object> static devcb_base &set_out_sc2_func(device_t &device, _Object object) { return downcast<m6801_cpu_device &>(device).m_out_sc2_func.set_callback(object); } - template<class _Object> static devcb_base &set_out_sertx_func(device_t &device, _Object object) { return downcast<m6801_cpu_device &>(device).m_out_sertx_func.set_callback(object); } + // configuration helpers + template<class Object> devcb_base &set_out_sc2_func(Object &&cb) { return m_out_sc2_func.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_sertx_func(Object &&cb) { return m_out_sertx_func.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( m6801_io_r ); DECLARE_WRITE8_MEMBER( m6801_io_w ); diff --git a/src/devices/cpu/m6805/m68705.h b/src/devices/cpu/m6805/m68705.h index a93b32902df..888dfdc23d1 100644 --- a/src/devices/cpu/m6805/m68705.h +++ b/src/devices/cpu/m6805/m68705.h @@ -25,35 +25,33 @@ DECLARE_DEVICE_TYPE(M68705U3, m68705u3_device) // ======================> m68705_device #define MCFG_M68705_PORTA_R_CB(obj) \ - devcb = &m68705_device::set_port_cb_r<0>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_r<0>(DEVCB_##obj); #define MCFG_M68705_PORTB_R_CB(obj) \ - devcb = &m68705_device::set_port_cb_r<1>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_r<1>(DEVCB_##obj); #define MCFG_M68705_PORTC_R_CB(obj) \ - devcb = &m68705_device::set_port_cb_r<2>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_r<2>(DEVCB_##obj); #define MCFG_M68705_PORTD_R_CB(obj) \ - devcb = &m68705_device::set_port_cb_r<3>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_r<3>(DEVCB_##obj); #define MCFG_M68705_PORTA_W_CB(obj) \ - devcb = &m68705_device::set_port_cb_w<0>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_w<0>(DEVCB_##obj); #define MCFG_M68705_PORTB_W_CB(obj) \ - devcb = &m68705_device::set_port_cb_w<1>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_w<1>(DEVCB_##obj); #define MCFG_M68705_PORTC_W_CB(obj) \ - devcb = &m68705_device::set_port_cb_w<2>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_w<2>(DEVCB_##obj); class m68705_device : public m6805_base_device, public device_nvram_interface { public: - // static configuration helpers - template<std::size_t N, typename Object> static devcb_base &set_port_cb_r(device_t &device, Object &&obj) - { return downcast<m68705_device &>(device).m_port_cb_r[N].set_callback(std::forward<Object>(obj)); } - template<std::size_t N, typename Object> static devcb_base &set_port_cb_w(device_t &device, Object &&obj) - { return downcast<m68705_device &>(device).m_port_cb_w[N].set_callback(std::forward<Object>(obj)); } + // configuration helpers + template<std::size_t N, typename Object> devcb_base &set_port_cb_r(Object &&obj) { return m_port_cb_r[N].set_callback(std::forward<Object>(obj)); } + template<std::size_t N, typename Object> devcb_base &set_port_cb_w(Object &&obj) { return m_port_cb_w[N].set_callback(std::forward<Object>(obj)); } protected: // state index constants diff --git a/src/devices/cpu/m6805/m68hc05.h b/src/devices/cpu/m6805/m68hc05.h index 772df2a4689..4190ad9a91c 100644 --- a/src/devices/cpu/m6805/m68hc05.h +++ b/src/devices/cpu/m6805/m68hc05.h @@ -26,43 +26,40 @@ DECLARE_DEVICE_TYPE(M68HC705C8A, m68hc705c8a_device) // ======================> m68hc05_device #define MCFG_M68HC05_PORTA_R_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_r<0>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<0>(DEVCB_##obj); #define MCFG_M68HC05_PORTB_R_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_r<1>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<1>(DEVCB_##obj); #define MCFG_M68HC05_PORTC_R_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_r<2>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<2>(DEVCB_##obj); #define MCFG_M68HC05_PORTD_R_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_r<3>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<3>(DEVCB_##obj); #define MCFG_M68HC05_PORTA_W_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_w<0>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<0>(DEVCB_##obj); #define MCFG_M68HC05_PORTB_W_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_w<1>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<1>(DEVCB_##obj); #define MCFG_M68HC05_PORTC_W_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_w<2>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<2>(DEVCB_##obj); #define MCFG_M68HC05_PORTD_W_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_w<3>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<3>(DEVCB_##obj); #define MCFG_M68HC05_TCMP_CB(obj) \ - devcb = &m68hc05_device::set_tcmp_cb(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_tcmp_cb(DEVCB_##obj); class m68hc05_device : public m6805_base_device { public: - // static configuration helpers - template<std::size_t N, typename Object> static devcb_base &set_port_cb_r(device_t &device, Object &&obj) - { return downcast<m68hc05_device &>(device).m_port_cb_r[N].set_callback(std::forward<Object>(obj)); } - template<std::size_t N, typename Object> static devcb_base &set_port_cb_w(device_t &device, Object &&obj) - { return downcast<m68hc05_device &>(device).m_port_cb_w[N].set_callback(std::forward<Object>(obj)); } - template<typename Object> static devcb_base &set_tcmp_cb(device_t &device, Object &&obj) - { return downcast<m68hc05_device &>(device).m_tcmp_cb.set_callback(std::forward<Object>(obj)); } + // configuration helpers + template<std::size_t N, typename Object> devcb_base &set_port_cb_r(Object &&obj) { return m_port_cb_r[N].set_callback(std::forward<Object>(obj)); } + template<std::size_t N, typename Object> devcb_base &set_port_cb_w(Object &&obj) { return m_port_cb_w[N].set_callback(std::forward<Object>(obj)); } + template<typename Object> devcb_base &set_tcmp_cb(Object &&obj) { return m_tcmp_cb.set_callback(std::forward<Object>(obj)); } protected: // state index constants diff --git a/src/devices/cpu/m6809/konami.h b/src/devices/cpu/m6809/konami.h index 216b007302a..e53c86e4fb2 100644 --- a/src/devices/cpu/m6809/konami.h +++ b/src/devices/cpu/m6809/konami.h @@ -21,7 +21,7 @@ //************************************************************************** #define MCFG_KONAMICPU_LINE_CB(_devcb) \ - devcb = &konami_cpu_device::set_line_callback(*device, DEVCB_##_devcb); + devcb = &downcast<konami_cpu_device &>(*device).set_line_callback(DEVCB_##_devcb); // device type definition @@ -36,7 +36,7 @@ public: konami_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - template<class _Object> static devcb_base &set_line_callback(device_t &device, _Object object) { return downcast<konami_cpu_device &>(device).m_set_lines.set_callback(object); } + template<class Object> devcb_base &set_line_callback(Object &&cb) { return m_set_lines.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/m6809/m6809.h b/src/devices/cpu/m6809/m6809.h index 675ec9e2317..bffa63f8a7c 100644 --- a/src/devices/cpu/m6809/m6809.h +++ b/src/devices/cpu/m6809/m6809.h @@ -306,7 +306,7 @@ public: // MC6809E has LIC line to indicate opcode/data fetch #define MCFG_MC6809E_LIC_CB(_devcb) \ - devcb = &mc6809e_device::set_lic_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mc6809e_device &>(*device).set_lic_cb(DEVCB_##_devcb); class mc6809e_device : public m6809_base_device @@ -315,8 +315,8 @@ public: // construction/destruction mc6809e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template<class _Object> static devcb_base &set_lic_cb(device_t &device, _Object object) { return downcast<mc6809e_device &>(device).m_lic_func.set_callback(object); } + // configuration helpers + template<class Object> devcb_base &set_lic_cb(Object &&cb) { return m_lic_func.set_callback(std::forward<Object>(cb)); } }; // ======================> m6809_device (LEGACY) diff --git a/src/devices/cpu/mb86233/mb86233.h b/src/devices/cpu/mb86233/mb86233.h index 49ba58d7ea8..70e3a66dfd5 100644 --- a/src/devices/cpu/mb86233/mb86233.h +++ b/src/devices/cpu/mb86233/mb86233.h @@ -7,13 +7,13 @@ #define MCFG_MB86233_FIFO_READ_CB(_devcb) \ - devcb = &mb86233_cpu_device::set_fifo_read_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mb86233_cpu_device &>(*device).set_fifo_read_cb(DEVCB_##_devcb); #define MCFG_MB86233_FIFO_READ_OK_CB(_devcb) \ - devcb = &mb86233_cpu_device::set_fifo_read_ok_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mb86233_cpu_device &>(*device).set_fifo_read_ok_cb(DEVCB_##_devcb); #define MCFG_MB86233_FIFO_WRITE_CB(_devcb) \ - devcb = &mb86233_cpu_device::set_fifo_write_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mb86233_cpu_device &>(*device).set_fifo_write_cb(DEVCB_##_devcb); #define MCFG_MB86233_TABLE_REGION(_region) \ - mb86233_cpu_device::set_tablergn(*device, _region); + downcast<mb86233_cpu_device &>(*device).set_tablergn(_region); class mb86233_cpu_device : public cpu_device @@ -22,11 +22,11 @@ public: // construction/destruction mb86233_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_fifo_read_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_read_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_fifo_read_ok_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_read_ok_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_fifo_write_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_write_cb.set_callback(std::forward<Object>(cb)); } - static void set_tablergn(device_t &device, const char *tablergn) { downcast<mb86233_cpu_device &>(device).m_tablergn = tablergn; } + // configuration helpers + template <class Object> devcb_base &set_fifo_read_cb(Object &&cb) { return m_fifo_read_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_fifo_read_ok_cb(Object &&cb) { return m_fifo_read_ok_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_fifo_write_cb(Object &&cb) { return m_fifo_write_cb.set_callback(std::forward<Object>(cb)); } + void set_tablergn(const char *tablergn) { m_tablergn = tablergn; } protected: // register enumeration diff --git a/src/devices/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h index e9e7c5567eb..b5dd5fe79fc 100644 --- a/src/devices/cpu/mb88xx/mb88xx.h +++ b/src/devices/cpu/mb88xx/mb88xx.h @@ -54,51 +54,51 @@ // K (K3-K0): input-only port #define MCFG_MB88XX_READ_K_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_k_callback(DEVCB_##_devcb); // O (O7-O4 = OH, O3-O0 = OL): output through PLA #define MCFG_MB88XX_WRITE_O_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_o_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_o_callback(DEVCB_##_devcb); // P (P3-P0): output-only port #define MCFG_MB88XX_WRITE_P_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_p_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_p_callback(DEVCB_##_devcb); // R0 (R3-R0): input/output port #define MCFG_MB88XX_READ_R0_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_r_callback(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(0, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R0_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_r_callback(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(0, DEVCB_##_devcb); // R1 (R7-R4): input/output port #define MCFG_MB88XX_READ_R1_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_r_callback(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(1, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R1_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_r_callback(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(1, DEVCB_##_devcb); // R2 (R11-R8): input/output port #define MCFG_MB88XX_READ_R2_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_r_callback(*device, 2, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(2, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R2_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_r_callback(*device, 2, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(2, DEVCB_##_devcb); // R3 (R15-R12): input/output port #define MCFG_MB88XX_READ_R3_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_r_callback(*device, 3, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(3, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R3_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_r_callback(*device, 3, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(3, DEVCB_##_devcb); // SI: serial input #define MCFG_MB88XX_READ_SI_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_si_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_si_callback(DEVCB_##_devcb); // SO: serial output #define MCFG_MB88XX_WRITE_SO_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_so_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_so_callback(DEVCB_##_devcb); // Configure 32 byte PLA; if nullptr (default) assume direct output #define MCFG_MB88XX_OUTPUT_PLA(_pla) \ - mb88_cpu_device::set_pla(*device, _pla); + downcast<mb88_cpu_device &>(*device).set_pla(_pla); /*************************************************************************** REGISTER ENUMERATION @@ -125,15 +125,15 @@ enum class mb88_cpu_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_o_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_write_o.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_p_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_write_p.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r_callback(device_t &device, int n, Object &&cb) { assert(n >= 0 && n < 4); return downcast<mb88_cpu_device &>(device).m_read_r[n].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r_callback(device_t &device, int n, Object &&cb) { assert(n >= 0 && n < 4); return downcast<mb88_cpu_device &>(device).m_write_r[n].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_si_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_read_si.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_so_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_write_so.set_callback(std::forward<Object>(cb)); } - static void set_pla(device_t &device, uint8_t *pla) { downcast<mb88_cpu_device &>(device).m_PLA = pla; } + // configuration helpers + template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_o_callback(Object &&cb) { return m_write_o.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_p_callback(Object &&cb) { return m_write_p.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r_callback(int n, Object &&cb) { assert(n >= 0 && n < 4); return m_read_r[n].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r_callback(int n, Object &&cb) { assert(n >= 0 && n < 4); return m_write_r[n].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_si_callback(Object &&cb) { return m_read_si.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_so_callback(Object &&cb) { return m_write_so.set_callback(std::forward<Object>(cb)); } + void set_pla(uint8_t *pla) { m_PLA = pla; } DECLARE_WRITE_LINE_MEMBER( clock_w ); diff --git a/src/devices/cpu/mc68hc11/mc68hc11.h b/src/devices/cpu/mc68hc11/mc68hc11.h index 35b0cb98170..e22c7f53197 100644 --- a/src/devices/cpu/mc68hc11/mc68hc11.h +++ b/src/devices/cpu/mc68hc11/mc68hc11.h @@ -33,9 +33,9 @@ DECLARE_DEVICE_TYPE(MC68HC11, mc68hc11_cpu_device) #define MCFG_MC68HC11_CONFIG(_has_extended_io, _internal_ram_size, _init_value) \ - mc68hc11_cpu_device::set_has_extended_io(*device, _has_extended_io); \ - mc68hc11_cpu_device::set_internal_ram_size(*device, _internal_ram_size); \ - mc68hc11_cpu_device::set_init_value(*device, _init_value); + downcast<mc68hc11_cpu_device &>(*device).set_has_extended_io(_has_extended_io); \ + downcast<mc68hc11_cpu_device &>(*device).set_internal_ram_size(_internal_ram_size); \ + downcast<mc68hc11_cpu_device &>(*device).set_init_value(_init_value); class mc68hc11_cpu_device : public cpu_device @@ -45,10 +45,10 @@ public: mc68hc11_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // I/O enable flag - static void set_has_extended_io(device_t &device, int has_extended_io) { downcast<mc68hc11_cpu_device &>(device).m_has_extended_io = has_extended_io; } - static void set_internal_ram_size(device_t &device, int internal_ram_size) { downcast<mc68hc11_cpu_device &>(device).m_internal_ram_size = internal_ram_size; } + void set_has_extended_io(int has_extended_io) { m_has_extended_io = has_extended_io; } + void set_internal_ram_size(int internal_ram_size) { m_internal_ram_size = internal_ram_size; } // default value for INIT register - static void set_init_value(device_t &device, int init_value) { downcast<mc68hc11_cpu_device &>(device).m_init_value = init_value; } + void set_init_value(int init_value) { m_init_value = init_value; } protected: // device-level overrides diff --git a/src/devices/cpu/mcs40/mcs40.h b/src/devices/cpu/mcs40/mcs40.h index 3a7605fc366..177425fff0f 100644 --- a/src/devices/cpu/mcs40/mcs40.h +++ b/src/devices/cpu/mcs40/mcs40.h @@ -48,31 +48,31 @@ enum MCFG_DEVICE_ADDRESS_MAP(i4004_cpu_device::AS_PROGRAM_MEMORY, map) #define MCFG_I4004_BUS_CYCLE_CB(obj) \ - i4004_cpu_device::set_bus_cycle_cb(*device, (MCS40CB_##obj)); + downcast<i4004_cpu_device &>(*device).set_bus_cycle_cb((MCS40CB_##obj)); #define MCFG_I4004_SYNC_CB(obj) \ - devcb = &i4004_cpu_device::set_sync_cb(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_sync_cb(DEVCB_##obj); #define MCFG_I4004_CM_ROM_CB(obj) \ - devcb = &i4004_cpu_device::set_cm_rom_cb(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_cm_rom_cb(DEVCB_##obj); #define MCFG_I4004_CM_RAM0_CB(obj) \ - devcb = &i4004_cpu_device::set_cm_ram_cb<0>(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<0>(DEVCB_##obj); #define MCFG_I4004_CM_RAM1_CB(obj) \ - devcb = &i4004_cpu_device::set_cm_ram_cb<1>(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<1>(DEVCB_##obj); #define MCFG_I4004_CM_RAM2_CB(obj) \ - devcb = &i4004_cpu_device::set_cm_ram_cb<2>(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<2>(DEVCB_##obj); #define MCFG_I4004_CM_RAM3_CB(obj) \ - devcb = &i4004_cpu_device::set_cm_ram_cb<3>(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<3>(DEVCB_##obj); #define MCFG_I4004_4289_PM_CB(obj) \ - devcb = &i4004_cpu_device::set_4289_pm_cb(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_4289_pm_cb(DEVCB_##obj); #define MCFG_I4004_4289_F_L_CB(obj) \ - devcb = &i4004_cpu_device::set_4289_f_l_cb(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_4289_f_l_cb(DEVCB_##obj); #define MCFG_I4040_ROM_MAP(map) \ @@ -94,40 +94,40 @@ enum MCFG_DEVICE_ADDRESS_MAP(i4040_cpu_device::AS_PROGRAM_MEMORY, map) #define MCFG_I4040_BUS_CYCLE_CB(obj) \ - i4040_cpu_device::set_bus_cycle_cb(*device, (MCS40CB_##obj)); + downcast<i4040_cpu_device &>(*device).set_bus_cycle_cb((MCS40CB_##obj)); #define MCFG_I4040_SYNC_CB(obj) \ - devcb = &i4040_cpu_device::set_sync_cb(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_sync_cb(DEVCB_##obj); #define MCFG_I4040_CM_ROM0_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_rom_cb<0>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_rom_cb<0>(DEVCB_##obj); #define MCFG_I4040_CM_ROM1_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_rom_cb<1>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_rom_cb<1>(DEVCB_##obj); #define MCFG_I4040_CM_RAM0_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_ram_cb<0>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<0>(DEVCB_##obj); #define MCFG_I4040_CM_RAM1_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_ram_cb<1>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<1>(DEVCB_##obj); #define MCFG_I4040_CM_RAM2_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_ram_cb<2>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<2>(DEVCB_##obj); #define MCFG_I4040_CM_RAM3_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_ram_cb<3>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<3>(DEVCB_##obj); #define MCFG_I4040_CY_CB(obj) \ - devcb = &i4040_cpu_device::set_cy_cb(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cy_cb(DEVCB_##obj); #define MCFG_I4040_STP_ACK_CB(obj) \ - devcb = &i4040_cpu_device::set_stp_ack_cb(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_stp_ack_cb(DEVCB_##obj); #define MCFG_I4040_4289_PM_CB(obj) \ - devcb = &i4040_cpu_device::set_4289_pm_cb(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_4289_pm_cb(DEVCB_##obj); #define MCFG_I4040_4289_F_L_CB(obj) \ - devcb = &i4040_cpu_device::set_4289_f_l_cb(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_4289_f_l_cb(DEVCB_##obj); @@ -152,12 +152,9 @@ public: typedef device_delegate<void (phase step, u8 sync, u8 data)> bus_cycle_delegate; // configuration helpers - template <typename Obj> static void set_bus_cycle_cb(device_t &device, Obj &&cb) - { downcast<mcs40_cpu_device_base &>(device).m_bus_cycle_cb = std::forward<Obj>(cb); } - template <typename Obj> static devcb_base &set_4289_pm_cb(device_t &device, Obj &&cb) - { return downcast<mcs40_cpu_device_base &>(device).m_4289_pm_cb.set_callback(std::forward<Obj>(cb)); } - template <typename Obj> static devcb_base &set_4289_f_l_cb(device_t &device, Obj &&cb) - { return downcast<mcs40_cpu_device_base &>(device).m_4289_f_l_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> void set_bus_cycle_cb(Obj &&cb) { m_bus_cycle_cb = std::forward<Obj>(cb); } + template <typename Obj> devcb_base &set_4289_pm_cb(Obj &&cb) { return m_4289_pm_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_4289_f_l_cb(Obj &&cb) { return m_4289_f_l_cb.set_callback(std::forward<Obj>(cb)); } // chip select outputs u8 get_cm_rom() const { return m_cm_rom; } @@ -241,16 +238,11 @@ protected: void set_stp(int state); // configuration helpers - template <typename Obj> devcb_base &set_sync_cb(Obj &&cb) - { return m_sync_cb.set_callback(std::forward<Obj>(cb)); } - template <unsigned N, typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb) - { return m_cm_rom_cb[N].set_callback(std::forward<Obj>(cb)); } - template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb) - { return m_cm_ram_cb[N].set_callback(std::forward<Obj>(cb)); } - template <typename Obj> devcb_base &set_cy_cb(Obj &&cb) - { return m_cy_cb.set_callback(std::forward<Obj>(cb)); } - template <typename Obj> devcb_base &set_stp_ack_cb(Obj &&cb) - { return m_stp_ack_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_sync_cb(Obj &&cb) { return m_sync_cb.set_callback(std::forward<Obj>(cb)); } + template <unsigned N, typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb) { return m_cm_rom_cb[N].set_callback(std::forward<Obj>(cb)); } + template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb) { return m_cm_ram_cb[N].set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_cy_cb(Obj &&cb) { return m_cy_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_stp_ack_cb(Obj &&cb) { return m_stp_ack_cb.set_callback(std::forward<Obj>(cb)); } private: enum @@ -357,12 +349,9 @@ class i4004_cpu_device : public mcs40_cpu_device_base { public: // configuration helpers - template <typename Obj> static devcb_base &set_sync_cb(device_t &device, Obj &&cb) - { return downcast<i4004_cpu_device &>(device).set_sync_cb(std::forward<Obj>(cb)); } - template <typename Obj> static devcb_base &set_cm_rom_cb(device_t &device, Obj &&cb) - { return downcast<i4004_cpu_device &>(device).set_cm_rom_cb<0>(std::forward<Obj>(cb)); } - template <unsigned N, typename Obj> static devcb_base &set_cm_ram_cb(device_t &device, Obj &&cb) - { return downcast<i4004_cpu_device &>(device).set_cm_ram_cb<N>(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_sync_cb(Obj &&cb) { return mcs40_cpu_device_base::set_sync_cb(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb) { return set_cm_rom_cb<0>(std::forward<Obj>(cb)); } + template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb) { return mcs40_cpu_device_base::set_cm_ram_cb<N>(std::forward<Obj>(cb)); } i4004_cpu_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); @@ -393,16 +382,11 @@ class i4040_cpu_device : public i4004_cpu_device { public: // configuration helpers - template <typename Obj> static devcb_base &set_sync_cb(device_t &device, Obj &&cb) - { return downcast<i4040_cpu_device &>(device).set_sync_cb(std::forward<Obj>(cb)); } - template <unsigned N, typename Obj> static devcb_base &set_cm_rom_cb(device_t &device, Obj &&cb) - { return downcast<i4040_cpu_device &>(device).set_cm_rom_cb<N>(std::forward<Obj>(cb)); } - template <unsigned N, typename Obj> static devcb_base &set_cm_ram_cb(device_t &device, Obj &&cb) - { return downcast<i4040_cpu_device &>(device).set_cm_ram_cb<N>(std::forward<Obj>(cb)); } - template <typename Obj> static devcb_base &set_cy_cb(device_t &device, Obj &&cb) - { return downcast<i4040_cpu_device &>(device).set_cy_cb(std::forward<Obj>(cb)); } - template <typename Obj> static devcb_base &set_stp_ack_cb(device_t &device, Obj &&cb) - { return downcast<i4040_cpu_device &>(device).set_stp_ack_cb(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_sync_cb(Obj &&cb) { return i4004_cpu_device::set_sync_cb(std::forward<Obj>(cb)); } + template <unsigned N, typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb) { return set_cm_rom_cb<N>(std::forward<Obj>(cb)); } + template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb) { return set_cm_ram_cb<N>(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_cy_cb(Obj &&cb) { return i4004_cpu_device::set_cy_cb(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_stp_ack_cb(Obj &&cb) { return i4004_cpu_device::set_stp_ack_cb(std::forward<Obj>(cb)); } i4040_cpu_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h index 464d3e010e1..58dc676219e 100644 --- a/src/devices/cpu/mcs48/mcs48.h +++ b/src/devices/cpu/mcs48/mcs48.h @@ -69,33 +69,33 @@ enum #define MCFG_MCS48_PORT_P1_IN_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_port_in_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_port_in_cb(0, DEVCB_##_devcb); #define MCFG_MCS48_PORT_P1_OUT_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_port_out_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_port_out_cb(0, DEVCB_##_devcb); #define MCFG_MCS48_PORT_P2_IN_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_port_in_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_port_in_cb(1, DEVCB_##_devcb); #define MCFG_MCS48_PORT_P2_OUT_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_port_out_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_port_out_cb(1, DEVCB_##_devcb); #define MCFG_MCS48_PORT_T0_IN_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_test_in_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_test_in_cb(0, DEVCB_##_devcb); #define MCFG_MCS48_PORT_T0_CLK_DEVICE(_tag) \ - mcs48_cpu_device::set_t0_clk_cb(*device, clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr)); + downcast<mcs48_cpu_device &>(*device).set_t0_clk_cb(clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr)); #define MCFG_MCS48_PORT_T0_CLK_CUSTOM(_class, _func) \ - mcs48_cpu_device::set_t0_clk_cb(*device, clock_update_delegate(&_class::_func, #_class "::" _func, owner)); + downcast<mcs48_cpu_device &>(*device).set_t0_clk_cb(clock_update_delegate(&_class::_func, #_class "::" _func, owner)); #define MCFG_MCS48_PORT_T1_IN_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_test_in_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_test_in_cb(1, DEVCB_##_devcb); #define MCFG_MCS48_PORT_BUS_IN_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_bus_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_bus_in_cb(DEVCB_##_devcb); #define MCFG_MCS48_PORT_BUS_OUT_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_bus_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_bus_out_cb(DEVCB_##_devcb); // PROG line to 8243 expander #define MCFG_MCS48_PORT_PROG_OUT_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_prog_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_prog_out_cb(DEVCB_##_devcb); /*************************************************************************** @@ -141,14 +141,14 @@ public: EXPANDER_OP_AND = 3 }; - // static configuration - template <class Object> static devcb_base &set_port_in_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_port_in_cb[n].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port_out_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_port_out_cb[n].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_bus_in_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_bus_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_bus_out_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_bus_out_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_test_in_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_test_in_cb[n].set_callback(std::forward<Object>(cb)); } - static void set_t0_clk_cb(device_t &device, clock_update_delegate &&func) { downcast<mcs48_cpu_device &>(device).m_t0_clk_func = std::move(func); } - template <class Object> static devcb_base &set_prog_out_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_prog_out_cb.set_callback(std::forward<Object>(cb)); } + // configuration + template <class Object> devcb_base &set_port_in_cb(int n, Object &&cb) { return m_port_in_cb[n].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port_out_cb(int n, Object &&cb) { return m_port_out_cb[n].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_bus_in_cb(Object &&cb) { return m_bus_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_bus_out_cb(Object &&cb) { return m_bus_out_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_test_in_cb(int n, Object &&cb) { return m_test_in_cb[n].set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_t0_clk_cb(Object &&cb) { m_t0_clk_func = std::forward<Object>(cb); } + template <class Object> devcb_base &set_prog_out_cb(Object &&cb) { return m_prog_out_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(p1_r); DECLARE_READ8_MEMBER(p2_r); diff --git a/src/devices/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h index e19c38f2a7b..2f4c096c04e 100644 --- a/src/devices/cpu/mcs51/mcs51.h +++ b/src/devices/cpu/mcs51/mcs51.h @@ -33,30 +33,30 @@ #define MCFG_MCS51_PORT_P0_IN_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_in_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(0, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P0_OUT_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_out_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(0, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P1_IN_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_in_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(1, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P1_OUT_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_out_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(1, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P2_IN_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_in_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(2, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P2_OUT_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_out_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(2, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P3_IN_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_in_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(3, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P3_OUT_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_out_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(3, DEVCB_##_devcb); #define MCFG_MCS51_SERIAL_RX_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_serial_rx_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_serial_rx_cb(DEVCB_##_devcb); #define MCFG_MCS51_SERIAL_TX_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_serial_tx_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_serial_tx_cb(DEVCB_##_devcb); enum @@ -84,21 +84,21 @@ enum */ #define MCFG_MCS51_PORT1_CONFIG(_forced_inputs) \ - mcs51_cpu_device::set_port_forced_input(*device, 1, _forced_inputs); + downcast<mcs51_cpu_device &>(*device).set_port_forced_input(1, _forced_inputs); #define MCFG_MCS51_PORT2_CONFIG(_forced_inputs) \ - mcs51_cpu_device::set_port_forced_input(*device, 2, _forced_inputs); + downcast<mcs51_cpu_device &>(*device).set_port_forced_input(2, _forced_inputs); #define MCFG_MCS51_PORT3_CONFIG(_forced_inputs) \ - mcs51_cpu_device::set_port_forced_input(*device, 3, _forced_inputs); + downcast<mcs51_cpu_device &>(*device).set_port_forced_input(3, _forced_inputs); class mcs51_cpu_device : public cpu_device { public: // configuration helpers - template<class Object> static devcb_base &set_port_in_cb(device_t &device, int n, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_port_in_cb[n].set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_port_out_cb(device_t &device, int n, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_port_out_cb[n].set_callback(std::forward<Object>(cb)); } - static void set_port_forced_input(device_t &device, uint8_t port, uint8_t forced_input) { downcast<mcs51_cpu_device &>(device).m_forced_inputs[port] = forced_input; } - template<class Object> static devcb_base &set_serial_rx_cb(device_t &device, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_serial_rx_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_serial_tx_cb(device_t &device, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_serial_tx_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_port_in_cb(int n, Object &&cb) { return m_port_in_cb[n].set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_port_out_cb(int n, Object &&cb) { return m_port_out_cb[n].set_callback(std::forward<Object>(cb)); } + void set_port_forced_input(uint8_t port, uint8_t forced_input) { m_forced_inputs[port] = forced_input; } + template<class Object> devcb_base &set_serial_rx_cb(Object &&cb) { return m_serial_rx_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_serial_tx_cb(Object &&cb) { return m_serial_tx_cb.set_callback(std::forward<Object>(cb)); } void data_7bit(address_map &map); void data_8bit(address_map &map); @@ -527,9 +527,9 @@ public: // construction/destruction ds5002fp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_mcon(device_t &device, uint8_t mcon) { downcast<ds5002fp_device &>(device).m_ds5002fp.mcon = mcon; } - static void set_rpctl(device_t &device, uint8_t rpctl) { downcast<ds5002fp_device &>(device).m_ds5002fp.rpctl = rpctl; } - static void set_crc(device_t &device, uint8_t crc) { downcast<ds5002fp_device &>(device).m_ds5002fp.crc = crc; } + void set_mcon(uint8_t mcon) { m_ds5002fp.mcon = mcon; } + void set_rpctl(uint8_t rpctl) { m_ds5002fp.rpctl = rpctl; } + void set_crc(uint8_t crc) { m_ds5002fp.crc = crc; } // device_nvram_interface overrides virtual void nvram_default() override; diff --git a/src/devices/cpu/melps4/melps4.h b/src/devices/cpu/melps4/melps4.h index c268d74e508..ae11114aecf 100644 --- a/src/devices/cpu/melps4/melps4.h +++ b/src/devices/cpu/melps4/melps4.h @@ -16,37 +16,37 @@ // K input or A/D input port, up to 16 pins #define MCFG_MELPS4_READ_K_CB(_devcb) \ - devcb = &melps4_cpu_device::set_read_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_read_k_callback(DEVCB_##_devcb); // D discrete I/O port, up to 16 pins - offset 0-15 for bit, 16 for all pins clear #define MCFG_MELPS4_READ_D_CB(_devcb) \ - devcb = &melps4_cpu_device::set_read_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_MELPS4_WRITE_D_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb); // 8-bit S generic I/O port #define MCFG_MELPS4_READ_S_CB(_devcb) \ - devcb = &melps4_cpu_device::set_read_s_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_read_s_callback(DEVCB_##_devcb); #define MCFG_MELPS4_WRITE_S_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_s_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_s_callback(DEVCB_##_devcb); // 4-bit F generic I/O port #define MCFG_MELPS4_READ_F_CB(_devcb) \ - devcb = &melps4_cpu_device::set_read_f_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_read_f_callback(DEVCB_##_devcb); #define MCFG_MELPS4_WRITE_F_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_f_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_f_callback(DEVCB_##_devcb); // 4-bit G generic output port #define MCFG_MELPS4_WRITE_G_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb); // 1-bit U generic output port #define MCFG_MELPS4_WRITE_U_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_u_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_u_callback(DEVCB_##_devcb); // T timer I/O pin (use execute_set_input for reads) #define MCFG_MELPS4_WRITE_T_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_t_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_t_callback(DEVCB_##_devcb); #define MELPS4_PORTD_CLR 16 @@ -100,18 +100,18 @@ enum class melps4_cpu_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_s_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_s.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_f_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_f.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_s_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_s.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_g_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_g.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_u_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_u.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_t_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_t.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_s_callback(Object &&cb) { return m_read_s.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_f_callback(Object &&cb) { return m_read_f.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_s_callback(Object &&cb) { return m_write_s.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_f_callback(Object &&cb) { return m_write_f.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_g_callback(Object &&cb) { return m_write_g.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_u_callback(Object &&cb) { return m_write_u.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_t_callback(Object &&cb) { return m_write_t.set_callback(std::forward<Object>(cb)); } protected: // construction/destruction diff --git a/src/devices/cpu/mips/mips3.h b/src/devices/cpu/mips/mips3.h index dd0bac966d9..e207dd23469 100644 --- a/src/devices/cpu/mips/mips3.h +++ b/src/devices/cpu/mips/mips3.h @@ -238,13 +238,13 @@ struct compiler_state #define MIPS3_MAX_TLB_ENTRIES 48 #define MCFG_MIPS3_ICACHE_SIZE(_size) \ - mips3_device::set_icache_size(*device, _size); + downcast<mips3_device &>(*device).set_icache_size(_size); #define MCFG_MIPS3_DCACHE_SIZE(_size) \ - mips3_device::set_dcache_size(*device, _size); + downcast<mips3_device &>(*device).set_dcache_size(_size); #define MCFG_MIPS3_SYSTEM_CLOCK(_clock) \ - mips3_device::set_system_clock(*device, _clock); + downcast<mips3_device &>(*device).set_system_clock(_clock); class mips3_frontend; @@ -277,9 +277,9 @@ public: // construction/destruction mips3_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, mips3_flavor flavor, endianness_t endiannes); - static void set_icache_size(device_t &device, size_t icache_size) { downcast<mips3_device &>(device).c_icache_size = icache_size; } - static void set_dcache_size(device_t &device, size_t dcache_size) { downcast<mips3_device &>(device).c_dcache_size = dcache_size; } - static void set_system_clock(device_t &device, uint32_t system_clock) { downcast<mips3_device &>(device).c_system_clock = system_clock; } + void set_icache_size(size_t icache_size) { c_icache_size = icache_size; } + void set_dcache_size(size_t dcache_size) { c_dcache_size = dcache_size; } + void set_system_clock(uint32_t system_clock) { c_system_clock = system_clock; } TIMER_CALLBACK_MEMBER(compare_int_callback); diff --git a/src/devices/cpu/mips/r3000.h b/src/devices/cpu/mips/r3000.h index a5f9998a23c..9af401484d2 100644 --- a/src/devices/cpu/mips/r3000.h +++ b/src/devices/cpu/mips/r3000.h @@ -19,19 +19,19 @@ ***************************************************************************/ #define MCFG_R3000_ENDIANNESS(_endianness) \ - r3000_device::static_set_endianness(*device, _endianness); + downcast<r3000_device &>(*device).set_endianness(_endianness); #define MCFG_R3000_BRCOND0_INPUT(_devcb) \ - devcb = &r3000_device::static_set_brcond0_input(*device, DEVCB_##_devcb); + devcb = &downcast<r3000_device &>(*device).set_brcond0_input(DEVCB_##_devcb); #define MCFG_R3000_BRCOND1_INPUT(_devcb) \ - devcb = &r3000_device::static_set_brcond1_input(*device, DEVCB_##_devcb); + devcb = &downcast<r3000_device &>(*device).set_brcond1_input(DEVCB_##_devcb); #define MCFG_R3000_BRCOND2_INPUT(_devcb) \ - devcb = &r3000_device::static_set_brcond2_input(*device, DEVCB_##_devcb); + devcb = &downcast<r3000_device &>(*device).set_brcond2_input(DEVCB_##_devcb); #define MCFG_R3000_BRCOND3_INPUT(_devcb) \ - devcb = &r3000_device::static_set_brcond3_input(*device, DEVCB_##_devcb); + devcb = &downcast<r3000_device &>(*device).set_brcond3_input(DEVCB_##_devcb); /*************************************************************************** @@ -73,30 +73,12 @@ public: virtual ~r3000_device(); // inline configuration helpers - static void static_set_endianness(device_t &device, endianness_t endianness) - { - downcast<r3000_device &>(device).m_endianness = endianness; - } - - template <class Object> static devcb_base &static_set_brcond0_input(device_t &device, Object &&cb) - { - return downcast<r3000_device &>(device).m_in_brcond0.set_callback(std::forward<Object>(cb)); - } - - template <class Object> static devcb_base &static_set_brcond1_input(device_t &device, Object &&cb) - { - return downcast<r3000_device &>(device).m_in_brcond1.set_callback(std::forward<Object>(cb)); - } - - template <class Object> static devcb_base &static_set_brcond2_input(device_t &device, Object &&cb) - { - return downcast<r3000_device &>(device).m_in_brcond2.set_callback(std::forward<Object>(cb)); - } + void set_endianness(endianness_t endianness) { m_endianness = endianness; } - template <class Object> static devcb_base &static_set_brcond3_input(device_t &device, Object &&cb) - { - return downcast<r3000_device &>(device).m_in_brcond3.set_callback(std::forward<Object>(cb)); - } + template <class Object> devcb_base &set_brcond0_input(Object &&cb) { return m_in_brcond0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_brcond1_input(Object &&cb) { return m_in_brcond1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_brcond2_input(Object &&cb) { return m_in_brcond2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_brcond3_input(Object &&cb) { return m_in_brcond3.set_callback(std::forward<Object>(cb)); } protected: enum chip_type diff --git a/src/devices/cpu/mn10200/mn10200.h b/src/devices/cpu/mn10200/mn10200.h index f3b496611bb..aadeff37281 100644 --- a/src/devices/cpu/mn10200/mn10200.h +++ b/src/devices/cpu/mn10200/mn10200.h @@ -15,9 +15,9 @@ // port setup #define MCFG_MN10200_READ_PORT_CB(X, _devcb) \ - devcb = &mn10200_device::set_read_port##X##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mn10200_device &>(*device).set_read_port##X##_callback(DEVCB_##_devcb); #define MCFG_MN10200_WRITE_PORT_CB(X, _devcb) \ - devcb = &mn10200_device::set_write_port##X##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mn10200_device &>(*device).set_write_port##X##_callback(DEVCB_##_devcb); enum { @@ -42,18 +42,18 @@ enum class mn10200_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_port0_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_port1_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_port2_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_port3_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_port4_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port4.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_write_port0_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_port1_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_port2_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_port3_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_port4_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port4.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_port0_callback(Object &&cb) { return m_read_port0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_port1_callback(Object &&cb) { return m_read_port1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_port2_callback(Object &&cb) { return m_read_port2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_port3_callback(Object &&cb) { return m_read_port3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_port4_callback(Object &&cb) { return m_read_port4.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_write_port0_callback(Object &&cb) { return m_write_port0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_port1_callback(Object &&cb) { return m_write_port1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_port2_callback(Object &&cb) { return m_write_port2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_port3_callback(Object &&cb) { return m_write_port3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_port4_callback(Object &&cb) { return m_write_port4.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(io_control_r); DECLARE_WRITE8_MEMBER(io_control_w); diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor.h b/src/devices/cpu/nanoprocessor/nanoprocessor.h index 98b717e6c07..1a8c820e748 100644 --- a/src/devices/cpu/nanoprocessor/nanoprocessor.h +++ b/src/devices/cpu/nanoprocessor/nanoprocessor.h @@ -62,20 +62,20 @@ constexpr unsigned HP_NANO_IE_DC = 7; // DC line used as interrupt enable/ma // DC0 is in bit 0, DC1 in bit 1 and so on. // Keep in mind that DC7 usually masks the interrupt signal. #define MCFG_HP_NANO_DC_CHANGED(_devcb) \ - devcb = &hp_nanoprocessor_device::set_dc_changed_func(*device , DEVCB_##_devcb); + devcb = &downcast<hp_nanoprocessor_device &>(*device).set_dc_changed_func(DEVCB_##_devcb); // Callback to read the input state of DC lines // All lines that are not in input are to be reported at "1" #define MCFG_HP_NANO_READ_DC_CB(_devcb) \ - devcb = &hp_nanoprocessor_device::set_read_dc_func(*device , DEVCB_##_devcb); + devcb = &downcast<hp_nanoprocessor_device &>(*device).set_read_dc_func(DEVCB_##_devcb); class hp_nanoprocessor_device : public cpu_device { public: hp_nanoprocessor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_dc_changed_func(device_t &device, Object &&cb) { return downcast<hp_nanoprocessor_device &>(device).m_dc_changed_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_dc_func(device_t &device, Object &&cb) { return downcast<hp_nanoprocessor_device &>(device).m_read_dc_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dc_changed_func(Object &&cb) { return m_dc_changed_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_dc_func(Object &&cb) { return m_read_dc_func.set_callback(std::forward<Object>(cb)); } // device_execute_interface overrides virtual uint32_t execute_min_cycles() const override { return 2; } diff --git a/src/devices/cpu/nec/v25.h b/src/devices/cpu/nec/v25.h index cda729e88ef..b796bed3b67 100644 --- a/src/devices/cpu/nec/v25.h +++ b/src/devices/cpu/nec/v25.h @@ -23,45 +23,45 @@ enum #define MCFG_V25_CONFIG(_table) \ - v25_common_device::set_decryption_table(*device, _table); + downcast<v25_common_device &>(*device).set_decryption_table(_table); #define MCFG_V25_PORT_PT_READ_CB(_devcb) \ - devcb = &v25_common_device::set_pt_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_pt_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P0_READ_CB(_devcb) \ - devcb = &v25_common_device::set_p0_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p0_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P1_READ_CB(_devcb) \ - devcb = &v25_common_device::set_p1_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p1_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P2_READ_CB(_devcb) \ - devcb = &v25_common_device::set_p2_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p2_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P0_WRITE_CB(_devcb) \ - devcb = &v25_common_device::set_p0_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p0_out_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P1_WRITE_CB(_devcb) \ - devcb = &v25_common_device::set_p1_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p1_out_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P2_WRITE_CB(_devcb) \ - devcb = &v25_common_device::set_p2_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p2_out_cb(DEVCB_##_devcb); class v25_common_device : public cpu_device { public: - // static configuration helpers - static void set_decryption_table(device_t &device, const uint8_t *decryption_table) { downcast<v25_common_device &>(device).m_v25v35_decryptiontable = decryption_table; } + // configuration helpers + void set_decryption_table(const uint8_t *decryption_table) { m_v25v35_decryptiontable = decryption_table; } - template <class Object> static devcb_base & set_pt_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_pt_in.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p0_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p0_in.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p1_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p1_in.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p2_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p2_in.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pt_in_cb(Object &&cb) { return m_pt_in.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p0_in_cb(Object &&cb) { return m_p0_in.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p1_in_cb(Object &&cb) { return m_p1_in.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p2_in_cb(Object &&cb) { return m_p2_in.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p0_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p0_out.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p1_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p1_out.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p2_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p2_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p0_out_cb(Object &&cb) { return m_p0_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p1_out_cb(Object &&cb) { return m_p1_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p2_out_cb(Object &&cb) { return m_p2_out.set_callback(std::forward<Object>(cb)); } TIMER_CALLBACK_MEMBER(v25_timer_callback); diff --git a/src/devices/cpu/nec/v53.cpp b/src/devices/cpu/nec/v53.cpp index 0e91bb64614..018613af230 100644 --- a/src/devices/cpu/nec/v53.cpp +++ b/src/devices/cpu/nec/v53.cpp @@ -228,7 +228,7 @@ void v53_base_device::device_start() m_out_dack_2_cb.resolve_safe(); m_out_dack_3_cb.resolve_safe(); - static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(pic8259_device::inta_cb), (pic8259_device*)m_v53icu)); + set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pic8259_device::inta_cb), (pic8259_device*)m_v53icu)); } void v53_base_device::install_peripheral_io() diff --git a/src/devices/cpu/nec/v53.h b/src/devices/cpu/nec/v53.h index 1c45a3cbc89..dfecbfb5f04 100644 --- a/src/devices/cpu/nec/v53.h +++ b/src/devices/cpu/nec/v53.h @@ -16,94 +16,94 @@ // SCU #define MCFG_V53_SCU_TXD_HANDLER(_devcb) \ - devcb = &v53_base_device::set_txd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_DTR_HANDLER(_devcb) \ - devcb = &v53_base_device::set_dtr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_dtr_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_RTS_HANDLER(_devcb) \ - devcb = &v53_base_device::set_rts_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_rts_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_RXRDY_HANDLER(_devcb) \ - devcb = &v53_base_device::set_rxrdy_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_rxrdy_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_TXRDY_HANDLER(_devcb) \ - devcb = &v53_base_device::set_txrdy_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_txrdy_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_TXEMPTY_HANDLER(_devcb) \ - devcb = &v53_base_device::set_txempty_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_txempty_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_SYNDET_HANDLER(_devcb) \ - devcb = &v53_base_device::set_syndet_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_syndet_handler(DEVCB_##_devcb); // TCU #define MCFG_V53_TCU_CLK0(_clk) \ - v53_base_device::set_clk0(*device, _clk); + downcast<v53_base_device &>(*device).set_clk0(_clk); #define MCFG_V53_TCU_CLK1(_clk) \ - v53_base_device::set_clk1(*device, _clk); + downcast<v53_base_device &>(*device).set_clk1(_clk); #define MCFG_V53_TCU_CLK2(_clk) \ - v53_base_device::set_clk2(*device, _clk); + downcast<v53_base_device &>(*device).set_clk2(_clk); #define MCFG_V53_TCU_OUT0_HANDLER(_devcb) \ - devcb = &v53_base_device::set_out0_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out0_handler(DEVCB_##_devcb); #define MCFG_V53_TCU_OUT1_HANDLER(_devcb) \ - devcb = &v53_base_device::set_out1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out1_handler(DEVCB_##_devcb); #define MCFG_V53_TCU_OUT2_HANDLER(_devcb) \ - devcb = &v53_base_device::set_out2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out2_handler(DEVCB_##_devcb); // DMAU #define MCFG_V53_DMAU_OUT_HREQ_CB(_devcb) \ - devcb = &v53_base_device::set_out_hreq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_hreq_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_EOP_CB(_devcb) \ - devcb = &v53_base_device::set_out_eop_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_eop_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_MEMR_CB(_devcb) \ - devcb = &v53_base_device::set_in_memr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_in_memr_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_MEMW_CB(_devcb) \ - devcb = &v53_base_device::set_out_memw_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_memw_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_0_CB(_devcb) \ - devcb = &v53_base_device::set_in_ior_0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_in_ior_0_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_1_CB(_devcb) \ - devcb = &v53_base_device::set_in_ior_1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_in_ior_1_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_2_CB(_devcb) \ - devcb = &v53_base_device::set_in_ior_2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_in_ior_2_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_3_CB(_devcb) \ - devcb = &v53_base_device::set_in_ior_3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_in_ior_3_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_0_CB(_devcb) \ - devcb = &v53_base_device::set_out_iow_0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_iow_0_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_1_CB(_devcb) \ - devcb = &v53_base_device::set_out_iow_1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_iow_1_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_2_CB(_devcb) \ - devcb = &v53_base_device::set_out_iow_2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_iow_2_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_3_CB(_devcb) \ - devcb = &v53_base_device::set_out_iow_3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_iow_3_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_0_CB(_devcb) \ - devcb = &v53_base_device::set_out_dack_0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_dack_0_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_1_CB(_devcb) \ - devcb = &v53_base_device::set_out_dack_1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_dack_1_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_2_CB(_devcb) \ - devcb = &v53_base_device::set_out_dack_2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_dack_2_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_3_CB(_devcb) \ - devcb = &v53_base_device::set_out_dack_3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_dack_3_callback(DEVCB_##_devcb); @@ -135,13 +135,13 @@ public: // SCU DECLARE_READ8_MEMBER(scu_simk_r); DECLARE_WRITE8_MEMBER(scu_simk_w); - template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rxrdy_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_rxrdy_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txrdy_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txrdy_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txempty_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txempty_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_syndet_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_syndet_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dtr_handler(Object &&cb) { return m_dtr_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxrdy_handler(Object &&cb) { return m_rxrdy_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txrdy_handler(Object &&cb) { return m_txrdy_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txempty_handler(Object &&cb) { return m_txempty_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_syndet_handler(Object &&cb) { return m_syndet_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(scu_txd_trampoline_cb) { m_txd_handler(state); } DECLARE_WRITE_LINE_MEMBER(scu_dtr_trampoline_cb) { m_dtr_handler(state); } DECLARE_WRITE_LINE_MEMBER(scu_rts_trampoline_cb) { m_rts_handler(state); } @@ -158,33 +158,33 @@ public: DECLARE_READ8_MEMBER(tmu_tst2_r); DECLARE_WRITE8_MEMBER(tmu_tct2_w); DECLARE_WRITE8_MEMBER(tmu_tmd_w); -// static void set_clk0(device_t &device, double clk0) { downcast<v53_base_device &>(device).m_clk0 = clk0; } -// static void set_clk1(device_t &device, double clk1) { downcast<v53_base_device &>(device).m_clk1 = clk1; } -// static void set_clk2(device_t &device, double clk2) { downcast<v53_base_device &>(device).m_clk2 = clk2; } - template <class Object> static devcb_base &set_out0_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out0_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out1_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out2_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out2_handler.set_callback(std::forward<Object>(cb)); } +// void set_clk0(double clk0) { m_clk0 = clk0; } +// void set_clk1(double clk1) { m_clk1 = clk1; } +// void set_clk2(double clk2) { m_clk2 = clk2; } + template <class Object> devcb_base &set_out0_handler(Object &&cb) { return m_out0_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out1_handler(Object &&cb) { return m_out1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out2_handler(Object &&cb) { return m_out2_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(tcu_out0_trampoline_cb){ m_out0_handler(state); } DECLARE_WRITE_LINE_MEMBER(tcu_out1_trampoline_cb){ m_out1_handler(state); } DECLARE_WRITE_LINE_MEMBER(tcu_out2_trampoline_cb){ m_out2_handler(state); } // DMAU - template<class Object> static devcb_base &set_out_hreq_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_hreq_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_eop_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_eop_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_in_memr_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_memr_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_memw_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_memw_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_in_ior_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_0_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_in_ior_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_1_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_in_ior_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_2_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_in_ior_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_3_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_iow_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_0_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_iow_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_1_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_iow_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_2_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_iow_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_3_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_dack_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_0_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_dack_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_1_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_dack_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_2_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_dack_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_3_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_hreq_callback(Object &&cb) { return m_out_hreq_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_eop_callback(Object &&cb) { return m_out_eop_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_in_memr_callback(Object &&cb) { return m_in_memr_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_memw_callback(Object &&cb) { return m_out_memw_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_in_ior_0_callback(Object &&cb) { return m_in_ior_0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_in_ior_1_callback(Object &&cb) { return m_in_ior_1_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_in_ior_2_callback(Object &&cb) { return m_in_ior_2_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_in_ior_3_callback(Object &&cb) { return m_in_ior_3_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_iow_0_callback(Object &&cb) { return m_out_iow_0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_iow_1_callback(Object &&cb) { return m_out_iow_1_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_iow_2_callback(Object &&cb) { return m_out_iow_2_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_iow_3_callback(Object &&cb) { return m_out_iow_3_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dack_0_callback(Object &&cb) { return m_out_dack_0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dack_1_callback(Object &&cb) { return m_out_dack_1_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dack_2_callback(Object &&cb) { return m_out_dack_2_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dack_3_callback(Object &&cb) { return m_out_dack_3_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(dreq0_w); DECLARE_WRITE_LINE_MEMBER(dreq1_w); diff --git a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h index 26bf4298ad1..0450b2ea314 100644 --- a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h +++ b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h @@ -6,13 +6,13 @@ #pragma once #define MCFG_PATINHO_RC_READ_CB(_devcb) \ - devcb = &patinho_feio_cpu_device::set_rc_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<patinho_feio_cpu_device &>(*device).set_rc_read_callback(DEVCB_##_devcb); #define MCFG_PATINHO_BUTTONS_READ_CB(_devcb) \ - devcb = &patinho_feio_cpu_device::set_buttons_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<patinho_feio_cpu_device &>(*device).set_buttons_read_callback(DEVCB_##_devcb); #define MCFG_PATINHO_IODEV_READ_CB(devnumber, _devcb) \ - devcb = &patinho_feio_cpu_device::set_iodev_read_callback(*device, devnumber, DEVCB_##_devcb); + devcb = &downcast<patinho_feio_cpu_device &>(*device).set_iodev_read_callback(devnumber, DEVCB_##_devcb); #define MCFG_PATINHO_IODEV_WRITE_CB(devnumber, _devcb) \ - devcb = &patinho_feio_cpu_device::set_iodev_write_callback(*device, devnumber, DEVCB_##_devcb); + devcb = &downcast<patinho_feio_cpu_device &>(*device).set_iodev_write_callback(devnumber, DEVCB_##_devcb); /* register IDs */ enum @@ -53,11 +53,11 @@ public: // construction/destruction patinho_feio_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - template <class Object> static devcb_base &set_rc_read_callback(device_t &device, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_rc_read_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_buttons_read_callback(device_t &device, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_buttons_read_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_iodev_read_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_read_cb[devnumber].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_iodev_write_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_write_cb[devnumber].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_iodev_status_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_status_cb[devnumber].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rc_read_callback(Object &&cb) { return m_rc_read_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_buttons_read_callback(Object &&cb) { return m_buttons_read_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_iodev_read_callback(int devnumber, Object &&cb) { return m_iodev_read_cb[devnumber].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_iodev_write_callback(int devnumber, Object &&cb) { return m_iodev_write_cb[devnumber].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_iodev_status_callback(int devnumber, Object &&cb) { return m_iodev_status_cb[devnumber].set_callback(std::forward<Object>(cb)); } void transfer_byte_from_external_device(uint8_t channel, uint8_t data); void set_iodev_status(uint8_t channel, bool status) { m_iodev_status[channel] = status; } diff --git a/src/devices/cpu/pdp1/pdp1.h b/src/devices/cpu/pdp1/pdp1.h index 5a2df5fd91e..a64b23f5c69 100644 --- a/src/devices/cpu/pdp1/pdp1.h +++ b/src/devices/cpu/pdp1/pdp1.h @@ -83,7 +83,7 @@ public: // construction/destruction pdp1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_reset_param(device_t &device, const pdp1_reset_param_t *param) { downcast<pdp1_device &>(device).m_reset_param = param; } + void set_reset_param(const pdp1_reset_param_t *param) { m_reset_param = param; } void pulse_start_clear(); void io_complete() { m_ios = 1; } @@ -200,7 +200,7 @@ DECLARE_DEVICE_TYPE(PDP1, pdp1_device) #define MCFG_PDP1_RESET_PARAM(_param) \ - pdp1_device::static_set_reset_param(*device, &(_param)); + downcast<pdp1_device &>(*device).set_reset_param(&(_param)); #endif // MAME_CPU_PDP1_PDP1_H diff --git a/src/devices/cpu/pdp1/tx0.h b/src/devices/cpu/pdp1/tx0.h index e9174a46413..7c69bf40649 100644 --- a/src/devices/cpu/pdp1/tx0.h +++ b/src/devices/cpu/pdp1/tx0.h @@ -22,32 +22,32 @@ enum #define MCFG_TX0_CONFIG(_cpy_devcb, _r1l_devcb, _dis_devcb, _r3l_devcb, _prt_devcb, _rsv_devcb, _p6h_devcb, _p7h_devcb, _sel_devcb, _res_devcb) \ - tx0_device::set_cpy_cb(*device, DEVCB_##_cpy_devcb); \ - tx0_device::set_r1l_cb(*device, DEVCB_##_r1l_devcb); \ - tx0_device::set_dis_cb(*device, DEVCB_##_dis_devcb); \ - tx0_device::set_r3l_cb(*device, DEVCB_##_r3l_devcb); \ - tx0_device::set_prt_cb(*device, DEVCB_##_prt_devcb); \ - tx0_device::set_rsv_cb(*device, DEVCB_##_rsv_devcb); \ - tx0_device::set_p6h_cb(*device, DEVCB_##_p6h_devcb); \ - tx0_device::set_p7h_cb(*device, DEVCB_##_p7h_devcb); \ - tx0_device::set_sel_cb(*device, DEVCB_##_sel_devcb); \ - tx0_device::set_res_cb(*device, DEVCB_##_res_devcb); + downcast<tx0_device &>(*device).set_cpy_cb(DEVCB_##_cpy_devcb); \ + downcast<tx0_device &>(*device).set_r1l_cb(DEVCB_##_r1l_devcb); \ + downcast<tx0_device &>(*device).set_dis_cb(DEVCB_##_dis_devcb); \ + downcast<tx0_device &>(*device).set_r3l_cb(DEVCB_##_r3l_devcb); \ + downcast<tx0_device &>(*device).set_prt_cb(DEVCB_##_prt_devcb); \ + downcast<tx0_device &>(*device).set_rsv_cb(DEVCB_##_rsv_devcb); \ + downcast<tx0_device &>(*device).set_p6h_cb(DEVCB_##_p6h_devcb); \ + downcast<tx0_device &>(*device).set_p7h_cb(DEVCB_##_p7h_devcb); \ + downcast<tx0_device &>(*device).set_sel_cb(DEVCB_##_sel_devcb); \ + downcast<tx0_device &>(*device).set_res_cb(DEVCB_##_res_devcb); class tx0_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_cpy_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_cpy_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_r1l_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_r1l_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dis_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_dis_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_r3l_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_r3l_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_prt_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_prt_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rsv_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_rsv_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_p6h_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_p6h_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_p7h_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_p7h_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sel_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_sel_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_res_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_io_reset_callback.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_cpy_cb(Object &&cb) { return m_cpy_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_r1l_cb(Object &&cb) { return m_r1l_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dis_cb(Object &&cb) { return m_dis_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_r3l_cb(Object &&cb) { return m_r3l_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_prt_cb(Object &&cb) { return m_prt_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rsv_cb(Object &&cb) { return m_rsv_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p6h_cb(Object &&cb) { return m_p6h_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p7h_cb(Object &&cb) { return m_p7h_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sel_cb(Object &&cb) { return m_sel_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_res_cb(Object &&cb) { return m_io_reset_callback.set_callback(std::forward<Object>(cb)); } void pulse_reset(); void io_complete(); diff --git a/src/devices/cpu/pic16c5x/pic16c5x.h b/src/devices/cpu/pic16c5x/pic16c5x.h index 0971c5fa9a4..e442fa3a5da 100644 --- a/src/devices/cpu/pic16c5x/pic16c5x.h +++ b/src/devices/cpu/pic16c5x/pic16c5x.h @@ -37,31 +37,31 @@ enum // port a, 4 or 8 bits, 2-way #define MCFG_PIC16C5x_READ_A_CB(_devcb) \ - devcb = &pic16c5x_device::set_read_a_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_read_a_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_A_CB(_devcb) \ - devcb = &pic16c5x_device::set_write_a_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_write_a_callback(DEVCB_##_devcb); // port b, 8 bits, 2-way #define MCFG_PIC16C5x_READ_B_CB(_devcb) \ - devcb = &pic16c5x_device::set_read_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_read_b_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_B_CB(_devcb) \ - devcb = &pic16c5x_device::set_write_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_write_b_callback(DEVCB_##_devcb); // port c, 8 bits, 2-way #define MCFG_PIC16C5x_READ_C_CB(_devcb) \ - devcb = &pic16c5x_device::set_read_c_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_read_c_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_C_CB(_devcb) \ - devcb = &pic16c5x_device::set_write_c_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_write_c_callback(DEVCB_##_devcb); // port d, 8 bits, 2-way #define MCFG_PIC16C5x_READ_D_CB(_devcb) \ - devcb = &pic16c5x_device::set_read_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_D_CB(_devcb) \ - devcb = &pic16c5x_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_write_d_callback(DEVCB_##_devcb); // CONFIG register #define MCFG_PIC16C5x_SET_CONFIG(_data) \ - pic16c5x_device::set_config_static(*device, _data); + downcast<pic16c5x_device &>(*device).pic16c5x_set_config(_data); @@ -78,16 +78,16 @@ DECLARE_DEVICE_TYPE(PIC1655, pic1655_device) class pic16c5x_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_a_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_a.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_c_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_c.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_a_callback(Object &&cb) { return m_read_a.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_b_callback(Object &&cb) { return m_read_b.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_c_callback(Object &&cb) { return m_read_c.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_a_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_a.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_b_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_b.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_c_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_c.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_a_callback(Object &&cb) { return m_write_a.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_b_callback(Object &&cb) { return m_write_b.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_c_callback(Object &&cb) { return m_write_c.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); } /**************************************************************************** * Function to configure the CONFIG register. This is actually hard-wired @@ -96,9 +96,6 @@ public: */ void pic16c5x_set_config(uint16_t data); - // or with a macro - static void set_config_static(device_t &device, uint16_t data) { downcast<pic16c5x_device &>(device).m_temp_config = data; } - void pic16c5x_ram_5(address_map &map); void pic16c5x_ram_7(address_map &map); void pic16c5x_rom_10(address_map &map); diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h index 8a5673ae990..0a951bd2277 100644 --- a/src/devices/cpu/powerpc/ppc.h +++ b/src/devices/cpu/powerpc/ppc.h @@ -165,7 +165,7 @@ enum ***************************************************************************/ #define MCFG_PPC_BUS_FREQUENCY(_frequency) \ - ppc_device::set_bus_frequency(*device, _frequency); + downcast<ppc_device &>(*device).set_bus_frequency(_frequency); class ppc_frontend; @@ -213,8 +213,8 @@ protected: ppc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int address_bits, int data_bits, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor, address_map_constructor internal_map); public: - static void set_bus_frequency(device_t &device, uint32_t bus_frequency) { downcast<ppc_device &>(device).c_bus_frequency = bus_frequency; } - static void set_bus_frequency(device_t &device, const XTAL &xtal) { set_bus_frequency(device, xtal.value()); } + void set_bus_frequency(uint32_t bus_frequency) { c_bus_frequency = bus_frequency; } + void set_bus_frequency(const XTAL &xtal) { set_bus_frequency(xtal.value()); } void ppc_set_dcstore_callback(write32_delegate callback); diff --git a/src/devices/cpu/pps4/pps4.h b/src/devices/cpu/pps4/pps4.h index fcf1d790756..de0bca60b1c 100644 --- a/src/devices/cpu/pps4/pps4.h +++ b/src/devices/cpu/pps4/pps4.h @@ -29,13 +29,13 @@ enum //************************************************************************** #define MCFG_PPS4_DISCRETE_INPUT_A_CB(_devcb) \ - devcb = &pps4_device::set_dia_cb(*device, DEVCB_##_devcb); + devcb = &downcast<pps4_device &>(*device).set_dia_cb(DEVCB_##_devcb); #define MCFG_PPS4_DISCRETE_INPUT_B_CB(_devcb) \ - devcb = &pps4_device::set_dib_cb(*device, DEVCB_##_devcb); + devcb = &downcast<pps4_device &>(*device).set_dib_cb(DEVCB_##_devcb); #define MCFG_PPS4_DISCRETE_OUTPUT_CB(_devcb) \ - devcb = &pps4_device::set_do_cb(*device, DEVCB_##_devcb); + devcb = &downcast<pps4_device &>(*device).set_do_cb(DEVCB_##_devcb); //************************************************************************** // DEVICE TYPE DEFINITIONS @@ -54,10 +54,10 @@ public: // construction/destruction pps4_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <class Object> static devcb_base &set_dia_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_dia_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dib_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_dib_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_do_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_do_cb.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_dia_cb(Object &&cb) { return m_dia_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dib_cb(Object &&cb) { return m_dib_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_do_cb(Object &&cb) { return m_do_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ16_MEMBER(address_bus_r); diff --git a/src/devices/cpu/psx/dma.h b/src/devices/cpu/psx/dma.h index ba10e80903c..7be62c0eb0d 100644 --- a/src/devices/cpu/psx/dma.h +++ b/src/devices/cpu/psx/dma.h @@ -16,7 +16,7 @@ DECLARE_DEVICE_TYPE(PSX_DMA, psxdma_device) #define MCFG_PSX_DMA_IRQ_HANDLER(_devcb) \ - devcb = &psxdma_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxdma_device &>(*device).set_irq_handler(DEVCB_##_devcb); class psxdma_device : public device_t { @@ -26,8 +26,8 @@ public: psxdma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<psxdma_device &>(device).m_irq_handler.set_callback(object); } + //configuration helpers + template<class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } void install_read_handler( int n_channel, read_delegate p_fn_dma_read ); void install_write_handler( int n_channel, write_delegate p_fn_dma_write ); diff --git a/src/devices/cpu/psx/irq.h b/src/devices/cpu/psx/irq.h index 5a4f91b6aa7..8030845ff2e 100644 --- a/src/devices/cpu/psx/irq.h +++ b/src/devices/cpu/psx/irq.h @@ -16,15 +16,15 @@ extern const device_type PSX_IRQ; #define MCFG_PSX_IRQ_HANDLER(_devcb) \ - devcb = &psxirq_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxirq_device &>(*device).set_irq_handler(DEVCB_##_devcb); class psxirq_device : public device_t { public: psxirq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<psxirq_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ32_MEMBER( read ); DECLARE_WRITE32_MEMBER( write ); diff --git a/src/devices/cpu/psx/psx.cpp b/src/devices/cpu/psx/psx.cpp index 6f697bbc81d..52861c92dfd 100644 --- a/src/devices/cpu/psx/psx.cpp +++ b/src/devices/cpu/psx/psx.cpp @@ -3381,11 +3381,6 @@ void psxcpu_device::setcp3cr( int reg, uint32_t value ) { } -psxcpu_device *psxcpu_device::getcpu( device_t &device, const char *cputag ) -{ - return downcast<psxcpu_device *>( device.subdevice( cputag ) ); -} - READ32_MEMBER( psxcpu_device::gpu_r ) { return m_gpu_read_handler( space, offset, mem_mask ); diff --git a/src/devices/cpu/psx/psx.h b/src/devices/cpu/psx/psx.h index bdf3b0f2327..73e4380a8f7 100644 --- a/src/devices/cpu/psx/psx.h +++ b/src/devices/cpu/psx/psx.h @@ -121,19 +121,19 @@ enum psxcpu_device::getcpu( *this, cputag )->subdevice<psxdma_device>("dma")->install_write_handler( channel, handler ); #define MCFG_PSX_GPU_READ_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_gpu_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_gpu_read_handler(DEVCB_##_devcb); #define MCFG_PSX_GPU_WRITE_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_gpu_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_gpu_write_handler(DEVCB_##_devcb); #define MCFG_PSX_SPU_READ_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_spu_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_spu_read_handler(DEVCB_##_devcb); #define MCFG_PSX_SPU_WRITE_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_spu_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_spu_write_handler(DEVCB_##_devcb); #define MCFG_PSX_CD_READ_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_cd_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_cd_read_handler(DEVCB_##_devcb); #define MCFG_PSX_CD_WRITE_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_cd_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_cd_write_handler(DEVCB_##_devcb); #define MCFG_PSX_DISABLE_ROM_BERR \ downcast<psxcpu_device *>(device)->set_disable_rom_berr(true); @@ -146,13 +146,13 @@ enum class psxcpu_device : public cpu_device, psxcpu_disassembler::config { public: - // static configuration helpers - template <class Object> static devcb_base &set_gpu_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_gpu_read_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_gpu_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_gpu_write_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_spu_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_spu_read_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_spu_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_spu_write_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cd_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_cd_read_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cd_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_cd_write_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_gpu_read_handler(Object &&cb) { return m_gpu_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gpu_write_handler(Object &&cb) { return m_gpu_write_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_spu_read_handler(Object &&cb) { return m_spu_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_spu_write_handler(Object &&cb) { return m_spu_write_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cd_read_handler(Object &&cb) { return m_cd_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cd_write_handler(Object &&cb) { return m_cd_write_handler.set_callback(std::forward<Object>(cb)); } // public interfaces DECLARE_WRITE32_MEMBER( berr_w ); @@ -187,7 +187,7 @@ public: DECLARE_WRITE32_MEMBER( com_delay_w ); DECLARE_READ32_MEMBER( com_delay_r ); - static psxcpu_device *getcpu( device_t &device, const char *cputag ); + static psxcpu_device *getcpu( device_t &device, const char *cputag ) { return downcast<psxcpu_device *>( device.subdevice( cputag ) ); } void set_disable_rom_berr(bool mode); void psxcpu_internal_map(address_map &map); diff --git a/src/devices/cpu/psx/rcnt.h b/src/devices/cpu/psx/rcnt.h index 48262325bfc..2047d229c3e 100644 --- a/src/devices/cpu/psx/rcnt.h +++ b/src/devices/cpu/psx/rcnt.h @@ -16,11 +16,11 @@ DECLARE_DEVICE_TYPE(PSX_RCNT, psxrcnt_device) #define MCFG_PSX_RCNT_IRQ0_HANDLER(_devcb) \ - devcb = &psxrcnt_device::set_irq0_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxrcnt_device &>(*device).set_irq0_handler(DEVCB_##_devcb); #define MCFG_PSX_RCNT_IRQ1_HANDLER(_devcb) \ - devcb = &psxrcnt_device::set_irq1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxrcnt_device &>(*device).set_irq1_handler(DEVCB_##_devcb); #define MCFG_PSX_RCNT_IRQ2_HANDLER(_devcb) \ - devcb = &psxrcnt_device::set_irq2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxrcnt_device &>(*device).set_irq2_handler(DEVCB_##_devcb); #define PSX_RC_STOP ( 0x01 ) #define PSX_RC_RESET ( 0x04 ) /* guess */ #define PSX_RC_COUNTTARGET ( 0x08 ) @@ -35,10 +35,10 @@ class psxrcnt_device : public device_t public: psxrcnt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq0_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq0_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq1_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq2_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq2_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq0_handler(Object &&cb) { return m_irq0_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq1_handler(Object &&cb) { return m_irq1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq2_handler(Object &&cb) { return m_irq2_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE32_MEMBER( write ); DECLARE_READ32_MEMBER( read ); diff --git a/src/devices/cpu/psx/sio.h b/src/devices/cpu/psx/sio.h index 1205e4b278c..fe2cb6af269 100644 --- a/src/devices/cpu/psx/sio.h +++ b/src/devices/cpu/psx/sio.h @@ -17,19 +17,19 @@ DECLARE_DEVICE_TYPE(PSX_SIO0, psxsio0_device) DECLARE_DEVICE_TYPE(PSX_SIO1, psxsio1_device) #define MCFG_PSX_SIO_IRQ_HANDLER(_devcb) \ - devcb = &psxsio_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxsio_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_SCK_HANDLER(_devcb) \ - devcb = &psxsio_device::set_sck_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxsio_device &>(*device).set_sck_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_TXD_HANDLER(_devcb) \ - devcb = &psxsio_device::set_txd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxsio_device &>(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_DTR_HANDLER(_devcb) \ - devcb = &psxsio_device::set_dtr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxsio_device &>(*device).set_dtr_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_RTS_HANDLER(_devcb) \ - devcb = &psxsio_device::set_rts_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxsio_device &>(*device).set_rts_handler(DEVCB_##_devcb); #define SIO_BUF_SIZE ( 8 ) @@ -51,12 +51,12 @@ DECLARE_DEVICE_TYPE(PSX_SIO1, psxsio1_device) class psxsio_device : public device_t { public: - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sck_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_sck_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + 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_sck_handler(Object &&cb) { return m_sck_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dtr_handler(Object &&cb) { return m_dtr_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE32_MEMBER( write ); DECLARE_READ32_MEMBER( read ); diff --git a/src/devices/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h index 5f7b9ccb001..cc407513cec 100644 --- a/src/devices/cpu/rsp/rsp.h +++ b/src/devices/cpu/rsp/rsp.h @@ -84,19 +84,19 @@ enum #define RSPDRC_STRICT_VERIFY 0x0001 /* verify all instructions */ #define MCFG_RSP_DP_REG_R_CB(_devcb) \ - devcb = &rsp_device::static_set_dp_reg_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rsp_device &>(*device).set_dp_reg_r_callback(DEVCB_##_devcb); #define MCFG_RSP_DP_REG_W_CB(_devcb) \ - devcb = &rsp_device::static_set_dp_reg_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rsp_device &>(*device).set_dp_reg_w_callback(DEVCB_##_devcb); #define MCFG_RSP_SP_REG_R_CB(_devcb) \ - devcb = &rsp_device::static_set_sp_reg_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rsp_device &>(*device).set_sp_reg_r_callback(DEVCB_##_devcb); #define MCFG_RSP_SP_REG_W_CB(_devcb) \ - devcb = &rsp_device::static_set_sp_reg_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rsp_device &>(*device).set_sp_reg_w_callback(DEVCB_##_devcb); #define MCFG_RSP_SP_SET_STATUS_CB(_devcb) \ - devcb = &rsp_device::static_set_status_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rsp_device &>(*device).set_status_callback(DEVCB_##_devcb); class rsp_frontend; @@ -113,11 +113,11 @@ public: rsp_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); void resolve_cb(); - template <class Object> static devcb_base &static_set_dp_reg_r_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_dp_reg_r_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_dp_reg_w_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_dp_reg_w_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_sp_reg_r_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_reg_r_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_sp_reg_w_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_reg_w_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_status_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_set_status_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dp_reg_r_callback(Object &&cb) { return m_dp_reg_r_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dp_reg_w_callback(Object &&cb) { return m_dp_reg_w_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sp_reg_r_callback(Object &&cb) { return m_sp_reg_r_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sp_reg_w_callback(Object &&cb) { return m_sp_reg_w_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_status_callback(Object &&cb) { return m_sp_set_status_func.set_callback(std::forward<Object>(cb)); } void rspdrc_flush_drc_cache(); void rspdrc_set_options(uint32_t options); diff --git a/src/devices/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h index e329831690c..4d8da0cde0c 100644 --- a/src/devices/cpu/s2650/s2650.h +++ b/src/devices/cpu/s2650/s2650.h @@ -28,13 +28,13 @@ DECLARE_DEVICE_TYPE(S2650, s2650_device) #define MCFG_S2650_SENSE_INPUT(_devcb) \ - devcb = &s2650_device::set_sense_handler(*device, DEVCB_##_devcb); + devcb = &downcast<s2650_device &>(*device).set_sense_handler(DEVCB_##_devcb); #define MCFG_S2650_FLAG_OUTPUT(_devcb) \ - devcb = &s2650_device::set_flag_handler(*device, DEVCB_##_devcb); + devcb = &downcast<s2650_device &>(*device).set_flag_handler(DEVCB_##_devcb); #define MCFG_S2650_INTACK_HANDLER(_devcb) \ - devcb = &s2650_device::set_intack_handler(*device, DEVCB_##_devcb); + devcb = &downcast<s2650_device &>(*device).set_intack_handler(DEVCB_##_devcb); class s2650_device : public cpu_device, public s2650_disassembler::config { @@ -42,10 +42,10 @@ public: // construction/destruction s2650_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_sense_handler(device_t &device, Object &&cb) { return downcast<s2650_device &>(device).m_sense_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_flag_handler(device_t &device, Object &&cb) { return downcast<s2650_device &>(device).m_flag_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_intack_handler(device_t &device, Object &&cb) { return downcast<s2650_device &>(device).m_intack_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_sense_handler(Object &&cb) { return m_sense_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_flag_handler(Object &&cb) { return m_flag_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intack_handler(Object &&cb) { return m_intack_handler.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/saturn/saturn.h b/src/devices/cpu/saturn/saturn.h index bd49ad18806..a7ad69c43fc 100644 --- a/src/devices/cpu/saturn/saturn.h +++ b/src/devices/cpu/saturn/saturn.h @@ -63,14 +63,14 @@ enum #define MCFG_SATURN_CONFIG(_out, _in, _reset, _config, _unconfig, _id, _crc, _rsi) \ - saturn_device::set_out_func(*device, DEVCB_##_out); \ - saturn_device::set_in_func(*device, DEVCB_##_in); \ - saturn_device::set_reset_func(*device, DEVCB_##_reset); \ - saturn_device::set_config_func(*device, DEVCB_##_config); \ - saturn_device::set_unconfig_func(*device, DEVCB_##_unconfig); \ - saturn_device::set_id_func(*device, DEVCB_##_id); \ - saturn_device::set_crc_func(*device, DEVCB_##_crc); \ - saturn_device::set_rsi_func(*device, DEVCB_##_rsi); + downcast<saturn_device &>(*device).set_out_func(DEVCB_##_out); \ + downcast<saturn_device &>(*device).set_in_func(DEVCB_##_in); \ + downcast<saturn_device &>(*device).set_reset_func(DEVCB_##_reset); \ + downcast<saturn_device &>(*device).set_config_func(DEVCB_##_config); \ + downcast<saturn_device &>(*device).set_unconfig_func(DEVCB_##_unconfig); \ + downcast<saturn_device &>(*device).set_id_func(DEVCB_##_id); \ + downcast<saturn_device &>(*device).set_crc_func(DEVCB_##_crc); \ + downcast<saturn_device &>(*device).set_rsi_func(DEVCB_##_rsi); class saturn_device : public cpu_device, public saturn_disassembler::config @@ -79,15 +79,15 @@ public: // construction/destruction saturn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_out_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_out_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_in_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_reset_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_reset_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_config_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_config_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_unconfig_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_unconfig_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_id_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_id_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_crc_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_crc_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rsi_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_rsi_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_out_func(Object &&cb) { return m_out_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_func(Object &&cb) { return m_in_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_reset_func(Object &&cb) { return m_reset_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_config_func(Object &&cb) { return m_config_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_unconfig_func(Object &&cb) { return m_unconfig_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_id_func(Object &&cb) { return m_id_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_crc_func(Object &&cb) { return m_crc_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rsi_func(Object &&cb) { return m_rsi_func.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/sc61860/sc61860.h b/src/devices/cpu/sc61860/sc61860.h index 3b9e6745e4d..80f1733c666 100644 --- a/src/devices/cpu/sc61860/sc61860.h +++ b/src/devices/cpu/sc61860/sc61860.h @@ -45,28 +45,28 @@ enum #define MCFG_SC61860_READ_RESET_HANDLER(_devcb) \ - devcb = &sc61860_device::set_reset_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_reset_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_BRK_HANDLER(_devcb) \ - devcb = &sc61860_device::set_brk_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_brk_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_X_HANDLER(_devcb) \ - devcb = &sc61860_device::set_x_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_x_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_A_HANDLER(_devcb) \ - devcb = &sc61860_device::set_ina_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_ina_cb(DEVCB_##_devcb); #define MCFG_SC61860_WRITE_A_HANDLER(_devcb) \ - devcb = &sc61860_device::set_outa_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_outa_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_B_HANDLER(_devcb) \ - devcb = &sc61860_device::set_inb_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_inb_cb(DEVCB_##_devcb); #define MCFG_SC61860_WRITE_B_HANDLER(_devcb) \ - devcb = &sc61860_device::set_outb_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_outb_cb(DEVCB_##_devcb); #define MCFG_SC61860_WRITE_C_HANDLER(_devcb) \ - devcb = &sc61860_device::set_outc_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_outc_cb(DEVCB_##_devcb); class sc61860_device : public cpu_device { @@ -74,15 +74,15 @@ public: // construction/destruction sc61860_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_reset_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_reset.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_brk_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_brk.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_x_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_x.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ina_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_ina.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_outa_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outa.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_inb_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_inb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_outb_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_outc_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outc.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_reset_cb(Object &&cb) { return m_reset.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_brk_cb(Object &&cb) { return m_brk.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_x_cb(Object &&cb) { return m_x.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ina_cb(Object &&cb) { return m_ina.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_outa_cb(Object &&cb) { return m_outa.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_inb_cb(Object &&cb) { return m_inb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_outb_cb(Object &&cb) { return m_outb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_outc_cb(Object &&cb) { return m_outc.set_callback(std::forward<Object>(cb)); } /* this is though for power on/off of the sharps */ uint8_t *internal_ram(); diff --git a/src/devices/cpu/scmp/scmp.h b/src/devices/cpu/scmp/scmp.h index 1ca7c699af5..c77068d40b8 100644 --- a/src/devices/cpu/scmp/scmp.h +++ b/src/devices/cpu/scmp/scmp.h @@ -7,12 +7,12 @@ #define MCFG_SCMP_CONFIG(_flag_out_devcb, _sout_devcb, _sin_devcb, _sensea_devcb, _senseb_devcb, _halt_devcb) \ - scmp_device::set_flag_out_cb(*device, DEVCB_##_flag_out_devcb); \ - scmp_device::set_sout_cb(*device, DEVCB_##_sout_devcb); \ - scmp_device::set_sin_cb(*device, DEVCB_##_sin_devcb); \ - scmp_device::set_sensea_cb(*device, DEVCB_##_sensea_devcb); \ - scmp_device::set_senseb_cb(*device, DEVCB_##_senseb_devcb); \ - scmp_device::set_halt_cb(*device, DEVCB_##_halt_devcb); + downcast<scmp_device &>(*device).set_flag_out_cb(DEVCB_##_flag_out_devcb); \ + downcast<scmp_device &>(*device).set_sout_cb(DEVCB_##_sout_devcb); \ + downcast<scmp_device &>(*device).set_sin_cb(DEVCB_##_sin_devcb); \ + downcast<scmp_device &>(*device).set_sensea_cb( DEVCB_##_sensea_devcb); \ + downcast<scmp_device &>(*device).set_senseb_cb(DEVCB_##_senseb_devcb); \ + downcast<scmp_device &>(*device).set_halt_cb(DEVCB_##_halt_devcb); class scmp_device : public cpu_device @@ -21,13 +21,13 @@ public: // construction/destruction scmp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_flag_out_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_flag_out_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sout_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sout_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sin_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sin_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sensea_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sensea_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_senseb_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_senseb_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_halt_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_halt_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_flag_out_cb(Object &&cb) { return m_flag_out_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sout_cb(Object &&cb) { return m_sout_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sin_cb(Object &&cb) { return m_sin_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sensea_cb(Object &&cb) { return m_sensea_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_senseb_cb(Object &&cb) { return m_senseb_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_halt_cb(Object &&cb) { return m_halt_func.set_callback(std::forward<Object>(cb)); } protected: enum diff --git a/src/devices/cpu/scudsp/scudsp.h b/src/devices/cpu/scudsp/scudsp.h index 52a132511ad..aab1a6f0af3 100644 --- a/src/devices/cpu/scudsp/scudsp.h +++ b/src/devices/cpu/scudsp/scudsp.h @@ -37,13 +37,13 @@ enum #define MCFG_SCUDSP_OUT_IRQ_CB(_devcb) \ - devcb = &scudsp_cpu_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<scudsp_cpu_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_SCUDSP_IN_DMA_CB(_devcb) \ - devcb = &scudsp_cpu_device::set_in_dma_callback(*device, DEVCB_##_devcb); + devcb = &downcast<scudsp_cpu_device &>(*device).set_in_dma_callback(DEVCB_##_devcb); #define MCFG_SCUDSP_OUT_DMA_CB(_devcb) \ - devcb = &scudsp_cpu_device::set_out_dma_callback(*device, DEVCB_##_devcb); + devcb = &downcast<scudsp_cpu_device &>(*device).set_out_dma_callback(DEVCB_##_devcb); #define SCUDSP_RESET INPUT_LINE_RESET /* Non-Maskable */ @@ -54,9 +54,9 @@ public: // construction/destruction scudsp_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_dma_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_in_dma_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_dma_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_out_dma_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_dma_callback(Object &&cb) { return m_in_dma_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_dma_callback(Object &&cb) { return m_out_dma_cb.set_callback(std::forward<Object>(cb)); } /* port 0 */ DECLARE_READ32_MEMBER( program_control_r ); diff --git a/src/devices/cpu/sh/sh2.h b/src/devices/cpu/sh/sh2.h index 4e0fd37ca30..b3b767347e7 100644 --- a/src/devices/cpu/sh/sh2.h +++ b/src/devices/cpu/sh/sh2.h @@ -46,16 +46,16 @@ #define SH2_FTCSR_READ_CB(name) void name(uint32_t data) #define MCFG_SH2_IS_SLAVE(_slave) \ - sh2_device::set_is_slave(*device, _slave); + downcast<sh2_device &>(*device).set_is_slave(_slave); #define MCFG_SH2_DMA_KLUDGE_CB(_class, _method) \ - sh2_device::set_dma_kludge_callback(*device, sh2_device::dma_kludge_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<sh2_device &>(*device).set_dma_kludge_callback(sh2_device::dma_kludge_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_SH2_FIFO_DATA_AVAIL_CB(_class, _method) \ - sh2_device::set_dma_fifo_data_available_callback(*device, sh2_device::dma_fifo_data_available_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<sh2_device &>(*device).set_dma_fifo_data_available_callback(sh2_device::dma_fifo_data_available_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_SH2_FTCSR_READ_CB(_class, _method) \ - sh2_device::set_ftcsr_read_callback(*device, sh2_device::ftcsr_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<sh2_device &>(*device).set_ftcsr_read_callback(sh2_device::ftcsr_read_delegate(&_class::_method, #_class "::" #_method, this)); class sh2_frontend; @@ -72,10 +72,10 @@ public: // construction/destruction sh2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_is_slave(device_t &device, int slave) { downcast<sh2_device &>(device).m_is_slave = slave; } - static void set_dma_kludge_callback(device_t &device, dma_kludge_delegate callback) { downcast<sh2_device &>(device).m_dma_kludge_cb = callback; } - static void set_dma_fifo_data_available_callback(device_t &device, dma_fifo_data_available_delegate callback) { downcast<sh2_device &>(device).m_dma_fifo_data_available_cb = callback; } - static void set_ftcsr_read_callback(device_t &device, ftcsr_read_delegate callback) { downcast<sh2_device &>(device).m_ftcsr_read_cb = callback; } + void set_is_slave(int slave) { m_is_slave = slave; } + template <typename Object> void set_dma_kludge_callback(Object &&cb) { m_dma_kludge_cb = std::forward<Object>(cb); } + template <typename Object> void set_dma_fifo_data_available_callback(Object &&cb) { m_dma_fifo_data_available_cb = std::forward<Object>(cb); } + template <typename Object> void set_ftcsr_read_callback(Object &&cb) { m_ftcsr_read_cb = std::forward<Object>(cb); } DECLARE_WRITE32_MEMBER( sh7604_w ); DECLARE_READ32_MEMBER( sh7604_r ); diff --git a/src/devices/cpu/sh/sh4.h b/src/devices/cpu/sh/sh4.h index 9954f378954..52d7cdf4c3b 100644 --- a/src/devices/cpu/sh/sh4.h +++ b/src/devices/cpu/sh/sh4.h @@ -157,38 +157,38 @@ typedef void (*sh4_ftcsr_callback)(uint32_t); #define MCFG_SH4_MD0(_md0) \ - sh34_base_device::set_md0(*device, _md0); + downcast<sh34_base_device &>(*device).set_md0(_md0); #define MCFG_SH4_MD1(_md1) \ - sh34_base_device::set_md1(*device, _md1); + downcast<sh34_base_device &>(*device).set_md1(_md1); #define MCFG_SH4_MD2(_md2) \ - sh34_base_device::set_md2(*device, _md2); + downcast<sh34_base_device &>(*device).set_md2(_md2); #define MCFG_SH4_MD3(_md3) \ - sh34_base_device::set_md3(*device, _md3); + downcast<sh34_base_device &>(*device).set_md3(_md3); #define MCFG_SH4_MD4(_md4) \ - sh34_base_device::set_md4(*device, _md4); + downcast<sh34_base_device &>(*device).set_md4(_md4); #define MCFG_SH4_MD5(_md5) \ - sh34_base_device::set_md5(*device, _md5); + downcast<sh34_base_device &>(*device).set_md5(_md5); #define MCFG_SH4_MD6(_md6) \ - sh34_base_device::set_md6(*device, _md6); + downcast<sh34_base_device &>(*device).set_md6(_md6); #define MCFG_SH4_MD7(_md7) \ - sh34_base_device::set_md7(*device, _md7); + downcast<sh34_base_device &>(*device).set_md7(_md7); #define MCFG_SH4_MD8(_md8) \ - sh34_base_device::set_md8(*device, _md8); + downcast<sh34_base_device &>(*device).set_md8(_md8); #define MCFG_SH4_CLOCK(_clock) \ - sh34_base_device::set_sh4_clock(*device, _clock); + downcast<sh34_base_device &>(*device).set_sh4_clock(_clock); #define MCFG_MMU_HACK_TYPE(_hacktype) \ - sh34_base_device::set_mmu_hacktype(*device, _hacktype); + downcast<sh34_base_device &>(*device).set_mmu_hacktype(_hacktype); class sh4_frontend; class sh4be_frontend; @@ -197,19 +197,19 @@ class sh34_base_device : public sh_common_execution { public: - static void set_md0(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md0 = md0; } - static void set_md1(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md1 = md0; } - static void set_md2(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md2 = md0; } - static void set_md3(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md3 = md0; } - static void set_md4(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md4 = md0; } - static void set_md5(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md5 = md0; } - static void set_md6(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md6 = md0; } - static void set_md7(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md7 = md0; } - static void set_md8(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md8 = md0; } - static void set_sh4_clock(device_t &device, int clock) { downcast<sh34_base_device &>(device).c_clock = clock; } - static void set_sh4_clock(device_t &device, const XTAL &xtal) { set_sh4_clock(device, xtal.value()); } - - static void set_mmu_hacktype(device_t &device, int hacktype) { downcast<sh34_base_device &>(device).m_mmuhack = hacktype; } + void set_md0(int md0) { c_md0 = md0; } + void set_md1(int md0) { c_md1 = md0; } + void set_md2(int md0) { c_md2 = md0; } + void set_md3(int md0) { c_md3 = md0; } + void set_md4(int md0) { c_md4 = md0; } + void set_md5(int md0) { c_md5 = md0; } + void set_md6(int md0) { c_md6 = md0; } + void set_md7(int md0) { c_md7 = md0; } + void set_md8(int md0) { c_md8 = md0; } + void set_sh4_clock(int clock) { c_clock = clock; } + void set_sh4_clock(const XTAL &xtal) { set_sh4_clock(xtal.value()); } + + void set_mmu_hacktype(int hacktype) { m_mmuhack = hacktype; } TIMER_CALLBACK_MEMBER( sh4_refresh_timer_callback ); TIMER_CALLBACK_MEMBER( sh4_rtc_timer_callback ); diff --git a/src/devices/cpu/sharc/sharc.h b/src/devices/cpu/sharc/sharc.h index 7780f44288b..e183fb6a866 100644 --- a/src/devices/cpu/sharc/sharc.h +++ b/src/devices/cpu/sharc/sharc.h @@ -74,7 +74,7 @@ #define MCFG_SHARC_BOOT_MODE(boot_mode) \ - adsp21062_device::set_boot_mode(*device, adsp21062_device::boot_mode); + downcast<adsp21062_device &>(*device).set_boot_mode(adsp21062_device::boot_mode); class sharc_frontend; @@ -95,8 +95,8 @@ public: // construction/destruction adsp21062_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - // static configuration helpers - static void set_boot_mode(device_t &device, const sharc_boot_mode boot_mode) { downcast<adsp21062_device &>(device).m_boot_mode = boot_mode; } + // configuration helpers + void set_boot_mode(const sharc_boot_mode boot_mode) { m_boot_mode = boot_mode; } void set_flag_input(int flag_num, int state); void external_iop_write(uint32_t address, uint32_t data); diff --git a/src/devices/cpu/sm510/sm500.h b/src/devices/cpu/sm510/sm500.h index 36e361eecdb..b0d056b47bd 100644 --- a/src/devices/cpu/sm510/sm500.h +++ b/src/devices/cpu/sm510/sm500.h @@ -18,7 +18,7 @@ // LCD segment outputs: H1/2 as a0, O group as a1-a4, O data as d0-d3 #define MCFG_SM500_WRITE_O_CB(_devcb) \ - devcb = &sm500_device::set_write_o_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm500_device &>(*device).set_write_o_callback(DEVCB_##_devcb); // see sm510.h for ACL, K, R, alpha, beta @@ -79,8 +79,8 @@ class sm500_device : public sm510_base_device public: sm500_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <class Object> static devcb_base &set_write_o_callback(device_t &device, Object &&cb) { return downcast<sm500_device &>(device).m_write_o.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_write_o_callback(Object &&cb) { return m_write_o.set_callback(std::forward<Object>(cb)); } protected: sm500_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int o_pins, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data); diff --git a/src/devices/cpu/sm510/sm510.h b/src/devices/cpu/sm510/sm510.h index e4805188f75..d51aca23bcf 100644 --- a/src/devices/cpu/sm510/sm510.h +++ b/src/devices/cpu/sm510/sm510.h @@ -15,45 +15,45 @@ // 4-bit K input port (pull-down) #define MCFG_SM510_READ_K_CB(_devcb) \ - devcb = &sm510_base_device::set_read_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb); // when in halt state, any K input going High can wake up the CPU, // driver is required to use set_input_line(SM510_INPUT_LINE_K, state) #define SM510_INPUT_LINE_K 0 // 1-bit BA(aka alpha) input pin (pull-up) #define MCFG_SM510_READ_BA_CB(_devcb) \ - devcb = &sm510_base_device::set_read_ba_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_read_ba_callback(DEVCB_##_devcb); // 1-bit B(beta) input pin (pull-up) #define MCFG_SM510_READ_B_CB(_devcb) \ - devcb = &sm510_base_device::set_read_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_read_b_callback(DEVCB_##_devcb); // 8-bit S strobe output port #define MCFG_SM510_WRITE_S_CB(_devcb) \ - devcb = &sm510_base_device::set_write_s_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_s_callback(DEVCB_##_devcb); // 1/2/4-bit R (buzzer/melody) output port #define MCFG_SM510_WRITE_R_CB(_devcb) \ - devcb = &sm510_base_device::set_write_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_r_callback(DEVCB_##_devcb); // For SM510, SM500, SM5A, R port output is selected with a mask option, // either from the divider or direct contol. Documented options are: // SM510/SM5A: control, 2(4096Hz meant for alarm sound) // SM500: 14, 11, 3 (divider f1, f4, f12) #define MCFG_SM510_R_MASK_OPTION(_bit) \ - sm510_base_device::set_r_mask_option(*device, _bit); + downcast<sm510_base_device &>(*device).set_r_mask_option(_bit); #define SM510_R_CONTROL_OUTPUT -1 // LCD segment outputs: H1-4 as offset(low), a/b/c 1-16 as data d0-d15 #define MCFG_SM510_WRITE_SEGA_CB(_devcb) \ - devcb = &sm510_base_device::set_write_sega_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_sega_callback(DEVCB_##_devcb); #define MCFG_SM510_WRITE_SEGB_CB(_devcb) \ - devcb = &sm510_base_device::set_write_segb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_segb_callback(DEVCB_##_devcb); #define MCFG_SM510_WRITE_SEGC_CB(_devcb) \ - devcb = &sm510_base_device::set_write_segc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_segc_callback(DEVCB_##_devcb); // LCD bs output: same as above, but only up to 2 bits used #define MCFG_SM510_WRITE_SEGBS_CB(_devcb) \ - devcb = &sm510_base_device::set_write_segbs_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_segbs_callback(DEVCB_##_devcb); // LCD output lazy combination #define MCFG_SM510_WRITE_SEGS_CB(_devcb) \ @@ -125,18 +125,18 @@ public: , m_write_r(*this) { } - // static configuration helpers - template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_ba_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_ba.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_s_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_s.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_r.set_callback(std::forward<Object>(cb)); } - static void set_r_mask_option(device_t &device, int bit) { downcast<sm510_base_device &>(device).m_r_mask_option = bit; } - - template <class Object> static devcb_base &set_write_sega_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_sega.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_segb_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_segc_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segc.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_segbs_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segbs.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_ba_callback(Object &&cb) { return m_read_ba.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_b_callback(Object &&cb) { return m_read_b.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_s_callback(Object &&cb) { return m_write_s.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r_callback(Object &&cb) { return m_write_r.set_callback(std::forward<Object>(cb)); } + void set_r_mask_option(int bit) { m_r_mask_option = bit; } + + template <class Object> devcb_base &set_write_sega_callback(Object &&cb) { return m_write_sega.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_segb_callback(Object &&cb) { return m_write_segb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_segc_callback(Object &&cb) { return m_write_segc.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_segbs_callback(Object &&cb) { return m_write_segbs.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/sm8500/sm8500.h b/src/devices/cpu/sm8500/sm8500.h index ac9aea3fe82..34e3242f957 100644 --- a/src/devices/cpu/sm8500/sm8500.h +++ b/src/devices/cpu/sm8500/sm8500.h @@ -6,10 +6,10 @@ #pragma once #define MCFG_SM8500_DMA_CB(_devcb) \ - devcb = &sm8500_cpu_device::set_dma_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sm8500_cpu_device &>(*device).set_dma_cb(DEVCB_##_devcb); #define MCFG_SM8500_TIMER_CB(_devcb) \ - devcb = &sm8500_cpu_device::set_timer_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sm8500_cpu_device &>(*device).set_timer_cb(DEVCB_##_devcb); enum { @@ -28,9 +28,9 @@ public: // construction/destruction sm8500_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - // static configuration helpers - template <class Object> static devcb_base &set_dma_cb(device_t &device, Object &&cb) { return downcast<sm8500_cpu_device &>(device).m_dma_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_timer_cb(device_t &device, Object &&cb) { return downcast<sm8500_cpu_device &>(device).m_timer_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_dma_cb(Object &&cb) { return m_dma_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_timer_cb(Object &&cb) { return m_timer_func.set_callback(std::forward<Object>(cb)); } /* interrupts */ static constexpr int ILL_INT = 0; diff --git a/src/devices/cpu/sparc/sparc.h b/src/devices/cpu/sparc/sparc.h index 8d91183ee1a..2991886adfa 100644 --- a/src/devices/cpu/sparc/sparc.h +++ b/src/devices/cpu/sparc/sparc.h @@ -20,7 +20,7 @@ // TODO: when there are more SPARC CPUs, move setter to a base class #define MCFG_SPARC_ADD_ASI_DESC(desc) \ - mb86901_device::add_asi_desc(*device, [](sparc_disassembler *dasm) { dasm->add_asi_desc(desc); }); + downcast<mb86901_device &>(*device).add_asi_desc([](sparc_disassembler *dasm) { dasm->add_asi_desc(desc); }); class mb86901_device : public cpu_device, protected sparc_disassembler::config { @@ -51,7 +51,7 @@ public: uint8_t get_asi() { return m_asi; } uint32_t pc() { return m_pc; } - static void add_asi_desc(device_t &device, std::function<void (sparc_disassembler *)> f) { downcast<mb86901_device &>(device).m_asi_desc_adder = f; } + void add_asi_desc(std::function<void (sparc_disassembler *)> f) { m_asi_desc_adder = f; } #if LOG_FCODES void enable_log_fcodes(bool enable) { m_log_fcodes = enable; } diff --git a/src/devices/cpu/superfx/superfx.h b/src/devices/cpu/superfx/superfx.h index 0bd060bb5fa..28c474d4d92 100644 --- a/src/devices/cpu/superfx/superfx.h +++ b/src/devices/cpu/superfx/superfx.h @@ -90,7 +90,7 @@ enum #define MCFG_SUPERFX_OUT_IRQ(_devcb) \ - devcb = &superfx_device::set_out_irq_func(*device, DEVCB_##_devcb); + devcb = &downcast<superfx_device &>(*device).set_out_irq_func(DEVCB_##_devcb); class superfx_device : public cpu_device, public superfx_disassembler::config @@ -99,8 +99,8 @@ public: // construction/destruction superfx_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - // static configuration helpers - template <class Object> static devcb_base &set_out_irq_func(device_t &device, Object &&cb) { return downcast<superfx_device &>(device).m_out_irq_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_out_irq_func(Object &&cb) { return m_out_irq_func.set_callback(std::forward<Object>(cb)); } uint8_t mmio_read(uint32_t addr); void mmio_write(uint32_t addr, uint8_t data); diff --git a/src/devices/cpu/t11/t11.h b/src/devices/cpu/t11/t11.h index 27f1177b03f..2ca0dd0e425 100644 --- a/src/devices/cpu/t11/t11.h +++ b/src/devices/cpu/t11/t11.h @@ -29,10 +29,10 @@ enum #define MCFG_T11_INITIAL_MODE(_mode) \ - t11_device::set_initial_mode(*device, _mode); + downcast<t11_device &>(*device).set_initial_mode(_mode); #define MCFG_T11_RESET(_devcb) \ - devcb = &t11_device::set_out_reset_func(*device, DEVCB_##_devcb); + devcb = &downcast<t11_device &>(*device).set_out_reset_func(DEVCB_##_devcb); class t11_device : public cpu_device { @@ -40,9 +40,9 @@ public: // construction/destruction t11_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - // static configuration helpers - static void set_initial_mode(device_t &device, const uint16_t mode) { downcast<t11_device &>(device).c_initial_mode = mode; } - template <class Object> static devcb_base &set_out_reset_func(device_t &device, Object &&cb) { return downcast<t11_device &>(device).m_out_reset_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + void set_initial_mode(const uint16_t mode) { c_initial_mode = mode; } + template <class Object> devcb_base &set_out_reset_func(Object &&cb) { return m_out_reset_func.set_callback(std::forward<Object>(cb)); } protected: t11_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h index abd4c081c40..bd3aa4ab249 100644 --- a/src/devices/cpu/tlcs90/tlcs90.h +++ b/src/devices/cpu/tlcs90/tlcs90.h @@ -8,59 +8,59 @@ // I/O callbacks #define MCFG_TLCS90_PORT_P0_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P1_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(1, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P2_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P3_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P4_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P5_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 5, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(5, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P6_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 6, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(6, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P7_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 7, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(7, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P8_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 8, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(8, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P0_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P1_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P2_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P3_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P4_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P5_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 5, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(5, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P6_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 6, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(6, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P7_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 7, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(7, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P8_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 8, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(8, DEVCB_##_devcb); enum tlcs90_e_irq { INTSWI = 0, INTNMI, INTWD, INT0, INTT0, INTT1, INTT2, INTT3, INTT4, INT1, INTT5, INT2, INTRX, INTTX, INTMAX }; @@ -88,16 +88,16 @@ protected: public: - // static configuration - template<class Object> static devcb_base &set_port_read_cb(device_t &device, int port, Object &&object) + // configuration + template<class Object> devcb_base &set_port_read_cb(int port, Object &&object) { assert(port >= 0 && port < MAX_PORTS); - return downcast<tlcs90_device &>(device).m_port_read_cb[port].set_callback(std::forward<Object>(object)); + return m_port_read_cb[port].set_callback(std::forward<Object>(object)); } - template<class Object> static devcb_base &set_port_write_cb(device_t &device, int port, Object &&object) + template<class Object> devcb_base &set_port_write_cb(int port, Object &&object) { assert(port >= 0 && port < MAX_PORTS); - return downcast<tlcs90_device &>(device).m_port_write_cb[port].set_callback(std::forward<Object>(object)); + return m_port_write_cb[port].set_callback(std::forward<Object>(object)); } protected: diff --git a/src/devices/cpu/tlcs900/900tbl.hxx b/src/devices/cpu/tlcs900/900tbl.hxx index dc331c1d85c..80f46c0d1c1 100644 --- a/src/devices/cpu/tlcs900/900tbl.hxx +++ b/src/devices/cpu/tlcs900/900tbl.hxx @@ -9,28 +9,28 @@ TLCS-900/H instruction set enum e_operand { - _A=1, /* current register set register A */ - _C8, /* current register set byte */ - _C16, /* current register set word */ - _C32, /* current register set long word */ - _MC16, /* current register set mul/div register word */ - _CC, /* condition */ - _CR8, - _CR16, - _CR32, - _D8, /* byte displacement */ - _D16, /* word displacement */ - _F, /* F register */ - _I3, /* immediate 3 bit (part of last byte) */ - _I8, /* immediate byte */ - _I16, /* immediate word */ - _I24, /* immediate 3 byte address */ - _I32, /* immediate long word */ - _M, /* memory location (defined by extension) */ - _M8, /* (8) */ - _M16, /* (i16) */ - _R, /* register (defined by extension) */ - _SR /* status register */ + p_A=1, /* current register set register A */ + p_C8, /* current register set byte */ + p_C16, /* current register set word */ + p_C32, /* current register set long word */ + p_MC16, /* current register set mul/div register word */ + p_CC, /* condition */ + p_CR8, + p_CR16, + p_CR32, + p_D8, /* byte displacement */ + p_D16, /* word displacement */ + p_F, /* F register */ + p_I3, /* immediate 3 bit (part of last byte) */ + p_I8, /* immediate byte */ + p_I16, /* immediate word */ + p_I24, /* immediate 3 byte address */ + p_I32, /* immediate long word */ + p_M, /* memory location (defined by extension) */ + p_M8, /* (8) */ + p_M16, /* (i16) */ + p_R, /* register (defined by extension) */ + p_SR /* status register */ }; @@ -1231,295 +1231,295 @@ uint32_t tlcs900h_device::divs16( int32_t a, int16_t b ) } -void tlcs900h_device::_ADCBMI() +void tlcs900h_device::op_ADCBMI() { WRMEM( m_ea1.d, adc8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_ADCBMR() +void tlcs900h_device::op_ADCBMR() { WRMEM( m_ea1.d, adc8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_ADCBRI() +void tlcs900h_device::op_ADCBRI() { *m_p1_reg8 = adc8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_ADCBRM() +void tlcs900h_device::op_ADCBRM() { *m_p1_reg8 = adc8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ADCBRR() +void tlcs900h_device::op_ADCBRR() { *m_p1_reg8 = adc8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ADCWMI() +void tlcs900h_device::op_ADCWMI() { WRMEMW( m_ea1.d, adc16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_ADCWMR() +void tlcs900h_device::op_ADCWMR() { WRMEMW( m_ea1.d, adc16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_ADCWRI() +void tlcs900h_device::op_ADCWRI() { *m_p1_reg16 = adc16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_ADCWRM() +void tlcs900h_device::op_ADCWRM() { *m_p1_reg16 = adc16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_ADCWRR() +void tlcs900h_device::op_ADCWRR() { *m_p1_reg16 = adc16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_ADCLMR() +void tlcs900h_device::op_ADCLMR() { WRMEML( m_ea1.d, adc32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_ADCLRI() +void tlcs900h_device::op_ADCLRI() { *m_p1_reg32 = adc32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_ADCLRM() +void tlcs900h_device::op_ADCLRM() { *m_p1_reg32 = adc32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_ADCLRR() +void tlcs900h_device::op_ADCLRR() { *m_p1_reg32 = adc32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_ADDBMI() +void tlcs900h_device::op_ADDBMI() { WRMEM( m_ea1.d, add8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_ADDBMR() +void tlcs900h_device::op_ADDBMR() { WRMEM( m_ea1.d, add8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_ADDBRI() +void tlcs900h_device::op_ADDBRI() { *m_p1_reg8 = add8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_ADDBRM() +void tlcs900h_device::op_ADDBRM() { *m_p1_reg8 = add8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ADDBRR() +void tlcs900h_device::op_ADDBRR() { *m_p1_reg8 = add8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ADDWMI() +void tlcs900h_device::op_ADDWMI() { WRMEMW( m_ea1.d, add16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_ADDWMR() +void tlcs900h_device::op_ADDWMR() { WRMEMW( m_ea1.d, add16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_ADDWRI() +void tlcs900h_device::op_ADDWRI() { *m_p1_reg16 = add16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_ADDWRM() +void tlcs900h_device::op_ADDWRM() { *m_p1_reg16 = add16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_ADDWRR() +void tlcs900h_device::op_ADDWRR() { *m_p1_reg16 = add16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_ADDLMR() +void tlcs900h_device::op_ADDLMR() { WRMEML( m_ea1.d, add32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_ADDLRI() +void tlcs900h_device::op_ADDLRI() { *m_p1_reg32 = add32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_ADDLRM() +void tlcs900h_device::op_ADDLRM() { *m_p1_reg32 = add32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_ADDLRR() +void tlcs900h_device::op_ADDLRR() { *m_p1_reg32 = add32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_ANDBMI() +void tlcs900h_device::op_ANDBMI() { WRMEM( m_ea1.d, and8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_ANDBMR() +void tlcs900h_device::op_ANDBMR() { WRMEM( m_ea1.d, and8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_ANDBRI() +void tlcs900h_device::op_ANDBRI() { *m_p1_reg8 = and8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_ANDBRM() +void tlcs900h_device::op_ANDBRM() { *m_p1_reg8 = and8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ANDBRR() +void tlcs900h_device::op_ANDBRR() { *m_p1_reg8 = and8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ANDWMI() +void tlcs900h_device::op_ANDWMI() { WRMEMW( m_ea1.d, and16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_ANDWMR() +void tlcs900h_device::op_ANDWMR() { WRMEMW( m_ea1.d, and16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_ANDWRI() +void tlcs900h_device::op_ANDWRI() { *m_p1_reg16 = and16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_ANDWRM() +void tlcs900h_device::op_ANDWRM() { *m_p1_reg16 = and16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_ANDWRR() +void tlcs900h_device::op_ANDWRR() { *m_p1_reg16 = and16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_ANDLMR() +void tlcs900h_device::op_ANDLMR() { WRMEML( m_ea1.d, and32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_ANDLRI() +void tlcs900h_device::op_ANDLRI() { *m_p1_reg32 = and32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_ANDLRM() +void tlcs900h_device::op_ANDLRM() { *m_p1_reg32 = and32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_ANDLRR() +void tlcs900h_device::op_ANDLRR() { *m_p1_reg32 = and32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_ANDCFBIM() +void tlcs900h_device::op_ANDCFBIM() { andcf8( m_imm1.b.l, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ANDCFBIR() +void tlcs900h_device::op_ANDCFBIR() { andcf8( m_imm1.b.l, *m_p2_reg8 ); } -void tlcs900h_device::_ANDCFBRM() +void tlcs900h_device::op_ANDCFBRM() { andcf8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ANDCFBRR() +void tlcs900h_device::op_ANDCFBRR() { andcf8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ANDCFWIR() +void tlcs900h_device::op_ANDCFWIR() { andcf16( m_imm1.b.l, *m_p2_reg16 ); } -void tlcs900h_device::_ANDCFWRR() +void tlcs900h_device::op_ANDCFWRR() { andcf16( *m_p1_reg8, *m_p2_reg16 ); } -void tlcs900h_device::_BITBIM() +void tlcs900h_device::op_BITBIM() { m_sr.b.l &= ~ ( FLAG_ZF | FLAG_NF ); if ( RDMEM( m_ea2.d ) & ( 1 << ( m_imm1.b.l & 0x07 ) ) ) @@ -1529,7 +1529,7 @@ void tlcs900h_device::_BITBIM() } -void tlcs900h_device::_BITBIR() +void tlcs900h_device::op_BITBIR() { m_sr.b.l &= ~ ( FLAG_ZF | FLAG_NF ); if ( *m_p2_reg8 & ( 1 << ( m_imm1.b.l & 0x0f ) ) ) @@ -1539,7 +1539,7 @@ void tlcs900h_device::_BITBIR() } -void tlcs900h_device::_BITWIR() +void tlcs900h_device::op_BITWIR() { m_sr.b.l &= ~ ( FLAG_ZF | FLAG_NF ); if ( *m_p2_reg16 & ( 1 << ( m_imm1.b.l & 0x0f ) ) ) @@ -1549,7 +1549,7 @@ void tlcs900h_device::_BITWIR() } -void tlcs900h_device::_BS1BRR() +void tlcs900h_device::op_BS1BRR() { uint16_t r = *m_p2_reg16; @@ -1568,7 +1568,7 @@ void tlcs900h_device::_BS1BRR() } -void tlcs900h_device::_BS1FRR() +void tlcs900h_device::op_BS1FRR() { uint16_t r = *m_p2_reg16; @@ -1587,7 +1587,7 @@ void tlcs900h_device::_BS1FRR() } -void tlcs900h_device::_CALLI() +void tlcs900h_device::op_CALLI() { m_xssp.d -= 4; WRMEML( m_xssp.d, m_pc.d ); @@ -1596,7 +1596,7 @@ void tlcs900h_device::_CALLI() } -void tlcs900h_device::_CALLM() +void tlcs900h_device::op_CALLM() { if ( condition_true( m_op ) ) { @@ -1609,7 +1609,7 @@ void tlcs900h_device::_CALLM() } -void tlcs900h_device::_CALR() +void tlcs900h_device::op_CALR() { m_xssp.d -= 4; WRMEML( m_xssp.d, m_pc.d ); @@ -1618,116 +1618,116 @@ void tlcs900h_device::_CALR() } -void tlcs900h_device::_CCF() +void tlcs900h_device::op_CCF() { m_sr.b.l &= ~ FLAG_NF; m_sr.b.l ^= FLAG_CF; } -void tlcs900h_device::_CHGBIM() +void tlcs900h_device::op_CHGBIM() { WRMEM( m_ea2.d, RDMEM( m_ea2.d ) ^ ( 1 << ( m_imm1.b.l & 0x07 ) ) ); } -void tlcs900h_device::_CHGBIR() +void tlcs900h_device::op_CHGBIR() { *m_p2_reg8 ^= ( 1 << ( m_imm1.b.l & 0x07 ) ); } -void tlcs900h_device::_CHGWIR() +void tlcs900h_device::op_CHGWIR() { *m_p2_reg16 ^= ( 1 << ( m_imm1.b.l & 0x0f ) ); } -void tlcs900h_device::_CPBMI() +void tlcs900h_device::op_CPBMI() { sub8( RDMEM( m_ea1.d ), m_imm2.b.l ); } -void tlcs900h_device::_CPBMR() +void tlcs900h_device::op_CPBMR() { sub8( RDMEM( m_ea1.d ), *m_p2_reg8 ); } -void tlcs900h_device::_CPBRI() +void tlcs900h_device::op_CPBRI() { sub8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_CPBRM() +void tlcs900h_device::op_CPBRM() { sub8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_CPBRR() +void tlcs900h_device::op_CPBRR() { sub8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_CPWMI() +void tlcs900h_device::op_CPWMI() { sub16( RDMEMW( m_ea1.d ), m_imm2.w.l ); } -void tlcs900h_device::_CPWMR() +void tlcs900h_device::op_CPWMR() { sub16( RDMEMW( m_ea1.d ), *m_p2_reg16 ); } -void tlcs900h_device::_CPWRI() +void tlcs900h_device::op_CPWRI() { sub16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_CPWRM() +void tlcs900h_device::op_CPWRM() { sub16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_CPWRR() +void tlcs900h_device::op_CPWRR() { sub16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_CPLMR() +void tlcs900h_device::op_CPLMR() { sub32( RDMEML( m_ea1.d ), *m_p2_reg32 ); } -void tlcs900h_device::_CPLRI() +void tlcs900h_device::op_CPLRI() { sub32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_CPLRM() +void tlcs900h_device::op_CPLRM() { sub32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_CPLRR() +void tlcs900h_device::op_CPLRR() { sub32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_CPD() +void tlcs900h_device::op_CPD() { uint8_t result = *get_reg8_current( 1 ) - RDMEM( *m_p2_reg32 ); uint16_t *bc = get_reg16_current( 1 ); @@ -1740,9 +1740,9 @@ void tlcs900h_device::_CPD() } -void tlcs900h_device::_CPDR() +void tlcs900h_device::op_CPDR() { - _CPD(); + op_CPD(); if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF ) { @@ -1753,7 +1753,7 @@ void tlcs900h_device::_CPDR() } -void tlcs900h_device::_CPDW() +void tlcs900h_device::op_CPDW() { uint16_t result = *get_reg16_current( 0 ) - RDMEMW( *m_p2_reg32 ); uint16_t *bc = get_reg16_current( 1 ); @@ -1766,9 +1766,9 @@ void tlcs900h_device::_CPDW() } -void tlcs900h_device::_CPDRW() +void tlcs900h_device::op_CPDRW() { - _CPDW(); + op_CPDW(); if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF ) { @@ -1779,7 +1779,7 @@ void tlcs900h_device::_CPDRW() } -void tlcs900h_device::_CPI() +void tlcs900h_device::op_CPI() { uint8_t result = *get_reg8_current( 1 ) - RDMEM( *m_p2_reg32 ); uint16_t *bc = get_reg16_current( 1 ); @@ -1792,9 +1792,9 @@ void tlcs900h_device::_CPI() } -void tlcs900h_device::_CPIR() +void tlcs900h_device::op_CPIR() { - _CPI(); + op_CPI(); if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF ) { @@ -1805,7 +1805,7 @@ void tlcs900h_device::_CPIR() } -void tlcs900h_device::_CPIW() +void tlcs900h_device::op_CPIW() { uint16_t result = *get_reg16_current( 0 ) - RDMEMW( *m_p2_reg32 ); uint16_t *bc = get_reg16_current( 1 ); @@ -1818,9 +1818,9 @@ void tlcs900h_device::_CPIW() } -void tlcs900h_device::_CPIRW() +void tlcs900h_device::op_CPIRW() { - _CPIW(); + op_CPIW(); if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF ) { @@ -1831,21 +1831,21 @@ void tlcs900h_device::_CPIRW() } -void tlcs900h_device::_CPLBR() +void tlcs900h_device::op_CPLBR() { *m_p1_reg8 = ~ *m_p1_reg8; m_sr.b.l |= FLAG_HF | FLAG_NF; } -void tlcs900h_device::_CPLWR() +void tlcs900h_device::op_CPLWR() { *m_p1_reg16 = ~ *m_p1_reg16; m_sr.b.l |= FLAG_HF | FLAG_NF; } -void tlcs900h_device::_DAABR() +void tlcs900h_device::op_DAABR() { uint8_t oldval = *m_p1_reg8; uint8_t fixval = 0; @@ -1907,13 +1907,13 @@ void tlcs900h_device::_DAABR() } -void tlcs900h_device::_DB() +void tlcs900h_device::op_DB() { logerror("%08x: invalid or illegal instruction\n", m_pc.d ); } -void tlcs900h_device::_DECBIM() +void tlcs900h_device::op_DECBIM() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -1922,7 +1922,7 @@ void tlcs900h_device::_DECBIM() } -void tlcs900h_device::_DECBIR() +void tlcs900h_device::op_DECBIR() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -1931,7 +1931,7 @@ void tlcs900h_device::_DECBIR() } -void tlcs900h_device::_DECWIM() +void tlcs900h_device::op_DECWIM() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -1940,19 +1940,19 @@ void tlcs900h_device::_DECWIM() } -void tlcs900h_device::_DECWIR() +void tlcs900h_device::op_DECWIR() { *m_p2_reg16 -= m_imm1.b.l ? m_imm1.b.l : 8; } -void tlcs900h_device::_DECLIR() +void tlcs900h_device::op_DECLIR() { *m_p2_reg32 -= m_imm1.b.l ? m_imm1.b.l : 8; } -void tlcs900h_device::_DECF() +void tlcs900h_device::op_DECF() { /* 0x03 for MAX mode, 0x07 for MIN mode */ m_sr.b.h = ( m_sr.b.h & 0xf8 ) | ( ( m_sr.b.h - 1 ) & 0x07 ); @@ -1960,79 +1960,79 @@ void tlcs900h_device::_DECF() } -void tlcs900h_device::_DIVBRI() +void tlcs900h_device::op_DIVBRI() { *m_p1_reg16 = div8( *m_p1_reg16, m_imm2.b.l ); } -void tlcs900h_device::_DIVBRM() +void tlcs900h_device::op_DIVBRM() { *m_p1_reg16 = div8( *m_p1_reg16, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_DIVBRR() +void tlcs900h_device::op_DIVBRR() { *m_p1_reg16 = div8( *m_p1_reg16, *m_p2_reg8 ); } -void tlcs900h_device::_DIVWRI() +void tlcs900h_device::op_DIVWRI() { *m_p1_reg32 = div16( *m_p1_reg32, m_imm2.w.l ); } -void tlcs900h_device::_DIVWRM() +void tlcs900h_device::op_DIVWRM() { *m_p1_reg32 = div16( *m_p1_reg32, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_DIVWRR() +void tlcs900h_device::op_DIVWRR() { *m_p1_reg32 = div16( *m_p1_reg32, *m_p2_reg16 ); } -void tlcs900h_device::_DIVSBRI() +void tlcs900h_device::op_DIVSBRI() { *m_p1_reg16 = divs8( *m_p1_reg16, m_imm2.b.l ); } -void tlcs900h_device::_DIVSBRM() +void tlcs900h_device::op_DIVSBRM() { *m_p1_reg16 = divs8( *m_p1_reg16, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_DIVSBRR() +void tlcs900h_device::op_DIVSBRR() { *m_p1_reg16 = divs8( *m_p1_reg16, *m_p2_reg8 ); } -void tlcs900h_device::_DIVSWRI() +void tlcs900h_device::op_DIVSWRI() { *m_p1_reg32 = divs16( *m_p1_reg32, m_imm2.w.l ); } -void tlcs900h_device::_DIVSWRM() +void tlcs900h_device::op_DIVSWRM() { *m_p1_reg32 = divs16( *m_p1_reg32, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_DIVSWRR() +void tlcs900h_device::op_DIVSWRR() { *m_p1_reg32 = divs16( *m_p1_reg32, *m_p2_reg16 ); } -void tlcs900h_device::_DJNZB() +void tlcs900h_device::op_DJNZB() { *m_p1_reg8 -= 1; if ( *m_p1_reg8 ) @@ -2044,7 +2044,7 @@ void tlcs900h_device::_DJNZB() } -void tlcs900h_device::_DJNZW() +void tlcs900h_device::op_DJNZW() { *m_p1_reg16 -= 1; if ( *m_p1_reg16 ) @@ -2056,14 +2056,14 @@ void tlcs900h_device::_DJNZW() } -void tlcs900h_device::_EI() +void tlcs900h_device::op_EI() { m_sr.b.h = ( m_sr.b.h & 0x8f ) | ( ( m_imm1.b.l & 0x07 ) << 4 ); m_check_irqs = 1; } -void tlcs900h_device::_EXBMR() +void tlcs900h_device::op_EXBMR() { uint8_t i = RDMEM( m_ea1.d ); @@ -2072,7 +2072,7 @@ void tlcs900h_device::_EXBMR() } -void tlcs900h_device::_EXBRR() +void tlcs900h_device::op_EXBRR() { uint8_t i = *m_p2_reg8; @@ -2081,7 +2081,7 @@ void tlcs900h_device::_EXBRR() } -void tlcs900h_device::_EXWMR() +void tlcs900h_device::op_EXWMR() { uint16_t i = RDMEMW( m_ea1.d ); @@ -2090,7 +2090,7 @@ void tlcs900h_device::_EXWMR() } -void tlcs900h_device::_EXWRR() +void tlcs900h_device::op_EXWRR() { uint16_t i = *m_p2_reg16; @@ -2099,7 +2099,7 @@ void tlcs900h_device::_EXWRR() } -void tlcs900h_device::_EXTSWR() +void tlcs900h_device::op_EXTSWR() { if ( *m_p1_reg16 & 0x0080 ) *m_p1_reg16 |= 0xff00; @@ -2108,7 +2108,7 @@ void tlcs900h_device::_EXTSWR() } -void tlcs900h_device::_EXTSLR() +void tlcs900h_device::op_EXTSLR() { if ( *m_p1_reg32 & 0x00008000 ) *m_p1_reg32 |= 0xffff0000; @@ -2117,25 +2117,25 @@ void tlcs900h_device::_EXTSLR() } -void tlcs900h_device::_EXTZWR() +void tlcs900h_device::op_EXTZWR() { *m_p1_reg16 &= 0x00ff; } -void tlcs900h_device::_EXTZLR() +void tlcs900h_device::op_EXTZLR() { *m_p1_reg32 &= 0x0000ffff; } -void tlcs900h_device::_HALT() +void tlcs900h_device::op_HALT() { m_halted = 1; } -void tlcs900h_device::_INCBIM() +void tlcs900h_device::op_INCBIM() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -2144,7 +2144,7 @@ void tlcs900h_device::_INCBIM() } -void tlcs900h_device::_INCBIR() +void tlcs900h_device::op_INCBIR() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -2153,7 +2153,7 @@ void tlcs900h_device::_INCBIR() } -void tlcs900h_device::_INCWIM() +void tlcs900h_device::op_INCWIM() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -2162,19 +2162,19 @@ void tlcs900h_device::_INCWIM() } -void tlcs900h_device::_INCWIR() +void tlcs900h_device::op_INCWIR() { *m_p2_reg16 += m_imm1.b.l ? m_imm1.b.l : 8; } -void tlcs900h_device::_INCLIR() +void tlcs900h_device::op_INCLIR() { *m_p2_reg32 += m_imm1.b.l ? m_imm1.b.l : 8; } -void tlcs900h_device::_INCF() +void tlcs900h_device::op_INCF() { /* 0x03 for MAX mode, 0x07 for MIN mode */ m_sr.b.h = ( m_sr.b.h & 0xf8 ) | ( ( m_sr.b.h + 1 ) & 0x07 ); @@ -2182,14 +2182,14 @@ void tlcs900h_device::_INCF() } -void tlcs900h_device::_JPI() +void tlcs900h_device::op_JPI() { m_pc.d = m_imm1.d; m_prefetch_clear = true; } -void tlcs900h_device::_JPM() +void tlcs900h_device::op_JPM() { if ( condition_true( m_op ) ) { @@ -2200,7 +2200,7 @@ void tlcs900h_device::_JPM() } -void tlcs900h_device::_JR() +void tlcs900h_device::op_JR() { if ( condition_true( m_op ) ) { @@ -2211,7 +2211,7 @@ void tlcs900h_device::_JR() } -void tlcs900h_device::_JRL() +void tlcs900h_device::op_JRL() { if ( condition_true( m_op ) ) { @@ -2222,169 +2222,169 @@ void tlcs900h_device::_JRL() } -void tlcs900h_device::_LDBMI() +void tlcs900h_device::op_LDBMI() { WRMEM( m_ea1.d, m_imm2.b.l ); } -void tlcs900h_device::_LDBMM() +void tlcs900h_device::op_LDBMM() { WRMEM( m_ea1.d, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_LDBMR() +void tlcs900h_device::op_LDBMR() { WRMEM( m_ea1.d, *m_p2_reg8 ); } -void tlcs900h_device::_LDBRI() +void tlcs900h_device::op_LDBRI() { *m_p1_reg8 = m_imm2.b.l; } -void tlcs900h_device::_LDBRM() +void tlcs900h_device::op_LDBRM() { *m_p1_reg8 = RDMEM( m_ea2.d ); } -void tlcs900h_device::_LDBRR() +void tlcs900h_device::op_LDBRR() { *m_p1_reg8 = *m_p2_reg8; } -void tlcs900h_device::_LDWMI() +void tlcs900h_device::op_LDWMI() { WRMEMW( m_ea1.d, m_imm2.w.l ); } -void tlcs900h_device::_LDWMM() +void tlcs900h_device::op_LDWMM() { WRMEMW( m_ea1.d, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_LDWMR() +void tlcs900h_device::op_LDWMR() { WRMEMW( m_ea1.d, *m_p2_reg16 ); } -void tlcs900h_device::_LDWRI() +void tlcs900h_device::op_LDWRI() { *m_p1_reg16 = m_imm2.w.l; } -void tlcs900h_device::_LDWRM() +void tlcs900h_device::op_LDWRM() { *m_p1_reg16 = RDMEMW( m_ea2.d ); } -void tlcs900h_device::_LDWRR() +void tlcs900h_device::op_LDWRR() { *m_p1_reg16 = *m_p2_reg16; } -void tlcs900h_device::_LDLRI() +void tlcs900h_device::op_LDLRI() { *m_p1_reg32 = m_imm2.d; } -void tlcs900h_device::_LDLRM() +void tlcs900h_device::op_LDLRM() { *m_p1_reg32 = RDMEML( m_ea2.d ); } -void tlcs900h_device::_LDLRR() +void tlcs900h_device::op_LDLRR() { *m_p1_reg32 = *m_p2_reg32; } -void tlcs900h_device::_LDLMR() +void tlcs900h_device::op_LDLMR() { WRMEML( m_ea1.d, *m_p2_reg32 ); } -void tlcs900h_device::_LDAW() +void tlcs900h_device::op_LDAW() { *m_p1_reg16 = m_ea2.w.l; } -void tlcs900h_device::_LDAL() +void tlcs900h_device::op_LDAL() { *m_p1_reg32 = m_ea2.d; } -void tlcs900h_device::_LDCBRR() +void tlcs900h_device::op_LDCBRR() { *m_p1_reg8 = *m_p2_reg8; } -void tlcs900h_device::_LDCWRR() +void tlcs900h_device::op_LDCWRR() { *m_p1_reg16 = *m_p2_reg16; } -void tlcs900h_device::_LDCLRR() +void tlcs900h_device::op_LDCLRR() { *m_p1_reg32 = *m_p2_reg32; } -void tlcs900h_device::_LDCFBIM() +void tlcs900h_device::op_LDCFBIM() { ldcf8( m_imm1.b.l, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_LDCFBIR() +void tlcs900h_device::op_LDCFBIR() { ldcf8( m_imm1.b.l, *m_p2_reg8 ); } -void tlcs900h_device::_LDCFBRM() +void tlcs900h_device::op_LDCFBRM() { ldcf8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_LDCFBRR() +void tlcs900h_device::op_LDCFBRR() { ldcf8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_LDCFWIR() +void tlcs900h_device::op_LDCFWIR() { ldcf16( m_imm1.b.l, *m_p2_reg16 ); } -void tlcs900h_device::_LDCFWRR() +void tlcs900h_device::op_LDCFWRR() { ldcf16( *m_p1_reg8, *m_p2_reg16 ); } -void tlcs900h_device::_LDD() +void tlcs900h_device::op_LDD() { uint16_t *bc = get_reg16_current( 1 ); @@ -2400,7 +2400,7 @@ void tlcs900h_device::_LDD() } -void tlcs900h_device::_LDDR() +void tlcs900h_device::op_LDDR() { uint16_t *bc = get_reg16_current( 1 ); @@ -2419,7 +2419,7 @@ void tlcs900h_device::_LDDR() } -void tlcs900h_device::_LDDRW() +void tlcs900h_device::op_LDDRW() { uint16_t *bc = get_reg16_current( 1 ); @@ -2438,7 +2438,7 @@ void tlcs900h_device::_LDDRW() } -void tlcs900h_device::_LDDW() +void tlcs900h_device::op_LDDW() { uint16_t *bc = get_reg16_current( 1 ); @@ -2454,14 +2454,14 @@ void tlcs900h_device::_LDDW() } -void tlcs900h_device::_LDF() +void tlcs900h_device::op_LDF() { m_sr.b.h = ( m_sr.b.h & 0xf8 ) | ( m_imm1.b.l & 0x07 ); m_regbank = m_imm1.b.l & 0x03; } -void tlcs900h_device::_LDI() +void tlcs900h_device::op_LDI() { uint16_t *bc = get_reg16_current( 1 ); @@ -2477,7 +2477,7 @@ void tlcs900h_device::_LDI() } -void tlcs900h_device::_LDIR() +void tlcs900h_device::op_LDIR() { uint16_t *bc = get_reg16_current( 1 ); @@ -2496,7 +2496,7 @@ void tlcs900h_device::_LDIR() } -void tlcs900h_device::_LDIRW() +void tlcs900h_device::op_LDIRW() { uint16_t *bc = get_reg16_current( 1 ); @@ -2515,7 +2515,7 @@ void tlcs900h_device::_LDIRW() } -void tlcs900h_device::_LDIW() +void tlcs900h_device::op_LDIW() { uint16_t *bc = get_reg16_current( 1 ); @@ -2531,7 +2531,7 @@ void tlcs900h_device::_LDIW() } -void tlcs900h_device::_LDX() +void tlcs900h_device::op_LDX() { uint8_t a, b; @@ -2544,7 +2544,7 @@ void tlcs900h_device::_LDX() } -void tlcs900h_device::_LINK() +void tlcs900h_device::op_LINK() { m_xssp.d -= 4; WRMEML( m_xssp.d, *m_p1_reg32 ); @@ -2553,13 +2553,13 @@ void tlcs900h_device::_LINK() } -void tlcs900h_device::_MAX() +void tlcs900h_device::op_MAX() { m_sr.b.h |= 0x04; } -void tlcs900h_device::_MDEC1() +void tlcs900h_device::op_MDEC1() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 += m_imm1.w.l; @@ -2568,7 +2568,7 @@ void tlcs900h_device::_MDEC1() } -void tlcs900h_device::_MDEC2() +void tlcs900h_device::op_MDEC2() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 += m_imm1.w.l; @@ -2577,7 +2577,7 @@ void tlcs900h_device::_MDEC2() } -void tlcs900h_device::_MDEC4() +void tlcs900h_device::op_MDEC4() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 += m_imm1.w.l; @@ -2586,7 +2586,7 @@ void tlcs900h_device::_MDEC4() } -void tlcs900h_device::_MINC1() +void tlcs900h_device::op_MINC1() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 -= m_imm1.w.l; @@ -2595,7 +2595,7 @@ void tlcs900h_device::_MINC1() } -void tlcs900h_device::_MINC2() +void tlcs900h_device::op_MINC2() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 -= m_imm1.w.l; @@ -2604,7 +2604,7 @@ void tlcs900h_device::_MINC2() } -void tlcs900h_device::_MINC4() +void tlcs900h_device::op_MINC4() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 -= m_imm1.w.l; @@ -2613,7 +2613,7 @@ void tlcs900h_device::_MINC4() } -void tlcs900h_device::_MIRRW() +void tlcs900h_device::op_MIRRW() { uint16_t r = *m_p1_reg16; uint16_t s = ( r & 0x01 ); @@ -2631,43 +2631,43 @@ void tlcs900h_device::_MIRRW() } -void tlcs900h_device::_MULBRI() +void tlcs900h_device::op_MULBRI() { *m_p1_reg16 = ( *m_p1_reg16 & 0xff ) * m_imm2.b.l; } -void tlcs900h_device::_MULBRM() +void tlcs900h_device::op_MULBRM() { *m_p1_reg16 = ( *m_p1_reg16 & 0xff ) * RDMEM( m_ea2.d ); } -void tlcs900h_device::_MULBRR() +void tlcs900h_device::op_MULBRR() { *m_p1_reg16 = ( *m_p1_reg16 & 0xff ) * *m_p2_reg8; } -void tlcs900h_device::_MULWRI() +void tlcs900h_device::op_MULWRI() { *m_p1_reg32 = ( *m_p1_reg32 & 0xffff ) * m_imm2.w.l; } -void tlcs900h_device::_MULWRM() +void tlcs900h_device::op_MULWRM() { *m_p1_reg32 = ( *m_p1_reg32 & 0xffff ) * RDMEMW( m_ea2.d ); } -void tlcs900h_device::_MULWRR() +void tlcs900h_device::op_MULWRR() { *m_p1_reg32 = ( *m_p1_reg32 & 0xffff ) * *m_p2_reg16; } -void tlcs900h_device::_MULAR() +void tlcs900h_device::op_MULAR() { uint32_t *xde = get_reg32_current( 2 ); uint32_t *xhl = get_reg32_current( 3 ); @@ -2680,317 +2680,317 @@ void tlcs900h_device::_MULAR() } -void tlcs900h_device::_MULSBRI() +void tlcs900h_device::op_MULSBRI() { *m_p1_reg16 = (int8_t)( *m_p1_reg16 & 0xff ) * m_imm2.sb.l; } -void tlcs900h_device::_MULSBRM() +void tlcs900h_device::op_MULSBRM() { *m_p1_reg16 = (int8_t)( *m_p1_reg16 & 0xff ) * (int8_t)RDMEM( m_ea2.d ); } -void tlcs900h_device::_MULSBRR() +void tlcs900h_device::op_MULSBRR() { *m_p1_reg16 = (int8_t)( *m_p1_reg16 & 0xff ) * (int8_t)*m_p2_reg8; } -void tlcs900h_device::_MULSWRI() +void tlcs900h_device::op_MULSWRI() { *m_p1_reg32 = (int16_t)( *m_p1_reg32 & 0xffff ) * m_imm2.sw.l; } -void tlcs900h_device::_MULSWRM() +void tlcs900h_device::op_MULSWRM() { *m_p1_reg32 = (int16_t)( *m_p1_reg32 & 0xffff ) * (int16_t)RDMEMW( m_ea2.d ); } -void tlcs900h_device::_MULSWRR() +void tlcs900h_device::op_MULSWRR() { *m_p1_reg32 = (int16_t)( *m_p1_reg32 & 0xffff ) * (int16_t)*m_p2_reg16; } -void tlcs900h_device::_NEGBR() +void tlcs900h_device::op_NEGBR() { *m_p1_reg8 = sub8( 0, *m_p1_reg8 ); } -void tlcs900h_device::_NEGWR() +void tlcs900h_device::op_NEGWR() { *m_p1_reg16 = sub16( 0, *m_p1_reg16 ); } -void tlcs900h_device::_NOP() +void tlcs900h_device::op_NOP() { /* Do nothing */ } -void tlcs900h_device::_NORMAL() +void tlcs900h_device::op_NORMAL() { m_sr.b.h &= 0x7F; } -void tlcs900h_device::_ORBMI() +void tlcs900h_device::op_ORBMI() { WRMEM( m_ea1.d, or8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_ORBMR() +void tlcs900h_device::op_ORBMR() { WRMEM( m_ea1.d, or8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_ORBRI() +void tlcs900h_device::op_ORBRI() { *m_p1_reg8 = or8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_ORBRM() +void tlcs900h_device::op_ORBRM() { *m_p1_reg8 = or8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ORBRR() +void tlcs900h_device::op_ORBRR() { *m_p1_reg8 = or8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ORWMI() +void tlcs900h_device::op_ORWMI() { WRMEMW( m_ea1.d, or16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_ORWMR() +void tlcs900h_device::op_ORWMR() { WRMEMW( m_ea1.d, or16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_ORWRI() +void tlcs900h_device::op_ORWRI() { *m_p1_reg16 = or16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_ORWRM() +void tlcs900h_device::op_ORWRM() { *m_p1_reg16 = or16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_ORWRR() +void tlcs900h_device::op_ORWRR() { *m_p1_reg16 = or16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_ORLMR() +void tlcs900h_device::op_ORLMR() { WRMEML( m_ea1.d, or32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_ORLRI() +void tlcs900h_device::op_ORLRI() { *m_p1_reg32 = or32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_ORLRM() +void tlcs900h_device::op_ORLRM() { *m_p1_reg32 = or32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_ORLRR() +void tlcs900h_device::op_ORLRR() { *m_p1_reg32 = or32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_ORCFBIM() +void tlcs900h_device::op_ORCFBIM() { orcf8( m_imm1.b.l, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ORCFBIR() +void tlcs900h_device::op_ORCFBIR() { orcf8( m_imm1.b.l, *m_p2_reg8 ); } -void tlcs900h_device::_ORCFBRM() +void tlcs900h_device::op_ORCFBRM() { orcf8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ORCFBRR() +void tlcs900h_device::op_ORCFBRR() { orcf8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ORCFWIR() +void tlcs900h_device::op_ORCFWIR() { orcf16( m_imm1.b.l, *m_p2_reg16 ); } -void tlcs900h_device::_ORCFWRR() +void tlcs900h_device::op_ORCFWRR() { orcf16( *m_p1_reg8, *m_p2_reg16 ); } -void tlcs900h_device::_PAAWR() +void tlcs900h_device::op_PAAWR() { if ( *m_p1_reg16 & 1 ) *m_p1_reg16 += 1; } -void tlcs900h_device::_PAALR() +void tlcs900h_device::op_PAALR() { if ( *m_p1_reg32 & 1 ) *m_p1_reg32 += 1; } -void tlcs900h_device::_POPBM() +void tlcs900h_device::op_POPBM() { WRMEM( m_ea1.d, RDMEM( m_xssp.d ) ); m_xssp.d += 1; } -void tlcs900h_device::_POPBR() +void tlcs900h_device::op_POPBR() { *m_p1_reg8 = RDMEM( m_xssp.d ); m_xssp.d += 1; } -void tlcs900h_device::_POPWM() +void tlcs900h_device::op_POPWM() { WRMEMW( m_ea1.d, RDMEMW( m_xssp.d ) ); m_xssp.d += 2; } -void tlcs900h_device::_POPWR() +void tlcs900h_device::op_POPWR() { *m_p1_reg16 = RDMEMW( m_xssp.d ); m_xssp.d += 2; } -void tlcs900h_device::_POPWSR() +void tlcs900h_device::op_POPWSR() { - _POPWR(); + op_POPWR(); m_regbank = m_sr.b.h & 0x03; m_check_irqs = 1; } -void tlcs900h_device::_POPLR() +void tlcs900h_device::op_POPLR() { *m_p1_reg32 = RDMEML( m_xssp.d ); m_xssp.d += 4; } -void tlcs900h_device::_PUSHBI() +void tlcs900h_device::op_PUSHBI() { m_xssp.d -= 1; WRMEM( m_xssp.d, m_imm1.b.l ); } -void tlcs900h_device::_PUSHBM() +void tlcs900h_device::op_PUSHBM() { m_xssp.d -= 1; WRMEM( m_xssp.d, RDMEM( m_ea1.d ) ); } -void tlcs900h_device::_PUSHBR() +void tlcs900h_device::op_PUSHBR() { m_xssp.d -= 1; WRMEM( m_xssp.d, *m_p1_reg8 ); } -void tlcs900h_device::_PUSHWI() +void tlcs900h_device::op_PUSHWI() { m_xssp.d -= 2; WRMEMW( m_xssp.d, m_imm1.w.l ); } -void tlcs900h_device::_PUSHWM() +void tlcs900h_device::op_PUSHWM() { m_xssp.d -= 2; WRMEMW( m_xssp.d, RDMEMW( m_ea1.d ) ); } -void tlcs900h_device::_PUSHWR() +void tlcs900h_device::op_PUSHWR() { m_xssp.d -= 2; WRMEMW( m_xssp.d, *m_p1_reg16 ); } -void tlcs900h_device::_PUSHLR() +void tlcs900h_device::op_PUSHLR() { m_xssp.d -= 4; WRMEML( m_xssp.d, *m_p1_reg32 ); } -void tlcs900h_device::_RCF() +void tlcs900h_device::op_RCF() { m_sr.b.l &= ~ ( FLAG_HF | FLAG_NF | FLAG_CF ); } -void tlcs900h_device::_RESBIM() +void tlcs900h_device::op_RESBIM() { WRMEM( m_ea2.d, RDMEM( m_ea2.d ) & ~( 1 << ( m_imm1.d & 0x07 ) ) ); } -void tlcs900h_device::_RESBIR() +void tlcs900h_device::op_RESBIR() { *m_p2_reg8 = *m_p2_reg8 & ~( 1 << ( m_imm1.d & 0x07 ) ); } -void tlcs900h_device::_RESWIR() +void tlcs900h_device::op_RESWIR() { *m_p2_reg16 = *m_p2_reg16 & ~( 1 << ( m_imm1.d & 0x0f ) ); } -void tlcs900h_device::_RET() +void tlcs900h_device::op_RET() { m_pc.d = RDMEML( m_xssp.d ); m_xssp.d += 4; @@ -2998,7 +2998,7 @@ void tlcs900h_device::_RET() } -void tlcs900h_device::_RETCC() +void tlcs900h_device::op_RETCC() { if ( condition_true( m_op ) ) { @@ -3010,7 +3010,7 @@ void tlcs900h_device::_RETCC() } -void tlcs900h_device::_RETD() +void tlcs900h_device::op_RETD() { m_pc.d = RDMEML( m_xssp.d ); m_xssp.d += 4 + m_imm1.sw.l; @@ -3018,7 +3018,7 @@ void tlcs900h_device::_RETD() } -void tlcs900h_device::_RETI() +void tlcs900h_device::op_RETI() { m_sr.w.l = RDMEMW( m_xssp.d ); m_xssp.d += 2; @@ -3030,103 +3030,103 @@ void tlcs900h_device::_RETI() } -void tlcs900h_device::_RLBM() +void tlcs900h_device::op_RLBM() { WRMEM( m_ea2.d, rl8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RLWM() +void tlcs900h_device::op_RLWM() { WRMEMW( m_ea2.d, rl16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RLBIR() +void tlcs900h_device::op_RLBIR() { *m_p2_reg8 = rl8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_RLBRR() +void tlcs900h_device::op_RLBRR() { *m_p2_reg8 = rl8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_RLWIR() +void tlcs900h_device::op_RLWIR() { *m_p2_reg16 = rl16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_RLWRR() +void tlcs900h_device::op_RLWRR() { *m_p2_reg16 = rl16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_RLLIR() +void tlcs900h_device::op_RLLIR() { *m_p2_reg32 = rl32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_RLLRR() +void tlcs900h_device::op_RLLRR() { *m_p2_reg32 = rl32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_RLCBM() +void tlcs900h_device::op_RLCBM() { WRMEM( m_ea2.d, rlc8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RLCWM() +void tlcs900h_device::op_RLCWM() { WRMEMW( m_ea2.d, rlc16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RLCBIR() +void tlcs900h_device::op_RLCBIR() { *m_p2_reg8 = rlc8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_RLCBRR() +void tlcs900h_device::op_RLCBRR() { *m_p2_reg8 = rlc8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_RLCWIR() +void tlcs900h_device::op_RLCWIR() { *m_p2_reg16 = rlc16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_RLCWRR() +void tlcs900h_device::op_RLCWRR() { *m_p2_reg16 = rlc16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_RLCLIR() +void tlcs900h_device::op_RLCLIR() { *m_p2_reg32 = rlc32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_RLCLRR() +void tlcs900h_device::op_RLCLRR() { *m_p2_reg32 = rlc32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_RLDRM() +void tlcs900h_device::op_RLDRM() { uint8_t a = *m_p1_reg8 & 0x0f; uint8_t b = RDMEM( m_ea2.d ); @@ -3139,103 +3139,103 @@ void tlcs900h_device::_RLDRM() } -void tlcs900h_device::_RRBM() +void tlcs900h_device::op_RRBM() { WRMEM( m_ea2.d, rr8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RRWM() +void tlcs900h_device::op_RRWM() { WRMEMW( m_ea2.d, rr16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RRBIR() +void tlcs900h_device::op_RRBIR() { *m_p2_reg8 = rr8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_RRBRR() +void tlcs900h_device::op_RRBRR() { *m_p2_reg8 = rr8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_RRWIR() +void tlcs900h_device::op_RRWIR() { *m_p2_reg16 = rr16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_RRWRR() +void tlcs900h_device::op_RRWRR() { *m_p2_reg16 = rr16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_RRLIR() +void tlcs900h_device::op_RRLIR() { *m_p2_reg32 = rr32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_RRLRR() +void tlcs900h_device::op_RRLRR() { *m_p2_reg32 = rr32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_RRCBM() +void tlcs900h_device::op_RRCBM() { WRMEM( m_ea2.d, rrc8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RRCWM() +void tlcs900h_device::op_RRCWM() { WRMEMW( m_ea2.d, rrc16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RRCBIR() +void tlcs900h_device::op_RRCBIR() { *m_p2_reg8 = rrc8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_RRCBRR() +void tlcs900h_device::op_RRCBRR() { *m_p2_reg8 = rrc8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_RRCWIR() +void tlcs900h_device::op_RRCWIR() { *m_p2_reg16 = rrc16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_RRCWRR() +void tlcs900h_device::op_RRCWRR() { *m_p2_reg16 = rrc16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_RRCLIR() +void tlcs900h_device::op_RRCLIR() { *m_p2_reg32 = rrc32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_RRCLRR() +void tlcs900h_device::op_RRCLRR() { *m_p2_reg32 = rrc32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_RRDRM() +void tlcs900h_device::op_RRDRM() { uint8_t a = *m_p1_reg8 & 0x0f; uint8_t b = RDMEM( m_ea2.d ); @@ -3248,320 +3248,320 @@ void tlcs900h_device::_RRDRM() } -void tlcs900h_device::_SBCBMI() +void tlcs900h_device::op_SBCBMI() { WRMEM( m_ea1.d, sbc8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_SBCBMR() +void tlcs900h_device::op_SBCBMR() { WRMEM( m_ea1.d, sbc8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_SBCBRI() +void tlcs900h_device::op_SBCBRI() { *m_p1_reg8 = sbc8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_SBCBRM() +void tlcs900h_device::op_SBCBRM() { *m_p1_reg8 = sbc8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_SBCBRR() +void tlcs900h_device::op_SBCBRR() { *m_p1_reg8 = sbc8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_SBCWMI() +void tlcs900h_device::op_SBCWMI() { WRMEMW( m_ea1.d, sbc16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_SBCWMR() +void tlcs900h_device::op_SBCWMR() { WRMEMW( m_ea1.d, sbc16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_SBCWRI() +void tlcs900h_device::op_SBCWRI() { *m_p1_reg16 = sbc16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_SBCWRM() +void tlcs900h_device::op_SBCWRM() { *m_p1_reg16 = sbc16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_SBCWRR() +void tlcs900h_device::op_SBCWRR() { *m_p1_reg16 = sbc16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_SBCLMR() +void tlcs900h_device::op_SBCLMR() { WRMEML( m_ea1.d, sbc32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_SBCLRI() +void tlcs900h_device::op_SBCLRI() { *m_p1_reg32 = sbc32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_SBCLRM() +void tlcs900h_device::op_SBCLRM() { *m_p1_reg32 = sbc32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_SBCLRR() +void tlcs900h_device::op_SBCLRR() { *m_p1_reg32 = sbc32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_SCCBR() +void tlcs900h_device::op_SCCBR() { *m_p2_reg8 = condition_true( m_op ) ? 1 : 0; } -void tlcs900h_device::_SCCWR() +void tlcs900h_device::op_SCCWR() { *m_p2_reg16 = condition_true( m_op ) ? 1 : 0; } -void tlcs900h_device::_SCF() +void tlcs900h_device::op_SCF() { m_sr.b.l &= ~ ( FLAG_HF | FLAG_NF ); m_sr.b.l |= FLAG_CF; } -void tlcs900h_device::_SETBIM() +void tlcs900h_device::op_SETBIM() { WRMEM( m_ea2.d, RDMEM( m_ea2.d ) | ( 1 << ( m_imm1.d & 0x07 ) ) ); } -void tlcs900h_device::_SETBIR() +void tlcs900h_device::op_SETBIR() { *m_p2_reg8 = *m_p2_reg8 | ( 1 << ( m_imm1.d & 0x07 ) ); } -void tlcs900h_device::_SETWIR() +void tlcs900h_device::op_SETWIR() { *m_p2_reg16 = *m_p2_reg16 | ( 1 << ( m_imm1.d & 0x0f ) ); } -void tlcs900h_device::_SLABM() +void tlcs900h_device::op_SLABM() { WRMEM( m_ea2.d, sla8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SLAWM() +void tlcs900h_device::op_SLAWM() { WRMEMW( m_ea2.d, sla16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SLABIR() +void tlcs900h_device::op_SLABIR() { *m_p2_reg8 = sla8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_SLABRR() +void tlcs900h_device::op_SLABRR() { *m_p2_reg8 = sla8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_SLAWIR() +void tlcs900h_device::op_SLAWIR() { *m_p2_reg16 = sla16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_SLAWRR() +void tlcs900h_device::op_SLAWRR() { *m_p2_reg16 = sla16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_SLALIR() +void tlcs900h_device::op_SLALIR() { *m_p2_reg32 = sla32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_SLALRR() +void tlcs900h_device::op_SLALRR() { *m_p2_reg32 = sla32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_SLLBM() +void tlcs900h_device::op_SLLBM() { WRMEM( m_ea2.d, sla8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SLLWM() +void tlcs900h_device::op_SLLWM() { WRMEMW( m_ea2.d, sla16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SLLBIR() +void tlcs900h_device::op_SLLBIR() { *m_p2_reg8 = sla8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_SLLBRR() +void tlcs900h_device::op_SLLBRR() { *m_p2_reg8 = sla8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_SLLWIR() +void tlcs900h_device::op_SLLWIR() { *m_p2_reg16 = sla16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_SLLWRR() +void tlcs900h_device::op_SLLWRR() { *m_p2_reg16 = sla16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_SLLLIR() +void tlcs900h_device::op_SLLLIR() { *m_p2_reg32 = sla32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_SLLLRR() +void tlcs900h_device::op_SLLLRR() { *m_p2_reg32 = sla32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_SRABM() +void tlcs900h_device::op_SRABM() { WRMEM( m_ea2.d, sra8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SRAWM() +void tlcs900h_device::op_SRAWM() { WRMEMW( m_ea2.d, sra16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SRABIR() +void tlcs900h_device::op_SRABIR() { *m_p2_reg8 = sra8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_SRABRR() +void tlcs900h_device::op_SRABRR() { *m_p2_reg8 = sra8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_SRAWIR() +void tlcs900h_device::op_SRAWIR() { *m_p2_reg16 = sra16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_SRAWRR() +void tlcs900h_device::op_SRAWRR() { *m_p2_reg16 = sra16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_SRALIR() +void tlcs900h_device::op_SRALIR() { *m_p2_reg32 = sra32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_SRALRR() +void tlcs900h_device::op_SRALRR() { *m_p2_reg32 = sra32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_SRLBM() +void tlcs900h_device::op_SRLBM() { WRMEM( m_ea2.d, srl8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SRLWM() +void tlcs900h_device::op_SRLWM() { WRMEMW( m_ea2.d, srl16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SRLBIR() +void tlcs900h_device::op_SRLBIR() { *m_p2_reg8 = srl8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_SRLBRR() +void tlcs900h_device::op_SRLBRR() { *m_p2_reg8 = srl8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_SRLWIR() +void tlcs900h_device::op_SRLWIR() { *m_p2_reg16 = srl16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_SRLWRR() +void tlcs900h_device::op_SRLWRR() { *m_p2_reg16 = srl16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_SRLLIR() +void tlcs900h_device::op_SRLLIR() { *m_p2_reg32 = srl32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_SRLLRR() +void tlcs900h_device::op_SRLLRR() { *m_p2_reg32 = srl32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_STCFBIM() +void tlcs900h_device::op_STCFBIM() { if ( m_sr.b.l & FLAG_CF ) WRMEM( m_ea2.d, RDMEM( m_ea2.d ) | ( 1 << ( m_imm1.b.l & 0x07 ) ) ); @@ -3570,7 +3570,7 @@ void tlcs900h_device::_STCFBIM() } -void tlcs900h_device::_STCFBIR() +void tlcs900h_device::op_STCFBIR() { if ( m_sr.b.l & FLAG_CF ) *m_p2_reg8 |= ( 1 << ( m_imm1.b.l & 0x07 ) ); @@ -3579,7 +3579,7 @@ void tlcs900h_device::_STCFBIR() } -void tlcs900h_device::_STCFBRM() +void tlcs900h_device::op_STCFBRM() { if ( m_sr.b.l & FLAG_CF ) WRMEM( m_ea2.d, RDMEM( m_ea2.d ) | ( 1 << ( *m_p1_reg8 & 0x07 ) ) ); @@ -3588,7 +3588,7 @@ void tlcs900h_device::_STCFBRM() } -void tlcs900h_device::_STCFBRR() +void tlcs900h_device::op_STCFBRR() { if ( m_sr.b.l & FLAG_CF ) *m_p2_reg8 |= ( 1 << ( *m_p1_reg8 & 0x07 ) ); @@ -3597,7 +3597,7 @@ void tlcs900h_device::_STCFBRR() } -void tlcs900h_device::_STCFWIR() +void tlcs900h_device::op_STCFWIR() { if ( m_sr.b.l & FLAG_CF ) *m_p2_reg16 |= ( 1 << ( m_imm1.b.l & 0x0f ) ); @@ -3606,7 +3606,7 @@ void tlcs900h_device::_STCFWIR() } -void tlcs900h_device::_STCFWRR() +void tlcs900h_device::op_STCFWRR() { if ( m_sr.b.l & FLAG_CF ) *m_p2_reg16 |= ( 1 << ( *m_p1_reg8 & 0x0f ) ); @@ -3615,91 +3615,91 @@ void tlcs900h_device::_STCFWRR() } -void tlcs900h_device::_SUBBMI() +void tlcs900h_device::op_SUBBMI() { WRMEM( m_ea1.d, sub8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_SUBBMR() +void tlcs900h_device::op_SUBBMR() { WRMEM( m_ea1.d, sub8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_SUBBRI() +void tlcs900h_device::op_SUBBRI() { *m_p1_reg8 = sub8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_SUBBRM() +void tlcs900h_device::op_SUBBRM() { *m_p1_reg8 = sub8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_SUBBRR() +void tlcs900h_device::op_SUBBRR() { *m_p1_reg8 = sub8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_SUBWMI() +void tlcs900h_device::op_SUBWMI() { WRMEMW( m_ea1.d, sub16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_SUBWMR() +void tlcs900h_device::op_SUBWMR() { WRMEMW( m_ea1.d, sub16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_SUBWRI() +void tlcs900h_device::op_SUBWRI() { *m_p1_reg16 = sub16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_SUBWRM() +void tlcs900h_device::op_SUBWRM() { *m_p1_reg16 = sub16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_SUBWRR() +void tlcs900h_device::op_SUBWRR() { *m_p1_reg16 = sub16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_SUBLMR() +void tlcs900h_device::op_SUBLMR() { WRMEML( m_ea1.d, sub32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_SUBLRI() +void tlcs900h_device::op_SUBLRI() { *m_p1_reg32 = sub32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_SUBLRM() +void tlcs900h_device::op_SUBLRM() { *m_p1_reg32 = sub32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_SUBLRR() +void tlcs900h_device::op_SUBLRR() { *m_p1_reg32 = sub32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_SWI() +void tlcs900h_device::op_SWI() { m_xssp.d -= 4; WRMEML( m_xssp.d, m_pc.d ); @@ -3710,7 +3710,7 @@ void tlcs900h_device::_SWI() } -void tlcs900h_device::_TSETBIM() +void tlcs900h_device::op_TSETBIM() { uint8_t b = 1 << ( m_imm1.b.l & 0x07 ); uint8_t a = RDMEM( m_ea2.d ); @@ -3721,7 +3721,7 @@ void tlcs900h_device::_TSETBIM() } -void tlcs900h_device::_TSETBIR() +void tlcs900h_device::op_TSETBIR() { uint8_t b = 1 << ( m_imm1.b.l & 0x07 ); @@ -3731,7 +3731,7 @@ void tlcs900h_device::_TSETBIR() } -void tlcs900h_device::_TSETWIR() +void tlcs900h_device::op_TSETWIR() { uint16_t b = 1 << ( m_imm1.b.l & 0x0f ); @@ -3741,7 +3741,7 @@ void tlcs900h_device::_TSETWIR() } -void tlcs900h_device::_UNLK() +void tlcs900h_device::op_UNLK() { m_xssp.d = *m_p1_reg32; *m_p1_reg32 = RDMEML( m_xssp.d ); @@ -3749,127 +3749,127 @@ void tlcs900h_device::_UNLK() } -void tlcs900h_device::_XORBMI() +void tlcs900h_device::op_XORBMI() { WRMEM( m_ea1.d, xor8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_XORBMR() +void tlcs900h_device::op_XORBMR() { WRMEM( m_ea1.d, xor8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_XORBRI() +void tlcs900h_device::op_XORBRI() { *m_p1_reg8 = xor8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_XORBRM() +void tlcs900h_device::op_XORBRM() { *m_p1_reg8 = xor8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_XORBRR() +void tlcs900h_device::op_XORBRR() { *m_p1_reg8 = xor8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_XORWMI() +void tlcs900h_device::op_XORWMI() { WRMEMW( m_ea1.d, xor16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_XORWMR() +void tlcs900h_device::op_XORWMR() { WRMEMW( m_ea1.d, xor16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_XORWRI() +void tlcs900h_device::op_XORWRI() { *m_p1_reg16 = xor16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_XORWRM() +void tlcs900h_device::op_XORWRM() { *m_p1_reg16 = xor16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_XORWRR() +void tlcs900h_device::op_XORWRR() { *m_p1_reg16 = xor16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_XORLMR() +void tlcs900h_device::op_XORLMR() { WRMEML( m_ea1.d, xor32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_XORLRI() +void tlcs900h_device::op_XORLRI() { *m_p1_reg32 = xor32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_XORLRM() +void tlcs900h_device::op_XORLRM() { *m_p1_reg32 = xor32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_XORLRR() +void tlcs900h_device::op_XORLRR() { *m_p1_reg32 = xor32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_XORCFBIM() +void tlcs900h_device::op_XORCFBIM() { xorcf8( m_imm1.b.l, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_XORCFBIR() +void tlcs900h_device::op_XORCFBIR() { xorcf8( m_imm1.b.l, *m_p2_reg8 ); } -void tlcs900h_device::_XORCFBRM() +void tlcs900h_device::op_XORCFBRM() { xorcf8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_XORCFBRR() +void tlcs900h_device::op_XORCFBRR() { xorcf8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_XORCFWIR() +void tlcs900h_device::op_XORCFWIR() { xorcf16( m_imm1.b.l, *m_p2_reg16 ); } -void tlcs900h_device::_XORCFWRR() +void tlcs900h_device::op_XORCFWRR() { xorcf16( *m_p1_reg8, *m_p2_reg16 ); } -void tlcs900h_device::_ZCF() +void tlcs900h_device::op_ZCF() { m_sr.b.l &= ~ ( FLAG_NF | FLAG_CF ); m_sr.b.l |= ( ( m_sr.b.l & FLAG_ZF ) ? 0 : FLAG_CF ); @@ -3880,28 +3880,28 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) { switch ( inst->operand1 ) { - case _A: + case p_A: m_p1_reg8 = &m_xwa[m_regbank].b.l; break; - case _F: + case p_F: m_p1_reg8 = &m_sr.b.l; break; - case _SR: + case p_SR: m_p1_reg16 = &m_sr.w.l; break; - case _C8: + case p_C8: m_p1_reg8 = get_reg8_current( m_op ); break; - case _C16: + case p_C16: m_p1_reg16 = get_reg16_current( m_op ); break; - case _MC16: /* For MUL and DIV operations */ + case p_MC16: /* For MUL and DIV operations */ m_p1_reg16 = get_reg16_current( ( m_op >> 1 ) & 0x03 ); break; - case _C32: + case p_C32: m_p1_reg32 = get_reg32_current( m_op ); break; - case _CR8: + case p_CR8: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -3922,7 +3922,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _CR16: + case p_CR16: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -3943,7 +3943,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _CR32: + case p_CR32: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -3976,47 +3976,47 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _D8: + case p_D8: m_ea1.d = RDOP(); m_ea1.d = m_pc.d + m_ea1.sb.l; break; - case _D16: + case p_D16: m_ea1.d = RDOP(); m_ea1.b.h = RDOP(); m_ea1.d = m_pc.d + m_ea1.sw.l; break; - case _I3: + case p_I3: m_imm1.d = m_op & 0x07; break; - case _I8: + case p_I8: m_imm1.d = RDOP(); break; - case _I16: + case p_I16: m_imm1.d = RDOP(); m_imm1.b.h = RDOP(); break; - case _I24: + case p_I24: m_imm1.d = RDOP(); m_imm1.b.h = RDOP(); m_imm1.b.h2 = RDOP(); break; - case _I32: + case p_I32: m_imm1.d = RDOP(); m_imm1.b.h = RDOP(); m_imm1.b.h2 = RDOP(); m_imm1.b.h3 = RDOP(); break; - case _M: + case p_M: m_ea1.d = m_ea2.d; break; - case _M8: + case p_M8: m_ea1.d = RDOP(); break; - case _M16: + case p_M16: m_ea1.d = RDOP(); m_ea1.b.h = RDOP(); break; - case _R: + case p_R: m_p1_reg8 = m_p2_reg8; m_p1_reg16 = m_p2_reg16; m_p1_reg32 = m_p2_reg32; @@ -4025,25 +4025,25 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) switch ( inst->operand2 ) { - case _A: + case p_A: m_p2_reg8 = &m_xwa[m_regbank].b.l; break; - case _F: /* F' */ + case p_F: /* F' */ m_p2_reg8 = &m_f2.b.l; break; - case _SR: + case p_SR: m_p2_reg16 = &m_sr.w.l; break; - case _C8: + case p_C8: m_p2_reg8 = get_reg8_current( m_op ); break; - case _C16: + case p_C16: m_p2_reg16 = get_reg16_current( m_op ); break; - case _C32: + case p_C32: m_p2_reg32 = get_reg32_current( m_op ); break; - case _CR8: + case p_CR8: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -4064,7 +4064,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _CR16: + case p_CR16: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -4085,7 +4085,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _CR32: + case p_CR32: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -4118,35 +4118,35 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _D8: + case p_D8: m_ea2.d = RDOP(); m_ea2.d = m_pc.d + m_ea2.sb.l; break; - case _D16: + case p_D16: m_ea2.d = RDOP(); m_ea2.b.h = RDOP(); m_ea2.d = m_pc.d + m_ea2.sw.l; break; - case _I3: + case p_I3: m_imm2.d = m_op & 0x07; break; - case _I8: + case p_I8: m_imm2.d = RDOP(); break; - case _I16: + case p_I16: m_imm2.d = RDOP(); m_imm2.b.h = RDOP(); break; - case _I32: + case p_I32: m_imm2.d = RDOP(); m_imm2.b.h = RDOP(); m_imm2.b.h2 = RDOP(); m_imm2.b.h3 = RDOP(); break; - case _M8: + case p_M8: m_ea2.d = RDOP(); break; - case _M16: + case p_M16: m_ea2.d = RDOP(); m_ea2.b.h = RDOP(); break; @@ -4157,1181 +4157,1181 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_80[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHBM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_RLDRM, _A, _M, 12 }, { &tlcs900h_device::_RRDRM, _A, _M, 12 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDI, 0, 0, 10 }, { &tlcs900h_device::_LDIR, 0, 0, 10 }, { &tlcs900h_device::_LDD, 0, 0, 10 }, { &tlcs900h_device::_LDDR, 0, 0, 10 }, - { &tlcs900h_device::_CPI, 0, 0, 8 }, { &tlcs900h_device::_CPIR, 0, 0, 10 }, { &tlcs900h_device::_CPD, 0, 0, 8 }, { &tlcs900h_device::_CPDR, 0, 0, 10 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHBM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_RLDRM, p_A, p_M, 12 }, { &tlcs900h_device::op_RRDRM, p_A, p_M, 12 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDI, 0, 0, 10 }, { &tlcs900h_device::op_LDIR, 0, 0, 10 }, { &tlcs900h_device::op_LDD, 0, 0, 10 }, { &tlcs900h_device::op_LDDR, 0, 0, 10 }, + { &tlcs900h_device::op_CPI, 0, 0, 8 }, { &tlcs900h_device::op_CPIR, 0, 0, 10 }, { &tlcs900h_device::op_CPD, 0, 0, 8 }, { &tlcs900h_device::op_CPDR, 0, 0, 10 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMI, _M, _I8, 7 }, { &tlcs900h_device::_ADCBMI, _M, _I8, 7 }, { &tlcs900h_device::_SUBBMI, _M, _I8, 7 }, { &tlcs900h_device::_SBCBMI, _M, _I8, 7 }, - { &tlcs900h_device::_ANDBMI, _M, _I8, 7 }, { &tlcs900h_device::_XORBMI, _M, _I8, 7 }, { &tlcs900h_device::_ORBMI, _M, _I8, 7 }, { &tlcs900h_device::_CPBMI, _M, _I8, 6 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ADCBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SUBBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SBCBMI, p_M, p_I8, 7 }, + { &tlcs900h_device::op_ANDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_XORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_CPBMI, p_M, p_I8, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULBRM, _MC16, _M, 18}, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULBRM, _MC16, _M, 18}, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18}, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18}, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, /* 60 - 7F */ - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCBM, _M, 0, 8 }, { &tlcs900h_device::_RRCBM, _M, 0, 8 }, { &tlcs900h_device::_RLBM, _M, 0, 8 }, { &tlcs900h_device::_RRBM, _M, 0, 8 }, - { &tlcs900h_device::_SLABM, _M, 0, 8 }, { &tlcs900h_device::_SRABM, _M, 0, 8 }, { &tlcs900h_device::_SLLBM, _M, 0, 8 }, { &tlcs900h_device::_SRLBM, _M, 0, 8 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RLBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRBM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLABM, p_M, 0, 8 }, { &tlcs900h_device::op_SRABM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLBM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLBM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_88[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHBM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_RLDRM, _A, _M, 12 }, { &tlcs900h_device::_RRDRM, _A, _M, 12 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHBM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_RLDRM, p_A, p_M, 12 }, { &tlcs900h_device::op_RRDRM, p_A, p_M, 12 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMI, _M, _I8, 7 }, { &tlcs900h_device::_ADCBMI, _M, _I8, 7 }, { &tlcs900h_device::_SUBBMI, _M, _I8, 7 }, { &tlcs900h_device::_SBCBMI, _M, _I8, 7 }, - { &tlcs900h_device::_ANDBMI, _M, _I8, 7 }, { &tlcs900h_device::_XORBMI, _M, _I8, 7 }, { &tlcs900h_device::_ORBMI, _M, _I8, 7 }, { &tlcs900h_device::_CPBMI, _M, _I8, 6 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ADCBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SUBBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SBCBMI, p_M, p_I8, 7 }, + { &tlcs900h_device::op_ANDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_XORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_CPBMI, p_M, p_I8, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, /* 60 - 7F */ - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCBM, _M, 0, 8 }, { &tlcs900h_device::_RRCBM, _M, 0, 8 }, { &tlcs900h_device::_RLBM, _M, 0, 8 }, { &tlcs900h_device::_RRBM, _M, 0, 8 }, - { &tlcs900h_device::_SLABM, _M, 0, 8 }, { &tlcs900h_device::_SRABM, _M, 0, 8 }, { &tlcs900h_device::_SLLBM, _M, 0, 8 }, { &tlcs900h_device::_SRLBM, _M, 0, 8 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RLBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRBM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLABM, p_M, 0, 8 }, { &tlcs900h_device::op_SRABM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLBM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLBM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_90[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHWM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDIW, 0, 0, 10 }, { &tlcs900h_device::_LDIRW, 0, 0, 10 }, { &tlcs900h_device::_LDDW, 0, 0, 10 }, { &tlcs900h_device::_LDDRW, 0, 0, 10 }, - { &tlcs900h_device::_CPIW, 0, 0, 8 }, { &tlcs900h_device::_CPIRW, 0, 0, 10 }, { &tlcs900h_device::_CPDW, 0, 0, 8 }, { &tlcs900h_device::_CPDRW, 0, 0, 10 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHWM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDIW, 0, 0, 10 }, { &tlcs900h_device::op_LDIRW, 0, 0, 10 }, { &tlcs900h_device::op_LDDW, 0, 0, 10 }, { &tlcs900h_device::op_LDDRW, 0, 0, 10 }, + { &tlcs900h_device::op_CPIW, 0, 0, 8 }, { &tlcs900h_device::op_CPIRW, 0, 0, 10 }, { &tlcs900h_device::op_CPDW, 0, 0, 8 }, { &tlcs900h_device::op_CPDRW, 0, 0, 10 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMI, _M, _I16, 8 }, { &tlcs900h_device::_ADCWMI, _M, _I16, 8 }, { &tlcs900h_device::_SUBWMI, _M, _I16, 8 }, { &tlcs900h_device::_SBCWMI, _M, _I16, 8 }, - { &tlcs900h_device::_ANDWMI, _M, _I16, 8 }, { &tlcs900h_device::_XORWMI, _M, _I16, 8 }, { &tlcs900h_device::_ORWMI, _M, _I16, 8 }, { &tlcs900h_device::_CPWMI, _M, _I16, 6 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ADCWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SUBWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SBCWMI, p_M, p_I16, 8 }, + { &tlcs900h_device::op_ANDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_XORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_CPWMI, p_M, p_I16, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, /* 60 - 7F */ - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCWM, _M, 0, 8 }, { &tlcs900h_device::_RRCWM, _M, 0, 8 }, { &tlcs900h_device::_RLWM, _M, 0, 8 }, { &tlcs900h_device::_RRWM, _M, 0, 8 }, - { &tlcs900h_device::_SLAWM, _M, 0, 8 }, { &tlcs900h_device::_SRAWM, _M, 0, 8 }, { &tlcs900h_device::_SLLWM, _M, 0, 8 }, { &tlcs900h_device::_SRLWM, _M, 0, 8 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RLWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRWM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLWM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_98[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHWM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHWM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMI, _M, _I16, 8 }, { &tlcs900h_device::_ADCWMI, _M, _I16, 8 }, { &tlcs900h_device::_SUBWMI, _M, _I16, 8 }, { &tlcs900h_device::_SBCWMI, _M, _I16, 8 }, - { &tlcs900h_device::_ANDWMI, _M, _I16, 8 }, { &tlcs900h_device::_XORWMI, _M, _I16, 8 }, { &tlcs900h_device::_ORWMI, _M, _I16, 8 }, { &tlcs900h_device::_CPWMI, _M, _I16, 6 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ADCWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SUBWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SBCWMI, p_M, p_I16, 8 }, + { &tlcs900h_device::op_ANDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_XORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_CPWMI, p_M, p_I16, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, /* 60 - 7F */ - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCWM, _M, 0, 8 }, { &tlcs900h_device::_RRCWM, _M, 0, 8 }, { &tlcs900h_device::_RLWM, _M, 0, 8 }, { &tlcs900h_device::_RRWM, _M, 0, 8 }, - { &tlcs900h_device::_SLAWM, _M, 0, 8 }, { &tlcs900h_device::_SRAWM, _M, 0, 8 }, { &tlcs900h_device::_SLLWM, _M, 0, 8 }, { &tlcs900h_device::_SRLWM, _M, 0, 8 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RLWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRWM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLWM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_a0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, /* A0 - BF */ - { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, /* C0 - DF */ - { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, /* E0 - FF */ - { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, - { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, - { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, - { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, + { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_b0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_LDBMI, _M, _I8, 5 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMI, _M, _I16, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_POPBM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_POPWM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDBMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMI, p_M, p_I8, 5 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMI, p_M, p_I16, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_POPBM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_POPWM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_ANDCFBRM, _A, _M, 8 }, { &tlcs900h_device::_ORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_XORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_LDCFBRM, _A, _M, 8 }, - { &tlcs900h_device::_STCFBRM, _A, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_ORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_XORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_LDCFBRM, p_A, p_M, 8 }, + { &tlcs900h_device::op_STCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, /* A0 - BF */ - { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, /* C0 - DF */ - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, /* E0 - FF */ - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, - { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, - { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, - { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 } + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, + { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, + { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, + { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 } }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_b8[256] = { /* 00 - 1F */ - { &tlcs900h_device::_LDBMI, _M, _I8, 5 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMI, _M, _I16, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_POPBM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_POPWM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDBMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMI, p_M, p_I8, 5 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMI, p_M, p_I16, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_POPBM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_POPWM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_ANDCFBRM, _A, _M, 8 }, { &tlcs900h_device::_ORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_XORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_LDCFBRM, _A, _M, 8 }, - { &tlcs900h_device::_STCFBRM, _A, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_ORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_XORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_LDCFBRM, p_A, p_M, 8 }, + { &tlcs900h_device::op_STCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, /* A0 - BF */ - { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, /* C0 - DF */ - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, /* E0 - FF */ - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 } + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 } }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_c0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHBM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_RLDRM, _A, _M, 12 }, { &tlcs900h_device::_RRDRM, _A, _M, 12 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHBM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_RLDRM, p_A, p_M, 12 }, { &tlcs900h_device::op_RRDRM, p_A, p_M, 12 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMI, _M, _I8, 7 }, { &tlcs900h_device::_ADCBMI, _M, _I8, 7 }, { &tlcs900h_device::_SUBBMI, _M, _I8, 7 }, { &tlcs900h_device::_SBCBMI, _M, _I8, 7 }, - { &tlcs900h_device::_ANDBMI, _M, _I8, 7 }, { &tlcs900h_device::_XORBMI, _M, _I8, 7 }, { &tlcs900h_device::_ORBMI, _M, _I8, 7 }, { &tlcs900h_device::_CPBMI, _M, _I8, 6 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ADCBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SUBBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SBCBMI, p_M, p_I8, 7 }, + { &tlcs900h_device::op_ANDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_XORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_CPBMI, p_M, p_I8, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, /* 60 - 7F */ - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCBM, _M, 0, 8 }, { &tlcs900h_device::_RRCBM, _M, 0, 8 }, { &tlcs900h_device::_RLBM, _M, 0, 8 }, { &tlcs900h_device::_RRBM, _M, 0, 8 }, - { &tlcs900h_device::_SLABM, _M, 0, 8 }, { &tlcs900h_device::_SRABM, _M, 0, 8 }, { &tlcs900h_device::_SLLBM, _M, 0, 8 }, { &tlcs900h_device::_SRLBM, _M, 0, 8 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RLBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRBM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLABM, p_M, 0, 8 }, { &tlcs900h_device::op_SRABM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLBM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLBM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_c8[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBRI, _R, _I8, 4 }, - { &tlcs900h_device::_PUSHBR, _R, 0, 6 }, { &tlcs900h_device::_POPBR, _R, 0, 6 }, { &tlcs900h_device::_CPLBR, _R, 0, 4 }, { &tlcs900h_device::_NEGBR, _R, 0, 5 }, - { &tlcs900h_device::_MULBRI, _R, _I8, 18}, { &tlcs900h_device::_MULSBRI, _R, _I8, 18 }, { &tlcs900h_device::_DIVBRI, _R, _I8, 22 }, { &tlcs900h_device::_DIVSBRI, _R, _I8, 24 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DAABR, _R, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DJNZB, _R, _D8, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBRI, p_R, p_I8, 4 }, + { &tlcs900h_device::op_PUSHBR, p_R, 0, 6 }, { &tlcs900h_device::op_POPBR, p_R, 0, 6 }, { &tlcs900h_device::op_CPLBR, p_R, 0, 4 }, { &tlcs900h_device::op_NEGBR, p_R, 0, 5 }, + { &tlcs900h_device::op_MULBRI, p_R, p_I8, 18}, { &tlcs900h_device::op_MULSBRI, p_R, p_I8, 18 }, { &tlcs900h_device::op_DIVBRI, p_R, p_I8, 22 }, { &tlcs900h_device::op_DIVSBRI, p_R, p_I8, 24 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DAABR, p_R, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DJNZB, p_R, p_D8, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_ANDCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_ORCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_XORCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_LDCFBIR, _I8, _R, 4 }, - { &tlcs900h_device::_STCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_ANDCFBRR, _A, _R, 4 }, { &tlcs900h_device::_ORCFBRR, _A, _R, 4 }, { &tlcs900h_device::_XORCFBRR, _A, _R, 4 }, { &tlcs900h_device::_LDCFBRR, _A, _R, 4 }, - { &tlcs900h_device::_STCFBRR, _A, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDCBRR, _CR8, _R, 1 }, { &tlcs900h_device::_LDCBRR, _R, _CR8, 1 }, - { &tlcs900h_device::_RESBIR, _I8, _R, 4 }, { &tlcs900h_device::_SETBIR, _I8, _R, 4 }, { &tlcs900h_device::_CHGBIR, _I8, _R, 4 }, { &tlcs900h_device::_BITBIR, _I8, _R, 4 }, - { &tlcs900h_device::_TSETBIR, _I8, _R, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_ANDCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_ORCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_XORCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_LDCFBIR, p_I8, p_R, 4 }, + { &tlcs900h_device::op_STCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_ANDCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_ORCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_XORCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_LDCFBRR, p_A, p_R, 4 }, + { &tlcs900h_device::op_STCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDCBRR, p_CR8, p_R, 1 }, { &tlcs900h_device::op_LDCBRR, p_R, p_CR8, 1 }, + { &tlcs900h_device::op_RESBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_SETBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_CHGBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_BITBIR, p_I8, p_R, 4 }, + { &tlcs900h_device::op_TSETBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, - { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, - { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, - { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, - { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, - { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, - { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, - { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, + { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, + { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, + { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, + { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, + { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, + { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, + { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, + { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, /* 60 - 7F */ - { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, - { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, - { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, + { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, - { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, - { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, + { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, + { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, /* A0 - BF */ - { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, - { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, - { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, - { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, - { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, - { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, - { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, - { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, + { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, + { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, /* C0 - DF */ - { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ADDBRI, _R, _I8, 4 }, { &tlcs900h_device::_ADCBRI, _R, _I8, 4 }, { &tlcs900h_device::_SUBBRI, _R, _I8, 4 }, { &tlcs900h_device::_SBCBRI, _R, _I8, 4 }, - { &tlcs900h_device::_ANDBRI, _R, _I8, 4 }, { &tlcs900h_device::_XORBRI, _R, _I8, 4 }, { &tlcs900h_device::_ORBRI, _R, _I8, 4 }, { &tlcs900h_device::_CPBRI, _R, _I8, 4 }, - { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, - { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, - { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, - { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, + { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ADDBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_ADCBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_SUBBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_SBCBRI, p_R, p_I8, 4 }, + { &tlcs900h_device::op_ANDBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_XORBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_ORBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I8, 4 }, + { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, /* E0 - FF */ - { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, - { &tlcs900h_device::_RLCBIR, _I8, _R, 6 }, { &tlcs900h_device::_RRCBIR, _I8, _R, 6 }, { &tlcs900h_device::_RLBIR, _I8, _R, 6 }, { &tlcs900h_device::_RRBIR, _I8, _R, 6 }, - { &tlcs900h_device::_SLABIR, _I8, _R, 6 }, { &tlcs900h_device::_SRABIR, _I8, _R, 6 }, { &tlcs900h_device::_SLLBIR, _I8, _R, 6 }, { &tlcs900h_device::_SRLBIR, _I8, _R, 6 }, - { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, - { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, - { &tlcs900h_device::_RLCBRR, _A, _R, 6 }, { &tlcs900h_device::_RRCBRR, _A, _R, 6 }, { &tlcs900h_device::_RLBRR, _A, _R, 6 }, { &tlcs900h_device::_RRBRR, _A, _R, 6 }, - { &tlcs900h_device::_SLABRR, _A, _R, 6 }, { &tlcs900h_device::_SRABRR, _A, _R, 6 }, { &tlcs900h_device::_SLLBRR, _A, _R, 6 }, { &tlcs900h_device::_SRLBRR, _A, _R, 6 } + { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_RLCBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRCBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RLBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRBIR, p_I8, p_R, 6 }, + { &tlcs900h_device::op_SLABIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRABIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SLLBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRLBIR, p_I8, p_R, 6 }, + { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_RLCBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRCBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RLBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRBRR, p_A, p_R, 6 }, + { &tlcs900h_device::op_SLABRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRABRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SLLBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRLBRR, p_A, p_R, 6 } }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_d0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHWM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHWM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMI, _M, _I16, 8 }, { &tlcs900h_device::_ADCWMI, _M, _I16, 8 }, { &tlcs900h_device::_SUBWMI, _M, _I16, 8 }, { &tlcs900h_device::_SBCWMI, _M, _I16, 8 }, - { &tlcs900h_device::_ANDWMI, _M, _I16, 8 }, { &tlcs900h_device::_XORWMI, _M, _I16, 8 }, { &tlcs900h_device::_ORWMI, _M, _I16, 8 }, { &tlcs900h_device::_CPWMI, _M, _I16, 6 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ADCWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SUBWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SBCWMI, p_M, p_I16, 8 }, + { &tlcs900h_device::op_ANDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_XORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_CPWMI, p_M, p_I16, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, /* 60 - 7F */ - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCWM, _M, 0, 8 }, { &tlcs900h_device::_RRCWM, _M, 0, 8 }, { &tlcs900h_device::_RLWM, _M, 0, 8 }, { &tlcs900h_device::_RRWM, _M, 0, 8 }, - { &tlcs900h_device::_SLAWM, _M, 0, 8 }, { &tlcs900h_device::_SRAWM, _M, 0, 8 }, { &tlcs900h_device::_SLLWM, _M, 0, 8 }, { &tlcs900h_device::_SRLWM, _M, 0, 8 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RLWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRWM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLWM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_d8[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWRI, _R, _I16, 4 }, - { &tlcs900h_device::_PUSHWR, _R, 0, 5 }, { &tlcs900h_device::_POPWR, _R, 0, 6 }, { &tlcs900h_device::_CPLWR, _R, 0, 4 }, { &tlcs900h_device::_NEGWR, _R, 0, 5 }, - { &tlcs900h_device::_MULWRI, _R, _I16, 26 }, { &tlcs900h_device::_MULSWRI, _R, _I16, 26 }, { &tlcs900h_device::_DIVWRI, _R, _I16, 30 }, { &tlcs900h_device::_DIVSWRI, _R, _I16, 32 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_BS1FRR, _A, _R, 4 }, { &tlcs900h_device::_BS1BRR, _A, _R, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_EXTZWR, _R, 0, 4 }, { &tlcs900h_device::_EXTSWR, _R, 0, 5 }, - { &tlcs900h_device::_PAAWR, _R, 0, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_MIRRW, _R, 0, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_MULAR, _R, 0, 31 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DJNZW, _R, _D8, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWRI, p_R, p_I16, 4 }, + { &tlcs900h_device::op_PUSHWR, p_R, 0, 5 }, { &tlcs900h_device::op_POPWR, p_R, 0, 6 }, { &tlcs900h_device::op_CPLWR, p_R, 0, 4 }, { &tlcs900h_device::op_NEGWR, p_R, 0, 5 }, + { &tlcs900h_device::op_MULWRI, p_R, p_I16, 26 }, { &tlcs900h_device::op_MULSWRI, p_R, p_I16, 26 }, { &tlcs900h_device::op_DIVWRI, p_R, p_I16, 30 }, { &tlcs900h_device::op_DIVSWRI, p_R, p_I16, 32 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_BS1FRR, p_A, p_R, 4 }, { &tlcs900h_device::op_BS1BRR, p_A, p_R, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_EXTZWR, p_R, 0, 4 }, { &tlcs900h_device::op_EXTSWR, p_R, 0, 5 }, + { &tlcs900h_device::op_PAAWR, p_R, 0, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_MIRRW, p_R, 0, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_MULAR, p_R, 0, 31 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DJNZW, p_R, p_D8, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_ANDCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_ORCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_XORCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_LDCFWIR, _I8, _R, 4 }, - { &tlcs900h_device::_STCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_ANDCFWRR, _A, _R, 4 }, { &tlcs900h_device::_ORCFWRR, _A, _R, 4 }, { &tlcs900h_device::_XORCFWRR, _A, _R, 4 }, { &tlcs900h_device::_LDCFWRR, _A, _R, 4 }, - { &tlcs900h_device::_STCFWRR, _A, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDCWRR, _CR16, _R, 1 }, { &tlcs900h_device::_LDCWRR, _R, _CR16, 1 }, - { &tlcs900h_device::_RESWIR, _I8, _R, 4 }, { &tlcs900h_device::_SETWIR, _I8, _R, 4 }, { &tlcs900h_device::_CHGWIR, _I8, _R, 4 }, { &tlcs900h_device::_BITWIR, _I8, _R, 4 }, - { &tlcs900h_device::_TSETWIR, _I8, _R, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_MINC1, _I16, _R, 8 }, { &tlcs900h_device::_MINC2, _I16, _R, 8 }, { &tlcs900h_device::_MINC4, _I16, _R, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_MDEC1, _I16, _R, 7 }, { &tlcs900h_device::_MDEC2, _I16, _R, 7 }, { &tlcs900h_device::_MDEC4, _I16, _R, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_ANDCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_ORCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_XORCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_LDCFWIR, p_I8, p_R, 4 }, + { &tlcs900h_device::op_STCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_ANDCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_ORCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_XORCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_LDCFWRR, p_A, p_R, 4 }, + { &tlcs900h_device::op_STCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDCWRR, p_CR16, p_R, 1 }, { &tlcs900h_device::op_LDCWRR, p_R, p_CR16, 1 }, + { &tlcs900h_device::op_RESWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_SETWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_CHGWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_BITWIR, p_I8, p_R, 4 }, + { &tlcs900h_device::op_TSETWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_MINC1, p_I16, p_R, 8 }, { &tlcs900h_device::op_MINC2, p_I16, p_R, 8 }, { &tlcs900h_device::op_MINC4, p_I16, p_R, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_MDEC1, p_I16, p_R, 7 }, { &tlcs900h_device::op_MDEC2, p_I16, p_R, 7 }, { &tlcs900h_device::op_MDEC4, p_I16, p_R, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, - { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, - { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, - { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, - { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, - { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, - { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, - { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, + { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, + { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, + { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, + { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, + { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, + { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, + { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, + { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, /* 60 - 7F */ - { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, - { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, - { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, + { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, - { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, - { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, + { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, + { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, /* A0 - BF */ - { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, - { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, - { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, - { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, - { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, - { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, - { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, - { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, + { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, + { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, /* C0 - DF */ - { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ADDWRI, _R, _I16, 4 }, { &tlcs900h_device::_ADCWRI, _R, _I16, 4 }, { &tlcs900h_device::_SUBWRI, _R, _I16, 4 }, { &tlcs900h_device::_SBCWRI, _R, _I16, 4 }, - { &tlcs900h_device::_ANDWRI, _R, _I16, 4 }, { &tlcs900h_device::_XORWRI, _R, _I16, 4 }, { &tlcs900h_device::_ORWRI, _R, _I16, 4 }, { &tlcs900h_device::_CPWRI, _R, _I16, 4 }, - { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, - { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, - { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, - { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, + { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ADDWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_ADCWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_SUBWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_SBCWRI, p_R, p_I16, 4 }, + { &tlcs900h_device::op_ANDWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_XORWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_ORWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I16, 4 }, + { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, /* E0 - FF */ - { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, - { &tlcs900h_device::_RLCWIR, _I8, _R, 6 }, { &tlcs900h_device::_RRCWIR, _I8, _R, 6 }, { &tlcs900h_device::_RLWIR, _I8, _R, 6 }, { &tlcs900h_device::_RRWIR, _I8, _R, 6 }, - { &tlcs900h_device::_SLAWIR, _I8, _R, 6 }, { &tlcs900h_device::_SRAWIR, _I8, _R, 6 }, { &tlcs900h_device::_SLLWIR, _I8, _R, 6 }, { &tlcs900h_device::_SRLWIR, _I8, _R, 6 }, - { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, - { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, - { &tlcs900h_device::_RLCWRR, _A, _R, 6 }, { &tlcs900h_device::_RRCWRR, _A, _R, 6 }, { &tlcs900h_device::_RLWRR, _A, _R, 6 }, { &tlcs900h_device::_RRWRR, _A, _R, 6 }, - { &tlcs900h_device::_SLAWRR, _A, _R, 6 }, { &tlcs900h_device::_SRAWRR, _A, _R, 6 }, { &tlcs900h_device::_SLLWRR, _A, _R, 6 }, { &tlcs900h_device::_SRLWRR, _A, _R, 6 } + { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_RLCWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRCWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RLWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRWIR, p_I8, p_R, 6 }, + { &tlcs900h_device::op_SLAWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRAWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SLLWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRLWIR, p_I8, p_R, 6 }, + { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_RLCWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRCWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RLWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRWRR, p_A, p_R, 6 }, + { &tlcs900h_device::op_SLAWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRAWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SLLWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRLWRR, p_A, p_R, 6 } }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_e0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, /* A0 - BF */ - { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, /* C0 - DF */ - { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, /* E0 - FF */ - { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, - { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, - { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, - { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, + { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_e8[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDLRI, _R, _I32, 6 }, - { &tlcs900h_device::_PUSHLR, _R, 0, 7 }, { &tlcs900h_device::_POPLR, _R, 0, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LINK, _R, _I16, 10 }, { &tlcs900h_device::_UNLK, _R, 0, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_EXTZLR, _R, 0, 4 }, { &tlcs900h_device::_EXTSLR, _R, 0, 5 }, - { &tlcs900h_device::_PAALR, _R, 0, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDLRI, p_R, p_I32, 6 }, + { &tlcs900h_device::op_PUSHLR, p_R, 0, 7 }, { &tlcs900h_device::op_POPLR, p_R, 0, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LINK, p_R, p_I16, 10 }, { &tlcs900h_device::op_UNLK, p_R, 0, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_EXTZLR, p_R, 0, 4 }, { &tlcs900h_device::op_EXTSLR, p_R, 0, 5 }, + { &tlcs900h_device::op_PAALR, p_R, 0, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDCLRR, _CR32, _R, 1 }, { &tlcs900h_device::_LDCLRR, _R, _CR32, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDCLRR, p_CR32, p_R, 1 }, { &tlcs900h_device::op_LDCLRR, p_R, p_CR32, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, - { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, - { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, - { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, - { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, - { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, - { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, - { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, - { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, + { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, + { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, + { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, + { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, /* A0 - BF */ - { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, - { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, - { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, - { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, - { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, - { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* C0 - DF */ - { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, - { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, - { &tlcs900h_device::_ADDLRI, _R, _I32, 7 }, { &tlcs900h_device::_ADCLRI, _R, _I32, 7 }, { &tlcs900h_device::_SUBLRI, _R, _I32, 7 }, { &tlcs900h_device::_SBCLRI, _R, _I32, 7 }, - { &tlcs900h_device::_ANDLRI, _R, _I32, 7 }, { &tlcs900h_device::_XORLRI, _R, _I32, 7 }, { &tlcs900h_device::_ORLRI, _R, _I32, 7 }, { &tlcs900h_device::_CPLRI, _R, _I32, 7 }, - { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, - { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, - { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, - { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, + { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_ADDLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_ADCLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_SUBLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_SBCLRI, p_R, p_I32, 7 }, + { &tlcs900h_device::op_ANDLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_XORLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_ORLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_CPLRI, p_R, p_I32, 7 }, + { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, + { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, - { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, - { &tlcs900h_device::_RLCLIR, _I8, _R, 8 }, { &tlcs900h_device::_RRCLIR, _I8, _R, 8 }, { &tlcs900h_device::_RLLIR, _I8, _R, 8 }, { &tlcs900h_device::_RRLIR, _I8, _R, 8 }, - { &tlcs900h_device::_SLALIR, _I8, _R, 8 }, { &tlcs900h_device::_SRALIR, _I8, _R, 8 }, { &tlcs900h_device::_SLLLIR, _I8, _R, 8 }, { &tlcs900h_device::_SRLLIR, _I8, _R, 8 }, - { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, - { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, - { &tlcs900h_device::_RLCLRR, _A, _R, 8 }, { &tlcs900h_device::_RRCLRR, _A, _R, 8 }, { &tlcs900h_device::_RLLRR, _A, _R, 8 }, { &tlcs900h_device::_RRLRR, _A, _R, 8 }, - { &tlcs900h_device::_SLALRR, _A, _R, 8 }, { &tlcs900h_device::_SRALRR, _A, _R, 8 }, { &tlcs900h_device::_SLLLRR, _A, _R, 8 }, { &tlcs900h_device::_SRLLRR, _A, _R, 8 } + { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_RLCLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_RRCLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_RLLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_RRLIR, p_I8, p_R, 8 }, + { &tlcs900h_device::op_SLALIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_SRALIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_SLLLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_SRLLIR, p_I8, p_R, 8 }, + { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_RLCLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_RRCLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_RLLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_RRLRR, p_A, p_R, 8 }, + { &tlcs900h_device::op_SLALRR, p_A, p_R, 8 }, { &tlcs900h_device::op_SRALRR, p_A, p_R, 8 }, { &tlcs900h_device::op_SLLLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_SRLLRR, p_A, p_R, 8 } }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_f0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_LDBMI, _M, _I8, 5 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMI, _M, _I16, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_POPBM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_POPWM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDBMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMI, p_M, p_I8, 5 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMI, p_M, p_I16, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_POPBM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_POPWM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_ANDCFBRM, _A, _M, 4 }, { &tlcs900h_device::_ORCFBRM, _A, _M, 4 }, { &tlcs900h_device::_XORCFBRM, _A, _M, 4 }, { &tlcs900h_device::_LDCFBRM, _A, _M, 4 }, - { &tlcs900h_device::_STCFBRM, _A, _M, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_ORCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_XORCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_LDCFBRM, p_A, p_M, 4 }, + { &tlcs900h_device::op_STCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, /* A0 - BF */ - { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, /* C0 - DF */ - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, /* E0 - FF */ - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 } + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 } }; /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP) used as source in byte operations */ -void tlcs900h_device::_80() +void tlcs900h_device::op_80() { const tlcs900inst *inst; @@ -5349,7 +5349,7 @@ void tlcs900h_device::_80() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as source in byte operations */ -void tlcs900h_device::_88() +void tlcs900h_device::op_88() { const tlcs900inst *inst; @@ -5370,7 +5370,7 @@ void tlcs900h_device::_88() /* (XWA/XBC/XDE/XHL/XIXI/XIY/XIZ/XSP) used as source in word operations */ -void tlcs900h_device::_90() +void tlcs900h_device::op_90() { const tlcs900inst *inst; @@ -5388,7 +5388,7 @@ void tlcs900h_device::_90() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as source in word operations */ -void tlcs900h_device::_98() +void tlcs900h_device::op_98() { const tlcs900inst *inst; @@ -5405,7 +5405,7 @@ void tlcs900h_device::_98() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP) used as source in long word operations */ -void tlcs900h_device::_A0() +void tlcs900h_device::op_A0() { const tlcs900inst *inst; @@ -5419,7 +5419,7 @@ void tlcs900h_device::_A0() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as source in long word operations */ -void tlcs900h_device::_A8() +void tlcs900h_device::op_A8() { const tlcs900inst *inst; @@ -5436,7 +5436,7 @@ void tlcs900h_device::_A8() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP) used as destination in operations */ -void tlcs900h_device::_B0() +void tlcs900h_device::op_B0() { const tlcs900inst *inst; @@ -5450,7 +5450,7 @@ void tlcs900h_device::_B0() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as destination in operations */ -void tlcs900h_device::_B8() +void tlcs900h_device::op_B8() { const tlcs900inst *inst; @@ -5467,7 +5467,7 @@ void tlcs900h_device::_B8() /* memory used as source in byte operations */ -void tlcs900h_device::_C0() +void tlcs900h_device::op_C0() { const tlcs900inst *inst; uint32_t *reg = nullptr; @@ -5596,7 +5596,7 @@ void tlcs900h_device::oC8() /* memory used as source in word operations */ -void tlcs900h_device::_D0() +void tlcs900h_device::op_D0() { const tlcs900inst *inst; uint32_t *reg = nullptr; @@ -5723,7 +5723,7 @@ void tlcs900h_device::oD8() /* memory used as source in long word operations */ -void tlcs900h_device::_E0() +void tlcs900h_device::op_E0() { const tlcs900inst *inst; uint32_t *reg = nullptr; @@ -5826,7 +5826,7 @@ void tlcs900h_device::_E0() } -void tlcs900h_device::_E8() +void tlcs900h_device::op_E8() { const tlcs900inst *inst; @@ -5848,7 +5848,7 @@ void tlcs900h_device::_E8() /* memory used as destination operations */ -void tlcs900h_device::_F0() +void tlcs900h_device::op_F0() { const tlcs900inst *inst; uint32_t *reg = nullptr; @@ -5955,82 +5955,82 @@ void tlcs900h_device::_F0() const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic[256] = { /* 00 - 1F */ - { &tlcs900h_device::_NOP, 0, 0, 1 }, { &tlcs900h_device::_NORMAL, 0, 0, 4 }, { &tlcs900h_device::_PUSHWR, _SR, 0, 4 }, { &tlcs900h_device::_POPWSR, _SR, 0, 6 }, - { &tlcs900h_device::_MAX, 0, 0, 4 }, { &tlcs900h_device::_HALT, 0, 0, 8 }, { &tlcs900h_device::_EI, _I8, 0, 5 }, { &tlcs900h_device::_RETI, 0, 0, 12 }, - { &tlcs900h_device::_LDBMI, _M8, _I8, 5 }, { &tlcs900h_device::_PUSHBI, _I8, 0, 4 }, { &tlcs900h_device::_LDWMI, _M8, _I16, 6 }, { &tlcs900h_device::_PUSHWI, _I16, 0, 5 }, - { &tlcs900h_device::_INCF, 0, 0, 2 }, { &tlcs900h_device::_DECF, 0, 0, 2 }, { &tlcs900h_device::_RET, 0, 0, 9 }, { &tlcs900h_device::_RETD, _I16, 0, 9 }, - { &tlcs900h_device::_RCF, 0, 0, 2 }, { &tlcs900h_device::_SCF, 0, 0, 2 }, { &tlcs900h_device::_CCF, 0, 0, 2 }, { &tlcs900h_device::_ZCF, 0, 0, 2 }, - { &tlcs900h_device::_PUSHBR, _A, 0, 3 }, { &tlcs900h_device::_POPBR, _A, 0, 4 }, { &tlcs900h_device::_EXBRR, _F, _F, 2 }, { &tlcs900h_device::_LDF, _I8, 0, 2 }, - { &tlcs900h_device::_PUSHBR, _F, 0, 3 }, { &tlcs900h_device::_POPBR, _F, 0, 4 }, { &tlcs900h_device::_JPI, _I16, 0, 7 }, { &tlcs900h_device::_JPI, _I24, 0, 7 }, - { &tlcs900h_device::_CALLI, _I16, 0, 12 }, { &tlcs900h_device::_CALLI, _I24, 0, 12 }, { &tlcs900h_device::_CALR, _D16, 0, 12 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_NOP, 0, 0, 1 }, { &tlcs900h_device::op_NORMAL, 0, 0, 4 }, { &tlcs900h_device::op_PUSHWR, p_SR, 0, 4 }, { &tlcs900h_device::op_POPWSR, p_SR, 0, 6 }, + { &tlcs900h_device::op_MAX, 0, 0, 4 }, { &tlcs900h_device::op_HALT, 0, 0, 8 }, { &tlcs900h_device::op_EI, p_I8, 0, 5 }, { &tlcs900h_device::op_RETI, 0, 0, 12 }, + { &tlcs900h_device::op_LDBMI, p_M8, p_I8, 5 }, { &tlcs900h_device::op_PUSHBI, p_I8, 0, 4 }, { &tlcs900h_device::op_LDWMI, p_M8, p_I16, 6 }, { &tlcs900h_device::op_PUSHWI, p_I16, 0, 5 }, + { &tlcs900h_device::op_INCF, 0, 0, 2 }, { &tlcs900h_device::op_DECF, 0, 0, 2 }, { &tlcs900h_device::op_RET, 0, 0, 9 }, { &tlcs900h_device::op_RETD, p_I16, 0, 9 }, + { &tlcs900h_device::op_RCF, 0, 0, 2 }, { &tlcs900h_device::op_SCF, 0, 0, 2 }, { &tlcs900h_device::op_CCF, 0, 0, 2 }, { &tlcs900h_device::op_ZCF, 0, 0, 2 }, + { &tlcs900h_device::op_PUSHBR, p_A, 0, 3 }, { &tlcs900h_device::op_POPBR, p_A, 0, 4 }, { &tlcs900h_device::op_EXBRR, p_F, p_F, 2 }, { &tlcs900h_device::op_LDF, p_I8, 0, 2 }, + { &tlcs900h_device::op_PUSHBR, p_F, 0, 3 }, { &tlcs900h_device::op_POPBR, p_F, 0, 4 }, { &tlcs900h_device::op_JPI, p_I16, 0, 7 }, { &tlcs900h_device::op_JPI, p_I24, 0, 7 }, + { &tlcs900h_device::op_CALLI, p_I16, 0, 12 }, { &tlcs900h_device::op_CALLI, p_I24, 0, 12 }, { &tlcs900h_device::op_CALR, p_D16, 0, 12 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, - { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, - { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, - { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, - { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, - { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, - { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, - { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, + { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, + { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, + { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, + { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, + { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, + { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, + { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, + { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, /* 40 - 5F */ - { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, - { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, - { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, - { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, - { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, + { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, + { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, + { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, + { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, + { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, /* 60 - 7F */ - { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, - { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, - { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, - { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, - { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, - { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, - { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, - { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, + { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, + { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, + { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, + { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, + { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, + { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, + { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, + { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, /* 80 - 9F */ - { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, - { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, - { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, - { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, - { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, - { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, - { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, - { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, + { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, + { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, + { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, + { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, + { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, + { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, + { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, + { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, /* A0 - BF */ - { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, - { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, - { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, - { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, - { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, - { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, - { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, - { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, + { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, + { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, + { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, + { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, + { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, + { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, + { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, + { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, /* C0 - DF */ - { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 }, - { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, + { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 }, + { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, - { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 }, - { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, + { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 }, + { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, /* E0 - FF */ - { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 }, - { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, - { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, - { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, - { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 }, - { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::_LDX, 0, 0, 9 }, - { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, - { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 } + { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 }, + { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, + { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, + { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, + { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 }, + { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::op_LDX, 0, 0, 9 }, + { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, + { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 } }; diff --git a/src/devices/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h index 536bc8f99a8..27c3ccdc689 100644 --- a/src/devices/cpu/tlcs900/tlcs900.h +++ b/src/devices/cpu/tlcs900/tlcs900.h @@ -44,13 +44,13 @@ DECLARE_DEVICE_TYPE(TMP95C061, tmp95c061_device) DECLARE_DEVICE_TYPE(TMP95C063, tmp95c063_device) -#define MCFG_TLCS900H_AM8_16( am8_16 ) tlcs900h_device::set_am8_16( *device, am8_16 ); +#define MCFG_TLCS900H_AM8_16( am8_16 ) downcast<tlcs900h_device &>(*device).set_am8_16(am8_16 ); class tlcs900h_device : public cpu_device { public: - // static configuration helpers - static void set_am8_16(device_t &device, int am8_16) { downcast<tlcs900h_device &>(device).m_am8_16 = am8_16; } + // configuration helpers + void set_am8_16(int am8_16) { m_am8_16 = am8_16; } protected: // construction/destruction @@ -229,420 +229,420 @@ protected: uint32_t div16( uint32_t a, uint16_t b ); uint16_t divs8( int16_t a, int8_t b ); uint32_t divs16( int32_t a, int16_t b ); - void _ADCBMI(); - void _ADCBMR(); - void _ADCBRI(); - void _ADCBRM(); - void _ADCBRR(); - void _ADCWMI(); - void _ADCWMR(); - void _ADCWRI(); - void _ADCWRM(); - void _ADCWRR(); - void _ADCLMR(); - void _ADCLRI(); - void _ADCLRM(); - void _ADCLRR(); - void _ADDBMI(); - void _ADDBMR(); - void _ADDBRI(); - void _ADDBRM(); - void _ADDBRR(); - void _ADDWMI(); - void _ADDWMR(); - void _ADDWRI(); - void _ADDWRM(); - void _ADDWRR(); - void _ADDLMR(); - void _ADDLRI(); - void _ADDLRM(); - void _ADDLRR(); - void _ANDBMI(); - void _ANDBMR(); - void _ANDBRI(); - void _ANDBRM(); - void _ANDBRR(); - void _ANDWMI(); - void _ANDWMR(); - void _ANDWRI(); - void _ANDWRM(); - void _ANDWRR(); - void _ANDLMR(); - void _ANDLRI(); - void _ANDLRM(); - void _ANDLRR(); - void _ANDCFBIM(); - void _ANDCFBIR(); - void _ANDCFBRM(); - void _ANDCFBRR(); - void _ANDCFWIR(); - void _ANDCFWRR(); - void _BITBIM(); - void _BITBIR(); - void _BITWIR(); - void _BS1BRR(); - void _BS1FRR(); - void _CALLI(); - void _CALLM(); - void _CALR(); - void _CCF(); - void _CHGBIM(); - void _CHGBIR(); - void _CHGWIR(); - void _CPBMI(); - void _CPBMR(); - void _CPBRI(); - void _CPBRM(); - void _CPBRR(); - void _CPWMI(); - void _CPWMR(); - void _CPWRI(); - void _CPWRM(); - void _CPWRR(); - void _CPLMR(); - void _CPLRI(); - void _CPLRM(); - void _CPLRR(); - void _CPD(); - void _CPDR(); - void _CPDW(); - void _CPDRW(); - void _CPI(); - void _CPIR(); - void _CPIW(); - void _CPIRW(); - void _CPLBR(); - void _CPLWR(); - void _DAABR(); - void _DB(); - void _DECBIM(); - void _DECBIR(); - void _DECWIM(); - void _DECWIR(); - void _DECLIR(); - void _DECF(); - void _DIVBRI(); - void _DIVBRM(); - void _DIVBRR(); - void _DIVWRI(); - void _DIVWRM(); - void _DIVWRR(); - void _DIVSBRI(); - void _DIVSBRM(); - void _DIVSBRR(); - void _DIVSWRI(); - void _DIVSWRM(); - void _DIVSWRR(); - void _DJNZB(); - void _DJNZW(); - void _EI(); - void _EXBMR(); - void _EXBRR(); - void _EXWMR(); - void _EXWRR(); - void _EXTSWR(); - void _EXTSLR(); - void _EXTZWR(); - void _EXTZLR(); - void _HALT(); - void _INCBIM(); - void _INCBIR(); - void _INCWIM(); - void _INCWIR(); - void _INCLIR(); - void _INCF(); - void _JPI(); - void _JPM(); - void _JR(); - void _JRL(); - void _LDBMI(); - void _LDBMM(); - void _LDBMR(); - void _LDBRI(); - void _LDBRM(); - void _LDBRR(); - void _LDWMI(); - void _LDWMM(); - void _LDWMR(); - void _LDWRI(); - void _LDWRM(); - void _LDWRR(); - void _LDLRI(); - void _LDLRM(); - void _LDLRR(); - void _LDLMR(); - void _LDAW(); - void _LDAL(); - void _LDCBRR(); - void _LDCWRR(); - void _LDCLRR(); - void _LDCFBIM(); - void _LDCFBIR(); - void _LDCFBRM(); - void _LDCFBRR(); - void _LDCFWIR(); - void _LDCFWRR(); - void _LDD(); - void _LDDR(); - void _LDDRW(); - void _LDDW(); - void _LDF(); - void _LDI(); - void _LDIR(); - void _LDIRW(); - void _LDIW(); - void _LDX(); - void _LINK(); - void _MAX(); - void _MDEC1(); - void _MDEC2(); - void _MDEC4(); - void _MINC1(); - void _MINC2(); - void _MINC4(); - void _MIRRW(); - void _MULBRI(); - void _MULBRM(); - void _MULBRR(); - void _MULWRI(); - void _MULWRM(); - void _MULWRR(); - void _MULAR(); - void _MULSBRI(); - void _MULSBRM(); - void _MULSBRR(); - void _MULSWRI(); - void _MULSWRM(); - void _MULSWRR(); - void _NEGBR(); - void _NEGWR(); - void _NOP(); - void _NORMAL(); - void _ORBMI(); - void _ORBMR(); - void _ORBRI(); - void _ORBRM(); - void _ORBRR(); - void _ORWMI(); - void _ORWMR(); - void _ORWRI(); - void _ORWRM(); - void _ORWRR(); - void _ORLMR(); - void _ORLRI(); - void _ORLRM(); - void _ORLRR(); - void _ORCFBIM(); - void _ORCFBIR(); - void _ORCFBRM(); - void _ORCFBRR(); - void _ORCFWIR(); - void _ORCFWRR(); - void _PAAWR(); - void _PAALR(); - void _POPBM(); - void _POPBR(); - void _POPWM(); - void _POPWR(); - void _POPWSR(); - void _POPLR(); - void _PUSHBI(); - void _PUSHBM(); - void _PUSHBR(); - void _PUSHWI(); - void _PUSHWM(); - void _PUSHWR(); - void _PUSHLR(); - void _RCF(); - void _RESBIM(); - void _RESBIR(); - void _RESWIR(); - void _RET(); - void _RETCC(); - void _RETD(); - void _RETI(); - void _RLBM(); - void _RLWM(); - void _RLBIR(); - void _RLBRR(); - void _RLWIR(); - void _RLWRR(); - void _RLLIR(); - void _RLLRR(); - void _RLCBM(); - void _RLCWM(); - void _RLCBIR(); - void _RLCBRR(); - void _RLCWIR(); - void _RLCWRR(); - void _RLCLIR(); - void _RLCLRR(); - void _RLDRM(); - void _RRBM(); - void _RRWM(); - void _RRBIR(); - void _RRBRR(); - void _RRWIR(); - void _RRWRR(); - void _RRLIR(); - void _RRLRR(); - void _RRCBM(); - void _RRCWM(); - void _RRCBIR(); - void _RRCBRR(); - void _RRCWIR(); - void _RRCWRR(); - void _RRCLIR(); - void _RRCLRR(); - void _RRDRM(); - void _SBCBMI(); - void _SBCBMR(); - void _SBCBRI(); - void _SBCBRM(); - void _SBCBRR(); - void _SBCWMI(); - void _SBCWMR(); - void _SBCWRI(); - void _SBCWRM(); - void _SBCWRR(); - void _SBCLMR(); - void _SBCLRI(); - void _SBCLRM(); - void _SBCLRR(); - void _SCCBR(); - void _SCCWR(); - void _SCF(); - void _SETBIM(); - void _SETBIR(); - void _SETWIR(); - void _SLABM(); - void _SLAWM(); - void _SLABIR(); - void _SLABRR(); - void _SLAWIR(); - void _SLAWRR(); - void _SLALIR(); - void _SLALRR(); - void _SLLBM(); - void _SLLWM(); - void _SLLBIR(); - void _SLLBRR(); - void _SLLWIR(); - void _SLLWRR(); - void _SLLLIR(); - void _SLLLRR(); - void _SRABM(); - void _SRAWM(); - void _SRABIR(); - void _SRABRR(); - void _SRAWIR(); - void _SRAWRR(); - void _SRALIR(); - void _SRALRR(); - void _SRLBM(); - void _SRLWM(); - void _SRLBIR(); - void _SRLBRR(); - void _SRLWIR(); - void _SRLWRR(); - void _SRLLIR(); - void _SRLLRR(); - void _STCFBIM(); - void _STCFBIR(); - void _STCFBRM(); - void _STCFBRR(); - void _STCFWIR(); - void _STCFWRR(); - void _SUBBMI(); - void _SUBBMR(); - void _SUBBRI(); - void _SUBBRM(); - void _SUBBRR(); - void _SUBWMI(); - void _SUBWMR(); - void _SUBWRI(); - void _SUBWRM(); - void _SUBWRR(); - void _SUBLMR(); - void _SUBLRI(); - void _SUBLRM(); - void _SUBLRR(); - void _SWI(); - void _TSETBIM(); - void _TSETBIR(); - void _TSETWIR(); - void _UNLK(); - void _XORBMI(); - void _XORBMR(); - void _XORBRI(); - void _XORBRM(); - void _XORBRR(); - void _XORWMI(); - void _XORWMR(); - void _XORWRI(); - void _XORWRM(); - void _XORWRR(); - void _XORLMR(); - void _XORLRI(); - void _XORLRM(); - void _XORLRR(); - void _XORCFBIM(); - void _XORCFBIR(); - void _XORCFBRM(); - void _XORCFBRR(); - void _XORCFWIR(); - void _XORCFWRR(); - void _ZCF(); + void op_ADCBMI(); + void op_ADCBMR(); + void op_ADCBRI(); + void op_ADCBRM(); + void op_ADCBRR(); + void op_ADCWMI(); + void op_ADCWMR(); + void op_ADCWRI(); + void op_ADCWRM(); + void op_ADCWRR(); + void op_ADCLMR(); + void op_ADCLRI(); + void op_ADCLRM(); + void op_ADCLRR(); + void op_ADDBMI(); + void op_ADDBMR(); + void op_ADDBRI(); + void op_ADDBRM(); + void op_ADDBRR(); + void op_ADDWMI(); + void op_ADDWMR(); + void op_ADDWRI(); + void op_ADDWRM(); + void op_ADDWRR(); + void op_ADDLMR(); + void op_ADDLRI(); + void op_ADDLRM(); + void op_ADDLRR(); + void op_ANDBMI(); + void op_ANDBMR(); + void op_ANDBRI(); + void op_ANDBRM(); + void op_ANDBRR(); + void op_ANDWMI(); + void op_ANDWMR(); + void op_ANDWRI(); + void op_ANDWRM(); + void op_ANDWRR(); + void op_ANDLMR(); + void op_ANDLRI(); + void op_ANDLRM(); + void op_ANDLRR(); + void op_ANDCFBIM(); + void op_ANDCFBIR(); + void op_ANDCFBRM(); + void op_ANDCFBRR(); + void op_ANDCFWIR(); + void op_ANDCFWRR(); + void op_BITBIM(); + void op_BITBIR(); + void op_BITWIR(); + void op_BS1BRR(); + void op_BS1FRR(); + void op_CALLI(); + void op_CALLM(); + void op_CALR(); + void op_CCF(); + void op_CHGBIM(); + void op_CHGBIR(); + void op_CHGWIR(); + void op_CPBMI(); + void op_CPBMR(); + void op_CPBRI(); + void op_CPBRM(); + void op_CPBRR(); + void op_CPWMI(); + void op_CPWMR(); + void op_CPWRI(); + void op_CPWRM(); + void op_CPWRR(); + void op_CPLMR(); + void op_CPLRI(); + void op_CPLRM(); + void op_CPLRR(); + void op_CPD(); + void op_CPDR(); + void op_CPDW(); + void op_CPDRW(); + void op_CPI(); + void op_CPIR(); + void op_CPIW(); + void op_CPIRW(); + void op_CPLBR(); + void op_CPLWR(); + void op_DAABR(); + void op_DB(); + void op_DECBIM(); + void op_DECBIR(); + void op_DECWIM(); + void op_DECWIR(); + void op_DECLIR(); + void op_DECF(); + void op_DIVBRI(); + void op_DIVBRM(); + void op_DIVBRR(); + void op_DIVWRI(); + void op_DIVWRM(); + void op_DIVWRR(); + void op_DIVSBRI(); + void op_DIVSBRM(); + void op_DIVSBRR(); + void op_DIVSWRI(); + void op_DIVSWRM(); + void op_DIVSWRR(); + void op_DJNZB(); + void op_DJNZW(); + void op_EI(); + void op_EXBMR(); + void op_EXBRR(); + void op_EXWMR(); + void op_EXWRR(); + void op_EXTSWR(); + void op_EXTSLR(); + void op_EXTZWR(); + void op_EXTZLR(); + void op_HALT(); + void op_INCBIM(); + void op_INCBIR(); + void op_INCWIM(); + void op_INCWIR(); + void op_INCLIR(); + void op_INCF(); + void op_JPI(); + void op_JPM(); + void op_JR(); + void op_JRL(); + void op_LDBMI(); + void op_LDBMM(); + void op_LDBMR(); + void op_LDBRI(); + void op_LDBRM(); + void op_LDBRR(); + void op_LDWMI(); + void op_LDWMM(); + void op_LDWMR(); + void op_LDWRI(); + void op_LDWRM(); + void op_LDWRR(); + void op_LDLRI(); + void op_LDLRM(); + void op_LDLRR(); + void op_LDLMR(); + void op_LDAW(); + void op_LDAL(); + void op_LDCBRR(); + void op_LDCWRR(); + void op_LDCLRR(); + void op_LDCFBIM(); + void op_LDCFBIR(); + void op_LDCFBRM(); + void op_LDCFBRR(); + void op_LDCFWIR(); + void op_LDCFWRR(); + void op_LDD(); + void op_LDDR(); + void op_LDDRW(); + void op_LDDW(); + void op_LDF(); + void op_LDI(); + void op_LDIR(); + void op_LDIRW(); + void op_LDIW(); + void op_LDX(); + void op_LINK(); + void op_MAX(); + void op_MDEC1(); + void op_MDEC2(); + void op_MDEC4(); + void op_MINC1(); + void op_MINC2(); + void op_MINC4(); + void op_MIRRW(); + void op_MULBRI(); + void op_MULBRM(); + void op_MULBRR(); + void op_MULWRI(); + void op_MULWRM(); + void op_MULWRR(); + void op_MULAR(); + void op_MULSBRI(); + void op_MULSBRM(); + void op_MULSBRR(); + void op_MULSWRI(); + void op_MULSWRM(); + void op_MULSWRR(); + void op_NEGBR(); + void op_NEGWR(); + void op_NOP(); + void op_NORMAL(); + void op_ORBMI(); + void op_ORBMR(); + void op_ORBRI(); + void op_ORBRM(); + void op_ORBRR(); + void op_ORWMI(); + void op_ORWMR(); + void op_ORWRI(); + void op_ORWRM(); + void op_ORWRR(); + void op_ORLMR(); + void op_ORLRI(); + void op_ORLRM(); + void op_ORLRR(); + void op_ORCFBIM(); + void op_ORCFBIR(); + void op_ORCFBRM(); + void op_ORCFBRR(); + void op_ORCFWIR(); + void op_ORCFWRR(); + void op_PAAWR(); + void op_PAALR(); + void op_POPBM(); + void op_POPBR(); + void op_POPWM(); + void op_POPWR(); + void op_POPWSR(); + void op_POPLR(); + void op_PUSHBI(); + void op_PUSHBM(); + void op_PUSHBR(); + void op_PUSHWI(); + void op_PUSHWM(); + void op_PUSHWR(); + void op_PUSHLR(); + void op_RCF(); + void op_RESBIM(); + void op_RESBIR(); + void op_RESWIR(); + void op_RET(); + void op_RETCC(); + void op_RETD(); + void op_RETI(); + void op_RLBM(); + void op_RLWM(); + void op_RLBIR(); + void op_RLBRR(); + void op_RLWIR(); + void op_RLWRR(); + void op_RLLIR(); + void op_RLLRR(); + void op_RLCBM(); + void op_RLCWM(); + void op_RLCBIR(); + void op_RLCBRR(); + void op_RLCWIR(); + void op_RLCWRR(); + void op_RLCLIR(); + void op_RLCLRR(); + void op_RLDRM(); + void op_RRBM(); + void op_RRWM(); + void op_RRBIR(); + void op_RRBRR(); + void op_RRWIR(); + void op_RRWRR(); + void op_RRLIR(); + void op_RRLRR(); + void op_RRCBM(); + void op_RRCWM(); + void op_RRCBIR(); + void op_RRCBRR(); + void op_RRCWIR(); + void op_RRCWRR(); + void op_RRCLIR(); + void op_RRCLRR(); + void op_RRDRM(); + void op_SBCBMI(); + void op_SBCBMR(); + void op_SBCBRI(); + void op_SBCBRM(); + void op_SBCBRR(); + void op_SBCWMI(); + void op_SBCWMR(); + void op_SBCWRI(); + void op_SBCWRM(); + void op_SBCWRR(); + void op_SBCLMR(); + void op_SBCLRI(); + void op_SBCLRM(); + void op_SBCLRR(); + void op_SCCBR(); + void op_SCCWR(); + void op_SCF(); + void op_SETBIM(); + void op_SETBIR(); + void op_SETWIR(); + void op_SLABM(); + void op_SLAWM(); + void op_SLABIR(); + void op_SLABRR(); + void op_SLAWIR(); + void op_SLAWRR(); + void op_SLALIR(); + void op_SLALRR(); + void op_SLLBM(); + void op_SLLWM(); + void op_SLLBIR(); + void op_SLLBRR(); + void op_SLLWIR(); + void op_SLLWRR(); + void op_SLLLIR(); + void op_SLLLRR(); + void op_SRABM(); + void op_SRAWM(); + void op_SRABIR(); + void op_SRABRR(); + void op_SRAWIR(); + void op_SRAWRR(); + void op_SRALIR(); + void op_SRALRR(); + void op_SRLBM(); + void op_SRLWM(); + void op_SRLBIR(); + void op_SRLBRR(); + void op_SRLWIR(); + void op_SRLWRR(); + void op_SRLLIR(); + void op_SRLLRR(); + void op_STCFBIM(); + void op_STCFBIR(); + void op_STCFBRM(); + void op_STCFBRR(); + void op_STCFWIR(); + void op_STCFWRR(); + void op_SUBBMI(); + void op_SUBBMR(); + void op_SUBBRI(); + void op_SUBBRM(); + void op_SUBBRR(); + void op_SUBWMI(); + void op_SUBWMR(); + void op_SUBWRI(); + void op_SUBWRM(); + void op_SUBWRR(); + void op_SUBLMR(); + void op_SUBLRI(); + void op_SUBLRM(); + void op_SUBLRR(); + void op_SWI(); + void op_TSETBIM(); + void op_TSETBIR(); + void op_TSETWIR(); + void op_UNLK(); + void op_XORBMI(); + void op_XORBMR(); + void op_XORBRI(); + void op_XORBRM(); + void op_XORBRR(); + void op_XORWMI(); + void op_XORWMR(); + void op_XORWRI(); + void op_XORWRM(); + void op_XORWRR(); + void op_XORLMR(); + void op_XORLRI(); + void op_XORLRM(); + void op_XORLRR(); + void op_XORCFBIM(); + void op_XORCFBIR(); + void op_XORCFBRM(); + void op_XORCFBRR(); + void op_XORCFWIR(); + void op_XORCFWRR(); + void op_ZCF(); void prepare_operands(const tlcs900inst *inst); - void _80(); - void _88(); - void _90(); - void _98(); - void _A0(); - void _A8(); - void _B0(); - void _B8(); - void _C0(); + void op_80(); + void op_88(); + void op_90(); + void op_98(); + void op_A0(); + void op_A8(); + void op_B0(); + void op_B8(); + void op_C0(); void oC8(); - void _D0(); + void op_D0(); void oD8(); - void _E0(); - void _E8(); - void _F0(); + void op_E0(); + void op_E8(); + void op_F0(); }; #define MCFG_TMP95C061_PORT1_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port1_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port1_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT1_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_port1_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_port1_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT2_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_port2_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_port2_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT5_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port5_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port5_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT5_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_port5_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_port5_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT6_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port6_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port6_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT6_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_port6_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_port6_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT7_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port7_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port7_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT7_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_port7_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_port7_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT8_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port8_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port8_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT8_WRITE( _port_write ) \ - devcb = &mp95c061_device::set_port8_write( *device, DEVCB_##_port_write ); + devcb = &downcast<mp95c061_device &>(*device).set_port8_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT9_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port9_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port9_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORTA_READ( _port_read ) \ - devcb = &tmp95c061_device::set_porta_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_porta_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORTA_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_porta_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_porta_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORTB_READ( _port_read ) \ - devcb = &tmp95c061_device::set_portb_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_portb_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORTB_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_portb_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_portb_write(DEVCB_##_port_write); class tmp95c061_device : public tlcs900h_device { @@ -650,22 +650,22 @@ public: // construction/destruction tmp95c061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_port1_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port1_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port1_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port1_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port2_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port2_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port5_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port5_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port5_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port5_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port6_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port6_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port7_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port7_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port7_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port7_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port8_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port8_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port8_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port8_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port9_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port9_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porta_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_porta_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porta_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_porta_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portb_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_portb_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portb_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_portb_write.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_port1_read(Object &&cb) { return m_port1_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port1_write(Object &&cb) { return m_port1_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port2_write(Object &&cb) { return m_port2_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port5_read(Object &&cb) { return m_port5_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port5_write(Object &&cb) { return m_port5_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port6_write(Object &&cb) { return m_port6_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port7_read(Object &&cb) { return m_port7_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port7_write(Object &&cb) { return m_port7_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port8_read(Object &&cb) { return m_port8_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port8_write(Object &&cb) { return m_port8_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port9_read(Object &&cb) { return m_port9_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porta_read(Object &&cb) { return m_porta_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porta_write(Object &&cb) { return m_porta_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portb_read(Object &&cb) { return m_portb_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portb_write(Object &&cb) { return m_portb_write.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( internal_r ); DECLARE_WRITE8_MEMBER( internal_w ); @@ -727,44 +727,44 @@ private: }; -#define MCFG_TMP95C063_PORT0_READ( _port_read ) tmp95c063_device::set_port0_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT0_WRITE( _port_write ) tmp95c063_device::set_port0_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT1_READ( _port_read ) tmp95c063_device::set_port1_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT1_WRITE( _port_write ) tmp95c063_device::set_port1_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT2_READ( _port_read ) tmp95c063_device::set_port2_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT2_WRITE( _port_write ) tmp95c063_device::set_port2_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT3_READ( _port_read ) tmp95c063_device::set_port3_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT3_WRITE( _port_write ) tmp95c063_device::set_port3_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT4_READ( _port_read ) tmp95c063_device::set_port4_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT4_WRITE( _port_write ) tmp95c063_device::set_port4_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT5_READ( _port_read ) tmp95c063_device::set_port5_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT5_WRITE( _port_write ) tmp95c063_device::set_port5_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT6_READ( _port_read ) tmp95c063_device::set_port6_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT6_WRITE( _port_write ) tmp95c063_device::set_port6_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT7_READ( _port_read ) tmp95c063_device::set_port7_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT7_WRITE( _port_write ) tmp95c063_device::set_port7_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT8_READ( _port_read ) tmp95c063_device::set_port8_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT8_WRITE( _port_write ) tmp95c063_device::set_port8_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT9_READ( _port_read ) tmp95c063_device::set_port9_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT9_WRITE( _port_write ) tmp95c063_device::set_port9_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORTA_READ( _port_read ) tmp95c063_device::set_porta_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORTA_WRITE( _port_write ) tmp95c063_device::set_porta_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORTB_READ( _port_read ) tmp95c063_device::set_portb_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORTB_WRITE( _port_write ) tmp95c063_device::set_portb_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORTC_READ( _port_read ) tmp95c063_device::set_portc_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORTC_WRITE( _port_write ) tmp95c063_device::set_portc_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORTD_READ( _port_read ) tmp95c063_device::set_portd_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORTD_WRITE( _port_write ) tmp95c063_device::set_portd_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORTE_READ( _port_read ) tmp95c063_device::set_porte_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORTE_WRITE( _port_write ) tmp95c063_device::set_porte_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_AN0_READ( _port_read ) tmp95c063_device::set_an0_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN1_READ( _port_read ) tmp95c063_device::set_an1_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN2_READ( _port_read ) tmp95c063_device::set_an2_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN3_READ( _port_read ) tmp95c063_device::set_an3_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN4_READ( _port_read ) tmp95c063_device::set_an4_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN5_READ( _port_read ) tmp95c063_device::set_an5_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN6_READ( _port_read ) tmp95c063_device::set_an6_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN7_READ( _port_read ) tmp95c063_device::set_an7_read( *device, DEVCB_##_port_read ); +#define MCFG_TMP95C063_PORT0_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port0_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT0_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port0_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT1_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port1_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT1_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port1_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT2_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port2_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT2_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port2_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT3_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port3_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT3_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port3_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT4_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port4_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT4_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port4_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT5_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port5_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT5_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port5_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT6_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port6_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT6_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port6_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT7_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port7_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT7_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port7_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT8_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port8_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT8_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port8_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT9_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port9_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT9_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port9_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTA_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_porta_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTA_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_porta_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTB_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_portb_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTB_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_portb_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTC_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_portc_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTC_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_portc_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTD_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_portd_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTD_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_portd_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTE_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_porte_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTE_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_porte_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_AN0_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an0_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN1_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an1_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN2_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an2_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN3_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an3_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN4_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an4_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN5_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an5_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN6_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an6_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN7_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an7_read(DEVCB_##_port_read); class tmp95c063_device : public tlcs900h_device { @@ -775,37 +775,37 @@ public: DECLARE_READ8_MEMBER( internal_r ); DECLARE_WRITE8_MEMBER( internal_w ); - // static configuration helpers - template <class Object> static devcb_base &set_port1_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port1_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port1_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port1_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port2_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port2_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port5_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port5_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port5_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port5_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port6_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port6_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port6_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port6_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port7_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port7_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port7_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port7_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port8_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port8_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port8_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port8_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port9_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port9_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port9_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port9_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porta_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porta_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porta_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porta_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portb_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portb_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portb_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portb_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portc_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portc_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portd_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portd_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portd_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portd_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porte_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porte_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porte_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porte_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an0_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an0_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an1_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an1_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an2_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an2_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an3_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an3_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an4_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an4_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an5_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an5_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an6_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an6_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an7_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an7_read.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_port1_read(Object &&cb) { return m_port1_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port1_write(Object &&cb) { return m_port1_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port2_write(Object &&cb) { return m_port2_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port5_read(Object &&cb) { return m_port5_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port5_write(Object &&cb) { return m_port5_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port6_read(Object &&cb) { return m_port6_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port6_write(Object &&cb) { return m_port6_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port7_read(Object &&cb) { return m_port7_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port7_write(Object &&cb) { return m_port7_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port8_read(Object &&cb) { return m_port8_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port8_write(Object &&cb) { return m_port8_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port9_read(Object &&cb) { return m_port9_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port9_write(Object &&cb) { return m_port9_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porta_read(Object &&cb) { return m_porta_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porta_write(Object &&cb) { return m_porta_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portb_read(Object &&cb) { return m_portb_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portb_write(Object &&cb) { return m_portb_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portc_read(Object &&cb) { return m_portc_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portd_read(Object &&cb) { return m_portd_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portd_write(Object &&cb) { return m_portd_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porte_read(Object &&cb) { return m_porte_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porte_write(Object &&cb) { return m_porte_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an0_read(Object &&cb) { return m_an0_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an1_read(Object &&cb) { return m_an1_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an2_read(Object &&cb) { return m_an2_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an3_read(Object &&cb) { return m_an3_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an4_read(Object &&cb) { return m_an4_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an5_read(Object &&cb) { return m_an5_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an6_read(Object &&cb) { return m_an6_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an7_read(Object &&cb) { return m_an7_read.set_callback(std::forward<Object>(cb)); } void tmp95c063_mem16(address_map &map); void tmp95c063_mem8(address_map &map); diff --git a/src/devices/cpu/tms1000/tms0270.h b/src/devices/cpu/tms1000/tms0270.h index a4fa7108d59..64f28d4b544 100644 --- a/src/devices/cpu/tms1000/tms0270.h +++ b/src/devices/cpu/tms1000/tms0270.h @@ -16,13 +16,13 @@ // TMS0270 was designed to interface with TMS5100, set it up at driver level #define MCFG_TMS0270_READ_CTL_CB(_devcb) \ - devcb = &tms0270_cpu_device::set_read_ctl_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms0270_cpu_device &>(*device).set_read_ctl_callback(DEVCB_##_devcb); #define MCFG_TMS0270_WRITE_CTL_CB(_devcb) \ - devcb = &tms0270_cpu_device::set_write_ctl_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms0270_cpu_device &>(*device).set_write_ctl_callback(DEVCB_##_devcb); #define MCFG_TMS0270_WRITE_PDC_CB(_devcb) \ - devcb = &tms0270_cpu_device::set_write_pdc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms0270_cpu_device &>(*device).set_write_pdc_callback(DEVCB_##_devcb); class tms0270_cpu_device : public tms0980_cpu_device @@ -30,10 +30,10 @@ class tms0270_cpu_device : public tms0980_cpu_device public: tms0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <class Object> static devcb_base &set_read_ctl_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_read_ctl.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_ctl_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_write_ctl.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_pdc_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_write_pdc.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_ctl_callback(Object &&cb) { return m_read_ctl.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_ctl_callback(Object &&cb) { return m_write_ctl.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_pdc_callback(Object &&cb) { return m_write_pdc.set_callback(std::forward<Object>(cb)); } protected: // overrides diff --git a/src/devices/cpu/tms1000/tms1k_base.h b/src/devices/cpu/tms1000/tms1k_base.h index e34e93e7d1c..ed7164f2d43 100644 --- a/src/devices/cpu/tms1000/tms1k_base.h +++ b/src/devices/cpu/tms1000/tms1k_base.h @@ -19,24 +19,24 @@ // K input pins #define MCFG_TMS1XXX_READ_K_CB(_devcb) \ - devcb = &tms1k_base_device::set_read_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms1k_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb); // O/Segment output pins #define MCFG_TMS1XXX_WRITE_O_CB(_devcb) \ - devcb = &tms1k_base_device::set_write_o_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms1k_base_device &>(*device).set_write_o_callback(DEVCB_##_devcb); // Use this if the output PLA is unknown: // If the microinstructions (or other) PLA is unknown, try using one from another romset. #define MCFG_TMS1XXX_OUTPUT_PLA(_pla) \ - tms1k_base_device::set_output_pla(*device, _pla); + downcast<tms1k_base_device &>(*device).set_output_pla(_pla); // R output pins (also called D on some chips) #define MCFG_TMS1XXX_WRITE_R_CB(_devcb) \ - devcb = &tms1k_base_device::set_write_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms1k_base_device &>(*device).set_write_r_callback(DEVCB_##_devcb); // OFF request on TMS0980 and up #define MCFG_TMS1XXX_POWER_OFF_CB(_devcb) \ - devcb = &tms1k_base_device::set_power_off_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms1k_base_device &>(*device).set_power_off_callback(DEVCB_##_devcb); // HALT input pin on CMOS chips (use set_input_line) #define TMS1XXX_INPUT_LINE_HALT 0 @@ -87,12 +87,12 @@ class tms1k_base_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_o_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_write_o.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_write_r.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_power_off_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_power_off.set_callback(std::forward<Object>(cb)); } - static void set_output_pla(device_t &device, const u16 *output_pla) { downcast<tms1k_base_device &>(device).m_output_pla_table = output_pla; } + // configuration helpers + template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_o_callback(Object &&cb) { return m_write_o.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r_callback(Object &&cb) { return m_write_r.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_power_off_callback(Object &&cb) { return m_power_off.set_callback(std::forward<Object>(cb)); } + void set_output_pla(const u16 *output_pla) { m_output_pla_table = output_pla; } u8 debug_peek_o_index() { return m_o_index; } // get output PLA index, for debugging (don't use in emulation) diff --git a/src/devices/cpu/tms32010/tms32010.h b/src/devices/cpu/tms32010/tms32010.h index b7ed35d7853..1d1f60833c2 100644 --- a/src/devices/cpu/tms32010/tms32010.h +++ b/src/devices/cpu/tms32010/tms32010.h @@ -18,7 +18,7 @@ #define MCFG_TMS32010_BIO_IN_CB(_devcb) \ - devcb = &tms32010_device::set_bio_in_cb(*device, DEVCB_##_devcb); /* BIO input */ + devcb = &downcast<tms32010_device &>(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */ #define TMS32010_INT_PENDING 0x80000000 @@ -44,8 +44,8 @@ public: // construction/destruction tms32010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base & set_bio_in_cb(device_t &device, Object &&cb) { return downcast<tms32010_device &>(device).m_bio_in.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_bio_in_cb(Object &&cb) { return m_bio_in.set_callback(std::forward<Object>(cb)); } void tms32010_ram(address_map &map); void tms32015_ram(address_map &map); diff --git a/src/devices/cpu/tms32025/tms32025.h b/src/devices/cpu/tms32025/tms32025.h index ade0a0289d6..c3576dacb50 100644 --- a/src/devices/cpu/tms32025/tms32025.h +++ b/src/devices/cpu/tms32025/tms32025.h @@ -24,22 +24,22 @@ #define MCFG_TMS32025_BIO_IN_CB(_devcb) \ - devcb = &tms32025_device::set_bio_in_cb(*device, DEVCB_##_devcb); /* BIO input */ + devcb = &downcast<tms32025_device &>(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */ #define MCFG_TMS32025_HOLD_IN_CB(_devcb) \ - devcb = &tms32025_device::set_hold_in_cb(*device, DEVCB_##_devcb); /* HOLD input */ + devcb = &downcast<tms32025_device &>(*device).set_hold_in_cb(DEVCB_##_devcb); /* HOLD input */ #define MCFG_TMS32025_HOLD_ACK_OUT_CB(_devcb) \ - devcb = &tms32025_device::set_hold_ack_out_cb(*device, DEVCB_##_devcb); /* HOLD Acknowledge output */ + devcb = &downcast<tms32025_device &>(*device).set_hold_ack_out_cb(DEVCB_##_devcb); /* HOLD Acknowledge output */ #define MCFG_TMS32025_XF_OUT_CB(_devcb) \ - devcb = &tms32025_device::set_xf_out_cb(*device, DEVCB_##_devcb); /* XF output */ + devcb = &downcast<tms32025_device &>(*device).set_xf_out_cb(DEVCB_##_devcb); /* XF output */ #define MCFG_TMS32025_DR_IN_CB(_devcb) \ - devcb = &tms32025_device::set_dr_in_cb(*device, DEVCB_##_devcb); /* Serial Data Receive input */ + devcb = &downcast<tms32025_device &>(*device).set_dr_in_cb(DEVCB_##_devcb); /* Serial Data Receive input */ #define MCFG_TMS32025_DX_OUT_CB(_devcb) \ - devcb = &tms32025_device::set_dx_out_cb(*device, DEVCB_##_devcb); /* Serial Data Transmit output */ + devcb = &downcast<tms32025_device &>(*device).set_dx_out_cb(DEVCB_##_devcb); /* Serial Data Transmit output */ /**************************************************************************** @@ -83,13 +83,13 @@ public: // construction/destruction tms32025_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template<class _Object> static devcb_base & set_bio_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_bio_in.set_callback(object); } - template<class _Object> static devcb_base & set_hold_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_in.set_callback(object); } - template<class _Object> static devcb_base & set_hold_ack_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_ack_out.set_callback(object); } - template<class _Object> static devcb_base & set_xf_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_xf_out.set_callback(object); } - template<class _Object> static devcb_base & set_dr_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dr_in.set_callback(object); } - template<class _Object> static devcb_base & set_dx_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dx_out.set_callback(object); } + // configuration helpers + template<class Object> devcb_base &set_bio_in_cb(Object &&cb) { return m_bio_in.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_hold_in_cb(Object &&cb) { return m_hold_in.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_hold_ack_out_cb(Object &&cb) { return m_hold_ack_out.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_xf_out_cb(Object &&cb) { return m_xf_out.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_dr_in_cb(Object &&cb) { return m_dr_in.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_dx_out_cb(Object &&cb) { return m_dx_out.set_callback(std::forward<Object>(cb)); } DECLARE_READ16_MEMBER( drr_r); DECLARE_WRITE16_MEMBER(drr_w); diff --git a/src/devices/cpu/tms32031/tms32031.h b/src/devices/cpu/tms32031/tms32031.h index be5ef8d3c42..4b6b3a8057b 100644 --- a/src/devices/cpu/tms32031/tms32031.h +++ b/src/devices/cpu/tms32031/tms32031.h @@ -91,16 +91,16 @@ enum //************************************************************************** #define MCFG_TMS3203X_MCBL(_mode) \ - tms3203x_device::set_mcbl_mode(*device, _mode); + downcast<tms3203x_device &>(*device).set_mcbl_mode(_mode); #define MCFG_TMS3203X_XF0_CB(_devcb) \ - devcb = &tms3203x_device::set_xf0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms3203x_device &>(*device).set_xf0_callback(DEVCB_##_devcb); #define MCFG_TMS3203X_XF1_CB(_devcb) \ - devcb = &tms3203x_device::set_xf1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms3203x_device &>(*device).set_xf1_callback(DEVCB_##_devcb); #define MCFG_TMS3203X_IACK_CB(_devcb) \ - devcb = &tms3203x_device::set_iack_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms3203x_device &>(*device).set_iack_callback(DEVCB_##_devcb); //************************************************************************** @@ -139,10 +139,10 @@ public: virtual ~tms3203x_device(); // inline configuration helpers - static void set_mcbl_mode(device_t &device, bool mode) { downcast<tms3203x_device &>(device).m_mcbl_mode = mode; } - template <class Object> static devcb_base &set_xf0_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_xf0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_xf1_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_xf1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_iack_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_iack_cb.set_callback(std::forward<Object>(cb)); } + void set_mcbl_mode(bool mode) { m_mcbl_mode = mode; } + template <class Object> devcb_base &set_xf0_callback(Object &&cb) { return m_xf0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_xf1_callback(Object &&cb) { return m_xf1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_iack_callback(Object &&cb) { return m_iack_cb.set_callback(std::forward<Object>(cb)); } // public interfaces static float fp_to_float(uint32_t floatdata); diff --git a/src/devices/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h index d1d1c35ca63..056f414d80a 100644 --- a/src/devices/cpu/tms34010/tms34010.h +++ b/src/devices/cpu/tms34010/tms34010.h @@ -104,40 +104,40 @@ enum #define MCFG_TMS340X0_HALT_ON_RESET(_value) \ - tms340x0_device::set_halt_on_reset(*device, _value); + downcast<tms340x0_device &>(*device).set_halt_on_reset(_value); #define MCFG_TMS340X0_PIXEL_CLOCK(_value) \ - tms340x0_device::set_pixel_clock(*device, _value); + downcast<tms340x0_device &>(*device).set_pixel_clock(_value); #define MCFG_TMS340X0_PIXELS_PER_CLOCK(_value) \ - tms340x0_device::set_pixels_per_clock(*device, _value); + downcast<tms340x0_device &>(*device).set_pixels_per_clock(_value); #define TMS340X0_SCANLINE_IND16_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms340x0_device::display_params *params) #define MCFG_TMS340X0_SCANLINE_IND16_CB(_class, _method) \ - tms340x0_device::set_scanline_ind16_callback(*device, tms340x0_device::scanline_ind16_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<tms340x0_device &>(*device).set_scanline_ind16_callback(tms340x0_device::scanline_ind16_cb_delegate(&_class::_method, #_class "::" #_method, this)); #define TMS340X0_SCANLINE_RGB32_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms340x0_device::display_params *params) #define MCFG_TMS340X0_SCANLINE_RGB32_CB(_class, _method) \ - tms340x0_device::set_scanline_rgb32_callback(*device, tms340x0_device::scanline_rgb32_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<tms340x0_device &>(*device).set_scanline_rgb32_callback(tms340x0_device::scanline_rgb32_cb_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_TMS340X0_OUTPUT_INT_CB(_devcb) \ - devcb = &tms340x0_device::set_output_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms340x0_device &>(*device).set_output_int_callback(DEVCB_##_devcb); #define TMS340X0_TO_SHIFTREG_CB_MEMBER(_name) void _name(address_space &space, offs_t address, uint16_t *shiftreg) #define MCFG_TMS340X0_TO_SHIFTREG_CB(_class, _method) \ - tms340x0_device::set_to_shiftreg_callback(*device, tms340x0_device::to_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<tms340x0_device &>(*device).set_to_shiftreg_callback(tms340x0_device::to_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this)); #define TMS340X0_FROM_SHIFTREG_CB_MEMBER(_name) void _name(address_space &space, offs_t address, uint16_t *shiftreg) #define MCFG_TMS340X0_FROM_SHIFTREG_CB(_class, _method) \ - tms340x0_device::set_from_shiftreg_callback(*device, tms340x0_device::from_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<tms340x0_device &>(*device).set_from_shiftreg_callback(tms340x0_device::from_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this)); class tms340x0_device : public cpu_device, @@ -160,15 +160,15 @@ public: typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> to_shiftreg_cb_delegate; typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> from_shiftreg_cb_delegate; - static void set_halt_on_reset(device_t &device, bool halt_on_reset) { downcast<tms340x0_device &>(device).m_halt_on_reset = halt_on_reset; } - static void set_pixel_clock(device_t &device, uint32_t pixclock) { downcast<tms340x0_device &>(device).m_pixclock = pixclock; } - static void set_pixel_clock(device_t &device, const XTAL &xtal) { set_pixel_clock(device, xtal.value()); } - static void set_pixels_per_clock(device_t &device, int pixperclock) { downcast<tms340x0_device &>(device).m_pixperclock = pixperclock; } - static void set_scanline_ind16_callback(device_t &device, scanline_ind16_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_ind16_cb = callback; } - static void set_scanline_rgb32_callback(device_t &device, scanline_rgb32_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_rgb32_cb = callback; } - template <class Object> static devcb_base &set_output_int_callback(device_t &device, Object &&cb) { return downcast<tms340x0_device &>(device).m_output_int_cb.set_callback(std::forward<Object>(cb)); } - static void set_to_shiftreg_callback(device_t &device, to_shiftreg_cb_delegate callback) { downcast<tms340x0_device &>(device).m_to_shiftreg_cb = callback; } - static void set_from_shiftreg_callback(device_t &device, from_shiftreg_cb_delegate callback) { downcast<tms340x0_device &>(device).m_from_shiftreg_cb = callback; } + void set_halt_on_reset(bool halt_on_reset) { m_halt_on_reset = halt_on_reset; } + void set_pixel_clock(uint32_t pixclock) { m_pixclock = pixclock; } + void set_pixel_clock(const XTAL &xtal) { set_pixel_clock(xtal.value()); } + void set_pixels_per_clock(int pixperclock) { m_pixperclock = pixperclock; } + template <typename Object> void set_scanline_ind16_callback(Object &&cb) { m_scanline_ind16_cb = std::forward<Object>(cb); } + template <typename Object> void set_scanline_rgb32_callback(Object &&cb) { m_scanline_rgb32_cb = std::forward<Object>(cb); } + template <class Object> devcb_base &set_output_int_callback(Object &&cb) { return m_output_int_cb.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_to_shiftreg_callback(Object &&cb) { m_to_shiftreg_cb = std::forward<Object>(cb); } + template <typename Object> void set_from_shiftreg_callback(Object &&cb) { m_from_shiftreg_cb = std::forward<Object>(cb); } void get_display_params(display_params *params); void tms34010_state_postload(); diff --git a/src/devices/cpu/tms7000/tms7000.h b/src/devices/cpu/tms7000/tms7000.h index 987aa8af543..2fdbf26af43 100644 --- a/src/devices/cpu/tms7000/tms7000.h +++ b/src/devices/cpu/tms7000/tms7000.h @@ -16,29 +16,29 @@ // read-only on 70x0 #define MCFG_TMS7000_IN_PORTA_CB(_devcb) \ - devcb = &tms7000_device::set_port_read_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTA_CB(_devcb) \ - devcb = &tms7000_device::set_port_write_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb); // write-only #define MCFG_TMS7000_OUT_PORTB_CB(_devcb) \ - devcb = &tms7000_device::set_port_write_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb); #define MCFG_TMS7000_IN_PORTC_CB(_devcb) \ - devcb = &tms7000_device::set_port_read_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTC_CB(_devcb) \ - devcb = &tms7000_device::set_port_write_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb); #define MCFG_TMS7000_IN_PORTD_CB(_devcb) \ - devcb = &tms7000_device::set_port_read_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTD_CB(_devcb) \ - devcb = &tms7000_device::set_port_write_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb); // TMS70C46 only #define MCFG_TMS7000_IN_PORTE_CB(_devcb) \ - devcb = &tms7000_device::set_port_read_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTE_CB(_devcb) \ - devcb = &tms7000_device::set_port_write_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb); enum { TMS7000_PC=1, TMS7000_SP, TMS7000_ST }; @@ -57,11 +57,9 @@ public: // construction/destruction tms7000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - template<class Object> - static devcb_base &set_port_read_cb(device_t &device, int p, Object &&object) { return downcast<tms7000_device &>(device).m_port_in_cb[p].set_callback(std::move(object)); } - template<class Object> - static devcb_base &set_port_write_cb(device_t &device, int p, Object &&object) { return downcast<tms7000_device &>(device).m_port_out_cb[p].set_callback(std::move(object)); } + // 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)); } 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); }; diff --git a/src/devices/cpu/tms9900/tms9900.h b/src/devices/cpu/tms9900/tms9900.h index 61a0fc46b69..7c320908937 100644 --- a/src/devices/cpu/tms9900/tms9900.h +++ b/src/devices/cpu/tms9900/tms9900.h @@ -54,13 +54,13 @@ public: void set_hold(int state); // Callbacks - template<class _Object> static devcb_base &static_set_extop_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_external_operation.set_callback(object); } - template<class _Object> static devcb_base &static_set_intlevel_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_get_intlevel.set_callback(object); } - template<class _Object> static devcb_base &static_set_iaq_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_iaq_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_clkout_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_clock_out_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_wait_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_wait_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_holda_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_holda_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_dbin_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_dbin_line.set_callback(object); } + template<class Object> devcb_base &set_extop_callback(Object &&cb) { return m_external_operation.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_intlevel_callback(Object &&cb) { return m_get_intlevel.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_iaq_callback(Object &&cb) { return m_iaq_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_clkout_callback(Object &&cb) { return m_clock_out_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_wait_callback(Object &&cb) { return m_wait_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_holda_callback(Object &&cb) { return m_holda_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_dbin_callback(Object &&cb) { return m_dbin_line.set_callback(std::forward<Object>(cb)); } protected: tms99xx_device(const machine_config &mconfig, device_type type, diff --git a/src/devices/cpu/tms9900/tms9995.h b/src/devices/cpu/tms9900/tms9995.h index 9550cff94e4..e623c1573af 100644 --- a/src/devices/cpu/tms9900/tms9995.h +++ b/src/devices/cpu/tms9900/tms9995.h @@ -28,19 +28,19 @@ enum }; #define MCFG_TMS9995_EXTOP_HANDLER( _extop) \ - devcb = &tms9995_device::static_set_extop_callback( *device, DEVCB_##_extop ); + devcb = &downcast<tms9995_device &>(*device).set_extop_callback(DEVCB_##_extop); #define MCFG_TMS9995_IAQ_HANDLER( _iaq ) \ - devcb = &tms9995_device::static_set_iaq_callback( *device, DEVCB_##_iaq ); + devcb = &downcast<tms9995_device &>(*device).set_iaq_callback(DEVCB_##_iaq); #define MCFG_TMS9995_CLKOUT_HANDLER( _clkout ) \ - devcb = &tms9995_device::static_set_clkout_callback( *device, DEVCB_##_clkout ); + devcb = &downcast<tms9995_device &>(*device).set_clkout_callback(DEVCB_##_clkout); #define MCFG_TMS9995_HOLDA_HANDLER( _holda ) \ - devcb = &tms9995_device::static_set_holda_callback( *device, DEVCB_##_holda ); + devcb = &downcast<tms9995_device &>(*device).set_holda_callback(DEVCB_##_holda); #define MCFG_TMS9995_DBIN_HANDLER( _dbin ) \ - devcb = &tms9995_device::static_set_dbin_callback( *device, DEVCB_##_dbin ); + devcb = &downcast<tms9995_device &>(*device).set_dbin_callback(DEVCB_##_dbin); #define MCFG_TMS9995_ENABLE_OVINT( _ovint ) \ downcast<tms9995_device*>(device)->set_overflow_interrupt( _ovint ); @@ -66,11 +66,11 @@ public: DECLARE_WRITE_LINE_MEMBER( reset_line ); // Callbacks - template<class _Object> static devcb_base &static_set_extop_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_external_operation.set_callback(object); } - template<class _Object> static devcb_base &static_set_iaq_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_iaq_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_clkout_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_clock_out_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_holda_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_holda_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_dbin_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_dbin_line.set_callback(object); } + template<class Object> devcb_base &set_extop_callback(Object &&cb) { return m_external_operation.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_iaq_callback(Object &&cb) { return m_iaq_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_clkout_callback(Object &&cb) { return m_clock_out_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_holda_callback(Object &&cb) { return m_holda_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_dbin_callback(Object &&cb) { return m_dbin_line.set_callback(std::forward<Object>(cb)); } // For debugger access uint8_t debug_read_onchip_memory(offs_t addr) { return m_onchip_memory[addr & 0xff]; }; diff --git a/src/devices/cpu/tms9900/tms99com.h b/src/devices/cpu/tms9900/tms99com.h index 3a1aeeb57ee..2ee65b3f2cc 100644 --- a/src/devices/cpu/tms9900/tms99com.h +++ b/src/devices/cpu/tms9900/tms99com.h @@ -47,25 +47,25 @@ MCFG_DEVICE_IO_MAP(_iomap) #define MCFG_TMS99xx_EXTOP_HANDLER( _extop) \ - devcb = &tms99xx_device::static_set_extop_callback( *device, DEVCB_##_extop ); + devcb = &downcast<tms99xx_device &>(*device).set_extop_callback(DEVCB_##_extop); #define MCFG_TMS99xx_INTLEVEL_HANDLER( _intlevel ) \ - devcb = &tms99xx_device::static_set_intlevel_callback( *device, DEVCB_##_intlevel ); + devcb = &downcast<tms99xx_device &>(*device).set_intlevel_callback(DEVCB_##_intlevel); #define MCFG_TMS99xx_IAQ_HANDLER( _iaq ) \ - devcb = &tms99xx_device::static_set_iaq_callback( *device, DEVCB_##_iaq ); + devcb = &downcast<tms99xx_device &>(*device).set_iaq_callback(DEVCB_##_iaq); #define MCFG_TMS99xx_CLKOUT_HANDLER( _clkout ) \ - devcb = &tms99xx_device::static_set_clkout_callback( *device, DEVCB_##_clkout ); + devcb = &downcast<tms99xx_device &>(*device).set_clkout_callback(DEVCB_##_clkout); #define MCFG_TMS99xx_WAIT_HANDLER( _wait ) \ - devcb = &tms99xx_device::static_set_wait_callback( *device, DEVCB_##_wait ); + devcb = &downcast<tms99xx_device &>(*device).set_wait_callback(DEVCB_##_wait); #define MCFG_TMS99xx_HOLDA_HANDLER( _holda ) \ - devcb = &tms99xx_device::static_set_holda_callback( *device, DEVCB_##_holda ); + devcb = &downcast<tms99xx_device &>(*device).set_holda_callback(DEVCB_##_holda); #define MCFG_TMS99xx_DBIN_HANDLER( _dbin ) \ - devcb = &tms99xx_device::static_set_dbin_callback( *device, DEVCB_##_dbin ); + devcb = &downcast<tms99xx_device &>(*device).set_dbin_callback(DEVCB_##_dbin); enum { diff --git a/src/devices/cpu/ucom4/ucom4.h b/src/devices/cpu/ucom4/ucom4.h index 3dcadb11e26..1b47c612e37 100644 --- a/src/devices/cpu/ucom4/ucom4.h +++ b/src/devices/cpu/ucom4/ucom4.h @@ -14,35 +14,35 @@ // I/O ports setup #define MCFG_UCOM4_READ_A_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_read_a_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_read_a_callback(DEVCB_##_devcb); #define MCFG_UCOM4_READ_B_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_read_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_read_b_callback(DEVCB_##_devcb); #define MCFG_UCOM4_READ_C_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_read_c_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_read_c_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_C_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_c_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_c_callback(DEVCB_##_devcb); #define MCFG_UCOM4_READ_D_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_read_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_D_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_E_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_e_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_e_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_F_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_f_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_f_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_G_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_H_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_h_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_h_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_I_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_i_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_i_callback(DEVCB_##_devcb); enum { @@ -99,19 +99,19 @@ enum class ucom4_cpu_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_a_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_a.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_c_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_c.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_write_c_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_c.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_e_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_e.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_g_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_g.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_h_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_h.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_i_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_i.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_a_callback(Object &&cb) { return m_read_a.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_b_callback(Object &&cb) { return m_read_b.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_c_callback(Object &&cb) { return m_read_c.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_write_c_callback(Object &&cb) { return m_write_c.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_e_callback(Object &&cb) { return m_write_e.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_f_callback(Object &&cb) { return m_write_f.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_g_callback(Object &&cb) { return m_write_g.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_h_callback(Object &&cb) { return m_write_h.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_i_callback(Object &&cb) { return m_write_i.set_callback(std::forward<Object>(cb)); } protected: // construction/destruction diff --git a/src/devices/cpu/upd7725/upd7725.h b/src/devices/cpu/upd7725/upd7725.h index ec00eb1e153..16c196c5a66 100644 --- a/src/devices/cpu/upd7725/upd7725.h +++ b/src/devices/cpu/upd7725/upd7725.h @@ -30,37 +30,37 @@ enum #define MCFG_NECDSP_IN_INT_CB(_devcb) \ - devcb = &necdsp_device::set_in_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_int_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SI_CB(_devcb) \ - devcb = &necdsp_device::set_in_si_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_si_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SCK_CB(_devcb) \ - devcb = &necdsp_device::set_in_sck_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_sck_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SIEN_CB(_devcb) \ - devcb = &necdsp_device::set_in_sien_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_sien_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SOEN_CB(_devcb) \ - devcb = &necdsp_device::set_in_soen_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_soen_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_DACK_CB(_devcb) \ - devcb = &necdsp_device::set_in_dack_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_dack_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_P0_CB(_devcb) \ - devcb = &necdsp_device::set_out_p0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_out_p0_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_P1_CB(_devcb) \ - devcb = &necdsp_device::set_out_p1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_out_p1_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_SO_CB(_devcb) \ - devcb = &necdsp_device::set_out_so_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_out_so_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_SORQ_CB(_devcb) \ - devcb = &necdsp_device::set_out_sorq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_out_sorq_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_DRQ_CB(_devcb) \ - devcb = &necdsp_device::set_out_drq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_out_drq_callback(DEVCB_##_devcb); // ======================> necdsp_device @@ -68,17 +68,17 @@ enum class necdsp_device : public cpu_device { public: - template <class Object> static devcb_base &set_in_int_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_int_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_in_si_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_si_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_in_sck_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_sck_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_in_sien_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_sien_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_in_soen_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_soen_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_in_dack_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_dack_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_p0_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_p0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_p1_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_p1_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_out_so_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_so_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_out_sorq_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_sorq_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_out_drq_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_int_callback(Object &&cb) { return m_in_int_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_in_si_callback(Object &&cb) { return m_in_si_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_in_sck_callback(Object &&cb) { return m_in_sck_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_in_sien_callback(Object &&cb) { return m_in_sien_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_in_soen_callback(Object &&cb) { return m_in_soen_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_in_dack_callback(Object &&cb) { return m_in_dack_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_p0_callback(Object &&cb) { return m_out_p0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_p1_callback(Object &&cb) { return m_out_p1_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_out_so_callback(Object &&cb) { return m_out_so_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_out_sorq_callback(Object &&cb) { return m_out_sorq_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_out_drq_callback(Object &&cb) { return m_out_drq_cb.set_callback(std::forward<Object>(cb)); } uint8_t snesdsp_read(bool mode); void snesdsp_write(bool mode, uint8_t data); diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h index eb68f1b0537..1f0e12fcc85 100644 --- a/src/devices/cpu/upd7810/upd7810.h +++ b/src/devices/cpu/upd7810/upd7810.h @@ -39,74 +39,74 @@ enum #define MCFG_UPD7810_TO(_devcb) \ - devcb = &upd7810_device::set_to_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_to_func(DEVCB_##_devcb); #define MCFG_UPD7810_CO0(_devcb) \ - devcb = &upd7810_device::set_co0_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_co0_func(DEVCB_##_devcb); #define MCFG_UPD7810_CO1(_devcb) \ - devcb = &upd7810_device::set_co1_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_co1_func(DEVCB_##_devcb); #define MCFG_UPD7810_TXD(_devcb) \ - devcb = &upd7810_device::set_txd_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_txd_func(DEVCB_##_devcb); #define MCFG_UPD7810_RXD(_devcb) \ - devcb = &upd7810_device::set_rxd_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_rxd_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN0(_devcb) \ - devcb = &upd7810_device::set_an0_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an0_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN1(_devcb) \ - devcb = &upd7810_device::set_an1_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an1_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN2(_devcb) \ - devcb = &upd7810_device::set_an2_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an2_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN3(_devcb) \ - devcb = &upd7810_device::set_an3_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an3_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN4(_devcb) \ - devcb = &upd7810_device::set_an4_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an4_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN5(_devcb) \ - devcb = &upd7810_device::set_an5_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an5_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN6(_devcb) \ - devcb = &upd7810_device::set_an6_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an6_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN7(_devcb) \ - devcb = &upd7810_device::set_an7_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an7_func(DEVCB_##_devcb); #define MCFG_UPD7810_PORTA_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pa_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pa_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTB_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pb_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pb_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTC_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pc_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pc_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTD_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pd_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pd_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTF_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pf_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pf_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTA_WRITE_CB(_devcb) \ - devcb = &upd7810_device::set_pa_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pa_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTB_WRITE_CB(_devcb) \ - devcb = &upd7810_device::set_pb_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pb_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTC_WRITE_CB(_devcb) \ - devcb = &upd7810_device::set_pc_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pc_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTD_WRITE_CB(_devcb) \ - devcb = &upd7810_device::set_pd_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pd_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTF_WRITE_CB(_devcb) \ - devcb = &upd7810_device::set_pf_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pf_out_cb(DEVCB_##_devcb); #define MCFG_UPD7807_PORTA_READ_CB MCFG_UPD7810_PORTA_READ_CB @@ -121,7 +121,7 @@ enum #define MCFG_UPD7807_PORTF_WRITE_CB MCFG_UPD7810_PORTF_WRITE_CB #define MCFG_UPD7807_PORTT_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pt_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pt_in_cb(DEVCB_##_devcb); class upd7810_device : public cpu_device @@ -130,33 +130,33 @@ public: // construction/destruction upd7810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_to_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_to_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_co0_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_co0_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_co1_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_co1_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txd_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_txd_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rxd_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_rxd_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an0_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an0_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an1_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an1_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an2_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an2_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an3_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an3_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an4_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an4_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an5_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an5_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an6_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an6_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an7_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an7_func.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_pa_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pa_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pb_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pc_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pc_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pd_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pd_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pf_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pf_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pa_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pa_out_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pb_out_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pc_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pc_out_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pd_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pd_out_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pf_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pf_out_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_pt_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pt_in_cb.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_to_func(Object &&cb) { return m_to_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_co0_func(Object &&cb) { return m_co0_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_co1_func(Object &&cb) { return m_co1_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txd_func(Object &&cb) { return m_txd_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxd_func(Object &&cb) { return m_rxd_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an0_func(Object &&cb) { return m_an0_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an1_func(Object &&cb) { return m_an1_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an2_func(Object &&cb) { return m_an2_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an3_func(Object &&cb) { return m_an3_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an4_func(Object &&cb) { return m_an4_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an5_func(Object &&cb) { return m_an5_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an6_func(Object &&cb) { return m_an6_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an7_func(Object &&cb) { return m_an7_func.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_pa_in_cb(Object &&cb) { return m_pa_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_in_cb(Object &&cb) { return m_pb_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pc_in_cb(Object &&cb) { return m_pc_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pd_in_cb(Object &&cb) { return m_pd_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pf_in_cb(Object &&cb) { return m_pf_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_out_cb(Object &&cb) { return m_pa_out_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_out_cb(Object &&cb) { return m_pb_out_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pc_out_cb(Object &&cb) { return m_pc_out_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pd_out_cb(Object &&cb) { return m_pd_out_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pf_out_cb(Object &&cb) { return m_pf_out_cb.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_pt_in_cb(Object &&cb) { return m_pt_in_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER(pa_w); DECLARE_WRITE8_MEMBER(pb_w); diff --git a/src/devices/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h index ad5bf2a1c42..96654f1efc8 100644 --- a/src/devices/cpu/z8/z8.h +++ b/src/devices/cpu/z8/z8.h @@ -13,46 +13,44 @@ #define MCFG_Z8_PORT_P0_READ_CB(_devcb) \ - devcb = &z8_device::set_input_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_input_cb(0, DEVCB_##_devcb); #define MCFG_Z8_PORT_P1_READ_CB(_devcb) \ - devcb = &z8_device::set_input_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_input_cb(1, DEVCB_##_devcb); #define MCFG_Z8_PORT_P2_READ_CB(_devcb) \ - devcb = &z8_device::set_input_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_input_cb(2, DEVCB_##_devcb); #define MCFG_Z8_PORT_P3_READ_CB(_devcb) \ - devcb = &z8_device::set_input_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_input_cb(3, DEVCB_##_devcb); #define MCFG_Z8_PORT_P0_WRITE_CB(_devcb) \ - devcb = &z8_device::set_output_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_output_cb(0, DEVCB_##_devcb); #define MCFG_Z8_PORT_P1_WRITE_CB(_devcb) \ - devcb = &z8_device::set_output_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_output_cb(1, DEVCB_##_devcb); #define MCFG_Z8_PORT_P2_WRITE_CB(_devcb) \ - devcb = &z8_device::set_output_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_output_cb(2, DEVCB_##_devcb); #define MCFG_Z8_PORT_P3_WRITE_CB(_devcb) \ - devcb = &z8_device::set_output_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_output_cb(3, DEVCB_##_devcb); class z8_device : public cpu_device { public: - // static configuration - template<class Object> - static devcb_base &set_input_cb(device_t &device, int port, Object &&object) + // configuration + template<class Object> devcb_base &set_input_cb(int port, Object &&object) { assert(port >= 0 && port < 4); - return downcast<z8_device &>(device).m_input_cb[port].set_callback(std::forward<Object>(object)); + return m_input_cb[port].set_callback(std::forward<Object>(object)); } - template<class Object> - static devcb_base &set_output_cb(device_t &device, int port, Object &&object) + template<class Object> devcb_base &set_output_cb(int port, Object &&object) { assert(port >= 0 && port < 4); - return downcast<z8_device &>(device).m_output_cb[port].set_callback(std::forward<Object>(object)); + return m_output_cb[port].set_callback(std::forward<Object>(object)); } protected: diff --git a/src/devices/cpu/z80/kl5c80a12.h b/src/devices/cpu/z80/kl5c80a12.h index c9dbf4b118e..d77dce279c5 100644 --- a/src/devices/cpu/z80/kl5c80a12.h +++ b/src/devices/cpu/z80/kl5c80a12.h @@ -36,8 +36,6 @@ class kl5c80a12_device : public z80_device public: kl5c80a12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t); - // static configuration helpers - protected: // device-level overrides virtual void device_add_mconfig(machine_config &config) override; diff --git a/src/devices/cpu/z80/tmpz84c011.h b/src/devices/cpu/z80/tmpz84c011.h index f54b639a7f2..b210dbd1589 100644 --- a/src/devices/cpu/z80/tmpz84c011.h +++ b/src/devices/cpu/z80/tmpz84c011.h @@ -25,46 +25,46 @@ // CTC callbacks #define MCFG_TMPZ84C011_ZC0_CB(_devcb) \ - devcb = &tmpz84c011_device::set_zc0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_zc0_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C011_ZC1_CB(_devcb) \ - devcb = &tmpz84c011_device::set_zc1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_zc1_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C011_ZC2_CB(_devcb) \ - devcb = &tmpz84c011_device::set_zc2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_zc2_callback(DEVCB_##_devcb); // I/O callbacks #define MCFG_TMPZ84C011_PORTA_READ_CB(_devcb) \ - devcb = &tmpz84c011_device::set_inportsa_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_inportsa_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTB_READ_CB(_devcb) \ - devcb = &tmpz84c011_device::set_inportsb_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_inportsb_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTC_READ_CB(_devcb) \ - devcb = &tmpz84c011_device::set_inportsc_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_inportsc_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTD_READ_CB(_devcb) \ - devcb = &tmpz84c011_device::set_inportsd_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_inportsd_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTE_READ_CB(_devcb) \ - devcb = &tmpz84c011_device::set_inportse_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_inportse_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTA_WRITE_CB(_devcb) \ - devcb = &tmpz84c011_device::set_outportsa_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_outportsa_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTB_WRITE_CB(_devcb) \ - devcb = &tmpz84c011_device::set_outportsb_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_outportsb_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTC_WRITE_CB(_devcb) \ - devcb = &tmpz84c011_device::set_outportsc_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_outportsc_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTD_WRITE_CB(_devcb) \ - devcb = &tmpz84c011_device::set_outportsd_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_outportsd_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTE_WRITE_CB(_devcb) \ - devcb = &tmpz84c011_device::set_outportse_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_outportse_cb(DEVCB_##_devcb); /*************************************************************************** @@ -76,22 +76,22 @@ class tmpz84c011_device : public z80_device public: tmpz84c011_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t); - // static configuration helpers - template<class _Object> static devcb_base &set_zc0_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc0_cb.set_callback(object); } - template<class _Object> static devcb_base &set_zc1_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc1_cb.set_callback(object); } - template<class _Object> static devcb_base &set_zc2_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc2_cb.set_callback(object); } - - template<class _Object> static devcb_base & set_outportsa_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsa.set_callback(object); } - template<class _Object> static devcb_base & set_outportsb_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsb.set_callback(object); } - template<class _Object> static devcb_base & set_outportsc_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsc.set_callback(object); } - template<class _Object> static devcb_base & set_outportsd_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsd.set_callback(object); } - template<class _Object> static devcb_base & set_outportse_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportse.set_callback(object); } - - template<class _Object> static devcb_base & set_inportsa_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsa.set_callback(object); } - template<class _Object> static devcb_base & set_inportsb_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsb.set_callback(object); } - template<class _Object> static devcb_base & set_inportsc_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsc.set_callback(object); } - template<class _Object> static devcb_base & set_inportsd_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsd.set_callback(object); } - template<class _Object> static devcb_base & set_inportse_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportse.set_callback(object); } + // configuration helpers + template<class Object> devcb_base &set_zc0_callback(Object &&cb) { return m_zc0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_zc1_callback(Object &&cb) { return m_zc1_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_zc2_callback(Object &&cb) { return m_zc2_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_outportsa_cb(Object &&cb) { return m_outportsa.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_outportsb_cb(Object &&cb) { return m_outportsb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_outportsc_cb(Object &&cb) { return m_outportsc.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_outportsd_cb(Object &&cb) { return m_outportsd.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_outportse_cb(Object &&cb) { return m_outportse.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_inportsa_cb(Object &&cb) { return m_inportsa.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_inportsb_cb(Object &&cb) { return m_inportsb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_inportsc_cb(Object &&cb) { return m_inportsc.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_inportsd_cb(Object &&cb) { return m_inportsd.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_inportse_cb(Object &&cb) { return m_inportse.set_callback(std::forward<Object>(cb)); } // CTC public interface DECLARE_WRITE_LINE_MEMBER( trg0 ) { m_ctc->trg0(state); } diff --git a/src/devices/cpu/z80/tmpz84c015.h b/src/devices/cpu/z80/tmpz84c015.h index f1729207674..c061b95efb1 100644 --- a/src/devices/cpu/z80/tmpz84c015.h +++ b/src/devices/cpu/z80/tmpz84c015.h @@ -24,77 +24,77 @@ // SIO callbacks #define MCFG_TMPZ84C015_OUT_TXDA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_txda_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_txda_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_DTRA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_dtra_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RTSA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_rtsa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_WRDYA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_wrdya_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_wrdya_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_SYNCA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_synca_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_synca_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_TXDB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_txdb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_DTRB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_dtrb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RTSB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_rtsb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_WRDYB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_wrdyb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_wrdyb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_SYNCB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_syncb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RXDRQA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_rxdrqa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_rxdrqa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_TXDRQA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_txdrqa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdrqa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RXDRQB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_rxdrqb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_rxdrqb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_TXDRQB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_txdrqb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdrqb_callback(DEVCB_##_devcb); // CTC callbacks #define MCFG_TMPZ84C015_ZC0_CB(_devcb) \ - devcb = &tmpz84c015_device::set_zc0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_zc0_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_ZC1_CB(_devcb) \ - devcb = &tmpz84c015_device::set_zc1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_zc1_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_ZC2_CB(_devcb) \ - devcb = &tmpz84c015_device::set_zc2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_zc2_callback(DEVCB_##_devcb); // PIO callbacks #define MCFG_TMPZ84C015_IN_PA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_in_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_PA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_ARDY_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_ardy_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_ardy_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_IN_PB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_in_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_PB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_BRDY_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_brdy_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_brdy_callback(DEVCB_##_devcb); /*************************************************************************** @@ -106,35 +106,35 @@ class tmpz84c015_device : public z80_device public: tmpz84c015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t); - // static configuration helpers - template<class _Object> static devcb_base &set_out_txda_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txda_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_dtra_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_dtra_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_rtsa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rtsa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_wrdya_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_wrdya_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_synca_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_synca_cb.set_callback(object); } - - template<class _Object> static devcb_base &set_out_txdb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txdb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_dtrb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_dtrb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_rtsb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rtsb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_wrdyb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_wrdyb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_syncb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_syncb_cb.set_callback(object); } - - template<class _Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rxdrqa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_txdrqa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txdrqa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rxdrqb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_txdrqb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txdrqb_cb.set_callback(object); } - - template<class _Object> static devcb_base &set_zc0_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_zc0_cb.set_callback(object); } - template<class _Object> static devcb_base &set_zc1_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_zc1_cb.set_callback(object); } - template<class _Object> static devcb_base &set_zc2_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_zc2_cb.set_callback(object); } - - template<class _Object> static devcb_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_in_pa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_pa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_ardy_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_ardy_cb.set_callback(object); } - - template<class _Object> static devcb_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_in_pb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_pb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_brdy_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_brdy_cb.set_callback(object); } + // configuration helpers + template<class Object> devcb_base &set_out_txda_callback(Object &&cb) { return m_out_txda_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dtra_callback(Object &&cb) { return m_out_dtra_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_rtsa_callback(Object &&cb) { return m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_wrdya_callback(Object &&cb) { return m_out_wrdya_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_synca_callback(Object &&cb) { return m_out_synca_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_out_txdb_callback(Object &&cb) { return m_out_txdb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dtrb_callback(Object &&cb) { return m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_rtsb_callback(Object &&cb) { return m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_wrdyb_callback(Object &&cb) { return m_out_wrdyb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_syncb_callback(Object &&cb) { return m_out_syncb_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_out_rxdrqa_callback(Object &&cb) { return m_out_rxdrqa_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_txdrqa_callback(Object &&cb) { return m_out_txdrqa_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_rxdrqb_callback(Object &&cb) { return m_out_rxdrqb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_txdrqb_callback(Object &&cb) { return m_out_txdrqb_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_zc0_callback(Object &&cb) { return m_zc0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_zc1_callback(Object &&cb) { return m_zc1_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_zc2_callback(Object &&cb) { return m_zc2_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_ardy_callback(Object &&cb) { return m_out_ardy_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_brdy_callback(Object &&cb) { return m_out_brdy_cb.set_callback(std::forward<Object>(cb)); } // SIO public interface DECLARE_WRITE_LINE_MEMBER( rxa_w ) { m_sio->rxa_w(state); } diff --git a/src/devices/cpu/z80/z80.h b/src/devices/cpu/z80/z80.h index 19f89a3cc22..3acb54b2cf0 100644 --- a/src/devices/cpu/z80/z80.h +++ b/src/devices/cpu/z80/z80.h @@ -8,13 +8,13 @@ #include "z80daisy.h" #define MCFG_Z80_SET_IRQACK_CALLBACK(_devcb) \ - devcb = &z80_device::set_irqack_cb(*device, DEVCB_##_devcb); + devcb = &downcast<z80_device &>(*device).set_irqack_cb(DEVCB_##_devcb); #define MCFG_Z80_SET_REFRESH_CALLBACK(_devcb) \ - devcb = &z80_device::set_refresh_cb(*device, DEVCB_##_devcb); + devcb = &downcast<z80_device &>(*device).set_refresh_cb(DEVCB_##_devcb); #define MCFG_Z80_SET_HALT_CALLBACK(_devcb) \ - devcb = &z80_device::set_halt_cb(*device, DEVCB_##_devcb); + devcb = &downcast<z80_device &>(*device).set_halt_cb(DEVCB_##_devcb); enum { @@ -42,9 +42,9 @@ public: z80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); void z80_set_cycle_tables(const uint8_t *op, const uint8_t *cb, const uint8_t *ed, const uint8_t *xy, const uint8_t *xycb, const uint8_t *ex); - template<class _Object> static devcb_base &set_irqack_cb(device_t &device, _Object object) { return downcast<z80_device &>(device).m_irqack_cb.set_callback(object); } - template<class _Object> static devcb_base &set_refresh_cb(device_t &device, _Object object) { return downcast<z80_device &>(device).m_refresh_cb.set_callback(object); } - template<class _Object> static devcb_base &set_halt_cb(device_t &device, _Object object) { return downcast<z80_device &>(device).m_halt_cb.set_callback(object); } + template<class Object> devcb_base &set_irqack_cb(Object &&cb) { return m_irqack_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_refresh_cb(Object &&cb) { return m_refresh_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_halt_cb(Object &&cb) { return m_halt_cb.set_callback(std::forward<Object>(cb)); } protected: z80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/cpu/z80/z80daisy.cpp b/src/devices/cpu/z80/z80daisy.cpp index 23169dd3600..094c97b851c 100644 --- a/src/devices/cpu/z80/z80daisy.cpp +++ b/src/devices/cpu/z80/z80daisy.cpp @@ -64,19 +64,6 @@ z80_daisy_chain_interface::~z80_daisy_chain_interface() //------------------------------------------------- -// static_set_daisy_config - configuration helper -// to set up the daisy chain -//------------------------------------------------- -void z80_daisy_chain_interface::static_set_daisy_config(device_t &device, const z80_daisy_config *config) -{ - z80_daisy_chain_interface *daisyintf; - if (!device.interface(daisyintf)) - throw emu_fatalerror("MCFG_Z80_DAISY_CHAIN called on device '%s' with no daisy chain interface", device.tag()); - daisyintf->m_daisy_config = config; -} - - -//------------------------------------------------- // interface_post_start - work to be done after // actually starting a device //------------------------------------------------- diff --git a/src/devices/cpu/z80/z80daisy.h b/src/devices/cpu/z80/z80daisy.h index 896285516ee..75a20a38316 100644 --- a/src/devices/cpu/z80/z80daisy.h +++ b/src/devices/cpu/z80/z80daisy.h @@ -31,7 +31,7 @@ const uint8_t Z80_DAISY_IEO = 0x02; // interrupt disable mask (IEO) // configure devices #define MCFG_Z80_DAISY_CHAIN(_config) \ - z80_daisy_chain_interface::static_set_daisy_config(*device, _config); + dynamic_cast<z80_daisy_chain_interface &>(*device).set_daisy_config(_config); @@ -81,7 +81,7 @@ public: virtual ~z80_daisy_chain_interface(); // configuration helpers - static void static_set_daisy_config(device_t &device, const z80_daisy_config *config); + void set_daisy_config(const z80_daisy_config *config) { m_daisy_config = config; } // getters bool daisy_chain_present() const { return (m_chain != nullptr); } diff --git a/src/devices/cpu/z80/z80daisy_generic.cpp b/src/devices/cpu/z80/z80daisy_generic.cpp index 57d08c13066..3a5b6562f30 100644 --- a/src/devices/cpu/z80/z80daisy_generic.cpp +++ b/src/devices/cpu/z80/z80daisy_generic.cpp @@ -34,16 +34,6 @@ z80daisy_generic_device::z80daisy_generic_device(const machine_config &mconfig, } //------------------------------------------------- -// static_set_vector - static configuration -//------------------------------------------------- - -void z80daisy_generic_device::static_set_vector(device_t &device, uint8_t vector) -{ - z80daisy_generic_device &dev = downcast<z80daisy_generic_device &>(device); - dev.m_vector = vector; -} - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/cpu/z80/z80daisy_generic.h b/src/devices/cpu/z80/z80daisy_generic.h index 389c5eda43f..24fa5b98d90 100644 --- a/src/devices/cpu/z80/z80daisy_generic.h +++ b/src/devices/cpu/z80/z80daisy_generic.h @@ -20,10 +20,10 @@ #define MCFG_Z80DAISY_GENERIC_ADD(_tag, _vector) \ MCFG_DEVICE_ADD(_tag, Z80DAISY_GENERIC, 0) \ - z80daisy_generic_device::static_set_vector(*device, _vector); \ + downcast<z80daisy_generic_device &>(*device).set_vector(_vector); \ #define MCFG_Z80DAISY_GENERIC_INT_CB(_devcb) \ - devcb = &z80daisy_generic_device::set_int_handler(*device, DEVCB_##_devcb); + devcb = &downcast<z80daisy_generic_device &>(*device).set_int_handler(DEVCB_##_devcb); //************************************************************************** @@ -37,11 +37,10 @@ public: z80daisy_generic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // callbacks - template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) - { return downcast<z80daisy_generic_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); } // configuration - static void static_set_vector(device_t &device, uint8_t vector); + void set_vector(uint8_t vector) { m_vector = vector; } DECLARE_WRITE_LINE_MEMBER(int_w); DECLARE_WRITE_LINE_MEMBER(mask_w); diff --git a/src/devices/cpu/z8000/z8000.h b/src/devices/cpu/z8000/z8000.h index 4e3f69e5858..bea1dfe9b5a 100644 --- a/src/devices/cpu/z8000/z8000.h +++ b/src/devices/cpu/z8000/z8000.h @@ -30,7 +30,7 @@ enum #define Z8000_HALT 0x0100 /* halted flag */ #define MCFG_Z8000_MO(_devcb) \ - devcb = &z8002_device::set_mo_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z8002_device &>(*device).set_mo_callback(DEVCB_##_devcb); class z8002_device : public cpu_device, public z8000_disassembler::config { @@ -39,7 +39,7 @@ public: z8002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~z8002_device(); - template <class Object> static devcb_base &set_mo_callback(device_t &device, Object &&cb) { return downcast<z8002_device &>(device).m_mo_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_mo_callback(Object &&cb) { return m_mo_out.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(mi_w) { m_mi = state; } // XXX: this has to apply in the middle of an insn for now protected: diff --git a/src/devices/imagedev/bitbngr.h b/src/devices/imagedev/bitbngr.h index 2da3096d098..5bd7392f1d9 100644 --- a/src/devices/imagedev/bitbngr.h +++ b/src/devices/imagedev/bitbngr.h @@ -13,8 +13,8 @@ class bitbanger_device : public device_t, public device_image_interface { public: - static void static_set_interface(device_t &device, const char *_interface) { downcast<bitbanger_device &>(device).m_interface = _interface; } - static void static_set_readonly(device_t &device, bool is_readonly) { downcast<bitbanger_device &>(device).m_is_readonly = is_readonly; } + void set_interface(const char *interface) { m_interface = interface; } + void set_readonly(bool is_readonly) { m_is_readonly = is_readonly; } // construction/destruction bitbanger_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -49,9 +49,9 @@ private: }; #define MCFG_BITBANGER_INTERFACE(_interface) \ - bitbanger_device::static_set_interface(*device, _interface); + downcast<bitbanger_device &>(*device).set_interface(_interface); #define MCFG_BITBANGER_READONLY(_readonly) \ - bitbanger_device::static_set_readonly(*device, _readonly); + downcast<bitbanger_device &>(*device).set_readonly(_readonly); // device type definition DECLARE_DEVICE_TYPE(BITBANGER, bitbanger_device) diff --git a/src/devices/imagedev/cassette.h b/src/devices/imagedev/cassette.h index 3825a806af2..8ca824c61ca 100644 --- a/src/devices/imagedev/cassette.h +++ b/src/devices/imagedev/cassette.h @@ -50,10 +50,10 @@ public: cassette_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~cassette_image_device(); - static void static_set_formats(device_t &device, const struct CassetteFormat* const *formats) { downcast<cassette_image_device &>(device).m_formats = formats; } - static void static_set_create_opts(device_t &device, const struct CassetteOptions *create_opts) { downcast<cassette_image_device &>(device).m_create_opts = create_opts; } - static void static_set_default_state(device_t &device, cassette_state default_state) { downcast<cassette_image_device &>(device).m_default_state = default_state; } - static void static_set_interface(device_t &device, const char *_interface) { downcast<cassette_image_device &>(device).m_interface = _interface; } + void set_formats(const struct CassetteFormat* const *formats) { m_formats = formats; } + void set_create_opts(const struct CassetteOptions *create_opts) { m_create_opts = create_opts; } + void set_default_state(cassette_state default_state) { m_default_state = default_state; } + void set_interface(const char *interface) { m_interface = interface; } // image-level overrides virtual image_init_result call_load() override; @@ -132,15 +132,15 @@ typedef device_type_iterator<cassette_image_device> cassette_device_iterator; MCFG_DEVICE_MODIFY(_tag) #define MCFG_CASSETTE_FORMATS(_formats) \ - cassette_image_device::static_set_formats(*device, _formats); + downcast<cassette_image_device &>(*device).set_formats(_formats); #define MCFG_CASSETTE_CREATE_OPTS(_create_opts) \ - cassette_image_device::static_set_create_opts(*device, _create_opts); + downcast<cassette_image_device &>(*device).set_create_opts(_create_opts); #define MCFG_CASSETTE_DEFAULT_STATE(_state) \ - cassette_image_device::static_set_default_state(*device, (cassette_state) (_state)); + downcast<cassette_image_device &>(*device).set_default_state((cassette_state) (_state)); #define MCFG_CASSETTE_INTERFACE(_interface) \ - cassette_image_device::static_set_interface(*device, _interface); + downcast<cassette_image_device &>(*device).set_interface(_interface); #endif // MAME_DEVICES_IMAGEDEV_CASSETTE_H diff --git a/src/devices/imagedev/chd_cd.h b/src/devices/imagedev/chd_cd.h index e257ff67d3f..5de6f514293 100644 --- a/src/devices/imagedev/chd_cd.h +++ b/src/devices/imagedev/chd_cd.h @@ -30,7 +30,7 @@ public: cdrom_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~cdrom_image_device(); - static void static_set_interface(device_t &device, const char *_interface) { downcast<cdrom_image_device &>(device).m_interface = _interface; } + void set_interface(const char *interface) { m_interface = interface; } // image-level overrides virtual image_init_result call_load() override; @@ -76,6 +76,6 @@ DECLARE_DEVICE_TYPE(CDROM, cdrom_image_device) MCFG_DEVICE_ADD(_tag, CDROM, 0) #define MCFG_CDROM_INTERFACE(_interface) \ - cdrom_image_device::static_set_interface(*device, _interface); + downcast<cdrom_image_device &>(*device).set_interface(_interface); #endif // MAME_DEVICES_IMAGEDEV_CHD_CD_H diff --git a/src/devices/imagedev/diablo.h b/src/devices/imagedev/diablo.h index 5f1ed1e141c..2acc293a359 100644 --- a/src/devices/imagedev/diablo.h +++ b/src/devices/imagedev/diablo.h @@ -27,9 +27,9 @@ public: diablo_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~diablo_image_device(); - static void static_set_device_load(device_t &device, device_image_load_delegate callback) { downcast<diablo_image_device &>(device).m_device_image_load = callback; } - static void static_set_device_unload(device_t &device, device_image_func_delegate callback) { downcast<diablo_image_device &>(device).m_device_image_unload = callback; } - static void static_set_interface(device_t &device, const char *_interface) { downcast<diablo_image_device &>(device).m_interface = _interface; } + template <typename Object> void set_device_load(Object &&cb) { m_device_image_load = std::forward<Object>(cb); } + template <typename Object> void set_device_unload(Object &&cb) { m_device_image_unload = std::forward<Object>(cb); } + void set_interface(const char *interface) { m_interface = interface; } // image-level overrides virtual image_init_result call_load() override; @@ -81,12 +81,12 @@ DECLARE_DEVICE_TYPE(DIABLO, diablo_image_device) MCFG_DEVICE_ADD(_tag, DIABLO, 0) #define MCFG_DIABLO_LOAD(_class,_method) \ - diablo_image_device::static_set_device_load(*device, device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this)); + downcast<diablo_image_device &>(*device).set_device_load(device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this)); #define MCFG_DIABLO_UNLOAD(_class,_method) \ - diablo_image_device::static_set_device_unload(*device, device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this)); + downcast<diablo_image_device &>(*device).set_device_unload(device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this)); #define MCFG_DIABLO_INTERFACE(_interface) \ - diablo_image_device::static_set_interface(*device, _interface); + downcast<diablo_image_device &>(*device).set_interface(_interface); #endif // MAME_DEVICES_IMAGEDEV_DIABLO_H diff --git a/src/devices/imagedev/flopdrv.h b/src/devices/imagedev/flopdrv.h index 695bd81e6e6..1546eec8546 100644 --- a/src/devices/imagedev/flopdrv.h +++ b/src/devices/imagedev/flopdrv.h @@ -88,7 +88,7 @@ struct chrn_id #define FLOPPY_DRIVE_INDEX 0x0020 #define MCFG_LEGACY_FLOPPY_IDX_CB(_devcb) \ - devcb = &legacy_floppy_image_device::set_out_idx_func(*device, DEVCB_##_devcb); + devcb = &downcast<legacy_floppy_image_device &>(*device).set_out_idx_func(DEVCB_##_devcb); class legacy_floppy_image_device : public device_t, public device_image_interface @@ -98,8 +98,8 @@ public: legacy_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~legacy_floppy_image_device(); - static void static_set_floppy_config(device_t &device, const floppy_interface *config) { downcast<legacy_floppy_image_device &>(device).m_config = config; } - template<class _Object> static devcb_base &set_out_idx_func(device_t &device, _Object object) { return downcast<legacy_floppy_image_device &>(device).m_out_idx_func.set_callback(object); } + void set_floppy_config(const floppy_interface *config) { m_config = config; } + template<class Object> devcb_base &set_out_idx_func(Object &&cb) { return m_out_idx_func.set_callback(std::forward<Object>(cb)); } virtual image_init_result call_load() override; virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); } @@ -247,7 +247,7 @@ int floppy_get_count(running_machine &machine); #define MCFG_LEGACY_FLOPPY_CONFIG(_config) \ - legacy_floppy_image_device::static_set_floppy_config(*device, &(_config)); + downcast<legacy_floppy_image_device &>(*device).set_floppy_config(&(_config)); #define MCFG_LEGACY_FLOPPY_DRIVE_ADD(_tag, _config) \ MCFG_DEVICE_ADD(_tag, LEGACY_FLOPPY, 0) \ diff --git a/src/devices/imagedev/harddriv.h b/src/devices/imagedev/harddriv.h index 5c683e54fcf..674ff5c3570 100644 --- a/src/devices/imagedev/harddriv.h +++ b/src/devices/imagedev/harddriv.h @@ -28,9 +28,9 @@ public: harddisk_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~harddisk_image_device(); - static void static_set_device_load(device_t &device, device_image_load_delegate callback) { downcast<harddisk_image_device &>(device).m_device_image_load = callback; } - static void static_set_device_unload(device_t &device, device_image_func_delegate callback) { downcast<harddisk_image_device &>(device).m_device_image_unload = callback; } - static void static_set_interface(device_t &device, const char *_interface) { downcast<harddisk_image_device &>(device).m_interface = _interface; } + template <typename Object> void set_device_load(Object &&cb) { m_device_image_load = std::forward<Object>(cb); } + template <typename Object> void set_device_unload(Object &&cb) { m_device_image_unload = std::forward<Object>(cb); } + void set_interface(const char *interface) { m_interface = interface; } // image-level overrides virtual image_init_result call_load() override; @@ -84,12 +84,12 @@ DECLARE_DEVICE_TYPE(HARDDISK, harddisk_image_device) MCFG_DEVICE_ADD(_tag, HARDDISK, 0) #define MCFG_HARDDISK_LOAD(_class,_method) \ - harddisk_image_device::static_set_device_load(*device, device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this)); + downcast<harddisk_image_device &>(*device).set_device_load(device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this)); #define MCFG_HARDDISK_UNLOAD(_class,_method) \ - harddisk_image_device::static_set_device_unload(*device, device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this)); + downcast<harddisk_image_device &>(*device).set_device_unload(device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this)); #define MCFG_HARDDISK_INTERFACE(_interface) \ - harddisk_image_device::static_set_interface(*device, _interface); + downcast<harddisk_image_device &>(*device).set_interface(_interface); #endif // MAME_DEVICES_IMAGEDEV_HARDDRIV_H diff --git a/src/devices/imagedev/midiin.h b/src/devices/imagedev/midiin.h index 581558bbe1b..d11339e7160 100644 --- a/src/devices/imagedev/midiin.h +++ b/src/devices/imagedev/midiin.h @@ -15,7 +15,7 @@ #define MCFG_MIDIIN_INPUT_CB(_devcb) \ - devcb = &midiin_device::set_input_callback(*device, DEVCB_##_devcb); + devcb = &downcast<midiin_device &>(*device).set_input_callback(DEVCB_##_devcb); /*************************************************************************** @@ -30,7 +30,7 @@ public: // construction/destruction midiin_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template<class _Object> static devcb_base &set_input_callback(device_t &device, _Object object) { return downcast<midiin_device &>(device).m_input_cb.set_callback(object); } + template<class _Object> devcb_base &set_input_callback(_Object object) { return m_input_cb.set_callback(object); } // image-level overrides virtual image_init_result call_load() override; diff --git a/src/devices/imagedev/printer.h b/src/devices/imagedev/printer.h index acf07296882..3ee9db01571 100644 --- a/src/devices/imagedev/printer.h +++ b/src/devices/imagedev/printer.h @@ -14,7 +14,7 @@ #pragma once #define MCFG_PRINTER_ONLINE_CB(_devcb) \ - devcb = &printer_image_device::set_online_callback(*device, DEVCB_##_devcb); + devcb = &downcast<printer_image_device &>(*device).set_online_callback(DEVCB_##_devcb); /*************************************************************************** TYPE DEFINITIONS @@ -29,7 +29,7 @@ public: // construction/destruction printer_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template<class _Object> static devcb_base &set_online_callback(device_t &device, _Object object) { return downcast<printer_image_device &>(device).m_online_cb.set_callback(object); } + template<class _Object> devcb_base &set_online_callback(_Object object) { return m_online_cb.set_callback(object); } // image-level overrides virtual image_init_result call_load() override; diff --git a/src/devices/imagedev/snapquik.h b/src/devices/imagedev/snapquik.h index dfe458979bb..921f0b2d4c3 100644 --- a/src/devices/imagedev/snapquik.h +++ b/src/devices/imagedev/snapquik.h @@ -24,7 +24,7 @@ public: snapshot_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~snapshot_image_device(); - static void static_set_interface(device_t &device, const char *_interface) { downcast<snapshot_image_device &>(device).m_interface = _interface; } + void set_interface(const char *interface) { m_interface = interface; } // image-level overrides virtual image_init_result call_load() override; @@ -93,13 +93,13 @@ DECLARE_DEVICE_TYPE(QUICKLOAD, quickload_image_device) static_cast<snapshot_image_device *>(device)->set_handler(SNAPSHOT_LOAD_DELEGATE(_class,_load), _file_extensions, _delay); #define MCFG_SNAPSHOT_INTERFACE(_interface) \ - snapshot_image_device::static_set_interface(*device, _interface); + downcast<snapshot_image_device &>(*device).set_interface(_interface); #define MCFG_QUICKLOAD_ADD(_tag, _class, _load, _file_extensions, _delay) \ MCFG_DEVICE_ADD(_tag, QUICKLOAD, 0) \ static_cast<quickload_image_device *>(device)->set_handler(QUICKLOAD_LOAD_DELEGATE(_class,_load), _file_extensions, _delay); #define MCFG_QUICKLOAD_INTERFACE(_interface) \ - quickload_image_device::static_set_interface(*device, _interface); + downcast<quickload_image_device &>(*device).set_interface(_interface); #endif // MAME_DEVICES_IMAGEDEV_SNAPQUIK_H diff --git a/src/devices/machine/1mb5.h b/src/devices/machine/1mb5.h index 3350e4a968c..9c7c76eab3e 100644 --- a/src/devices/machine/1mb5.h +++ b/src/devices/machine/1mb5.h @@ -14,16 +14,16 @@ #pragma once #define MCFG_1MB5_IRL_HANDLER(_devcb) \ - devcb = &hp_1mb5_device::set_irl_handler(*device , DEVCB_##_devcb); + devcb = &downcast<hp_1mb5_device &>(*device).set_irl_handler(DEVCB_##_devcb); #define MCFG_1MB5_HALT_HANDLER(_devcb) \ - devcb = &hp_1mb5_device::set_halt_handler(*device , DEVCB_##_devcb); + devcb = &downcast<hp_1mb5_device &>(*device).set_halt_handler(DEVCB_##_devcb); #define MCFG_1MB5_RESET_HANDLER(_devcb) \ - devcb = &hp_1mb5_device::set_reset_handler(*device , DEVCB_##_devcb); + devcb = &downcast<hp_1mb5_device &>(*device).set_reset_handler(DEVCB_##_devcb); #define MCFG_1MB5_INT_HANDLER(_devcb) \ - devcb = &hp_1mb5_device::set_int_handler(*device , DEVCB_##_devcb); + devcb = &downcast<hp_1mb5_device &>(*device).set_int_handler(DEVCB_##_devcb); class hp_1mb5_device : public device_t { @@ -32,10 +32,10 @@ public: hp_1mb5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_irl_handler(device_t &device, Object &&cb) { return downcast<hp_1mb5_device &>(device).m_irl_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_halt_handler(device_t &device, Object &&cb) { return downcast<hp_1mb5_device &>(device).m_halt_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb) { return downcast<hp_1mb5_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) { return downcast<hp_1mb5_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irl_handler(Object &&cb) { return m_irl_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_halt_handler(Object &&cb) { return m_halt_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_reset_handler(Object &&cb) { return m_reset_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); } // CPU access DECLARE_READ8_MEMBER(cpu_r); diff --git a/src/devices/machine/53c7xx.h b/src/devices/machine/53c7xx.h index 7dff86c2256..f2af9e616f8 100644 --- a/src/devices/machine/53c7xx.h +++ b/src/devices/machine/53c7xx.h @@ -17,13 +17,13 @@ #define MCFG_NCR53C7XX_IRQ_HANDLER(_devcb) \ - devcb = &ncr53c7xx_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ncr53c7xx_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_NCR53C7XX_HOST_WRITE(_devcb) \ - devcb = &ncr53c7xx_device::set_host_write(*device, DEVCB_##_devcb); + devcb = &downcast<ncr53c7xx_device &>(*device).set_host_write(DEVCB_##_devcb); #define MCFG_NCR53C7XX_HOST_READ(_devcb) \ - devcb = &ncr53c7xx_device::set_host_read(*device, DEVCB_##_devcb); + devcb = &downcast<ncr53c7xx_device &>(*device).set_host_read(DEVCB_##_devcb); class ncr53c7xx_device : public nscsi_device, public device_execute_interface { @@ -32,9 +32,9 @@ public: ncr53c7xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ncr53c7xx_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_host_write(device_t &device, Object &&cb) { return downcast<ncr53c7xx_device &>(device).m_host_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_host_read(device_t &device, Object &&cb) { return downcast<ncr53c7xx_device &>(device).m_host_read.set_callback(std::forward<Object>(cb)); } + 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_host_write(Object &&cb) { return m_host_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_host_read(Object &&cb) { return m_host_read.set_callback(std::forward<Object>(cb)); } // our API DECLARE_READ32_MEMBER(read); diff --git a/src/devices/machine/53c810.h b/src/devices/machine/53c810.h index 6ff69a4c606..0e0d0743b14 100644 --- a/src/devices/machine/53c810.h +++ b/src/devices/machine/53c810.h @@ -22,9 +22,9 @@ public: // construction/destruction lsi53c810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_irq_callback(device_t &device, irq_delegate &&callback) { downcast<lsi53c810_device &>(device).m_irq_cb = std::move(callback); } - static void set_dma_callback(device_t &device, dma_delegate &&callback) { downcast<lsi53c810_device &>(device).m_dma_cb = std::move(callback); } - static void set_fetch_callback(device_t &device, fetch_delegate &&callback) { downcast<lsi53c810_device &>(device).m_fetch_cb = std::move(callback); } + template <typename Object> void set_irq_callback(Object &&cb) { m_irq_cb = std::forward<Object>(cb); } + template <typename Object> void set_dma_callback(Object &&cb) { m_dma_cb = std::forward<Object>(cb); } + template <typename Object> void set_fetch_callback(Object &&cb) { m_fetch_cb = std::forward<Object>(cb); } uint8_t reg_r(int offset); void reg_w(int offset, uint8_t data); @@ -103,12 +103,12 @@ DECLARE_DEVICE_TYPE(LSI53C810, lsi53c810_device) #define MCFG_LSI53C810_IRQ_CB(_class, _method) \ - lsi53c810_device::set_irq_callback(*device, lsi53c810_device::irq_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<lsi53c810_device &>(*device).set_irq_callback(lsi53c810_device::irq_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_LSI53C810_DMA_CB(_class, _method) \ - lsi53c810_device::set_dma_callback(*device, lsi53c810_device::dma_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<lsi53c810_device &>(*device).set_dma_callback(lsi53c810_device::dma_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_LSI53C810_FETCH_CB(_class, _method) \ - lsi53c810_device::set_fetch_callback(*device, lsi53c810_device::fetch_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<lsi53c810_device &>(*device).set_fetch_callback(lsi53c810_device::fetch_delegate(&_class::_method, #_class "::" #_method, this)); #endif // MAME_MACHINE_53C810_H diff --git a/src/devices/machine/64h156.h b/src/devices/machine/64h156.h index 0964f85558a..62e1ccabff9 100644 --- a/src/devices/machine/64h156.h +++ b/src/devices/machine/64h156.h @@ -71,13 +71,13 @@ //************************************************************************** #define MCFG_64H156_ATN_CALLBACK(_write) \ - devcb = &c64h156_device::set_atn_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c64h156_device &>(*device).set_atn_wr_callback(DEVCB_##_write); #define MCFG_64H156_SYNC_CALLBACK(_write) \ - devcb = &c64h156_device::set_sync_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c64h156_device &>(*device).set_sync_wr_callback(DEVCB_##_write); #define MCFG_64H156_BYTE_CALLBACK(_write) \ - devcb = &c64h156_device::set_byte_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<c64h156_device &>(*device).set_byte_wr_callback(DEVCB_##_write); @@ -93,9 +93,9 @@ public: // construction/destruction c64h156_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_atn_wr_callback(device_t &device, Object &&cb) { return downcast<c64h156_device &>(device).m_write_atn.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sync_wr_callback(device_t &device, Object &&cb) { return downcast<c64h156_device &>(device).m_write_sync.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_byte_wr_callback(device_t &device, Object &&cb) { return downcast<c64h156_device &>(device).m_write_byte.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_atn_wr_callback(Object &&cb) { return m_write_atn.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sync_wr_callback(Object &&cb) { return m_write_sync.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_byte_wr_callback(Object &&cb) { return m_write_byte.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( yb_r ); DECLARE_WRITE8_MEMBER( yb_w ); diff --git a/src/devices/machine/6522via.h b/src/devices/machine/6522via.h index a06f1977469..facb67b34a3 100644 --- a/src/devices/machine/6522via.h +++ b/src/devices/machine/6522via.h @@ -24,29 +24,29 @@ // TODO: REMOVE THESE #define MCFG_VIA6522_READPA_HANDLER(_devcb) \ - devcb = &via6522_device::set_readpa_handler(*device, DEVCB_##_devcb); + devcb = &downcast<via6522_device &>(*device).set_readpa_handler(DEVCB_##_devcb); #define MCFG_VIA6522_READPB_HANDLER(_devcb) \ - devcb = &via6522_device::set_readpb_handler(*device, DEVCB_##_devcb); + devcb = &downcast<via6522_device &>(*device).set_readpb_handler(DEVCB_##_devcb); // TODO: CONVERT THESE TO WRITE LINE #define MCFG_VIA6522_WRITEPA_HANDLER(_devcb) \ - devcb = &via6522_device::set_writepa_handler(*device, DEVCB_##_devcb); + devcb = &downcast<via6522_device &>(*device).set_writepa_handler(DEVCB_##_devcb); #define MCFG_VIA6522_WRITEPB_HANDLER(_devcb) \ - devcb = &via6522_device::set_writepb_handler(*device, DEVCB_##_devcb); + devcb = &downcast<via6522_device &>(*device).set_writepb_handler(DEVCB_##_devcb); #define MCFG_VIA6522_CA2_HANDLER(_devcb) \ - devcb = &via6522_device::set_ca2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<via6522_device &>(*device).set_ca2_handler(DEVCB_##_devcb); #define MCFG_VIA6522_CB1_HANDLER(_devcb) \ - devcb = &via6522_device::set_cb1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<via6522_device &>(*device).set_cb1_handler(DEVCB_##_devcb); #define MCFG_VIA6522_CB2_HANDLER(_devcb) \ - devcb = &via6522_device::set_cb2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<via6522_device &>(*device).set_cb2_handler(DEVCB_##_devcb); #define MCFG_VIA6522_IRQ_HANDLER(_devcb) \ - devcb = &via6522_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<via6522_device &>(*device).set_irq_handler(DEVCB_##_devcb); /*************************************************************************** @@ -83,17 +83,17 @@ public: via6522_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // TODO: REMOVE THESE - template <class Object> static devcb_base &set_readpa_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_in_a_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_readpb_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_in_b_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_readpa_handler(Object &&cb) { return m_in_a_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_readpb_handler(Object &&cb) { return m_in_b_handler.set_callback(std::forward<Object>(cb)); } // TODO: CONVERT THESE TO WRITE LINE - template <class Object> static devcb_base &set_writepa_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_out_a_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_writepb_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_out_b_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_writepa_handler(Object &&cb) { return m_out_a_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_writepb_handler(Object &&cb) { return m_out_b_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ca2_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_ca2_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cb1_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_cb1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cb2_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_cb2_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ca2_handler(Object &&cb) { return m_ca2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cb1_handler(Object &&cb) { return m_cb1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cb2_handler(Object &&cb) { return m_cb2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } virtual void map(address_map &map); diff --git a/src/devices/machine/6525tpi.h b/src/devices/machine/6525tpi.h index 1164e3b31d5..a844de2ac0f 100644 --- a/src/devices/machine/6525tpi.h +++ b/src/devices/machine/6525tpi.h @@ -43,15 +43,15 @@ class tpi6525_device : public device_t public: tpi6525_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_pc_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_in_pc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pc_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_pc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_ca_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_ca_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_cb_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_cb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pc_callback(Object &&cb) { return m_in_pc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pc_callback(Object &&cb) { return m_out_pc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_ca_callback(Object &&cb) { return m_out_ca_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_cb_callback(Object &&cb) { return m_out_cb_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -125,31 +125,31 @@ DECLARE_DEVICE_TYPE(TPI6525, tpi6525_device) #define MCFG_TPI6525_OUT_IRQ_CB(_devcb) \ - devcb = &tpi6525_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tpi6525_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_TPI6525_IN_PA_CB(_devcb) \ - devcb = &tpi6525_device::set_in_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tpi6525_device &>(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_TPI6525_OUT_PA_CB(_devcb) \ - devcb = &tpi6525_device::set_out_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tpi6525_device &>(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_TPI6525_IN_PB_CB(_devcb) \ - devcb = &tpi6525_device::set_in_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tpi6525_device &>(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_TPI6525_OUT_PB_CB(_devcb) \ - devcb = &tpi6525_device::set_out_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tpi6525_device &>(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_TPI6525_IN_PC_CB(_devcb) \ - devcb = &tpi6525_device::set_in_pc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tpi6525_device &>(*device).set_in_pc_callback(DEVCB_##_devcb); #define MCFG_TPI6525_OUT_PC_CB(_devcb) \ - devcb = &tpi6525_device::set_out_pc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tpi6525_device &>(*device).set_out_pc_callback(DEVCB_##_devcb); #define MCFG_TPI6525_OUT_CA_CB(_devcb) \ - devcb = &tpi6525_device::set_out_ca_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tpi6525_device &>(*device).set_out_ca_callback(DEVCB_##_devcb); #define MCFG_TPI6525_OUT_CB_CB(_devcb) \ - devcb = &tpi6525_device::set_out_cb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tpi6525_device &>(*device).set_out_cb_callback(DEVCB_##_devcb); #endif // MAME_MACHINE_6525TPI_H diff --git a/src/devices/machine/6532riot.h b/src/devices/machine/6532riot.h index 2741334d9cd..a4b7d5b2608 100644 --- a/src/devices/machine/6532riot.h +++ b/src/devices/machine/6532riot.h @@ -18,19 +18,19 @@ //************************************************************************** #define MCFG_RIOT6532_IN_PA_CB(_devcb) \ - devcb = &riot6532_device::set_in_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<riot6532_device &>(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_RIOT6532_OUT_PA_CB(_devcb) \ - devcb = &riot6532_device::set_out_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<riot6532_device &>(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_RIOT6532_IN_PB_CB(_devcb) \ - devcb = &riot6532_device::set_in_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<riot6532_device &>(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_RIOT6532_OUT_PB_CB(_devcb) \ - devcb = &riot6532_device::set_out_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<riot6532_device &>(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_RIOT6532_IRQ_CB(_devcb) \ - devcb = &riot6532_device::set_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<riot6532_device &>(*device).set_irq_callback(DEVCB_##_devcb); /*************************************************************************** @@ -46,11 +46,11 @@ public: // construction/destruction riot6532_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template<class _Object> static devcb_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_in_pa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_out_pa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_in_pb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_out_pb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_irq_cb.set_callback(object); } + template<class _Object> devcb_base &set_in_pa_callback(_Object object) { return m_in_pa_cb.set_callback(object); } + template<class _Object> devcb_base &set_out_pa_callback(_Object object) { return m_out_pa_cb.set_callback(object); } + template<class _Object> devcb_base &set_in_pb_callback(_Object object) { return m_in_pb_cb.set_callback(object); } + template<class _Object> devcb_base &set_out_pb_callback(_Object object) { return m_out_pb_cb.set_callback(object); } + template<class _Object> devcb_base &set_irq_callback(_Object object) { return m_irq_cb.set_callback(object); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/68153bim.h b/src/devices/machine/68153bim.h index 246048b4718..0a81715ca18 100644 --- a/src/devices/machine/68153bim.h +++ b/src/devices/machine/68153bim.h @@ -46,25 +46,25 @@ MCFG_DEVICE_ADD(_tag, EI68C153, _clock) #define MCFG_BIM68153_OUT_INT_CB(_devcb) \ - devcb = &bim68153_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<bim68153_device &>(*device).set_out_int_callback(DEVCB_##_devcb); // These callback sets INTAL0 and INTAL1 but is probably not needed as the // shorthand OUT_IACK0..OUT_IACK3 below embedd the channel information #define MCFG_BIM68153_OUT_INTAL0_CB(_devcb) \ - devcb = &bim68153_device::set_out_intal0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<bim68153_device &>(*device).set_out_intal0_callback(DEVCB_##_devcb); #define MCFG_BIM68153_OUT_INTAL1_CB(_devcb) \ - devcb = &bim68153_device::set_out_intal1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<bim68153_device &>(*device).set_out_intal1_callback(DEVCB_##_devcb); // LOCAL IACK callbacks emulating the INTAL0 and INTAL1 outputs for INTAE requesting a vector from a sub device #define MCFG_BIM68153_OUT_IACK0_CB(_devcb) \ - devcb = &bim68153_device::set_out_iack0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<bim68153_device &>(*device).set_out_iack0_callback(DEVCB_##_devcb); #define MCFG_BIM68153_OUT_IACK1_CB(_devcb) \ - devcb = &bim68153_device::set_out_iack1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<bim68153_device &>(*device).set_out_iack1_callback(DEVCB_##_devcb); #define MCFG_BIM68153_OUT_IACK2_CB(_devcb) \ - devcb = &bim68153_device::set_out_iack2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<bim68153_device &>(*device).set_out_iack2_callback(DEVCB_##_devcb); #define MCFG_BIM68153_OUT_IACK3_CB(_devcb) \ - devcb = &bim68153_device::set_out_iack3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<bim68153_device &>(*device).set_out_iack3_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -140,14 +140,14 @@ public: int acknowledge(); int get_irq_level(); - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_intal0_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_out_intal0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_intal1_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_out_intal1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_intal0_callback(Object &&cb) { return m_out_intal0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_intal1_callback(Object &&cb) { return m_out_intal1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_iack0_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_0]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_iack1_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_1]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_iack2_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_2]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_iack4_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_3]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_iack0_callback(Object &&cb) { return m_chn[CHN_0]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_iack1_callback(Object &&cb) { return m_chn[CHN_1]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_iack2_callback(Object &&cb) { return m_chn[CHN_2]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_iack4_callback(Object &&cb) { return m_chn[CHN_3]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/6821pia.h b/src/devices/machine/6821pia.h index a7838451a1a..084ae4c1402 100644 --- a/src/devices/machine/6821pia.h +++ b/src/devices/machine/6821pia.h @@ -33,38 +33,38 @@ // TODO: REMOVE THESE #define MCFG_PIA_READPA_HANDLER(_devcb) \ - devcb = &pia6821_device::set_readpa_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pia6821_device &>(*device).set_readpa_handler(DEVCB_##_devcb); #define MCFG_PIA_READPB_HANDLER(_devcb) \ - devcb = &pia6821_device::set_readpb_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pia6821_device &>(*device).set_readpb_handler(DEVCB_##_devcb); #define MCFG_PIA_READCA1_HANDLER(_devcb) \ - devcb = &pia6821_device::set_readca1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pia6821_device &>(*device).set_readca1_handler(DEVCB_##_devcb); #define MCFG_PIA_READCA2_HANDLER(_devcb) \ - devcb = &pia6821_device::set_readca2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pia6821_device &>(*device).set_readca2_handler(DEVCB_##_devcb); #define MCFG_PIA_READCB1_HANDLER(_devcb) \ - devcb = &pia6821_device::set_readcb1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pia6821_device &>(*device).set_readcb1_handler(DEVCB_##_devcb); // TODO: CONVERT THESE TO WRITE LINE #define MCFG_PIA_WRITEPA_HANDLER(_devcb) \ - devcb = &pia6821_device::set_writepa_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pia6821_device &>(*device).set_writepa_handler(DEVCB_##_devcb); #define MCFG_PIA_WRITEPB_HANDLER(_devcb) \ - devcb = &pia6821_device::set_writepb_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pia6821_device &>(*device).set_writepb_handler(DEVCB_##_devcb); #define MCFG_PIA_CA2_HANDLER(_devcb) \ - devcb = &pia6821_device::set_ca2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pia6821_device &>(*device).set_ca2_handler(DEVCB_##_devcb); #define MCFG_PIA_CB2_HANDLER(_devcb) \ - devcb = &pia6821_device::set_cb2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pia6821_device &>(*device).set_cb2_handler(DEVCB_##_devcb); #define MCFG_PIA_IRQA_HANDLER(_devcb) \ - devcb = &pia6821_device::set_irqa_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pia6821_device &>(*device).set_irqa_handler(DEVCB_##_devcb); #define MCFG_PIA_IRQB_HANDLER(_devcb) \ - devcb = &pia6821_device::set_irqb_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pia6821_device &>(*device).set_irqb_handler(DEVCB_##_devcb); /*************************************************************************** @@ -81,20 +81,20 @@ public: // static configuration helpers // TODO: REMOVE THESE - template<class Obj> static devcb_base &set_readpa_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_in_a_handler.set_callback(std::forward<Obj>(object)); } - template<class Obj> static devcb_base &set_readpb_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_in_b_handler.set_callback(std::forward<Obj>(object)); } - template<class Obj> static devcb_base &set_readca1_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_in_ca1_handler.set_callback(std::forward<Obj>(object)); } - template<class Obj> static devcb_base &set_readca2_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_in_ca2_handler.set_callback(std::forward<Obj>(object)); } - template<class Obj> static devcb_base &set_readcb1_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_in_cb1_handler.set_callback(std::forward<Obj>(object)); } + template<class Obj> devcb_base &set_readpa_handler(Obj &&object) { return m_in_a_handler.set_callback(std::forward<Obj>(object)); } + template<class Obj> devcb_base &set_readpb_handler(Obj &&object) { return m_in_b_handler.set_callback(std::forward<Obj>(object)); } + template<class Obj> devcb_base &set_readca1_handler(Obj &&object) { return m_in_ca1_handler.set_callback(std::forward<Obj>(object)); } + template<class Obj> devcb_base &set_readca2_handler(Obj &&object) { return m_in_ca2_handler.set_callback(std::forward<Obj>(object)); } + template<class Obj> devcb_base &set_readcb1_handler(Obj &&object) { return m_in_cb1_handler.set_callback(std::forward<Obj>(object)); } // TODO: CONVERT THESE TO WRITE LINE - template<class Obj> static devcb_base &set_writepa_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_out_a_handler.set_callback(std::forward<Obj>(object)); } - template<class Obj> static devcb_base &set_writepb_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_out_b_handler.set_callback(std::forward<Obj>(object)); } + template<class Obj> devcb_base &set_writepa_handler(Obj &&object) { return m_out_a_handler.set_callback(std::forward<Obj>(object)); } + template<class Obj> devcb_base &set_writepb_handler(Obj &&object) { return m_out_b_handler.set_callback(std::forward<Obj>(object)); } - template<class Obj> static devcb_base &set_ca2_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_ca2_handler.set_callback(std::forward<Obj>(object)); } - template<class Obj> static devcb_base &set_cb2_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_cb2_handler.set_callback(std::forward<Obj>(object)); } - template<class Obj> static devcb_base &set_irqa_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_irqa_handler.set_callback(std::forward<Obj>(object)); } - template<class Obj> static devcb_base &set_irqb_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_irqb_handler.set_callback(std::forward<Obj>(object)); } + template<class Obj> devcb_base &set_ca2_handler(Obj &&object) { return m_ca2_handler.set_callback(std::forward<Obj>(object)); } + template<class Obj> devcb_base &set_cb2_handler(Obj &&object) { return m_cb2_handler.set_callback(std::forward<Obj>(object)); } + template<class Obj> devcb_base &set_irqa_handler(Obj &&object) { return m_irqa_handler.set_callback(std::forward<Obj>(object)); } + template<class Obj> devcb_base &set_irqb_handler(Obj &&object) { return m_irqb_handler.set_callback(std::forward<Obj>(object)); } uint8_t reg_r(uint8_t offset); void reg_w(uint8_t offset, uint8_t data); diff --git a/src/devices/machine/68230pit.h b/src/devices/machine/68230pit.h index 14b71943cd6..23c1af3bb09 100644 --- a/src/devices/machine/68230pit.h +++ b/src/devices/machine/68230pit.h @@ -43,40 +43,40 @@ //************************************************************************** #define MCFG_PIT68230_PA_INPUT_CB(_devcb) \ - devcb = &pit68230_device::set_pa_in_callback (*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_pa_in_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PA_OUTPUT_CB(_devcb) \ - devcb = &pit68230_device::set_pa_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_pa_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PB_INPUT_CB(_devcb) \ - devcb = &pit68230_device::set_pb_in_callback (*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_pb_in_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PB_OUTPUT_CB(_devcb) \ - devcb = &pit68230_device::set_pb_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_pb_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PC_INPUT_CB(_devcb) \ - devcb = &pit68230_device::set_pc_in_callback (*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_pc_in_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PC_OUTPUT_CB(_devcb) \ - devcb = &pit68230_device::set_pc_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_pc_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_H1_CB(_devcb) \ - devcb = &pit68230_device::set_h1_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_h1_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_H2_CB(_devcb) \ - devcb = &pit68230_device::set_h2_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_h2_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_H3_CB(_devcb) \ - devcb = &pit68230_device::set_h3_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_h3_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_H4_CB(_devcb) \ - devcb = &pit68230_device::set_h4_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_h4_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_TIMER_IRQ_CB(_devcb) \ - devcb = &pit68230_device::set_tirq_out_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_tirq_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PORT_IRQ_CB(_devcb) \ - devcb = &pit68230_device::set_pirq_out_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pit68230_device &>(*device).set_pirq_out_callback(DEVCB_##_devcb); /*----------------------------------------------------------------------- * Registers RS1-RS5 R/W Description @@ -114,18 +114,18 @@ public: // construction/destruction pit68230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_pa_in_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pa_in_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pa_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pa_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_in_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pb_in_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pb_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pc_in_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pc_in_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pc_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pc_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_h1_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h1_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_h2_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h2_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_h3_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h3_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_h4_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h4_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tirq_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_tirq_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pirq_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pirq_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_in_callback(Object &&cb){ return m_pa_in_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_out_callback(Object &&cb){ return m_pa_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_in_callback(Object &&cb){ return m_pb_in_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_out_callback(Object &&cb){ return m_pb_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pc_in_callback(Object &&cb){ return m_pc_in_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pc_out_callback(Object &&cb){ return m_pc_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_h1_out_callback(Object &&cb){ return m_h1_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_h2_out_callback(Object &&cb){ return m_h2_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_h3_out_callback(Object &&cb){ return m_h3_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_h4_out_callback(Object &&cb){ return m_h4_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tirq_out_callback(Object &&cb){ return m_tirq_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pirq_out_callback(Object &&cb){ return m_pirq_out_cb.set_callback (std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER (write); DECLARE_READ8_MEMBER (read); diff --git a/src/devices/machine/68307.h b/src/devices/machine/68307.h index 98b7cf475fa..184603fdfa1 100644 --- a/src/devices/machine/68307.h +++ b/src/devices/machine/68307.h @@ -12,17 +12,17 @@ /* trampolines so we can specify the 68681 serial configuration when adding the CPU */ #define MCFG_MC68307_SERIAL_A_TX_CALLBACK(_cb) \ - devcb = &m68307_cpu_device::set_a_tx_cb(*device, DEVCB_##_cb); + devcb = &downcast<m68307_cpu_device &>(*device).set_a_tx_cb(DEVCB_##_cb); #define MCFG_MC68307_SERIAL_B_TX_CALLBACK(_cb) \ - devcb = &m68307_cpu_device::set_b_tx_cb(*device, DEVCB_##_cb); + devcb = &downcast<m68307_cpu_device &>(*device).set_b_tx_cb(DEVCB_##_cb); // deprecated: use ipX_w() instead #define MCFG_MC68307_SERIAL_INPORT_CALLBACK(_cb) \ - devcb = &m68307_cpu_device::set_inport_cb(*device, DEVCB_##_cb); + devcb = &downcast<m68307_cpu_device &>(*device).set_inport_cb(DEVCB_##_cb); #define MCFG_MC68307_SERIAL_OUTPORT_CALLBACK(_cb) \ - devcb = &m68307_cpu_device::set_outport_cb(*device, DEVCB_##_cb); + devcb = &downcast<m68307_cpu_device &>(*device).set_outport_cb(DEVCB_##_cb); class m68307_cpu_device : public m68000_device @@ -36,11 +36,11 @@ public: m68307_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); /* trampolines so we can specify the 68681 serial configuration when adding the CPU */ - template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_a_tx_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_a_tx.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_b_tx_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_b_tx.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_inport_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_read_inport.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_outport_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_outport.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_cb(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_a_tx_cb(Object &&cb) { return m_write_a_tx.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_b_tx_cb(Object &&cb) { return m_write_b_tx.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_inport_cb(Object &&cb) { return m_read_inport.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_outport_cb(Object &&cb) { return m_write_outport.set_callback(std::forward<Object>(cb)); } /* callbacks for internal ports */ void set_port_callbacks(porta_read_delegate &&porta_r, porta_write_delegate &&porta_w, portb_read_delegate &&portb_r, portb_write_delegate &&portb_w); diff --git a/src/devices/machine/68340.h b/src/devices/machine/68340.h index 903745cfa16..fcec19e453d 100644 --- a/src/devices/machine/68340.h +++ b/src/devices/machine/68340.h @@ -17,37 +17,37 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** #define MCFG_MC68340_PA_INPUT_CB(_devcb) \ - devcb = &m68340_cpu_device::set_pa_in_callback (*device, DEVCB_##_devcb); + devcb = &downcast<m68340_cpu_device &>(*device).set_pa_in_callback(DEVCB_##_devcb); #define MCFG_MC68340_PA_OUTPUT_CB(_devcb) \ - devcb = &m68340_cpu_device::set_pa_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<m68340_cpu_device &>(*device).set_pa_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_PB_INPUT_CB(_devcb) \ - devcb = &m68340_cpu_device::set_pb_in_callback (*device, DEVCB_##_devcb); + devcb = &downcast<m68340_cpu_device &>(*device).set_pb_in_callback(DEVCB_##_devcb); #define MCFG_MC68340_PB_OUTPUT_CB(_devcb) \ - devcb = &m68340_cpu_device::set_pb_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<m68340_cpu_device &>(*device).set_pb_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_ADD_CRYSTAL(_crystal) \ - m68340_cpu_device::set_crystal(*device, _crystal); + downcast<m68340_cpu_device &>(*device).set_crystal(_crystal); #define MCFG_MC68340_TOUT1_OUTPUT_CB(_devcb) \ - devcb = &m68340_cpu_device::set_tout1_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<m68340_cpu_device &>(*device).set_tout1_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_TIN1_INPUT_CB(_devcb) \ - devcb = &m68340_cpu_device::set_tin1_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<m68340_cpu_device &>(*device).set_tin1_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_TGATE1_INPUT_CB(_devcb) \ - devcb = &m68340_cpu_device::set_tgate1_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<m68340_cpu_device &>(*device).set_tgate1_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_TOUT2_OUTPUT_CB(_devcb) \ - devcb = &m68340_cpu_device::set_tout2_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<m68340_cpu_device &>(*device).set_tout2_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_TIN2_INPUT_CB(_devcb) \ - devcb = &m68340_cpu_device::set_tin2_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<m68340_cpu_device &>(*device).set_tin2_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_TGATE2_INPUT_CB(_devcb) \ - devcb = &m68340_cpu_device::set_tgate2_out_callback (*device, DEVCB_##_devcb); + devcb = &downcast<m68340_cpu_device &>(*device).set_tgate2_out_callback(DEVCB_##_devcb); class m68340_cpu_device : public fscpu32_device { @@ -57,21 +57,21 @@ class m68340_cpu_device : public fscpu32_device public: m68340_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_pa_in_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_pa_in_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pa_out_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_pa_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_in_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_pb_in_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_out_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_pb_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_in_callback(Object &&cb){ return m_pa_in_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_out_callback(Object &&cb){ return m_pa_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_in_callback(Object &&cb){ return m_pb_in_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_out_callback(Object &&cb){ return m_pb_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tout1_out_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_timer1->m_tout_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tin1_in_callback (device_t &device, Object &&cb) { return downcast<m68340_cpu_device &>(device).m_timer1->m_tin_in_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tgate1_in_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_timer1->m_tgate_in_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tout2_out_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_timer2->m_tout_out_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tin2_in_callback (device_t &device, Object &&cb) { return downcast<m68340_cpu_device &>(device).m_timer2->m_tin_in_cb.set_callback (std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tgate2_in_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_timer2->m_tgate_in_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tout1_out_callback(Object &&cb){ return m_timer1->m_tout_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tin1_in_callback(Object &&cb) { return m_timer1->m_tin_in_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tgate1_in_callback(Object &&cb){ return m_timer1->m_tgate_in_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tout2_out_callback(Object &&cb){ return m_timer2->m_tout_out_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tin2_in_callback(Object &&cb) { return m_timer2->m_tin_in_cb.set_callback (std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tgate2_in_callback(Object &&cb){ return m_timer2->m_tgate_in_cb.set_callback (std::forward<Object>(cb)); } uint16_t get_cs(offs_t address); - static void set_crystal(device_t &device, const XTAL &crystal) { set_crystal(device, crystal.value()); } + void set_crystal(const XTAL &crystal) { set_crystal(crystal.value()); } // Timer input methods, can be used instead of the corresponding polling MCFG callbacks DECLARE_WRITE_LINE_MEMBER( tin1_w ) { m_timer1->tin_w(state); } @@ -105,11 +105,10 @@ private: uint32_t m_extal; // TODO: Support Limp mode and external clock with no PLL - static void set_crystal(device_t &device, int crystal) + void set_crystal(int crystal) { - m68340_cpu_device &dev = downcast<m68340_cpu_device &>(device); - dev.m_crystal = crystal; - dev.m_clock_mode |= (m68340_sim::CLOCK_MODCK | m68340_sim::CLOCK_PLL); + m_crystal = crystal; + m_clock_mode |= (m68340_sim::CLOCK_MODCK | m68340_sim::CLOCK_PLL); } READ32_MEMBER( m68340_internal_base_r ); diff --git a/src/devices/machine/6840ptm.h b/src/devices/machine/6840ptm.h index 1210d480694..26bc0ab1543 100644 --- a/src/devices/machine/6840ptm.h +++ b/src/devices/machine/6840ptm.h @@ -20,19 +20,19 @@ //************************************************************************** #define MCFG_PTM6840_EXTERNAL_CLOCKS(_clk0, _clk1, _clk2) \ - ptm6840_device::set_external_clocks(*device, _clk0, _clk1, _clk2); + downcast<ptm6840_device &>(*device).set_external_clocks(_clk0, _clk1, _clk2); #define MCFG_PTM6840_O1_CB(_devcb) \ - devcb = &ptm6840_device::set_out_callback(*device, 0, DEVCB_##_devcb); + devcb = &downcast<ptm6840_device &>(*device).set_out_callback(0, DEVCB_##_devcb); #define MCFG_PTM6840_O2_CB(_devcb) \ - devcb = &ptm6840_device::set_out_callback(*device, 1, DEVCB_##_devcb); + devcb = &downcast<ptm6840_device &>(*device).set_out_callback(1, DEVCB_##_devcb); #define MCFG_PTM6840_O3_CB(_devcb) \ - devcb = &ptm6840_device::set_out_callback(*device, 2, DEVCB_##_devcb); + devcb = &downcast<ptm6840_device &>(*device).set_out_callback(2, DEVCB_##_devcb); #define MCFG_PTM6840_IRQ_CB(_devcb) \ - devcb = &ptm6840_device::set_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ptm6840_device &>(*device).set_irq_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -46,10 +46,10 @@ public: // construction/destruction ptm6840_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_external_clocks(device_t &device, double clock0, double clock1, double clock2) { downcast<ptm6840_device &>(device).m_external_clock[0] = clock0; downcast<ptm6840_device &>(device).m_external_clock[1] = clock1; downcast<ptm6840_device &>(device).m_external_clock[2] = clock2; } - static void set_external_clocks(device_t &device, const XTAL &clock0, const XTAL &clock1, const XTAL &clock2) { set_external_clocks(device, clock0.dvalue(), clock1.dvalue(), clock2.dvalue()); } - template <class Object> static devcb_base &set_out_callback(device_t &device, int index, Object &&cb) { return downcast<ptm6840_device &>(device).m_out_cb[index].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<ptm6840_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } + void set_external_clocks(double clock0, double clock1, double clock2) { m_external_clock[0] = clock0; m_external_clock[1] = clock1; m_external_clock[2] = clock2; } + void set_external_clocks(const XTAL &clock0, const XTAL &clock1, const XTAL &clock2) { set_external_clocks(clock0.dvalue(), clock1.dvalue(), clock2.dvalue()); } + template <class Object> devcb_base &set_out_callback(int index, Object &&cb) { return m_out_cb[index].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } int status(int clock) const { return m_enabled[clock]; } // get whether timer is enabled int irq_state() const { return m_irq; } // get IRQ state diff --git a/src/devices/machine/6850acia.h b/src/devices/machine/6850acia.h index 119dc330ceb..5f78bc932b3 100644 --- a/src/devices/machine/6850acia.h +++ b/src/devices/machine/6850acia.h @@ -15,13 +15,13 @@ #define MCFG_ACIA6850_TXD_HANDLER(_devcb) \ - devcb = &acia6850_device::set_txd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<acia6850_device &>(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_ACIA6850_RTS_HANDLER(_devcb) \ - devcb = &acia6850_device::set_rts_handler(*device, DEVCB_##_devcb); + devcb = &downcast<acia6850_device &>(*device).set_rts_handler(DEVCB_##_devcb); #define MCFG_ACIA6850_IRQ_HANDLER(_devcb) \ - devcb = &acia6850_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<acia6850_device &>(*device).set_irq_handler(DEVCB_##_devcb); class acia6850_device : public device_t { @@ -30,9 +30,9 @@ public: acia6850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<acia6850_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<acia6850_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<acia6850_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER( control_w ); DECLARE_READ8_MEMBER( status_r ); diff --git a/src/devices/machine/68561mpcc.h b/src/devices/machine/68561mpcc.h index 50efa5dd39e..a91a5221e56 100644 --- a/src/devices/machine/68561mpcc.h +++ b/src/devices/machine/68561mpcc.h @@ -63,26 +63,26 @@ /* Generic macros */ #define MCFG_MPCC_CLOCK(_rx, _tx) \ - mpcc_device::configure_clocks(*device, _rx, _tx); + downcast<mpcc_device &>(*device).configure_clocks(_rx, _tx); /* Callbacks to be called by us for signals driven by the MPCC */ #define MCFG_MPCC_OUT_TXD_CB(_devcb) \ - devcb = &mpcc_device::set_out_txd_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mpcc_device &>(*device).set_out_txd_callback(DEVCB_##_devcb); #define MCFG_MPCC_OUT_DTR_CB(_devcb) \ - devcb = &mpcc_device::set_out_dtr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mpcc_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb); #define MCFG_MPCC_OUT_RTS_CB(_devcb) \ - devcb = &mpcc_device::set_out_rts_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mpcc_device &>(*device).set_out_rts_callback(DEVCB_##_devcb); #define MCFG_MPCC_OUT_TRXC_CB(_devcb) \ - devcb = &mpcc_device::set_out_trxc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mpcc_device &>(*device).set_out_trxc_callback(DEVCB_##_devcb); #define MCFG_MPCC_OUT_RTXC_CB(_devcb) \ - devcb = &mpcc_device::set_out_rtxc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mpcc_device &>(*device).set_out_rtxc_callback(DEVCB_##_devcb); #define MCFG_MPCC_OUT_INT_CB(_devcb) \ - devcb = &mpcc_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mpcc_device &>(*device).set_out_int_callback(DEVCB_##_devcb); @@ -95,19 +95,18 @@ public: // construction/destruction mpcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_txd_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_txd_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_dtr_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_dtr_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rts_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_rts_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rtxc_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_rtxc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_trxc_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_trxc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_txd_callback(Object &&cb) { return m_out_txd_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_dtr_callback(Object &&cb) { return m_out_dtr_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rts_callback(Object &&cb) { return m_out_rts_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rtxc_callback(Object &&cb) { return m_out_rtxc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_trxc_callback(Object &&cb) { return m_out_trxc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } - static void configure_clocks(device_t &device, int rxc, int txc) + void configure_clocks(int rxc, int txc) { - mpcc_device &dev = downcast<mpcc_device &>(device); - dev.m_rxc = rxc; - dev.m_txc = txc; + m_rxc = rxc; + m_txc = txc; } DECLARE_READ8_MEMBER( read ); diff --git a/src/devices/machine/7200fifo.h b/src/devices/machine/7200fifo.h index b9d2a01009c..1b89b53406b 100644 --- a/src/devices/machine/7200fifo.h +++ b/src/devices/machine/7200fifo.h @@ -58,16 +58,16 @@ The following chips are functionally equivalent and pin-compatible. #define MCFG_FIFO7200_ADD(_tag, _ramsize) \ MCFG_DEVICE_ADD(_tag, FIFO7200, 0) \ - fifo7200_device::set_ram_size(*device, _ramsize); + downcast<fifo7200_device &>(*device).set_ram_size(_ramsize); #define MCFG_FIFO7200_EF_HANDLER(_devcb) \ - devcb = &fifo7200_device::set_ef_handler(*device, DEVCB_##_devcb); + devcb = &downcast<fifo7200_device &>(*device).set_ef_handler(DEVCB_##_devcb); #define MCFG_FIFO7200_FF_HANDLER(_devcb) \ - devcb = &fifo7200_device::set_ff_handler(*device, DEVCB_##_devcb); + devcb = &downcast<fifo7200_device &>(*device).set_ff_handler(DEVCB_##_devcb); #define MCFG_FIFO7200_HF_HANDLER(_devcb) \ - devcb = &fifo7200_device::set_hf_handler(*device, DEVCB_##_devcb); + devcb = &downcast<fifo7200_device &>(*device).set_hf_handler(DEVCB_##_devcb); @@ -83,10 +83,10 @@ public: fifo7200_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_ef_handler(device_t &device, Object &&cb) { return downcast<fifo7200_device &>(device).m_ef_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ff_handler(device_t &device, Object &&cb) { return downcast<fifo7200_device &>(device).m_ff_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_hf_handler(device_t &device, Object &&cb) { return downcast<fifo7200_device &>(device).m_hf_handler.set_callback(std::forward<Object>(cb)); } - static void set_ram_size(device_t &device, int size) { downcast<fifo7200_device &>(device).m_ram_size = size; } + template <class Object> devcb_base &set_ef_handler(Object &&cb) { return m_ef_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ff_handler(Object &&cb) { return m_ff_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_hf_handler(Object &&cb) { return m_hf_handler.set_callback(std::forward<Object>(cb)); } + void set_ram_size(int size) { m_ram_size = size; } DECLARE_READ_LINE_MEMBER( ef_r ) { return !m_ef; } // _EF DECLARE_READ_LINE_MEMBER( ff_r ) { return !m_ff; } // _FF diff --git a/src/devices/machine/7400.h b/src/devices/machine/7400.h index a202a85d466..3761f468b7b 100644 --- a/src/devices/machine/7400.h +++ b/src/devices/machine/7400.h @@ -35,16 +35,16 @@ #define MCFG_7400_Y1_CB(_devcb) \ - devcb = &ttl7400_device::set_y1_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7400_device &>(*device).set_y1_cb(DEVCB_##_devcb); #define MCFG_7400_Y2_CB(_devcb) \ - devcb = &ttl7400_device::set_y2_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7400_device &>(*device).set_y2_cb(DEVCB_##_devcb); #define MCFG_7400_Y3_CB(_devcb) \ - devcb = &ttl7400_device::set_y3_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7400_device &>(*device).set_y3_cb(DEVCB_##_devcb); #define MCFG_7400_Y4_CB(_devcb) \ - devcb = &ttl7400_device::set_y4_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7400_device &>(*device).set_y4_cb(DEVCB_##_devcb); #define MCFG_7400_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, TTL7400, 0) @@ -56,10 +56,10 @@ public: ttl7400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_y1_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y1_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_y2_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y2_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_y3_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y3_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_y4_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y4_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_y1_cb(Object &&cb) { return m_y1_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_y2_cb(Object &&cb) { return m_y2_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_y3_cb(Object &&cb) { return m_y3_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_y4_cb(Object &&cb) { return m_y4_func.set_callback(std::forward<Object>(cb)); } // public interfaces DECLARE_WRITE_LINE_MEMBER( a1_w ); diff --git a/src/devices/machine/7404.h b/src/devices/machine/7404.h index b2be5e5182c..bc4401f936b 100644 --- a/src/devices/machine/7404.h +++ b/src/devices/machine/7404.h @@ -62,22 +62,22 @@ #define MCFG_7404_Y1_CB(_devcb) \ - devcb = &ttl7404_device::set_y1_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7404_device &>(*device).set_y1_cb(DEVCB_##_devcb); #define MCFG_7404_Y2_CB(_devcb) \ - devcb = &ttl7404_device::set_y2_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7404_device &>(*device).set_y2_cb(DEVCB_##_devcb); #define MCFG_7404_Y3_CB(_devcb) \ - devcb = &ttl7404_device::set_y3_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7404_device &>(*device).set_y3_cb(DEVCB_##_devcb); #define MCFG_7404_Y4_CB(_devcb) \ - devcb = &ttl7404_device::set_y4_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7404_device &>(*device).set_y4_cb(DEVCB_##_devcb); #define MCFG_7404_Y5_CB(_devcb) \ - devcb = &ttl7404_device::set_y5_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7404_device &>(*device).set_y5_cb(DEVCB_##_devcb); #define MCFG_7404_Y6_CB(_devcb) \ - devcb = &ttl7404_device::set_y6_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7404_device &>(*device).set_y6_cb(DEVCB_##_devcb); #define MCFG_7404_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, TTL7404, 0) @@ -89,12 +89,12 @@ public: ttl7404_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_y1_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y1_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_y2_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y2_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_y3_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y3_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_y4_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y4_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_y5_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y5_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_y6_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y6_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_y1_cb(Object &&cb) { return m_y1_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_y2_cb(Object &&cb) { return m_y2_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_y3_cb(Object &&cb) { return m_y3_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_y4_cb(Object &&cb) { return m_y4_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_y5_cb(Object &&cb) { return m_y5_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_y6_cb(Object &&cb) { return m_y6_func.set_callback(std::forward<Object>(cb)); } // public interfaces DECLARE_WRITE_LINE_MEMBER( a1_w ); diff --git a/src/devices/machine/74123.h b/src/devices/machine/74123.h index 1316249070b..075e56c8206 100644 --- a/src/devices/machine/74123.h +++ b/src/devices/machine/74123.h @@ -58,25 +58,25 @@ ***************************************************************************/ #define MCFG_TTL74123_CONNECTION_TYPE(_ctype) \ - ttl74123_device::set_connection_type(*device, _ctype); + downcast<ttl74123_device &>(*device).set_connection_type(_ctype); #define MCFG_TTL74123_RESISTOR_VALUE(_value) \ - ttl74123_device::set_resistor_value(*device, _value); + downcast<ttl74123_device &>(*device).set_resistor_value(_value); #define MCFG_TTL74123_CAPACITOR_VALUE(_value) \ - ttl74123_device::set_capacitor_value(*device, _value); + downcast<ttl74123_device &>(*device).set_capacitor_value(_value); #define MCFG_TTL74123_A_PIN_VALUE(_value) \ - ttl74123_device::set_a_pin_value(*device, _value); + downcast<ttl74123_device &>(*device).set_a_pin_value(_value); #define MCFG_TTL74123_B_PIN_VALUE(_value) \ - ttl74123_device::set_b_pin_value(*device, _value); + downcast<ttl74123_device &>(*device).set_b_pin_value(_value); #define MCFG_TTL74123_CLEAR_PIN_VALUE(_value) \ - ttl74123_device::set_clear_pin_value(*device, _value); + downcast<ttl74123_device &>(*device).set_clear_pin_value(_value); #define MCFG_TTL74123_OUTPUT_CHANGED_CB(_devcb) \ - devcb = &ttl74123_device::set_output_changed_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74123_device &>(*device).set_output_changed_callback(DEVCB_##_devcb); /* constants for the different ways the cap/res can be connected. This determines the formula for calculating the pulse width */ @@ -97,13 +97,13 @@ public: // construction/destruction ttl74123_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_connection_type(device_t &device, int type) { downcast<ttl74123_device &>(device).m_connection_type = type; } - static void set_resistor_value(device_t &device, double value) { downcast<ttl74123_device &>(device).m_res = value; } - static void set_capacitor_value(device_t &device, double value) { downcast<ttl74123_device &>(device).m_cap = value; } - static void set_a_pin_value(device_t &device, int value) { downcast<ttl74123_device &>(device).m_a = value; } - static void set_b_pin_value(device_t &device, int value) { downcast<ttl74123_device &>(device).m_b = value; } - static void set_clear_pin_value(device_t &device, int value) { downcast<ttl74123_device &>(device).m_clear = value; } - template <class Object> static devcb_base &set_output_changed_callback(device_t &device, Object &&cb) { return downcast<ttl74123_device &>(device).m_output_changed_cb.set_callback(std::forward<Object>(cb)); } + void set_connection_type(int type) { m_connection_type = type; } + void set_resistor_value(double value) { m_res = value; } + void set_capacitor_value(double value) { m_cap = value; } + void set_a_pin_value(int value) { m_a = value; } + void set_b_pin_value(int value) { m_b = value; } + void set_clear_pin_value(int value) { m_clear = value; } + template <class Object> devcb_base &set_output_changed_callback(Object &&cb) { return m_output_changed_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(a_w); DECLARE_WRITE_LINE_MEMBER(b_w); diff --git a/src/devices/machine/74145.h b/src/devices/machine/74145.h index d7747b66707..553d4ee86db 100644 --- a/src/devices/machine/74145.h +++ b/src/devices/machine/74145.h @@ -18,34 +18,34 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** #define MCFG_TTL74145_OUTPUT_LINE_0_CB(_devcb) \ - devcb = &ttl74145_device::set_output_line_0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74145_device &>(*device).set_output_line_0_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_1_CB(_devcb) \ - devcb = &ttl74145_device::set_output_line_1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74145_device &>(*device).set_output_line_1_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_2_CB(_devcb) \ - devcb = &ttl74145_device::set_output_line_2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74145_device &>(*device).set_output_line_2_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_3_CB(_devcb) \ - devcb = &ttl74145_device::set_output_line_3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74145_device &>(*device).set_output_line_3_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_4_CB(_devcb) \ - devcb = &ttl74145_device::set_output_line_4_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74145_device &>(*device).set_output_line_4_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_5_CB(_devcb) \ - devcb = &ttl74145_device::set_output_line_5_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74145_device &>(*device).set_output_line_5_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_6_CB(_devcb) \ - devcb = &ttl74145_device::set_output_line_6_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74145_device &>(*device).set_output_line_6_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_7_CB(_devcb) \ - devcb = &ttl74145_device::set_output_line_7_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74145_device &>(*device).set_output_line_7_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_8_CB(_devcb) \ - devcb = &ttl74145_device::set_output_line_8_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74145_device &>(*device).set_output_line_8_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_9_CB(_devcb) \ - devcb = &ttl74145_device::set_output_line_9_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74145_device &>(*device).set_output_line_9_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -59,16 +59,16 @@ public: // construction/destruction ttl74145_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_output_line_0_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_line_1_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_line_2_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_2_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_line_3_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_3_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_line_4_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_4_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_line_5_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_5_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_line_6_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_6_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_line_7_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_7_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_line_8_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_8_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_line_9_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_9_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_line_0_callback(Object &&cb) { return m_output_line_0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_line_1_callback(Object &&cb) { return m_output_line_1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_line_2_callback(Object &&cb) { return m_output_line_2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_line_3_callback(Object &&cb) { return m_output_line_3_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_line_4_callback(Object &&cb) { return m_output_line_4_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_line_5_callback(Object &&cb) { return m_output_line_5_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_line_6_callback(Object &&cb) { return m_output_line_6_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_line_7_callback(Object &&cb) { return m_output_line_7_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_line_8_callback(Object &&cb) { return m_output_line_8_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_line_9_callback(Object &&cb) { return m_output_line_9_cb.set_callback(std::forward<Object>(cb)); } uint16_t read(); void write(uint8_t data); diff --git a/src/devices/machine/74148.h b/src/devices/machine/74148.h index ffef3a75e07..bc1a52cf64c 100644 --- a/src/devices/machine/74148.h +++ b/src/devices/machine/74148.h @@ -57,7 +57,7 @@ public: ttl74148_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~ttl74148_device() {} - static void set_output_callback(device_t &device, ttl74148_output_delegate callback) { downcast<ttl74148_device &>(device).m_output_cb = callback; } + template <typename Object> void set_output_callback(Object &&cb) { m_output_cb = std::forward<Object>(cb); } /* must call update() after setting the inputs */ void update(); @@ -95,7 +95,7 @@ DECLARE_DEVICE_TYPE(TTL74148, ttl74148_device) #define MCFG_74148_OUTPUT_CB(_class, _method) \ - ttl74148_device::set_output_callback(*device, ttl74148_output_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<ttl74148_device &>(*device).set_output_callback(ttl74148_output_delegate(&_class::_method, #_class "::" #_method, this)); #endif // MAME_DEVICES_MACHINE_74148_H diff --git a/src/devices/machine/74153.h b/src/devices/machine/74153.h index 8325d819233..3418d8b852f 100644 --- a/src/devices/machine/74153.h +++ b/src/devices/machine/74153.h @@ -33,10 +33,10 @@ MCFG_DEVICE_ADD(_tag, TTL153, 0) #define MCFG_TTL153_ZA_CB(_devcb) \ - devcb = &ttl153_device::set_za_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl153_device &>(*device).set_za_callback(DEVCB_##_devcb); #define MCFG_TTL153_ZB_CB(_devcb) \ - devcb = &ttl153_device::set_zb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl153_device &>(*device).set_zb_callback(DEVCB_##_devcb); //************************************************************************** @@ -50,11 +50,8 @@ public: ttl153_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - template <class Object> static devcb_base &set_za_callback(device_t &device, Object &&cb) - { return downcast<ttl153_device &>(device).m_za_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_zb_callback(device_t &device, Object &&cb) - { return downcast<ttl153_device &>(device).m_zb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_za_callback(Object &&cb) { return m_za_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_zb_callback(Object &&cb) { return m_zb_cb.set_callback(std::forward<Object>(cb)); } // select DECLARE_WRITE_LINE_MEMBER(s0_w); diff --git a/src/devices/machine/74157.h b/src/devices/machine/74157.h index 788c52fe41f..0db679c9c8f 100644 --- a/src/devices/machine/74157.h +++ b/src/devices/machine/74157.h @@ -30,13 +30,13 @@ //************************************************************************** #define MCFG_74157_A_IN_CB(_devcb) \ - devcb = &ls157_device::set_a_in_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ls157_device &>(*device).set_a_in_callback(DEVCB_##_devcb); #define MCFG_74157_B_IN_CB(_devcb) \ - devcb = &ls157_device::set_b_in_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ls157_device &>(*device).set_b_in_callback(DEVCB_##_devcb); #define MCFG_74157_OUT_CB(_devcb) \ - devcb = &ls157_device::set_out_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ls157_device &>(*device).set_out_callback(DEVCB_##_devcb); //************************************************************************** @@ -52,9 +52,9 @@ public: ls157_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // static configuration - template <class Object> static devcb_base &set_a_in_callback(device_t &device, Object &&cb) { return downcast<ls157_device &>(device).m_a_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_b_in_callback(device_t &device, Object &&cb) { return downcast<ls157_device &>(device).m_b_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_callback(device_t &device, Object &&cb) { return downcast<ls157_device &>(device).m_out_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_a_in_callback(Object &&cb) { return m_a_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_b_in_callback(Object &&cb) { return m_b_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_callback(Object &&cb) { return m_out_cb.set_callback(std::forward<Object>(cb)); } // data writes DECLARE_WRITE8_MEMBER(a_w); diff --git a/src/devices/machine/74161.h b/src/devices/machine/74161.h index f73be684edc..9ba767af9ad 100644 --- a/src/devices/machine/74161.h +++ b/src/devices/machine/74161.h @@ -59,22 +59,22 @@ #define MCFG_7416x_QA_CB(_devcb) \ - devcb = &ttl7416x_device::set_qa_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7416x_device &>(*device).set_qa_cb(DEVCB_##_devcb); #define MCFG_7416x_QB_CB(_devcb) \ - devcb = &ttl7416x_device::set_qb_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7416x_device &>(*device).set_qb_cb(DEVCB_##_devcb); #define MCFG_7416x_QC_CB(_devcb) \ - devcb = &ttl7416x_device::set_qc_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7416x_device &>(*device).set_qc_cb(DEVCB_##_devcb); #define MCFG_7416x_QD_CB(_devcb) \ - devcb = &ttl7416x_device::set_qd_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7416x_device &>(*device).set_qd_cb(DEVCB_##_devcb); #define MCFG_7416x_OUTPUT_CB(_devcb) \ - devcb = &ttl7416x_device::set_output_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7416x_device &>(*device).set_output_cb(DEVCB_##_devcb); #define MCFG_7416x_TC_CB(_devcb) \ - devcb = &ttl7416x_device::set_tc_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7416x_device &>(*device).set_tc_cb(DEVCB_##_devcb); #define MCFG_74160_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, TTL74160, 0) @@ -92,12 +92,12 @@ class ttl7416x_device : public device_t { public: // static configuration helpers - template <class Object> static devcb_base &set_qa_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qa_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_qb_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qb_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_qc_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qc_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_qd_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qd_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_output_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tc_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_tc_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_qa_cb(Object &&cb) { return m_qa_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_qb_cb(Object &&cb) { return m_qb_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_qc_cb(Object &&cb) { return m_qc_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_qd_cb(Object &&cb) { return m_qd_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_cb(Object &&cb) { return m_output_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tc_cb(Object &&cb) { return m_tc_func.set_callback(std::forward<Object>(cb)); } // public interfaces DECLARE_WRITE_LINE_MEMBER( clear_w ); diff --git a/src/devices/machine/74165.h b/src/devices/machine/74165.h index 4d3b7ed31de..f59d69e25dd 100644 --- a/src/devices/machine/74165.h +++ b/src/devices/machine/74165.h @@ -34,10 +34,10 @@ MCFG_DEVICE_ADD(_tag, TTL165, 0) #define MCFG_TTL165_DATA_CB(_devcb) \ - devcb = &ttl165_device::set_data_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl165_device &>(*device).set_data_callback(DEVCB_##_devcb); #define MCFG_TTL165_QH_CB(_devcb) \ - devcb = &ttl165_device::set_qh_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl165_device &>(*device).set_qh_callback(DEVCB_##_devcb); //************************************************************************** @@ -51,11 +51,11 @@ public: ttl165_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - template <class Object> static devcb_base &set_data_callback(device_t &device, Object &&cb) - { return downcast<ttl165_device &>(device).m_data_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data_callback(Object &&cb) + { return m_data_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_qh_callback(device_t &device, Object &&cb) - { return downcast<ttl165_device &>(device).m_qh_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_qh_callback(Object &&cb) + { return m_qh_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(serial_w); DECLARE_WRITE_LINE_MEMBER(clock_w); diff --git a/src/devices/machine/74166.h b/src/devices/machine/74166.h index 44642fec20a..d1a240084ad 100644 --- a/src/devices/machine/74166.h +++ b/src/devices/machine/74166.h @@ -34,10 +34,10 @@ MCFG_DEVICE_ADD(_tag, TTL166, 0) #define MCFG_TTL166_DATA_CB(_devcb) \ - devcb = &ttl166_device::set_data_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl166_device &>(*device).set_data_callback(DEVCB_##_devcb); #define MCFG_TTL166_QH_CB(_devcb) \ - devcb = &ttl166_device::set_qh_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ttl166_device &>(*device).set_qh_callback(DEVCB_##_devcb); //************************************************************************** @@ -51,11 +51,8 @@ public: ttl166_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - template <class Object> static devcb_base &set_data_callback(device_t &device, Object &&cb) - { return downcast<ttl166_device &>(device).m_data_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_qh_callback(device_t &device, Object &&cb) - { return downcast<ttl166_device &>(device).m_qh_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data_callback(Object &&cb) { return m_data_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_qh_callback(Object &&cb) { return m_qh_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(serial_w); DECLARE_WRITE_LINE_MEMBER(clock_w); diff --git a/src/devices/machine/74175.h b/src/devices/machine/74175.h index a5f019c3298..fb0c68bbeda 100644 --- a/src/devices/machine/74175.h +++ b/src/devices/machine/74175.h @@ -49,46 +49,46 @@ #define MCFG_74174_Q1_CB(_devcb) \ - devcb = &ttl741745_device::set_q1_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl741745_device &>(*device).set_q1_cb(DEVCB_##_devcb); #define MCFG_74174_Q2_CB(_devcb) \ - devcb = &ttl741745_device::set_q2_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl741745_device &>(*device).set_q2_cb(DEVCB_##_devcb); #define MCFG_74174_Q3_CB(_devcb) \ - devcb = &ttl741745_device::set_q3_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl741745_device &>(*device).set_q3_cb(DEVCB_##_devcb); #define MCFG_74174_Q4_CB(_devcb) \ - devcb = &ttl741745_device::set_q4_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl741745_device &>(*device).set_q4_cb(DEVCB_##_devcb); #define MCFG_74175_Q1_CB(_devcb) \ - devcb = &ttl741745_device::set_q1_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl741745_device &>(*device).set_q1_cb(DEVCB_##_devcb); #define MCFG_74175_Q2_CB(_devcb) \ - devcb = &ttl741745_device::set_q2_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl741745_device &>(*device).set_q2_cb(DEVCB_##_devcb); #define MCFG_74175_Q3_CB(_devcb) \ - devcb = &ttl741745_device::set_q3_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl741745_device &>(*device).set_q3_cb(DEVCB_##_devcb); #define MCFG_74175_Q4_CB(_devcb) \ - devcb = &ttl741745_device::set_q4_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl741745_device &>(*device).set_q4_cb(DEVCB_##_devcb); #define MCFG_74174_Q5_CB(_devcb) \ - devcb = &ttl74174_device::set_q5_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74174_device &>(*device).set_q5_cb(DEVCB_##_devcb); #define MCFG_74174_Q6_CB(_devcb) \ - devcb = &ttl74174_device::set_q6_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74174_device &>(*device).set_q6_cb(DEVCB_##_devcb); #define MCFG_74175_NOT_Q1_CB(_devcb) \ - devcb = &ttl74175_device::set_not_q1_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74175_device &>(*device).set_not_q1_cb(DEVCB_##_devcb); #define MCFG_74175_NOT_Q2_CB(_devcb) \ - devcb = &ttl74175_device::set_not_q2_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74175_device &>(*device).set_not_q2_cb(DEVCB_##_devcb); #define MCFG_74175_NOT_Q3_CB(_devcb) \ - devcb = &ttl74175_device::set_not_q3_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74175_device &>(*device).set_not_q3_cb(DEVCB_##_devcb); #define MCFG_74175_NOT_Q4_CB(_devcb) \ - devcb = &ttl74175_device::set_not_q1_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl74175_device &>(*device).set_not_q1_cb(DEVCB_##_devcb); #define MCFG_74174_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, TTL74174, 0) @@ -99,10 +99,10 @@ class ttl741745_device : public device_t { public: - template <class Object> static devcb_base &set_q1_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q1_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_q2_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q2_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_q3_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q3_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_q4_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q4_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_q1_cb(Object &&cb) { return m_q1_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_q2_cb(Object &&cb) { return m_q2_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_q3_cb(Object &&cb) { return m_q3_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_q4_cb(Object &&cb) { return m_q4_func.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( clear_w ); DECLARE_WRITE_LINE_MEMBER( d1_w ); @@ -146,8 +146,8 @@ class ttl74174_device : public ttl741745_device public: ttl74174_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_q5_cb(device_t &device, Object &&cb) { return downcast<ttl74174_device &>(device).m_q5_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_q6_cb(device_t &device, Object &&cb) { return downcast<ttl74174_device &>(device).m_q6_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_q5_cb(Object &&cb) { return m_q5_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_q6_cb(Object &&cb) { return m_q6_func.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( d5_w ); DECLARE_WRITE_LINE_MEMBER( d6_w ); @@ -174,10 +174,10 @@ class ttl74175_device : public ttl741745_device public: ttl74175_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_not_q1_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q1_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_not_q2_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q2_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_not_q3_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q3_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_not_q4_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q4_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_not_q1_cb(Object &&cb) { return m_not_q1_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_not_q2_cb(Object &&cb) { return m_not_q2_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_not_q3_cb(Object &&cb) { return m_not_q3_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_not_q4_cb(Object &&cb) { return m_not_q4_func.set_callback(std::forward<Object>(cb)); } protected: virtual void device_start() override; diff --git a/src/devices/machine/74259.h b/src/devices/machine/74259.h index 0805537d06b..7b2b853bdb2 100644 --- a/src/devices/machine/74259.h +++ b/src/devices/machine/74259.h @@ -37,24 +37,24 @@ //************************************************************************** #define MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(_devcb) \ - devcb = &addressable_latch_device::set_q_out_cb<0>(*device, DEVCB_##_devcb); + devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<0>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(_devcb) \ - devcb = &addressable_latch_device::set_q_out_cb<1>(*device, DEVCB_##_devcb); + devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<1>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(_devcb) \ - devcb = &addressable_latch_device::set_q_out_cb<2>(*device, DEVCB_##_devcb); + devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<2>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(_devcb) \ - devcb = &addressable_latch_device::set_q_out_cb<3>(*device, DEVCB_##_devcb); + devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<3>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(_devcb) \ - devcb = &addressable_latch_device::set_q_out_cb<4>(*device, DEVCB_##_devcb); + devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<4>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(_devcb) \ - devcb = &addressable_latch_device::set_q_out_cb<5>(*device, DEVCB_##_devcb); + devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<5>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(_devcb) \ - devcb = &addressable_latch_device::set_q_out_cb<6>(*device, DEVCB_##_devcb); + devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<6>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(_devcb) \ - devcb = &addressable_latch_device::set_q_out_cb<7>(*device, DEVCB_##_devcb); + devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<7>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_PARALLEL_OUT_CB(_devcb) \ - devcb = &addressable_latch_device::set_parallel_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<addressable_latch_device &>(*device).set_parallel_out_cb(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -66,8 +66,8 @@ class addressable_latch_device : public device_t { public: // static configuration - template<unsigned Bit, class Object> static devcb_base &set_q_out_cb(device_t &device, Object &&cb) { return downcast<addressable_latch_device &>(device).m_q_out_cb[Bit].set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_parallel_out_cb(device_t &device, Object &&cb) { return downcast<addressable_latch_device &>(device).m_parallel_out_cb.set_callback(std::forward<Object>(cb)); } + template<unsigned Bit, class Object> devcb_base &set_q_out_cb(Object &&cb) { return m_q_out_cb[Bit].set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_parallel_out_cb(Object &&cb) { return m_parallel_out_cb.set_callback(std::forward<Object>(cb)); } // data write handlers void write_bit(offs_t offset, bool d); diff --git a/src/devices/machine/7474.h b/src/devices/machine/7474.h index 3b0b604958d..2d4cab1a9df 100644 --- a/src/devices/machine/7474.h +++ b/src/devices/machine/7474.h @@ -52,10 +52,10 @@ //************************************************************************** #define MCFG_7474_OUTPUT_CB(_devcb) \ - devcb = &ttl7474_device::set_output_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7474_device &>(*device).set_output_cb(DEVCB_##_devcb); #define MCFG_7474_COMP_OUTPUT_CB(_devcb) \ - devcb = &ttl7474_device::set_comp_output_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ttl7474_device &>(*device).set_comp_output_cb(DEVCB_##_devcb); //************************************************************************** @@ -71,8 +71,8 @@ public: ttl7474_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_output_cb(device_t &device, Object &&cb) { return downcast<ttl7474_device &>(device).m_output_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_comp_output_cb(device_t &device, Object &&cb) { return downcast<ttl7474_device &>(device).m_comp_output_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_cb(Object &&cb) { return m_output_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_comp_output_cb(Object &&cb) { return m_comp_output_func.set_callback(std::forward<Object>(cb)); } // public interfaces DECLARE_WRITE_LINE_MEMBER( clear_w ); diff --git a/src/devices/machine/8042kbdc.h b/src/devices/machine/8042kbdc.h index 14eeb013296..2166b2141b8 100644 --- a/src/devices/machine/8042kbdc.h +++ b/src/devices/machine/8042kbdc.h @@ -21,22 +21,22 @@ //************************************************************************** #define MCFG_KBDC8042_KEYBOARD_TYPE(_kbdt) \ - kbdc8042_device::set_keyboard_type(*device, kbdc8042_device::_kbdt); + downcast<kbdc8042_device &>(*device).set_keyboard_type(kbdc8042_device::_kbdt); #define MCFG_KBDC8042_SYSTEM_RESET_CB(_devcb) \ - devcb = &kbdc8042_device::set_system_reset_callback(*device, DEVCB_##_devcb); + devcb = &downcast<kbdc8042_device &>(*device).set_system_reset_callback(DEVCB_##_devcb); #define MCFG_KBDC8042_GATE_A20_CB(_devcb) \ - devcb = &kbdc8042_device::set_gate_a20_callback(*device, DEVCB_##_devcb); + devcb = &downcast<kbdc8042_device &>(*device).set_gate_a20_callback(DEVCB_##_devcb); #define MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(_devcb) \ - devcb = &kbdc8042_device::set_input_buffer_full_callback(*device, DEVCB_##_devcb); + devcb = &downcast<kbdc8042_device &>(*device).set_input_buffer_full_callback(DEVCB_##_devcb); #define MCFG_KBDC8042_OUTPUT_BUFFER_EMPTY_CB(_devcb) \ - devcb = &kbdc8042_device::set_output_buffer_empty_callback(*device, DEVCB_##_devcb); + devcb = &downcast<kbdc8042_device &>(*device).set_output_buffer_empty_callback(DEVCB_##_devcb); #define MCFG_KBDC8042_SPEAKER_CB(_devcb) \ - devcb = &kbdc8042_device::set_speaker_callback(*device, DEVCB_##_devcb); + devcb = &downcast<kbdc8042_device &>(*device).set_speaker_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -57,12 +57,12 @@ public: // construction/destruction kbdc8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_keyboard_type(device_t &device, kbdc8042_type_t keybtype) { downcast<kbdc8042_device &>(device).m_keybtype = keybtype; } - template <class Object> static devcb_base &set_system_reset_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_system_reset_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_gate_a20_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_gate_a20_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_input_buffer_full_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_buffer_empty_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_speaker_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_speaker_cb.set_callback(std::forward<Object>(cb)); } + void set_keyboard_type(kbdc8042_type_t keybtype) { m_keybtype = keybtype; } + template <class Object> devcb_base &set_system_reset_callback(Object &&cb) { return m_system_reset_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gate_a20_callback(Object &&cb) { return m_gate_a20_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_input_buffer_full_callback(Object &&cb) { return m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_buffer_empty_callback(Object &&cb) { return m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_speaker_callback(Object &&cb) { return m_speaker_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( data_r ); DECLARE_WRITE8_MEMBER( data_w ); diff --git a/src/devices/machine/82s129.h b/src/devices/machine/82s129.h index b8ba6424f7f..1eb79166a30 100644 --- a/src/devices/machine/82s129.h +++ b/src/devices/machine/82s129.h @@ -47,34 +47,34 @@ #define MCFG_82S126_OUTPUT_CB(_devcb) \ - devcb = &prom82s129_base_device::set_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<prom82s129_base_device &>(*device).set_out_cb(DEVCB_##_devcb); #define MCFG_82S126_O1_CB(_devcb) \ - devcb = &prom82s129_base_device::set_o1_cb(*device, DEVCB_##_devcb); + devcb = &downcast<prom82s129_base_device &>(*device).set_o1_cb(DEVCB_##_devcb); #define MCFG_82S126_O2_CB(_devcb) \ - devcb = &prom82s129_base_device::set_o2_cb(*device, DEVCB_##_devcb); + devcb = &downcast<prom82s129_base_device &>(*device).set_o2_cb(DEVCB_##_devcb); #define MCFG_82S126_O3_CB(_devcb) \ - devcb = &prom82s129_base_device::set_o3_cb(*device, DEVCB_##_devcb); + devcb = &downcast<prom82s129_base_device &>(*device).set_o3_cb(DEVCB_##_devcb); #define MCFG_82S126_O4_CB(_devcb) \ - devcb = &prom82s129_base_device::set_o4_cb(*device, DEVCB_##_devcb); + devcb = &downcast<prom82s129_base_device &>(*device).set_o4_cb(DEVCB_##_devcb); #define MCFG_82S129_OUTPUT_CB(_devcb) \ - devcb = &prom82s129_base_device::set_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<prom82s129_base_device &>(*device).set_out_cb(DEVCB_##_devcb); #define MCFG_82S129_O1_CB(_devcb) \ - devcb = &prom82s129_base_device::set_o1_cb(*device, DEVCB_##_devcb); + devcb = &downcast<prom82s129_base_device &>(*device).set_o1_cb(DEVCB_##_devcb); #define MCFG_82S129_O2_CB(_devcb) \ - devcb = &prom82s129_base_device::set_o2_cb(*device, DEVCB_##_devcb); + devcb = &downcast<prom82s129_base_device &>(*device).set_o2_cb(DEVCB_##_devcb); #define MCFG_82S129_O3_CB(_devcb) \ - devcb = &prom82s129_base_device::set_o3_cb(*device, DEVCB_##_devcb); + devcb = &downcast<prom82s129_base_device &>(*device).set_o3_cb(DEVCB_##_devcb); #define MCFG_82S129_O4_CB(_devcb) \ - devcb = &prom82s129_base_device::set_o4_cb(*device, DEVCB_##_devcb); + devcb = &downcast<prom82s129_base_device &>(*device).set_o4_cb(DEVCB_##_devcb); #define MCFG_82S129_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, PROM82S129, 0) @@ -86,11 +86,11 @@ class prom82s129_base_device : public device_t { public: // static configuration helpers - template <class Object> static devcb_base &set_out_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_out_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_o1_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o1_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_o2_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o2_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_o3_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o3_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_o4_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o4_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_cb(Object &&cb) { return m_out_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_o1_cb(Object &&cb) { return m_o1_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_o2_cb(Object &&cb) { return m_o2_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_o3_cb(Object &&cb) { return m_o3_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_o4_cb(Object &&cb) { return m_o4_func.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( ce1_w ); DECLARE_WRITE_LINE_MEMBER( ce2_w ); diff --git a/src/devices/machine/8364_paula.h b/src/devices/machine/8364_paula.h index 8e20b6f813a..db9ed3727c0 100644 --- a/src/devices/machine/8364_paula.h +++ b/src/devices/machine/8364_paula.h @@ -49,10 +49,10 @@ //************************************************************************** #define MCFG_PAULA_MEM_READ_CB(_devcb) \ - devcb = &paula_8364_device::set_mem_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<paula_8364_device &>(*device).set_mem_r_callback(DEVCB_##_devcb); #define MCFG_PAULA_INT_CB(_devcb) \ - devcb = &paula_8364_device::set_int_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<paula_8364_device &>(*device).set_int_w_callback(DEVCB_##_devcb); //************************************************************************** @@ -67,11 +67,8 @@ public: paula_8364_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - template <class Object> static devcb_base &set_mem_r_callback(device_t &device, Object &&cb) - { return downcast<paula_8364_device &>(device).m_mem_r.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_int_w_callback(device_t &device, Object &&cb) - { return downcast<paula_8364_device &>(device).m_int_w.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_mem_r_callback(Object &&cb) { return m_mem_r.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_w_callback(Object &&cb) { return m_int_w.set_callback(std::forward<Object>(cb)); } DECLARE_READ16_MEMBER(reg_r); DECLARE_WRITE16_MEMBER(reg_w); diff --git a/src/devices/machine/8530scc.h b/src/devices/machine/8530scc.h index 7a8a5cf107e..5333fda0060 100644 --- a/src/devices/machine/8530scc.h +++ b/src/devices/machine/8530scc.h @@ -12,7 +12,7 @@ #define MAME_MACHINE_8530SCC_H #define MCFG_Z8530_INTRQ_CALLBACK(_write) \ - devcb = &scc8530_t::set_intrq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<scc8530_t &>(*device).set_intrq_wr_callback(DEVCB_##_write); class scc8530_t : public device_t { @@ -31,7 +31,7 @@ public: scc8530_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<scc8530_t &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward<Object>(cb)); } uint8_t get_reg_a(int reg); uint8_t get_reg_b(int reg); diff --git a/src/devices/machine/aakart.h b/src/devices/machine/aakart.h index 7d5ba02eecf..f432055f59c 100644 --- a/src/devices/machine/aakart.h +++ b/src/devices/machine/aakart.h @@ -18,10 +18,10 @@ Acorn Archimedes KART interface //************************************************************************** #define MCFG_AAKART_OUT_TX_CB(_devcb) \ - devcb = &aakart_device::set_out_tx_callback(*device, DEVCB_##_devcb); + devcb = &downcast<aakart_device &>(*device).set_out_tx_callback(DEVCB_##_devcb); #define MCFG_AAKART_OUT_RX_CB(_devcb) \ - devcb = &aakart_device::set_out_rx_callback(*device, DEVCB_##_devcb); + devcb = &downcast<aakart_device &>(*device).set_out_rx_callback(DEVCB_##_devcb); //************************************************************************** @@ -36,8 +36,8 @@ public: // construction/destruction aakart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_tx_callback(device_t &device, Object &&cb) { return downcast<aakart_device &>(device).m_out_tx_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rx_callback(device_t &device, Object &&cb) { return downcast<aakart_device &>(device).m_out_rx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_tx_callback(Object &&cb) { return m_out_tx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rx_callback(Object &&cb) { return m_out_rx_cb.set_callback(std::forward<Object>(cb)); } // I/O operations DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/adc0808.h b/src/devices/machine/adc0808.h index bc28d912f20..21fc32fa085 100644 --- a/src/devices/machine/adc0808.h +++ b/src/devices/machine/adc0808.h @@ -40,37 +40,37 @@ #define MCFG_ADC0808_OUT_EOC_CB(_devcb) \ - devcb = &adc0808_device::set_out_eoc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adc0808_device &>(*device).set_out_eoc_callback(DEVCB_##_devcb); #define MCFG_ADC0808_IN_VREF_POS_CB(_class, _method) \ - adc0808_device::set_in_vref_pos_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc0808_device &>(*device).set_in_vref_pos_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ADC0808_IN_VREF_NEG_CB(_class, _method) \ - adc0808_device::set_in_vref_neg_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc0808_device &>(*device).set_in_vref_neg_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ADC0808_IN_IN_0_CB(_class, _method) \ - adc0808_device::set_in_in_0_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc0808_device &>(*device).set_in_in_0_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ADC0808_IN_IN_1_CB(_class, _method) \ - adc0808_device::set_in_in_1_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc0808_device &>(*device).set_in_in_1_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ADC0808_IN_IN_2_CB(_class, _method) \ - adc0808_device::set_in_in_2_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc0808_device &>(*device).set_in_in_2_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ADC0808_IN_IN_3_CB(_class, _method) \ - adc0808_device::set_in_in_3_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc0808_device &>(*device).set_in_in_3_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ADC0808_IN_IN_4_CB(_class, _method) \ - adc0808_device::set_in_in_4_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc0808_device &>(*device).set_in_in_4_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ADC0808_IN_IN_5_CB(_class, _method) \ - adc0808_device::set_in_in_5_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc0808_device &>(*device).set_in_in_5_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ADC0808_IN_IN_6_CB(_class, _method) \ - adc0808_device::set_in_in_6_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc0808_device &>(*device).set_in_in_6_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ADC0808_IN_IN_7_CB(_class, _method) \ - adc0808_device::set_in_in_7_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc0808_device &>(*device).set_in_in_7_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this)); // ======================> adc0808_device @@ -82,17 +82,17 @@ public: // construction/destruction adc0808_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_eoc_callback(device_t &device, Object &&cb) { return downcast<adc0808_device &>(device).m_out_eoc_cb.set_callback(std::forward<Object>(cb)); } - static void set_in_vref_pos_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_vref_pos_cb = std::move(cb); } - static void set_in_vref_neg_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_vref_neg_cb = std::move(cb); } - static void set_in_in_0_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_0_cb = std::move(cb); } - static void set_in_in_1_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_1_cb = std::move(cb); } - static void set_in_in_2_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_2_cb = std::move(cb); } - static void set_in_in_3_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_3_cb = std::move(cb); } - static void set_in_in_4_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_4_cb = std::move(cb); } - static void set_in_in_5_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_5_cb = std::move(cb); } - static void set_in_in_6_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_6_cb = std::move(cb); } - static void set_in_in_7_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_7_cb = std::move(cb); } + template <class Object> devcb_base &set_out_eoc_callback(Object &&cb) { return m_out_eoc_cb.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_in_vref_pos_callback(Object &&cb) { m_in_vref_pos_cb = std::forward<Object>(cb); } + template <typename Object> void set_in_vref_neg_callback(Object &&cb) { m_in_vref_neg_cb = std::forward<Object>(cb); } + template <typename Object> void set_in_in_0_callback(Object &&cb) { m_in_in_0_cb = std::forward<Object>(cb); } + template <typename Object> void set_in_in_1_callback(Object &&cb) { m_in_in_1_cb = std::forward<Object>(cb); } + template <typename Object> void set_in_in_2_callback(Object &&cb) { m_in_in_2_cb = std::forward<Object>(cb); } + template <typename Object> void set_in_in_3_callback(Object &&cb) { m_in_in_3_cb = std::forward<Object>(cb); } + template <typename Object> void set_in_in_4_callback(Object &&cb) { m_in_in_4_cb = std::forward<Object>(cb); } + template <typename Object> void set_in_in_5_callback(Object &&cb) { m_in_in_5_cb = std::forward<Object>(cb); } + template <typename Object> void set_in_in_6_callback(Object &&cb) { m_in_in_6_cb = std::forward<Object>(cb); } + template <typename Object> void set_in_in_7_callback(Object &&cb) { m_in_in_7_cb = std::forward<Object>(cb); } DECLARE_READ8_MEMBER( data_r ); DECLARE_WRITE8_MEMBER( ale_w ); diff --git a/src/devices/machine/adc083x.h b/src/devices/machine/adc083x.h index 35e98621f92..9d7012a2b27 100644 --- a/src/devices/machine/adc083x.h +++ b/src/devices/machine/adc083x.h @@ -21,7 +21,7 @@ #define ADC083X_INPUT_CB(name) double name(uint8_t input) #define MCFG_ADC083X_INPUT_CB(_class, _method) \ - adc083x_device::set_input_callback(*device, adc083x_device::input_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc083x_device &>(*device).set_input_callback(adc083x_device::input_delegate(&_class::_method, #_class "::" #_method, this)); /*************************************************************************** CONSTANTS @@ -48,8 +48,8 @@ class adc083x_device : public device_t public: typedef device_delegate<double (uint8_t input)> input_delegate; - // static configuration helpers - static void set_input_callback(device_t &device, input_delegate &&cb) { downcast<adc083x_device &>(device).m_input_callback = std::move(cb); } + // configuration helpers + template <typename Object> void set_input_callback(Object &&cb) { m_input_callback = std::forward<Object>(cb); } DECLARE_WRITE_LINE_MEMBER( cs_write ); DECLARE_WRITE_LINE_MEMBER( clk_write ); diff --git a/src/devices/machine/adc0844.h b/src/devices/machine/adc0844.h index 404a4cfa7a4..e31740b3d09 100644 --- a/src/devices/machine/adc0844.h +++ b/src/devices/machine/adc0844.h @@ -34,19 +34,19 @@ MCFG_DEVICE_ADD(_tag, ADC0844, 0) #define MCFG_ADC0844_INTR_CB(_devcb) \ - devcb = &adc0844_device::set_intr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adc0844_device &>(*device).set_intr_callback(DEVCB_##_devcb); #define MCFG_ADC0844_CH1_CB(_devcb) \ - devcb = &adc0844_device::set_ch1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adc0844_device &>(*device).set_ch1_callback(DEVCB_##_devcb); #define MCFG_ADC0844_CH2_CB(_devcb) \ - devcb = &adc0844_device::set_ch2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adc0844_device &>(*device).set_ch2_callback(DEVCB_##_devcb); #define MCFG_ADC0844_CH3_CB(_devcb) \ - devcb = &adc0844_device::set_ch3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adc0844_device &>(*device).set_ch3_callback(DEVCB_##_devcb); #define MCFG_ADC0844_CH4_CB(_devcb) \ - devcb = &adc0844_device::set_ch4_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adc0844_device &>(*device).set_ch4_callback(DEVCB_##_devcb); #define MCFG_ADC0848_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, ADC0848, 0) @@ -58,16 +58,16 @@ #define MCFG_ADC0848_CH4_CB MCFG_ADC0844_CH4_CB #define MCFG_ADC0848_CH5_CB(_devcb) \ - devcb = &adc0848_device::set_ch5_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adc0848_device &>(*device).set_ch5_callback(DEVCB_##_devcb); #define MCFG_ADC0848_CH6_CB(_devcb) \ - devcb = &adc0848_device::set_ch6_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adc0848_device &>(*device).set_ch6_callback(DEVCB_##_devcb); #define MCFG_ADC0848_CH7_CB(_devcb) \ - devcb = &adc0848_device::set_ch7_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adc0848_device &>(*device).set_ch7_callback(DEVCB_##_devcb); #define MCFG_ADC0848_CH8_CB(_devcb) \ - devcb = &adc0848_device::set_ch8_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adc0848_device &>(*device).set_ch8_callback(DEVCB_##_devcb); //************************************************************************** @@ -81,20 +81,11 @@ public: adc0844_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - template <class Object> static devcb_base &set_intr_callback(device_t &device, Object &&cb) - { return downcast<adc0844_device &>(device).m_intr_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ch1_callback(device_t &device, Object &&cb) - { return downcast<adc0844_device &>(device).m_ch1_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ch2_callback(device_t &device, Object &&cb) - { return downcast<adc0844_device &>(device).m_ch2_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ch3_callback(device_t &device, Object &&cb) - { return downcast<adc0844_device &>(device).m_ch3_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ch4_callback(device_t &device, Object &&cb) - { return downcast<adc0844_device &>(device).m_ch4_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intr_callback(Object &&cb) { return m_intr_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ch1_callback(Object &&cb) { return m_ch1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ch2_callback(Object &&cb) { return m_ch2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ch3_callback(Object &&cb) { return m_ch3_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ch4_callback(Object &&cb) { return m_ch4_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); virtual DECLARE_WRITE8_MEMBER(write); @@ -126,17 +117,10 @@ public: adc0848_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - template <class Object> static devcb_base &set_ch5_callback(device_t &device, Object &&cb) - { return downcast<adc0848_device &>(device).m_ch5_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ch6_callback(device_t &device, Object &&cb) - { return downcast<adc0848_device &>(device).m_ch6_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ch7_callback(device_t &device, Object &&cb) - { return downcast<adc0848_device &>(device).m_ch7_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_ch8_callback(device_t &device, Object &&cb) - { return downcast<adc0848_device &>(device).m_ch8_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ch5_callback(Object &&cb) { return m_ch5_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ch6_callback(Object &&cb) { return m_ch6_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ch7_callback(Object &&cb) { return m_ch7_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ch8_callback(Object &&cb) { return m_ch8_cb.set_callback(std::forward<Object>(cb)); } virtual DECLARE_WRITE8_MEMBER(write) override; diff --git a/src/devices/machine/adc1038.h b/src/devices/machine/adc1038.h index 1d843d63321..968d3fb933f 100644 --- a/src/devices/machine/adc1038.h +++ b/src/devices/machine/adc1038.h @@ -32,8 +32,8 @@ public: adc1038_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_input_callback(device_t &device, input_delegate &&callback) { downcast<adc1038_device &>(device).m_input_cb = std::move(callback); } - static void set_gti_club_hack(device_t &device, int hack) { downcast<adc1038_device &>(device).m_gticlub_hack = hack; } + template <typename Object> void set_input_callback(Object &&cb) { m_input_cb = std::forward<Object>(cb); } + void set_gti_club_hack(int hack) { m_gticlub_hack = hack; } DECLARE_READ_LINE_MEMBER( do_read ); DECLARE_READ_LINE_MEMBER( sars_read ); @@ -63,9 +63,9 @@ DECLARE_DEVICE_TYPE(ADC1038, adc1038_device) #define MCFG_ADC1038_INPUT_CB(_class, _method) \ - adc1038_device::set_input_callback(*device, adc1038_device::input_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc1038_device &>(*device).set_input_callback(adc1038_device::input_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ADC1038_GTIHACK(_hack) \ - adc1038_device::set_gti_club_hack(*device, _hack); + downcast<adc1038_device &>(*device).set_gti_club_hack(_hack); #endif // MAME_MACHINE_ADC1038_H diff --git a/src/devices/machine/adc1213x.h b/src/devices/machine/adc1213x.h index d6c5cb7cefc..ce65e9fb60a 100644 --- a/src/devices/machine/adc1213x.h +++ b/src/devices/machine/adc1213x.h @@ -32,7 +32,7 @@ public: adc12138_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_ipt_convert_callback(device_t &device, ipt_convert_delegate &&cb) { downcast<adc12138_device &>(device).m_ipt_read_cb = std::move(cb); } + template <typename Object> void set_ipt_convert_callback(Object &&cb) { m_ipt_read_cb = std::forward<Object>(cb); } DECLARE_WRITE8_MEMBER( di_w ); DECLARE_WRITE8_MEMBER( cs_w ); @@ -88,6 +88,6 @@ DECLARE_DEVICE_TYPE(ADC12132, adc12132_device) #define MCFG_ADC1213X_IPT_CONVERT_CB(_class, _method) \ - adc12138_device::set_ipt_convert_callback(*device, adc12138_device::ipt_convert_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<adc12138_device &>(*device).set_ipt_convert_callback(adc12138_device::ipt_convert_delegate(&_class::_method, #_class "::" #_method, this)); #endif // MAME_MACHINE_ADC1213X_H diff --git a/src/devices/machine/akiko.h b/src/devices/machine/akiko.h index 1087fe32552..d72b5b58ce5 100644 --- a/src/devices/machine/akiko.h +++ b/src/devices/machine/akiko.h @@ -29,22 +29,22 @@ MCFG_DEVICE_ADD(_tag, AKIKO, 0) #define MCFG_AKIKO_MEM_READ_CB(_devcb) \ - devcb = &akiko_device::set_mem_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<akiko_device &>(*device).set_mem_r_callback(DEVCB_##_devcb); #define MCFG_AKIKO_MEM_WRITE_CB(_devcb) \ - devcb = &akiko_device::set_mem_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<akiko_device &>(*device).set_mem_w_callback(DEVCB_##_devcb); #define MCFG_AKIKO_INT_CB(_devcb) \ - devcb = &akiko_device::set_int_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<akiko_device &>(*device).set_int_w_callback(DEVCB_##_devcb); #define MCFG_AKIKO_SCL_HANDLER(_devcb) \ - devcb = &akiko_device::set_scl_handler(*device, DEVCB_##_devcb); + devcb = &downcast<akiko_device &>(*device).set_scl_handler(DEVCB_##_devcb); #define MCFG_AKIKO_SDA_READ_HANDLER(_devcb) \ - devcb = &akiko_device::set_sda_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<akiko_device &>(*device).set_sda_read_handler(DEVCB_##_devcb); #define MCFG_AKIKO_SDA_WRITE_HANDLER(_devcb) \ - devcb = &akiko_device::set_sda_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<akiko_device &>(*device).set_sda_write_handler(DEVCB_##_devcb); //************************************************************************** @@ -59,23 +59,12 @@ public: akiko_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // callbacks - template <class Object> static devcb_base &set_mem_r_callback(device_t &device, Object &&cb) - { return downcast<akiko_device &>(device).m_mem_r.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_mem_w_callback(device_t &device, Object &&cb) - { return downcast<akiko_device &>(device).m_mem_w.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_int_w_callback(device_t &device, Object &&cb) - { return downcast<akiko_device &>(device).m_int_w.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_scl_handler(device_t &device, Object &&cb) - { return downcast<akiko_device &>(device).m_scl_w.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_sda_read_handler(device_t &device, Object &&cb) - { return downcast<akiko_device &>(device).m_sda_r.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_sda_write_handler(device_t &device, Object &&cb) - { return downcast<akiko_device &>(device).m_sda_w.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_mem_r_callback(Object &&cb) { return m_mem_r.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_mem_w_callback(Object &&cb) { return m_mem_w.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_w_callback(Object &&cb) { return m_int_w.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_scl_handler(Object &&cb) { return m_scl_w.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sda_read_handler(Object &&cb) { return m_sda_r.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sda_write_handler(Object &&cb) { return m_sda_w.set_callback(std::forward<Object>(cb)); } DECLARE_READ32_MEMBER( read ); DECLARE_WRITE32_MEMBER( write ); diff --git a/src/devices/machine/am53cf96.h b/src/devices/machine/am53cf96.h index f269ec34384..ba7b46ab2c7 100644 --- a/src/devices/machine/am53cf96.h +++ b/src/devices/machine/am53cf96.h @@ -13,7 +13,7 @@ #include "legscsi.h" #define MCFG_AM53CF96_IRQ_HANDLER(_devcb) \ - devcb = &am53cf96_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<am53cf96_device &>(*device).set_irq_handler(DEVCB_##_devcb); class am53cf96_device : public legacy_scsi_host_adapter { @@ -22,7 +22,7 @@ public: am53cf96_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<am53cf96_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/am9513.h b/src/devices/machine/am9513.h index a13ab9135ca..c11a659624f 100644 --- a/src/devices/machine/am9513.h +++ b/src/devices/machine/am9513.h @@ -39,17 +39,17 @@ //************************************************************************** #define MCFG_AM9513_OUT1_CALLBACK(_devcb) \ - devcb = &am9513_device::set_out_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<am9513_device &>(*device).set_out_cb(0, DEVCB_##_devcb); #define MCFG_AM9513_OUT2_CALLBACK(_devcb) \ - devcb = &am9513_device::set_out_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<am9513_device &>(*device).set_out_cb(1, DEVCB_##_devcb); #define MCFG_AM9513_OUT3_CALLBACK(_devcb) \ - devcb = &am9513_device::set_out_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<am9513_device &>(*device).set_out_cb(2, DEVCB_##_devcb); #define MCFG_AM9513_OUT4_CALLBACK(_devcb) \ - devcb = &am9513_device::set_out_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<am9513_device &>(*device).set_out_cb(3, DEVCB_##_devcb); #define MCFG_AM9513_OUT5_CALLBACK(_devcb) \ - devcb = &am9513_device::set_out_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<am9513_device &>(*device).set_out_cb(4, DEVCB_##_devcb); #define MCFG_AM9513_FOUT_CALLBACK(_devcb) \ - devcb = &am9513_device::set_fout_cb(*device, DEVCB_##_devcb); + devcb = &downcast<am9513_device &>(*device).set_fout_cb(DEVCB_##_devcb); @@ -66,10 +66,8 @@ public: am9513_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // static configuration - template<class Object> static devcb_base &set_out_cb(device_t &device, int c, Object &&cb) - { assert(c >= 0 && c < 5); return downcast<am9513_device &>(device).m_out_cb[c].set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_fout_cb(device_t &device, Object &&cb) - { return downcast<am9513_device &>(device).m_fout_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_cb(int c, Object &&cb) { assert(c >= 0 && c < 5); return m_out_cb[c].set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_fout_cb(Object &&cb) { return m_fout_cb.set_callback(std::forward<Object>(cb)); } // 8-bit data bus interface DECLARE_READ8_MEMBER(read8); diff --git a/src/devices/machine/am9517a.h b/src/devices/machine/am9517a.h index 7e92a5ed38e..8527dfaa42f 100644 --- a/src/devices/machine/am9517a.h +++ b/src/devices/machine/am9517a.h @@ -51,15 +51,15 @@ public: // construction/destruction am9517a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_hreq_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_hreq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_eop_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_eop_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_hreq_callback(Object &&cb) { return m_out_hreq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_eop_callback(Object &&cb) { return m_out_eop_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_memr_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_in_memr_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_memw_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_memw_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_memr_callback(Object &&cb) { return m_in_memr_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_memw_callback(Object &&cb) { return m_out_memw_cb.set_callback(std::forward<Object>(cb)); } - template <unsigned C, class Object> static devcb_base &set_in_ior_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_in_ior_cb[C].set_callback(std::forward<Object>(cb)); } - template <unsigned C, class Object> static devcb_base &set_out_iow_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_iow_cb[C].set_callback(std::forward<Object>(cb)); } - template <unsigned C, class Object> static devcb_base &set_out_dack_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_dack_cb[C].set_callback(std::forward<Object>(cb)); } + template <unsigned C, class Object> devcb_base &set_in_ior_callback(Object &&cb) { return m_in_ior_cb[C].set_callback(std::forward<Object>(cb)); } + template <unsigned C, class Object> devcb_base &set_out_iow_callback(Object &&cb) { return m_out_iow_cb[C].set_callback(std::forward<Object>(cb)); } + template <unsigned C, class Object> devcb_base &set_out_dack_callback(Object &&cb) { return m_out_dack_cb[C].set_callback(std::forward<Object>(cb)); } virtual DECLARE_READ8_MEMBER( read ); virtual DECLARE_WRITE8_MEMBER( write ); @@ -179,52 +179,52 @@ DECLARE_DEVICE_TYPE(PCXPORT_DMAC, pcxport_dmac_device) ***************************************************************************/ #define MCFG_AM9517A_OUT_HREQ_CB(_devcb) \ - devcb = &am9517a_device::set_out_hreq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_out_hreq_callback(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_EOP_CB(_devcb) \ - devcb = &am9517a_device::set_out_eop_callback(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_out_eop_callback(DEVCB_##_devcb); #define MCFG_AM9517A_IN_MEMR_CB(_devcb) \ - devcb = &am9517a_device::set_in_memr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_in_memr_callback(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_MEMW_CB(_devcb) \ - devcb = &am9517a_device::set_out_memw_callback(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_out_memw_callback(DEVCB_##_devcb); #define MCFG_AM9517A_IN_IOR_0_CB(_devcb) \ - devcb = &am9517a_device::set_in_ior_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<0>(DEVCB_##_devcb); #define MCFG_AM9517A_IN_IOR_1_CB(_devcb) \ - devcb = &am9517a_device::set_in_ior_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<1>(DEVCB_##_devcb); #define MCFG_AM9517A_IN_IOR_2_CB(_devcb) \ - devcb = &am9517a_device::set_in_ior_callback<2>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<2>(DEVCB_##_devcb); #define MCFG_AM9517A_IN_IOR_3_CB(_devcb) \ - devcb = &am9517a_device::set_in_ior_callback<3>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<3>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_IOW_0_CB(_devcb) \ - devcb = &am9517a_device::set_out_iow_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<0>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_IOW_1_CB(_devcb) \ - devcb = &am9517a_device::set_out_iow_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<1>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_IOW_2_CB(_devcb) \ - devcb = &am9517a_device::set_out_iow_callback<2>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<2>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_IOW_3_CB(_devcb) \ - devcb = &am9517a_device::set_out_iow_callback<3>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<3>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_DACK_0_CB(_devcb) \ - devcb = &am9517a_device::set_out_dack_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<0>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_DACK_1_CB(_devcb) \ - devcb = &am9517a_device::set_out_dack_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<1>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_DACK_2_CB(_devcb) \ - devcb = &am9517a_device::set_out_dack_callback<2>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<2>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_DACK_3_CB(_devcb) \ - devcb = &am9517a_device::set_out_dack_callback<3>(*device, DEVCB_##_devcb); + devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<3>(DEVCB_##_devcb); #define MCFG_I8237_OUT_HREQ_CB MCFG_AM9517A_OUT_HREQ_CB #define MCFG_I8237_OUT_EOP_CB MCFG_AM9517A_OUT_EOP_CB diff --git a/src/devices/machine/am9519.h b/src/devices/machine/am9519.h index 2bfa9e89fe8..27ac1e9a46e 100644 --- a/src/devices/machine/am9519.h +++ b/src/devices/machine/am9519.h @@ -33,7 +33,7 @@ ***************************************************************************/ #define MCFG_AM9519_OUT_INT_CB(_devcb) \ - devcb = &am9519_device::static_set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<am9519_device &>(*device).static_set_out_int_callback(DEVCB_##_devcb); class am9519_device : public device_t @@ -41,7 +41,7 @@ class am9519_device : public device_t public: am9519_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - template <class Object> static devcb_base &static_set_out_int_callback(device_t &device, Object &&cb) { return downcast<am9519_device &>(device).m_out_int_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &static_set_out_int_callback(Object &&cb) { return m_out_int_func.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( stat_r ); DECLARE_READ8_MEMBER( data_r ); diff --git a/src/devices/machine/amigafdc.h b/src/devices/machine/amigafdc.h index 065ed590176..732a024785a 100644 --- a/src/devices/machine/amigafdc.h +++ b/src/devices/machine/amigafdc.h @@ -8,29 +8,29 @@ #include "imagedev/floppy.h" #define MCFG_AMIGA_FDC_INDEX_CALLBACK(_write) \ - devcb = &amiga_fdc_device::set_index_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<amiga_fdc_device &>(*device).set_index_wr_callback(DEVCB_##_write); #define MCFG_AMIGA_FDC_READ_DMA_CALLBACK(_read) \ - devcb = &amiga_fdc_device::set_dma_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<amiga_fdc_device &>(*device).set_dma_rd_callback(DEVCB_##_read); #define MCFG_AMIGA_FDC_WRITE_DMA_CALLBACK(_write) \ - devcb = &amiga_fdc_device::set_dma_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<amiga_fdc_device &>(*device).set_dma_wr_callback(DEVCB_##_write); #define MCFG_AMIGA_FDC_DSKBLK_CALLBACK(_write) \ - devcb = &amiga_fdc_device::set_dskblk_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<amiga_fdc_device &>(*device).set_dskblk_wr_callback(DEVCB_##_write); #define MCFG_AMIGA_FDC_DSKSYN_CALLBACK(_write) \ - devcb = &amiga_fdc_device::set_dsksyn_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<amiga_fdc_device &>(*device).set_dsksyn_wr_callback(DEVCB_##_write); class amiga_fdc_device : public device_t { public: amiga_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_index_wr_callback(device_t &device, Object &&cb) { return downcast<amiga_fdc_device &>(device).m_write_index.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_rd_callback(device_t &device, Object &&cb) { return downcast<amiga_fdc_device &>(device).m_read_dma.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<amiga_fdc_device &>(device).m_write_dma.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dskblk_wr_callback(device_t &device, Object &&cb) { return downcast<amiga_fdc_device &>(device).m_write_dskblk.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dsksyn_wr_callback(device_t &device, Object &&cb) { return downcast<amiga_fdc_device &>(device).m_write_dsksyn.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_index_wr_callback(Object &&cb) { return m_write_index.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_rd_callback(Object &&cb) { return m_read_dma.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_wr_callback(Object &&cb) { return m_write_dma.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dskblk_wr_callback(Object &&cb) { return m_write_dskblk.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dsksyn_wr_callback(Object &&cb) { return m_write_dsksyn.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER(ciaaprb_w); diff --git a/src/devices/machine/applefdc.h b/src/devices/machine/applefdc.h index f6f9f05fcf9..79495a8a141 100644 --- a/src/devices/machine/applefdc.h +++ b/src/devices/machine/applefdc.h @@ -59,7 +59,7 @@ class applefdc_base_device : public device_t { public: // configuration helpers - static void static_set_config(device_t &device, const applefdc_interface *intrf) { downcast<applefdc_base_device &>(device).m_interface = intrf; } + void set_config(const applefdc_interface *intrf) { m_interface = intrf; } // read/write handlers virtual uint8_t read(uint8_t offset); @@ -147,7 +147,7 @@ public: ***************************************************************************/ #define MCFG_APPLEFDC_CONFIG(_intrf) \ - applefdc_base_device::static_set_config(*device, &(_intrf)); + downcast<applefdc_base_device &>(*device).set_config(&(_intrf)); #define MCFG_APPLEFDC_ADD(_tag, _intrf) \ MCFG_DEVICE_ADD(_tag, APPLEFDC, 0) \ diff --git a/src/devices/machine/at45dbxx.h b/src/devices/machine/at45dbxx.h index 2c26916d2e5..f215a22c7fe 100644 --- a/src/devices/machine/at45dbxx.h +++ b/src/devices/machine/at45dbxx.h @@ -32,7 +32,7 @@ MCFG_DEVICE_ADD(_tag, AT45DB161, 0) #define MCFG_AT45DBXXX_SO_CALLBACK(_cb) \ - devcb = &at45db041_device::set_so_cb(*device, DEVCB_##_cb); + devcb = &downcast<at45db041_device &>(*device).set_so_cb(DEVCB_##_cb); // ======================> at45db041_device @@ -50,7 +50,7 @@ public: uint8_t *get_ptr() { return &m_data[0]; } - template <class Object> static devcb_base &set_so_cb(device_t &device, Object &&cb) { return downcast<at45db041_device &>(device).write_so.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_so_cb(Object &&cb) { return write_so.set_callback(std::forward<Object>(cb)); } protected: at45db041_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/machine/at_keybc.h b/src/devices/machine/at_keybc.h index 03bb9b6459f..b32a85286d1 100644 --- a/src/devices/machine/at_keybc.h +++ b/src/devices/machine/at_keybc.h @@ -19,22 +19,22 @@ //************************************************************************** #define MCFG_AT_KEYBOARD_CONTROLLER_SYSTEM_RESET_CB(_devcb) \ - devcb = &at_keyboard_controller_device::set_system_reset_callback(*device, DEVCB_##_devcb); + devcb = &downcast<at_keyboard_controller_device &>(*device).set_system_reset_callback(DEVCB_##_devcb); #define MCFG_AT_KEYBOARD_CONTROLLER_GATE_A20_CB(_devcb) \ - devcb = &at_keyboard_controller_device::set_gate_a20_callback(*device, DEVCB_##_devcb); + devcb = &downcast<at_keyboard_controller_device &>(*device).set_gate_a20_callback(DEVCB_##_devcb); #define MCFG_AT_KEYBOARD_CONTROLLER_INPUT_BUFFER_FULL_CB(_devcb) \ - devcb = &at_keyboard_controller_device::set_input_buffer_full_callback(*device, DEVCB_##_devcb); + devcb = &downcast<at_keyboard_controller_device &>(*device).set_input_buffer_full_callback(DEVCB_##_devcb); #define MCFG_AT_KEYBOARD_CONTROLLER_OUTPUT_BUFFER_EMPTY_CB(_devcb) \ - devcb = &at_keyboard_controller_device::set_output_buffer_empty_callback(*device, DEVCB_##_devcb); + devcb = &downcast<at_keyboard_controller_device &>(*device).set_output_buffer_empty_callback(DEVCB_##_devcb); #define MCFG_AT_KEYBOARD_CONTROLLER_KEYBOARD_CLOCK_CB(_devcb) \ - devcb = &at_keyboard_controller_device::set_keyboard_clock_callback(*device, DEVCB_##_devcb); + devcb = &downcast<at_keyboard_controller_device &>(*device).set_keyboard_clock_callback(DEVCB_##_devcb); #define MCFG_AT_KEYBOARD_CONTROLLER_KEYBOARD_DATA_CB(_devcb) \ - devcb = &at_keyboard_controller_device::set_keyboard_data_callback(*device, DEVCB_##_devcb); + devcb = &downcast<at_keyboard_controller_device &>(*device).set_keyboard_data_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -48,12 +48,12 @@ public: // construction/destruction at_keyboard_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_system_reset_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_system_reset_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_gate_a20_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_gate_a20_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_input_buffer_full_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_output_buffer_empty_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_keyboard_clock_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_keyboard_clock_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_keyboard_data_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_keyboard_data_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_system_reset_callback(Object &&cb) { return m_system_reset_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gate_a20_callback(Object &&cb) { return m_gate_a20_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_input_buffer_full_callback(Object &&cb) { return m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_buffer_empty_callback(Object &&cb) { return m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_keyboard_clock_callback(Object &&cb) { return m_keyboard_clock_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_keyboard_data_callback(Object &&cb) { return m_keyboard_data_cb.set_callback(std::forward<Object>(cb)); } // interface to the host pc DECLARE_READ8_MEMBER( data_r ); diff --git a/src/devices/machine/ataintf.h b/src/devices/machine/ataintf.h index c9626af52db..d68e4d78340 100644 --- a/src/devices/machine/ataintf.h +++ b/src/devices/machine/ataintf.h @@ -47,13 +47,13 @@ DECLARE_DEVICE_TYPE(ATA_SLOT, ata_slot_device) ***************************************************************************/ #define MCFG_ATA_INTERFACE_IRQ_HANDLER(_devcb) \ - devcb = &abstract_ata_interface_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<abstract_ata_interface_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_ATA_INTERFACE_DMARQ_HANDLER(_devcb) \ - devcb = &abstract_ata_interface_device::set_dmarq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<abstract_ata_interface_device &>(*device).set_dmarq_handler(DEVCB_##_devcb); #define MCFG_ATA_INTERFACE_DASP_HANDLER(_devcb) \ - devcb = &abstract_ata_interface_device::set_dasp_handler(*device, DEVCB_##_devcb); + devcb = &downcast<abstract_ata_interface_device &>(*device).set_dasp_handler(DEVCB_##_devcb); SLOT_INTERFACE_EXTERN(ata_devices); @@ -79,9 +79,9 @@ class abstract_ata_interface_device : public device_t { public: // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<abstract_ata_interface_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dmarq_handler(device_t &device, Object &&cb) { return downcast<abstract_ata_interface_device &>(device).m_dmarq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dasp_handler(device_t &device, Object &&cb) { return downcast<abstract_ata_interface_device &>(device).m_dasp_handler.set_callback(std::forward<Object>(cb)); } + 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_dmarq_handler(Object &&cb) { return m_dmarq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dasp_handler(Object &&cb) { return m_dasp_handler.set_callback(std::forward<Object>(cb)); } uint16_t read_dma(); void write_dma(uint16_t data); diff --git a/src/devices/machine/atmel_arm_aic.h b/src/devices/machine/atmel_arm_aic.h index 28fa4434d5e..db30986bb2d 100644 --- a/src/devices/machine/atmel_arm_aic.h +++ b/src/devices/machine/atmel_arm_aic.h @@ -12,7 +12,7 @@ DECLARE_DEVICE_TYPE(ARM_AIC, arm_aic_device) MCFG_DEVICE_ADD(_tag, ARM_AIC, 0) #define MCFG_IRQ_LINE_CB(_devcb) \ - devcb = &arm_aic_device::set_line_callback(*device, DEVCB_##_devcb); + devcb = &downcast<arm_aic_device &>(*device).set_line_callback(DEVCB_##_devcb); class arm_aic_device : public device_t { @@ -25,7 +25,7 @@ public: } // configuration - template <class Object> static devcb_base &set_line_callback(device_t &device, Object &&cb) { return downcast<arm_aic_device &>(device).m_irq_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_line_callback(Object &&cb) { return m_irq_out.set_callback(std::forward<Object>(cb)); } void regs_map(address_map &map); diff --git a/src/devices/machine/ay31015.h b/src/devices/machine/ay31015.h index 7f75e0297fd..d5dcebbdc5a 100644 --- a/src/devices/machine/ay31015.h +++ b/src/devices/machine/ay31015.h @@ -20,18 +20,18 @@ class ay31015_device : public device_t public: ay31015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_tx_clock(device_t &device, double tx_clock) { downcast<ay31015_device &>(device).m_tx_clock = tx_clock; } - static void set_tx_clock(device_t &device, const XTAL &xtal) { set_tx_clock(device, xtal.dvalue()); } - static void set_rx_clock(device_t &device, double rx_clock) { downcast<ay31015_device &>(device).m_rx_clock = rx_clock; } - static void set_rx_clock(device_t &device, const XTAL &xtal) { set_rx_clock(device, xtal.dvalue()); } - template <class Object> static devcb_base &set_read_si_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_read_si_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_so_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_so_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_pe_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_pe_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_fe_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_fe_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_or_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_or_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_dav_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_dav_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_tbmt_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_tbmt_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_eoc_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_eoc_cb.set_callback(std::forward<Object>(cb)); } + void set_tx_clock(double tx_clock) { m_tx_clock = tx_clock; } + void set_tx_clock(const XTAL &xtal) { set_tx_clock(xtal.dvalue()); } + void set_rx_clock(double rx_clock) { m_rx_clock = rx_clock; } + void set_rx_clock(const XTAL &xtal) { set_rx_clock(xtal.dvalue()); } + template <class Object> devcb_base &set_read_si_callback(Object &&cb) { return m_read_si_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_so_callback(Object &&cb) { return m_write_so_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_pe_callback(Object &&cb) { return m_write_pe_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_fe_callback(Object &&cb) { return m_write_fe_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_or_callback(Object &&cb) { return m_write_or_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_dav_callback(Object &&cb) { return m_write_dav_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_tbmt_callback(Object &&cb) { return m_write_tbmt_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_eoc_callback(Object &&cb) { return m_write_eoc_cb.set_callback(std::forward<Object>(cb)); } /* Set an input pin */ DECLARE_WRITE_LINE_MEMBER(write_swe) { set_input_pin(SWE, state); } @@ -193,64 +193,64 @@ DECLARE_DEVICE_TYPE(AY51013, ay51013_device) // For AY-3-1014, AY-5-1013 and A #define MCFG_AY31015_TX_CLOCK(_txclk) \ - ay31015_device::set_tx_clock(*device, _txclk); + downcast<ay31015_device &>(*device).set_tx_clock(_txclk); #define MCFG_AY31015_RX_CLOCK(_rxclk) \ - ay31015_device::set_rx_clock(*device, _rxclk); + downcast<ay31015_device &>(*device).set_rx_clock(_rxclk); #define MCFG_AY31015_READ_SI_CB(_devcb) \ - devcb = &ay31015_device::set_read_si_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay31015_device &>(*device).set_read_si_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_SO_CB(_devcb) \ - devcb = &ay31015_device::set_write_so_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay31015_device &>(*device).set_write_so_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_PE_CB(_devcb) \ - devcb = &ay31015_device::set_write_pe_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay31015_device &>(*device).set_write_pe_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_FE_CB(_devcb) \ - devcb = &ay31015_device::set_write_fe_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay31015_device &>(*device).set_write_fe_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_OR_CB(_devcb) \ - devcb = &ay31015_device::set_write_or_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay31015_device &>(*device).set_write_or_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_DAV_CB(_devcb) \ - devcb = &ay31015_device::set_write_dav_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay31015_device &>(*device).set_write_dav_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_TBMT_CB(_devcb) \ - devcb = &ay31015_device::set_write_tbmt_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay31015_device &>(*device).set_write_tbmt_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_EOC_CB(_devcb) \ - devcb = &ay31015_device::set_write_eoc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay31015_device &>(*device).set_write_eoc_callback(DEVCB_##_devcb); #define MCFG_AY51013_TX_CLOCK(_txclk) \ - ay51013_device::set_tx_clock(*device, _txclk); + downcast<ay51013_device &>(*device).set_tx_clock(_txclk); #define MCFG_AY51013_RX_CLOCK(_rxclk) \ - ay51013_device::set_rx_clock(*device, _rxclk); + downcast<ay51013_device &>(*device).set_rx_clock(_rxclk); #define MCFG_AY51013_READ_SI_CB(_devcb) \ - devcb = &ay51013_device::set_read_si_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay51013_device &>(*device).set_read_si_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_SO_CB(_devcb) \ - devcb = &ay51013_device::set_write_so_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay51013_device &>(*device).set_write_so_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_PE_CB(_devcb) \ - devcb = &ay51013_device::set_write_pe_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay51013_device &>(*device).set_write_pe_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_FE_CB(_devcb) \ - devcb = &ay51013_device::set_write_fe_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay51013_device &>(*device).set_write_fe_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_OR_CB(_devcb) \ - devcb = &ay51013_device::set_write_or_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay51013_device &>(*device).set_write_or_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_DAV_CB(_devcb) \ - devcb = &ay51013_device::set_write_dav_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay51013_device &>(*device).set_write_dav_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_TBMT_CB(_devcb) \ - devcb = &ay51013_device::set_write_tbmt_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay51013_device &>(*device).set_write_tbmt_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_EOC_CB(_devcb) \ - devcb = &ay51013_device::set_write_eoc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ay51013_device &>(*device).set_write_eoc_callback(DEVCB_##_devcb); #endif // MAME_MACHINE_AY31015_H diff --git a/src/devices/machine/bankdev.h b/src/devices/machine/bankdev.h index 162326a493a..1a40a8f390d 100644 --- a/src/devices/machine/bankdev.h +++ b/src/devices/machine/bankdev.h @@ -7,16 +7,16 @@ #define MCFG_ADDRESS_MAP_BANK_ENDIANNESS(_endianness) \ - address_map_bank_device::set_endianness(*device, _endianness); + downcast<address_map_bank_device &>(*device).set_endianness(_endianness); #define MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(_data_width) \ - address_map_bank_device::set_data_width(*device, _data_width); + downcast<address_map_bank_device &>(*device).set_data_width(_data_width); #define MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(_addr_width) \ - address_map_bank_device::set_addr_width(*device, _addr_width); + downcast<address_map_bank_device &>(*device).set_addr_width(_addr_width); #define MCFG_ADDRESS_MAP_BANK_STRIDE(_stride) \ - address_map_bank_device::set_stride(*device, _stride); + downcast<address_map_bank_device &>(*device).set_stride(_stride); class address_map_bank_device : public device_t, @@ -26,11 +26,11 @@ public: // construction/destruction address_map_bank_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_endianness(device_t &device, endianness_t endianness) { downcast<address_map_bank_device &>(device).m_endianness = endianness; } - static void set_data_width(device_t &device, uint8_t data_width) { downcast<address_map_bank_device &>(device).m_data_width = data_width; } - static void set_addr_width(device_t &device, uint8_t addr_width) { downcast<address_map_bank_device &>(device).m_addr_width = addr_width; } - static void set_stride(device_t &device, uint32_t stride) { downcast<address_map_bank_device &>(device).m_stride = stride; } + // configuration helpers + void set_endianness(endianness_t endianness) { m_endianness = endianness; } + void set_data_width(uint8_t data_width) { m_data_width = data_width; } + void set_addr_width(uint8_t addr_width) { m_addr_width = addr_width; } + void set_stride(uint32_t stride) { m_stride = stride; } void amap8(address_map &map); void amap16(address_map &map); diff --git a/src/devices/machine/cdp1852.h b/src/devices/machine/cdp1852.h index ba63cd2efb8..70562f85e7e 100644 --- a/src/devices/machine/cdp1852.h +++ b/src/devices/machine/cdp1852.h @@ -34,16 +34,16 @@ //************************************************************************** #define MCFG_CDP1852_MODE_CALLBACK(_read) \ - devcb = &cdp1852_device::set_mode_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1852_device &>(*device).set_mode_rd_callback(DEVCB_##_read); #define MCFG_CDP1852_SR_CALLBACK(_write) \ - devcb = &cdp1852_device::set_sr_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cdp1852_device &>(*device).set_sr_wr_callback(DEVCB_##_write); #define MCFG_CDP1852_DI_CALLBACK(_read) \ - devcb = &cdp1852_device::set_data_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1852_device &>(*device).set_data_rd_callback(DEVCB_##_read); #define MCFG_CDP1852_DO_CALLBACK(_write) \ - devcb = &cdp1852_device::set_data_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cdp1852_device &>(*device).set_data_wr_callback(DEVCB_##_write); @@ -59,10 +59,10 @@ public: // construction/destruction cdp1852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_mode_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_read_mode.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sr_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_write_sr.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_read_data.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_write_data.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_mode_rd_callback(Object &&cb) { return m_read_mode.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sr_wr_callback(Object &&cb) { return m_write_sr.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data_rd_callback(Object &&cb) { return m_read_data.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data_wr_callback(Object &&cb) { return m_write_data.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/cdp1871.h b/src/devices/machine/cdp1871.h index b83ca6d3166..74ce06d4b9a 100644 --- a/src/devices/machine/cdp1871.h +++ b/src/devices/machine/cdp1871.h @@ -42,43 +42,43 @@ //************************************************************************** #define MCFG_CDP1871_D1_CALLBACK(_read) \ - devcb = &cdp1871_device::set_d1_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1871_device &>(*device).set_d1_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D2_CALLBACK(_read) \ - devcb = &cdp1871_device::set_d2_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1871_device &>(*device).set_d2_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D3_CALLBACK(_read) \ - devcb = &cdp1871_device::set_d3_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1871_device &>(*device).set_d3_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D4_CALLBACK(_read) \ - devcb = &cdp1871_device::set_d4_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1871_device &>(*device).set_d4_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D5_CALLBACK(_read) \ - devcb = &cdp1871_device::set_d5_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1871_device &>(*device).set_d5_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D6_CALLBACK(_read) \ - devcb = &cdp1871_device::set_d6_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1871_device &>(*device).set_d6_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D7_CALLBACK(_read) \ - devcb = &cdp1871_device::set_d7_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1871_device &>(*device).set_d7_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D8_CALLBACK(_read) \ - devcb = &cdp1871_device::set_d8_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1871_device &>(*device).set_d8_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D9_CALLBACK(_read) \ - devcb = &cdp1871_device::set_d9_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1871_device &>(*device).set_d9_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D10_CALLBACK(_read) \ - devcb = &cdp1871_device::set_d10_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1871_device &>(*device).set_d10_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D11_CALLBACK(_read) \ - devcb = &cdp1871_device::set_d11_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cdp1871_device &>(*device).set_d11_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_DA_CALLBACK(_write) \ - devcb = &cdp1871_device::set_da_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cdp1871_device &>(*device).set_da_wr_callback(DEVCB_##_write); #define MCFG_CDP1871_RPT_CALLBACK(_write) \ - devcb = &cdp1871_device::set_rpt_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cdp1871_device &>(*device).set_rpt_wr_callback(DEVCB_##_write); @@ -94,19 +94,19 @@ public: // construction/destruction cdp1871_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_d1_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d2_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d3_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d4_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d4.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d5_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d5.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d6_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d6.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d7_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d7.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d8_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d8.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d9_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d9.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d10_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d10.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d11_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d11.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_da_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_write_da.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rpt_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_write_rpt.set_callback(std::forward<Object>(cb)); } + 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)); } DECLARE_READ8_MEMBER( read ); diff --git a/src/devices/machine/cdp1879.h b/src/devices/machine/cdp1879.h index ec34704e20f..6a3a1faaa36 100644 --- a/src/devices/machine/cdp1879.h +++ b/src/devices/machine/cdp1879.h @@ -19,7 +19,7 @@ //************************************************************************** #define MCFG_CDP1879_IRQ_CALLBACK(_cb) \ - devcb = &cdp1879_device::set_irq_cb(*device, DEVCB_##_cb); + devcb = &downcast<cdp1879_device &>(*device).set_irq_cb(DEVCB_##_cb); //************************************************************************** @@ -38,7 +38,7 @@ public: DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); - template<class _Object> static devcb_base &set_irq_cb(device_t &device, _Object wr) { return downcast<cdp1879_device &>(device).m_irq_w.set_callback(wr); } + 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; diff --git a/src/devices/machine/clock.h b/src/devices/machine/clock.h index 3d361cd0d75..dc87e7a4f60 100644 --- a/src/devices/machine/clock.h +++ b/src/devices/machine/clock.h @@ -10,14 +10,14 @@ MCFG_DEVICE_ADD(_tag, CLOCK, _clock) #define MCFG_CLOCK_SIGNAL_HANDLER(_devcb) \ - devcb = &clock_device::set_signal_handler(*device, DEVCB_##_devcb); + devcb = &downcast<clock_device &>(*device).set_signal_handler(DEVCB_##_devcb); class clock_device : public device_t { public: clock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_signal_handler(device_t &device, Object &&cb) { return downcast<clock_device &>(device).m_signal_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_signal_handler(Object &&cb) { return m_signal_handler.set_callback(std::forward<Object>(cb)); } protected: virtual void device_start() override; diff --git a/src/devices/machine/com8116.h b/src/devices/machine/com8116.h index b36200d53b4..46d4b42c022 100644 --- a/src/devices/machine/com8116.h +++ b/src/devices/machine/com8116.h @@ -34,13 +34,13 @@ ///************************************************************************* #define MCFG_COM8116_FX4_HANDLER(_devcb) \ - devcb = &com8116_device::set_fx4_handler(*device, DEVCB_##_devcb); + devcb = &downcast<com8116_device &>(*device).set_fx4_handler(DEVCB_##_devcb); #define MCFG_COM8116_FR_HANDLER(_devcb) \ - devcb = &com8116_device::set_fr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<com8116_device &>(*device).set_fr_handler(DEVCB_##_devcb); #define MCFG_COM8116_FT_HANDLER(_devcb) \ - devcb = &com8116_device::set_ft_handler(*device, DEVCB_##_devcb); + devcb = &downcast<com8116_device &>(*device).set_ft_handler(DEVCB_##_devcb); ///************************************************************************* @@ -55,9 +55,9 @@ public: // construction/destruction com8116_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_fx4_handler(device_t &device, Object &&cb) { return downcast<com8116_device &>(device).m_fx4_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_fr_handler(device_t &device, Object &&cb) { return downcast<com8116_device &>(device).m_fr_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ft_handler(device_t &device, Object &&cb) { return downcast<com8116_device &>(device).m_ft_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_fx4_handler(Object &&cb) { return m_fx4_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_fr_handler(Object &&cb) { return m_fr_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ft_handler(Object &&cb) { return m_ft_handler.set_callback(std::forward<Object>(cb)); } void str_w(uint8_t data); DECLARE_WRITE8_MEMBER( str_w ); diff --git a/src/devices/machine/cr511b.h b/src/devices/machine/cr511b.h index 361466ff2c8..d305880a87c 100644 --- a/src/devices/machine/cr511b.h +++ b/src/devices/machine/cr511b.h @@ -46,22 +46,22 @@ #define MCFG_CR511B_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, CR511B, 0) #define MCFG_CR511B_STCH_HANDLER(_devcb) \ - devcb = &cr511b_device::set_stch_handler(*device, DEVCB_##_devcb); + devcb = &downcast<cr511b_device &>(*device).set_stch_handler(DEVCB_##_devcb); #define MCFG_CR511B_STEN_HANDLER(_devcb) \ - devcb = &cr511b_device::set_sten_handler(*device, DEVCB_##_devcb); + devcb = &downcast<cr511b_device &>(*device).set_sten_handler(DEVCB_##_devcb); #define MCFG_CR511B_DRQ_HANDLER(_devcb) \ - devcb = &cr511b_device::set_drq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<cr511b_device &>(*device).set_drq_handler(DEVCB_##_devcb); #define MCFG_CR511B_DTEN_HANDLER(_devcb) \ - devcb = &cr511b_device::set_dten_handler(*device, DEVCB_##_devcb); + devcb = &downcast<cr511b_device &>(*device).set_dten_handler(DEVCB_##_devcb); #define MCFG_CR511B_SCOR_HANDLER(_devcb) \ - devcb = &cr511b_device::set_scor_handler(*device, DEVCB_##_devcb); + devcb = &downcast<cr511b_device &>(*device).set_scor_handler(DEVCB_##_devcb); #define MCFG_CR511B_XAEN_HANDLER(_devcb) \ - devcb = &cr511b_device::set_xaen_handler(*device, DEVCB_##_devcb); + devcb = &downcast<cr511b_device &>(*device).set_xaen_handler(DEVCB_##_devcb); //************************************************************************** @@ -77,23 +77,12 @@ public: cr511b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // callbacks - template <class Object> static devcb_base &set_stch_handler(device_t &device, Object &&cb) - { return downcast<cr511b_device &>(device).m_stch_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_sten_handler(device_t &device, Object &&cb) - { return downcast<cr511b_device &>(device).m_sten_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb) - { return downcast<cr511b_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_dten_handler(device_t &device, Object &&cb) - { return downcast<cr511b_device &>(device).m_dten_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_scor_handler(device_t &device, Object &&cb) - { return downcast<cr511b_device &>(device).m_scor_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_xaen_handler(device_t &device, Object &&cb) - { return downcast<cr511b_device &>(device).m_xaen_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_stch_handler(Object &&cb) { return m_stch_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sten_handler(Object &&cb) { return m_sten_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)); } + template <class Object> devcb_base &set_dten_handler(Object &&cb) { return m_dten_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_scor_handler(Object &&cb) { return m_scor_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_xaen_handler(Object &&cb) { return m_xaen_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER ( write ); diff --git a/src/devices/machine/cs4031.cpp b/src/devices/machine/cs4031.cpp index b7c31322e0d..6d69229b50e 100644 --- a/src/devices/machine/cs4031.cpp +++ b/src/devices/machine/cs4031.cpp @@ -196,30 +196,6 @@ cs4031_device::cs4031_device(const machine_config &mconfig, const char *tag, dev { } -void cs4031_device::static_set_cputag(device_t &device, const char *tag) -{ - cs4031_device &cs4031 = downcast<cs4031_device &>(device); - cs4031.m_cputag = tag; -} - -void cs4031_device::static_set_isatag(device_t &device, const char *tag) -{ - cs4031_device &cs4031 = downcast<cs4031_device &>(device); - cs4031.m_isatag = tag; -} - -void cs4031_device::static_set_biostag(device_t &device, const char *tag) -{ - cs4031_device &cs4031 = downcast<cs4031_device &>(device); - cs4031.m_biostag = tag; -} - -void cs4031_device::static_set_keybctag(device_t &device, const char *tag) -{ - cs4031_device &cs4031 = downcast<cs4031_device &>(device); - cs4031.m_keybctag = tag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/machine/cs4031.h b/src/devices/machine/cs4031.h index b307d6da831..21b37e218fe 100644 --- a/src/devices/machine/cs4031.h +++ b/src/devices/machine/cs4031.h @@ -38,10 +38,10 @@ #define MCFG_CS4031_ADD(_tag, _clock, _cputag, _isatag, _biostag, _keybctag) \ MCFG_DEVICE_ADD(_tag, CS4031, _clock) \ - cs4031_device::static_set_cputag(*device, _cputag); \ - cs4031_device::static_set_isatag(*device, _isatag); \ - cs4031_device::static_set_biostag(*device, _biostag); \ - cs4031_device::static_set_keybctag(*device, _keybctag); + 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) \ devcb = &downcast<cs4031_device *>(device)->set_ior_callback(DEVCB_##_ior); @@ -142,10 +142,10 @@ public: IRQ_CALLBACK_MEMBER(int_ack_r) { return m_intc1->acknowledge(); } // inline configuration - static void static_set_cputag(device_t &device, const char *tag); - static void static_set_isatag(device_t &device, const char *tag); - static void static_set_biostag(device_t &device, const char *tag); - static void static_set_keybctag(device_t &device, const char *tag); + void set_cputag(const char *tag) { m_cputag = tag; } + void set_isatag(const char *tag) { m_isatag = tag; } + void set_biostag(const char *tag) { m_biostag = tag; } + void set_keybctag(const char *tag) { m_keybctag = tag; } protected: // device-level overrides diff --git a/src/devices/machine/cs8221.cpp b/src/devices/machine/cs8221.cpp index 476a68af212..6e6cfb44545 100644 --- a/src/devices/machine/cs8221.cpp +++ b/src/devices/machine/cs8221.cpp @@ -68,24 +68,6 @@ cs8221_device::cs8221_device(const machine_config &mconfig, const char *tag, dev { } -void cs8221_device::static_set_cputag(device_t &device, const char *tag) -{ - cs8221_device &cs8221 = downcast<cs8221_device &>(device); - cs8221.m_cputag = tag; -} - -void cs8221_device::static_set_isatag(device_t &device, const char *tag) -{ - cs8221_device &cs8221 = downcast<cs8221_device &>(device); - cs8221.m_isatag = tag; -} - -void cs8221_device::static_set_biostag(device_t &device, const char *tag) -{ - cs8221_device &cs8221 = downcast<cs8221_device &>(device); - cs8221.m_biostag = tag; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/machine/cs8221.h b/src/devices/machine/cs8221.h index 9eb932ce09c..f93b2a50c58 100644 --- a/src/devices/machine/cs8221.h +++ b/src/devices/machine/cs8221.h @@ -28,9 +28,9 @@ #define MCFG_CS8221_ADD(_tag, _cputag, _isatag, _biostag) \ MCFG_DEVICE_ADD(_tag, CS8221, 0) \ - cs8221_device::static_set_cputag(*device, _cputag); \ - cs8221_device::static_set_isatag(*device, _isatag); \ - cs8221_device::static_set_biostag(*device, _biostag); + downcast<cs8221_device &>(*device).set_cputag(_cputag); \ + downcast<cs8221_device &>(*device).set_isatag(_isatag); \ + downcast<cs8221_device &>(*device).set_biostag(_biostag); //************************************************************************** @@ -46,9 +46,9 @@ public: cs8221_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_cputag(device_t &device, const char *tag); - static void static_set_isatag(device_t &device, const char *tag); - static void static_set_biostag(device_t &device, const char *tag); + void set_cputag(const char *tag) { m_cputag = tag; } + void set_isatag(const char *tag) { m_isatag = tag; } + void set_biostag(const char *tag) { m_biostag = tag; } void map(address_map &map); diff --git a/src/devices/machine/cxd1095.h b/src/devices/machine/cxd1095.h index ddc4d7f46bd..83b04b6b98e 100644 --- a/src/devices/machine/cxd1095.h +++ b/src/devices/machine/cxd1095.h @@ -49,26 +49,26 @@ //************************************************************************** #define MCFG_CXD1095_IN_PORTA_CB(_devcb) \ - devcb = &cxd1095_device::set_input_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<cxd1095_device &>(*device).set_input_cb(0, DEVCB_##_devcb); #define MCFG_CXD1095_IN_PORTB_CB(_devcb) \ - devcb = &cxd1095_device::set_input_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<cxd1095_device &>(*device).set_input_cb(1, DEVCB_##_devcb); #define MCFG_CXD1095_IN_PORTC_CB(_devcb) \ - devcb = &cxd1095_device::set_input_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<cxd1095_device &>(*device).set_input_cb(2, DEVCB_##_devcb); #define MCFG_CXD1095_IN_PORTD_CB(_devcb) \ - devcb = &cxd1095_device::set_input_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<cxd1095_device &>(*device).set_input_cb(3, DEVCB_##_devcb); #define MCFG_CXD1095_IN_PORTE_CB(_devcb) \ - devcb = &cxd1095_device::set_input_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<cxd1095_device &>(*device).set_input_cb(4, DEVCB_##_devcb); #define MCFG_CXD1095_OUT_PORTA_CB(_devcb) \ - devcb = &cxd1095_device::set_output_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<cxd1095_device &>(*device).set_output_cb(0, DEVCB_##_devcb); #define MCFG_CXD1095_OUT_PORTB_CB(_devcb) \ - devcb = &cxd1095_device::set_output_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<cxd1095_device &>(*device).set_output_cb(1, DEVCB_##_devcb); #define MCFG_CXD1095_OUT_PORTC_CB(_devcb) \ - devcb = &cxd1095_device::set_output_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<cxd1095_device &>(*device).set_output_cb(2, DEVCB_##_devcb); #define MCFG_CXD1095_OUT_PORTD_CB(_devcb) \ - devcb = &cxd1095_device::set_output_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<cxd1095_device &>(*device).set_output_cb(3, DEVCB_##_devcb); #define MCFG_CXD1095_OUT_PORTE_CB(_devcb) \ - devcb = &cxd1095_device::set_output_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<cxd1095_device &>(*device).set_output_cb(4, DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -82,19 +82,9 @@ public: // construction/destruction cxd1095_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration - template <class Object> - static devcb_base &set_input_cb(device_t &device, int p, Object &&obj) - { - assert(p >= 0 && p < 5); - return downcast<cxd1095_device &>(device).m_input_cb[p].set_callback(std::forward<Object>(obj)); - } - template <class Object> - static devcb_base &set_output_cb(device_t &device, int p, Object &&obj) - { - assert(p >= 0 && p < 5); - return downcast<cxd1095_device &>(device).m_output_cb[p].set_callback(std::forward<Object>(obj)); - } + // 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)); } // memory handlers DECLARE_READ8_MEMBER(read); diff --git a/src/devices/machine/dmac.h b/src/devices/machine/dmac.h index f9f06e3d85c..7fad643c69b 100644 --- a/src/devices/machine/dmac.h +++ b/src/devices/machine/dmac.h @@ -23,25 +23,25 @@ #define MCFG_DMAC_ADD(_tag, _clock) \ MCFG_DEVICE_ADD(_tag, AMIGA_DMAC, _clock) #define MCFG_DMAC_CFGOUT_HANDLER(_devcb) \ - devcb = &amiga_dmac_device::set_cfgout_handler(*device, DEVCB_##_devcb); + devcb = &downcast<amiga_dmac_device &>(*device).set_cfgout_handler(DEVCB_##_devcb); #define MCFG_DMAC_INT_HANDLER(_devcb) \ - devcb = &amiga_dmac_device::set_int_handler(*device, DEVCB_##_devcb); + devcb = &downcast<amiga_dmac_device &>(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_DMAC_XDACK_HANDLER(_devcb) \ - devcb = &amiga_dmac_device::set_xdack_handler(*device, DEVCB_##_devcb); + devcb = &downcast<amiga_dmac_device &>(*device).set_xdack_handler(DEVCB_##_devcb); #define MCFG_DMAC_SCSI_READ_HANDLER(_devcb) \ - devcb = &amiga_dmac_device::set_scsi_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<amiga_dmac_device &>(*device).set_scsi_read_handler(DEVCB_##_devcb); #define MCFG_DMAC_SCSI_WRITE_HANDLER(_devcb) \ - devcb = &amiga_dmac_device::set_scsi_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<amiga_dmac_device &>(*device).set_scsi_write_handler(DEVCB_##_devcb); #define MCFG_DMAC_IO_READ_HANDLER(_devcb) \ - devcb = &amiga_dmac_device::set_io_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<amiga_dmac_device &>(*device).set_io_read_handler(DEVCB_##_devcb); #define MCFG_DMAC_IO_WRITE_HANDLER(_devcb) \ - devcb = &amiga_dmac_device::set_io_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<amiga_dmac_device &>(*device).set_io_write_handler(DEVCB_##_devcb); //************************************************************************** @@ -57,26 +57,13 @@ public: amiga_dmac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // callbacks - template <class Object> static devcb_base &set_cfgout_handler(device_t &device, Object &&cb) - { return downcast<amiga_dmac_device &>(device).m_cfgout_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) - { return downcast<amiga_dmac_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_xdack_handler(device_t &device, Object &&cb) - { return downcast<amiga_dmac_device &>(device).m_xdack_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_scsi_read_handler(device_t &device, Object &&cb) - { return downcast<amiga_dmac_device &>(device).m_scsi_read_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_scsi_write_handler(device_t &device, Object &&cb) - { return downcast<amiga_dmac_device &>(device).m_scsi_write_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_io_read_handler(device_t &device, Object &&cb) - { return downcast<amiga_dmac_device &>(device).m_io_read_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_io_write_handler(device_t &device, Object &&cb) - { return downcast<amiga_dmac_device &>(device).m_io_write_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cfgout_handler(Object &&cb) { return m_cfgout_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_xdack_handler(Object &&cb) { return m_xdack_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_scsi_read_handler(Object &&cb) { return m_scsi_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_scsi_write_handler(Object &&cb) { return m_scsi_write_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_io_read_handler(Object &&cb) { return m_io_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_io_write_handler(Object &&cb) { return m_io_write_handler.set_callback(std::forward<Object>(cb)); } void set_address_space(address_space *space) { m_space = space; } void set_rom(uint8_t *rom) { m_rom = rom; } diff --git a/src/devices/machine/dp8390.h b/src/devices/machine/dp8390.h index b7794e43903..da1bf993833 100644 --- a/src/devices/machine/dp8390.h +++ b/src/devices/machine/dp8390.h @@ -9,37 +9,37 @@ // device stuff #define MCFG_DP8390D_IRQ_CB(_devcb) \ - devcb = &dp8390d_device::set_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<dp8390_device &>(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_DP8390D_BREQ_CB(_devcb) \ - devcb = &dp8390d_device::set_breq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<dp8390_device &>(*device).set_breq_callback(DEVCB_##_devcb); #define MCFG_DP8390D_MEM_READ_CB(_devcb) \ - devcb = &dp8390d_device::set_mem_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<dp8390_device &>(*device).set_mem_read_callback(DEVCB_##_devcb); #define MCFG_DP8390D_MEM_WRITE_CB(_devcb) \ - devcb = &dp8390d_device::set_mem_write_callback(*device, DEVCB_##_devcb); + devcb = &downcast<dp8390_device &>(*device).set_mem_write_callback(DEVCB_##_devcb); #define MCFG_RTL8019A_IRQ_CB(_devcb) \ - devcb = &rtl8019a_device::set_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rtl8019a_device &>(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_RTL8019A_BREQ_CB(_devcb) \ - devcb = &rtl8019a_device::set_breq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rtl8019a_device &>(*device).set_breq_callback(DEVCB_##_devcb); #define MCFG_RTL8019A_MEM_READ_CB(_devcb) \ - devcb = &rtl8019a_device::set_mem_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rtl8019a_device &>(*device).set_mem_read_callback(DEVCB_##_devcb); #define MCFG_RTL8019A_MEM_WRITE_CB(_devcb) \ - devcb = &rtl8019a_device::set_mem_write_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rtl8019a_device &>(*device).set_mem_write_callback(DEVCB_##_devcb); class dp8390_device : public device_t, public device_network_interface { public: - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_breq_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_breq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_mem_read_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_mem_read_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_mem_write_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_mem_write_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_breq_callback(Object &&cb) { return m_breq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_mem_read_callback(Object &&cb) { return m_mem_read_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_mem_write_callback(Object &&cb) { return m_mem_write_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE16_MEMBER( dp8390_w ); DECLARE_READ16_MEMBER( dp8390_r ); diff --git a/src/devices/machine/ds1315.h b/src/devices/machine/ds1315.h index 132056e46b3..b1f8b11b399 100644 --- a/src/devices/machine/ds1315.h +++ b/src/devices/machine/ds1315.h @@ -23,7 +23,7 @@ MCFG_DEVICE_ADD(_tag, DS1315, 0) #define MCFG_DS1315_BACKING_HANDLER(_devcb) \ - devcb = &ds1315_device::set_backing_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ds1315_device &>(*device).set_backing_handler(DEVCB_##_devcb); /*************************************************************************** MACROS @@ -46,8 +46,7 @@ public: bool chip_enable(); void chip_reset(); - template <class Object> static devcb_base &set_backing_handler(device_t &device, Object &&cb) - { return downcast<ds1315_device &>(device).m_backing_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_backing_handler(Object &&cb) { return m_backing_read.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/machine/ds1386.h b/src/devices/machine/ds1386.h index 12f2ad11016..06d84484c77 100644 --- a/src/devices/machine/ds1386.h +++ b/src/devices/machine/ds1386.h @@ -60,13 +60,13 @@ // handlers #define MCFG_DS1386_INTA_HANDLER(_devcb) \ - devcb = &ds1386_device::set_inta_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ds1386_device &>(*device).set_inta_cb(DEVCB_##_devcb); #define MCFG_DS1386_INTB_HANDLER(_devcb) \ - devcb = &ds1386_device::set_inta_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ds1386_device &>(*device).set_inta_cb(DEVCB_##_devcb); #define MCFG_DS1386_SQW_HANDLER(_devcb) \ - devcb = &ds1386_device::set_sqw_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ds1386_device &>(*device).set_sqw_cb(DEVCB_##_devcb); // devices @@ -87,9 +87,9 @@ public: DECLARE_WRITE_LINE_MEMBER( oe_w ); DECLARE_WRITE_LINE_MEMBER( we_w ); - template <class Object> static devcb_base &set_inta_cb(device_t &device, Object &&cb) { return downcast<ds1386_device &>(device).m_inta_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_intb_cb(device_t &device, Object &&cb) { return downcast<ds1386_device &>(device).m_intb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sqw_cb(device_t &device, Object &&cb) { return downcast<ds1386_device &>(device).m_sqw_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_inta_cb(Object &&cb) { return m_inta_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intb_cb(Object &&cb) { return m_intb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sqw_cb(Object &&cb) { return m_sqw_cb.set_callback(std::forward<Object>(cb)); } protected: enum diff --git a/src/devices/machine/ds2404.cpp b/src/devices/machine/ds2404.cpp index b5f41d36f25..4a28b7f7d38 100644 --- a/src/devices/machine/ds2404.cpp +++ b/src/devices/machine/ds2404.cpp @@ -39,42 +39,6 @@ ds2404_device::ds2404_device(const machine_config &mconfig, const char *tag, dev //------------------------------------------------- -// static_set_ref_year - configuration helper -// to set the reference year -//------------------------------------------------- - -void ds2404_device::static_set_ref_year(device_t &device, uint32_t year) -{ - ds2404_device &ds2404 = downcast<ds2404_device &>(device); - ds2404.m_ref_year = year; -} - - -//------------------------------------------------- -// static_set_ref_month - configuration helper -// to set the reference month -//------------------------------------------------- - -void ds2404_device::static_set_ref_month(device_t &device, uint8_t month) -{ - ds2404_device &ds2404 = downcast<ds2404_device &>(device); - ds2404.m_ref_month = month; -} - - -//------------------------------------------------- -// static_set_ref_day - configuration helper -// to set the reference day -//------------------------------------------------- - -void ds2404_device::static_set_ref_day(device_t &device, uint8_t day) -{ - ds2404_device &ds2404 = downcast<ds2404_device &>(device); - ds2404.m_ref_day = day; -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/machine/ds2404.h b/src/devices/machine/ds2404.h index 55d9f63776c..43fbe93ad15 100644 --- a/src/devices/machine/ds2404.h +++ b/src/devices/machine/ds2404.h @@ -27,13 +27,13 @@ MCFG_DS2404_REF_DAY(_ref_day) #define MCFG_DS2404_REF_YEAR(_ref_year) \ - ds2404_device::static_set_ref_year(*device, _ref_year); + downcast<ds2404_device &>(*device).set_ref_year(_ref_year); #define MCFG_DS2404_REF_MONTH(_ref_month) \ - ds2404_device::static_set_ref_month(*device, _ref_month); + downcast<ds2404_device &>(*device).set_ref_month(_ref_month); #define MCFG_DS2404_REF_DAY(_ref_day) \ - ds2404_device::static_set_ref_day(*device, _ref_day); + downcast<ds2404_device &>(*device).set_ref_day(_ref_day); //************************************************************************** @@ -50,9 +50,9 @@ public: ds2404_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - static void static_set_ref_year(device_t &device, uint32_t m_ref_year); - static void static_set_ref_month(device_t &device, uint8_t m_ref_month); - static void static_set_ref_day(device_t &device, uint8_t m_ref_day); + void set_ref_year(uint32_t year) { m_ref_year = year; } + void set_ref_month(uint8_t month) { m_ref_month = month; } + void set_ref_day(uint8_t day) { m_ref_day = day; } /* 1-wire interface reset */ DECLARE_WRITE8_MEMBER(ds2404_1w_reset_w); diff --git a/src/devices/machine/ds75161a.h b/src/devices/machine/ds75161a.h index 7a51ef8a81f..71c93dc2b6b 100644 --- a/src/devices/machine/ds75161a.h +++ b/src/devices/machine/ds75161a.h @@ -32,52 +32,52 @@ ///************************************************************************* #define MCFG_DS75161A_IN_REN_CB(_devcb) \ - devcb = &ds75161a_device::set_in_ren_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_in_ren_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_IFC_CB(_devcb) \ - devcb = &ds75161a_device::set_in_ifc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_in_ifc_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_NDAC_CB(_devcb) \ - devcb = &ds75161a_device::set_in_ndac_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_in_ndac_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_NRFD_CB(_devcb) \ - devcb = &ds75161a_device::set_in_nrfd_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_in_nrfd_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_DAV_CB(_devcb) \ - devcb = &ds75161a_device::set_in_dav_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_in_dav_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_EOI_CB(_devcb) \ - devcb = &ds75161a_device::set_in_eoi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_in_eoi_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_ATN_CB(_devcb) \ - devcb = &ds75161a_device::set_in_atn_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_in_atn_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_SRQ_CB(_devcb) \ - devcb = &ds75161a_device::set_in_srq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_in_srq_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_REN_CB(_devcb) \ - devcb = &ds75161a_device::set_out_ren_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_out_ren_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_IFC_CB(_devcb) \ - devcb = &ds75161a_device::set_out_ifc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_out_ifc_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_NDAC_CB(_devcb) \ - devcb = &ds75161a_device::set_out_ndac_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_out_ndac_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_NRFD_CB(_devcb) \ - devcb = &ds75161a_device::set_out_nrfd_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_out_nrfd_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_DAV_CB(_devcb) \ - devcb = &ds75161a_device::set_out_dav_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_out_dav_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_EOI_CB(_devcb) \ - devcb = &ds75161a_device::set_out_eoi_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_out_eoi_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_ATN_CB(_devcb) \ - devcb = &ds75161a_device::set_out_atn_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_out_atn_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_SRQ_CB(_devcb) \ - devcb = &ds75161a_device::set_out_srq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ds75161a_device &>(*device).set_out_srq_callback(DEVCB_##_devcb); ///************************************************************************* // TYPE DEFINITIONS @@ -91,22 +91,22 @@ public: // construction/destruction ds75161a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_in_ren_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_ren_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_ifc_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_ifc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_ndac_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_ndac_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_nrfd_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_nrfd_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_dav_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_dav_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_eoi_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_eoi_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_atn_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_atn_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_srq_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_srq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_ren_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_ren_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_ifc_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_ifc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_ndac_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_ndac_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_nrfd_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_nrfd_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_dav_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_dav_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_eoi_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_eoi_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_atn_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_atn_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_srq_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_srq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_ren_callback(Object &&cb) { return m_in_ren_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_ifc_callback(Object &&cb) { return m_in_ifc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_ndac_callback(Object &&cb) { return m_in_ndac_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_nrfd_callback(Object &&cb) { return m_in_nrfd_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_dav_callback(Object &&cb) { return m_in_dav_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_eoi_callback(Object &&cb) { return m_in_eoi_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_atn_callback(Object &&cb) { return m_in_atn_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_srq_callback(Object &&cb) { return m_in_srq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_ren_callback(Object &&cb) { return m_out_ren_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_ifc_callback(Object &&cb) { return m_out_ifc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_ndac_callback(Object &&cb) { return m_out_ndac_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_nrfd_callback(Object &&cb) { return m_out_nrfd_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_dav_callback(Object &&cb) { return m_out_dav_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_eoi_callback(Object &&cb) { return m_out_eoi_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_atn_callback(Object &&cb) { return m_out_atn_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_srq_callback(Object &&cb) { return m_out_srq_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( te_w ); DECLARE_WRITE_LINE_MEMBER( dc_w ); diff --git a/src/devices/machine/e05a03.h b/src/devices/machine/e05a03.h index 5e8fbd28e92..fccb187b085 100644 --- a/src/devices/machine/e05a03.h +++ b/src/devices/machine/e05a03.h @@ -16,19 +16,19 @@ ***************************************************************************/ #define MCFG_E05A03_NLQ_LP_CALLBACK(_write) \ - devcb = &e05a03_device::set_nlq_lp_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a03_device &>(*device).set_nlq_lp_wr_callback(DEVCB_##_write); #define MCFG_E05A03_PE_LP_CALLBACK(_write) \ - devcb = &e05a03_device::set_pe_lp_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a03_device &>(*device).set_pe_lp_wr_callback(DEVCB_##_write); #define MCFG_E05A03_RESO_CALLBACK(_write) \ - devcb = &e05a03_device::set_reso_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a03_device &>(*device).set_reso_wr_callback(DEVCB_##_write); #define MCFG_E05A03_PE_CALLBACK(_write) \ - devcb = &e05a03_device::set_pe_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a03_device &>(*device).set_pe_wr_callback(DEVCB_##_write); #define MCFG_E05A03_DATA_CALLBACK(_read) \ - devcb = &e05a03_device::set_data_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<e05a03_device &>(*device).set_data_rd_callback(DEVCB_##_read); /*************************************************************************** @@ -40,11 +40,11 @@ class e05a03_device : public device_t public: e05a03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_nlq_lp_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_nlq_lp.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pe_lp_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_pe_lp.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_reso_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_reso.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pe_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_pe.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_data_rd_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_read_data.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nlq_lp_wr_callback(Object &&cb) { return m_write_nlq_lp.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pe_lp_wr_callback(Object &&cb) { return m_write_pe_lp.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_reso_wr_callback(Object &&cb) { return m_write_reso.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pe_wr_callback(Object &&cb) { return m_write_pe.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data_rd_callback(Object &&cb) { return m_read_data.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( read ); diff --git a/src/devices/machine/e05a30.h b/src/devices/machine/e05a30.h index 66ec9c92ed0..0f79a2fe491 100644 --- a/src/devices/machine/e05a30.h +++ b/src/devices/machine/e05a30.h @@ -13,31 +13,31 @@ ***************************************************************************/ #define MCFG_E05A30_PRINTHEAD_CALLBACK(_write) \ - devcb = &e05a30_device::set_printhead_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a30_device &>(*device).set_printhead_wr_callback(DEVCB_##_write); #define MCFG_E05A30_PF_STEPPER_CALLBACK(_write) \ - devcb = &e05a30_device::set_pf_stepper_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a30_device &>(*device).set_pf_stepper_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CR_STEPPER_CALLBACK(_write) \ - devcb = &e05a30_device::set_cr_stepper_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a30_device &>(*device).set_cr_stepper_wr_callback(DEVCB_##_write); #define MCFG_E05A30_READY_CALLBACK(_write) \ - devcb = &e05a30_device::set_ready_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a30_device &>(*device).set_ready_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CENTRONICS_ACK_CALLBACK(_write) \ - devcb = &e05a30_device::set_centronics_ack_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a30_device &>(*device).set_centronics_ack_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CENTRONICS_BUSY_CALLBACK(_write) \ - devcb = &e05a30_device::set_centronics_busy_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a30_device &>(*device).set_centronics_busy_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CENTRONICS_PERROR_CALLBACK(_write) \ - devcb = &e05a30_device::set_centronics_perror_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a30_device &>(*device).set_centronics_perror_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CENTRONICS_FAULT_CALLBACK(_write) \ - devcb = &e05a30_device::set_centronics_fault_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a30_device &>(*device).set_centronics_fault_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CENTRONICS_SELECT_CALLBACK(_write) \ - devcb = &e05a30_device::set_centronics_select_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<e05a30_device &>(*device).set_centronics_select_wr_callback(DEVCB_##_write); /*************************************************************************** TYPE DEFINITIONS @@ -48,15 +48,15 @@ class e05a30_device : public device_t public: e05a30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_printhead_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_printhead.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pf_stepper_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_pf_stepper.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cr_stepper_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_cr_stepper.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ready_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_ready.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_centronics_ack_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_ack.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_centronics_busy_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_busy.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_centronics_perror_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_perror.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_centronics_fault_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_fault.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_centronics_select_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_select.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_printhead_wr_callback(Object &&cb) { return m_write_printhead.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pf_stepper_wr_callback(Object &&cb) { return m_write_pf_stepper.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cr_stepper_wr_callback(Object &&cb) { return m_write_cr_stepper.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ready_wr_callback(Object &&cb) { return m_write_ready.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_centronics_ack_wr_callback(Object &&cb) { return m_write_centronics_ack.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_centronics_busy_wr_callback(Object &&cb) { return m_write_centronics_busy.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_centronics_perror_wr_callback(Object &&cb) { return m_write_centronics_perror.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_centronics_fault_wr_callback(Object &&cb) { return m_write_centronics_fault.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_centronics_select_wr_callback(Object &&cb) { return m_write_centronics_select.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( read ); diff --git a/src/devices/machine/eeprom.cpp b/src/devices/machine/eeprom.cpp index 2ed8e3fa65c..02ec231478a 100644 --- a/src/devices/machine/eeprom.cpp +++ b/src/devices/machine/eeprom.cpp @@ -45,70 +45,43 @@ eeprom_base_device::eeprom_base_device(const machine_config &mconfig, device_typ //------------------------------------------------- -// static_set_default_data - configuration helpers +// set_default_data - configuration helpers // to set the default data //------------------------------------------------- -void eeprom_base_device::static_set_size(device_t &device, int cells, int cellbits) +void eeprom_base_device::set_size(int cells, int cellbits) { - eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device); - eeprom.m_cells = cells; - eeprom.m_data_bits = cellbits; + m_cells = cells; + m_data_bits = cellbits; // compute address bits (validation checks verify cells was an even power of 2) cells--; - eeprom.m_address_bits = 0; + m_address_bits = 0; while (cells != 0) { cells >>= 1; - eeprom.m_address_bits++; + m_address_bits++; } } //------------------------------------------------- -// static_set_default_data - configuration helpers +// set_default_data - configuration helpers // to set the default data //------------------------------------------------- -void eeprom_base_device::static_set_default_data(device_t &device, const uint8_t *data, uint32_t size) +void eeprom_base_device::set_default_data(const uint8_t *data, uint32_t size) { - eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device); - assert(eeprom.m_data_bits == 8); - eeprom.m_default_data = data; - eeprom.m_default_data_size = size; + assert(m_data_bits == 8); + m_default_data = data; + m_default_data_size = size; } -void eeprom_base_device::static_set_default_data(device_t &device, const uint16_t *data, uint32_t size) +void eeprom_base_device::set_default_data(const uint16_t *data, uint32_t size) { - eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device); - assert(eeprom.m_data_bits == 16); - eeprom.m_default_data = data; - eeprom.m_default_data_size = size / 2; -} - - -//------------------------------------------------- -// static_set_default_value - configuration helper -// to set the default value -//------------------------------------------------- - -void eeprom_base_device::static_set_default_value(device_t &device, uint32_t value) -{ - eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device); - eeprom.m_default_value = value; - eeprom.m_default_value_set = true; -} - - -//------------------------------------------------- -// static_set_timing - configuration helper -// to set timing constants for various operations -//------------------------------------------------- - -void eeprom_base_device::static_set_timing(device_t &device, timing_type type, const attotime &duration) -{ - downcast<eeprom_base_device &>(device).m_operation_time[type] = duration; + assert(m_data_bits == 16); + m_default_data = data; + m_default_data_size = size / 2; } diff --git a/src/devices/machine/eeprom.h b/src/devices/machine/eeprom.h index 2c2fb68f7d1..0cf280d6441 100644 --- a/src/devices/machine/eeprom.h +++ b/src/devices/machine/eeprom.h @@ -20,20 +20,20 @@ //************************************************************************** #define MCFG_EEPROM_SIZE(_cells, _cellbits) \ - eeprom_base_device::static_set_size(*device, _cells, _cellbits); + downcast<eeprom_base_device &>(*device).set_size(_cells, _cellbits); #define MCFG_EEPROM_DATA(_data, _size) \ - eeprom_base_device::static_set_default_data(*device, _data, _size); + downcast<eeprom_base_device &>(*device).set_default_data(_data, _size); #define MCFG_EEPROM_DEFAULT_VALUE(_value) \ - eeprom_base_device::static_set_default_value(*device, _value); + downcast<eeprom_base_device &>(*device).set_default_value(_value); #define MCFG_EEPROM_WRITE_TIME(_value) \ - eeprom_base_device::static_set_timing(*device, eeprom_base_device::WRITE_TIME, _value); + downcast<eeprom_base_device &>(*device).set_timing(eeprom_base_device::WRITE_TIME, _value); #define MCFG_EEPROM_WRITE_ALL_TIME(_value) \ - eeprom_base_device::static_set_timing(*device, eeprom_base_device::WRITE_ALL_TIME, _value); + downcast<eeprom_base_device &>(*device).set_timing(eeprom_base_device::WRITE_ALL_TIME, _value); #define MCFG_EEPROM_ERASE_TIME(_value) \ - eeprom_base_device::static_set_timing(*device, eeprom_base_device::ERASE_TIME, _value); + downcast<eeprom_base_device &>(*device).set_timing(eeprom_base_device::ERASE_TIME, _value); #define MCFG_EEPROM_ERASE_ALL_TIME(_value) \ - eeprom_base_device::static_set_timing(*device, eeprom_base_device::ERASE_ALL_TIME, _value); + downcast<eeprom_base_device &>(*device).set_timing(eeprom_base_device::ERASE_ALL_TIME, _value); @@ -58,11 +58,11 @@ public: }; // inline configuration helpers - static void static_set_size(device_t &device, int cells, int cellbits); - static void static_set_default_data(device_t &device, const uint8_t *data, uint32_t size); - static void static_set_default_data(device_t &device, const uint16_t *data, uint32_t size); - static void static_set_default_value(device_t &device, uint32_t value); - static void static_set_timing(device_t &device, timing_type type, const attotime &duration); + void set_size(int cells, int cellbits); + void set_default_data(const uint8_t *data, uint32_t size); + void set_default_data(const uint16_t *data, uint32_t size); + void set_default_value(uint32_t value) { m_default_value = value; m_default_value_set = true; } + void set_timing(timing_type type, const attotime &duration) { m_operation_time[type] = duration; } // read/write/erase data uint32_t read(offs_t address); diff --git a/src/devices/machine/eeprompar.cpp b/src/devices/machine/eeprompar.cpp index ee717972f07..3be7298afc7 100644 --- a/src/devices/machine/eeprompar.cpp +++ b/src/devices/machine/eeprompar.cpp @@ -110,18 +110,6 @@ eeprom_parallel_28xx_device::eeprom_parallel_28xx_device(const machine_config &m //------------------------------------------------- -// static_set_lock_after_write - configuration -// helper to enable simulation of external -// flip-flop hooked to lock EEPROM after writes -//------------------------------------------------- - -void eeprom_parallel_28xx_device::static_set_lock_after_write(device_t &device, bool lock) -{ - downcast<eeprom_parallel_28xx_device &>(device).m_lock_after_write = lock; -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -218,7 +206,7 @@ WRITE32_MEMBER(eeprom_parallel_28xx_device::unlock_write32) { oe_w(1); } eeprom_parallel_##_lowercase##_device::eeprom_parallel_##_lowercase##_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) \ : eeprom_parallel_##_baseclass##_device(mconfig, EEPROM_PARALLEL_##_uppercase, tag, owner) \ { \ - static_set_size(*this, _cells, _bits); \ + set_size(_cells, _bits); \ } \ DEFINE_DEVICE_TYPE(EEPROM_PARALLEL_##_uppercase, eeprom_parallel_##_lowercase##_device, #_lowercase, "Parallel EEPROM " #_uppercase " (" #_cells "x" #_bits ")") diff --git a/src/devices/machine/eeprompar.h b/src/devices/machine/eeprompar.h index 9803d1556bb..12f42e55b87 100644 --- a/src/devices/machine/eeprompar.h +++ b/src/devices/machine/eeprompar.h @@ -40,7 +40,7 @@ // true when external circuit is used to lock EEPROM after every write #define MCFG_EEPROM_28XX_LOCK_AFTER_WRITE(_lock) \ - eeprom_parallel_28xx_device::static_set_lock_after_write(*device, _lock); + downcast<eeprom_parallel_28xx_device &>(*device).set_lock_after_write(_lock); //************************************************************************** @@ -68,8 +68,8 @@ protected: class eeprom_parallel_28xx_device : public eeprom_parallel_base_device { public: - // static configuration helpers - static void static_set_lock_after_write(device_t &device, bool lock); + // configuration helpers + void set_lock_after_write(bool lock) { m_lock_after_write = lock; } // read/write data lines DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/eepromser.cpp b/src/devices/machine/eepromser.cpp index d97ea318407..48214a74291 100644 --- a/src/devices/machine/eepromser.cpp +++ b/src/devices/machine/eepromser.cpp @@ -178,40 +178,6 @@ eeprom_serial_base_device::eeprom_serial_base_device(const machine_config &mconf //------------------------------------------------- -// static_set_address_bits - configuration helper -// to set the number of address bits in the -// serial commands -//------------------------------------------------- - -void eeprom_serial_base_device::static_set_address_bits(device_t &device, int addrbits) -{ - downcast<eeprom_serial_base_device &>(device).m_command_address_bits = addrbits; -} - - -//------------------------------------------------- -// static_enable_streaming - configuration helper -// to enable streaming data -//------------------------------------------------- - -void eeprom_serial_base_device::static_enable_streaming(device_t &device) -{ - downcast<eeprom_serial_base_device &>(device).m_streaming_enabled = true; -} - - -//----------------------------------------------------------------- -// static_enable_output_on_falling_clock - configuration helper -// to enable updating the output on the falling edge of the clock -//----------------------------------------------------------------- - -void eeprom_serial_base_device::static_enable_output_on_falling_clock(device_t &device) -{ - downcast<eeprom_serial_base_device &>(device).m_output_on_falling_clock_enabled = true; -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -1160,8 +1126,8 @@ WRITE_LINE_MEMBER(eeprom_serial_x24c44_device::di_write) { base_di_write(state); eeprom_serial_##_lowercase##_##_bits##bit_device::eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) \ : eeprom_serial_##_baseclass##_device(mconfig, EEPROM_SERIAL_##_uppercase##_##_bits##BIT, tag, owner) \ { \ - static_set_size(*this, _cells, _bits); \ - static_set_address_bits(*this, _addrbits); \ + set_size(_cells, _bits); \ + set_address_bits(_addrbits); \ } \ DEFINE_DEVICE_TYPE(EEPROM_SERIAL_##_uppercase##_##_bits##BIT, eeprom_serial_##_lowercase##_##_bits##bit_device, #_lowercase "_" #_bits, "Serial EEPROM " #_uppercase " (" #_cells "x" #_bits ")") diff --git a/src/devices/machine/eepromser.h b/src/devices/machine/eepromser.h index d0d662948d8..2a68f1ea1bc 100644 --- a/src/devices/machine/eepromser.h +++ b/src/devices/machine/eepromser.h @@ -22,10 +22,10 @@ // optional enable for streaming reads #define MCFG_EEPROM_SERIAL_ENABLE_STREAMING() \ - eeprom_serial_base_device::static_enable_streaming(*device); + downcast<eeprom_serial_base_device &>(*device).enable_streaming(true); // optional enable for output on falling clock #define MCFG_EEPROM_SERIAL_ENABLE_OUTPUT_ON_FALLING_CLOCK() \ - eeprom_serial_base_device::static_enable_output_on_falling_clock(*device); + downcast<eeprom_serial_base_device &>(*device).enable_output_on_falling_clock(true); // standard 93CX6 class of 16-bit EEPROMs #define MCFG_EEPROM_SERIAL_93C06_ADD(_tag) \ @@ -92,7 +92,7 @@ #define MCFG_EEPROM_SERIAL_DEFAULT_VALUE MCFG_EEPROM_DEFAULT_VALUE #define MCFG_EEPROM_SERIAL_DO_CALLBACK(_devcb) \ - devcb = &eeprom_serial_base_device::static_set_do_callback(*device, DEVCB_##_devcb); + devcb = &downcast<eeprom_serial_base_device &>(*device).set_do_callback(DEVCB_##_devcb); //************************************************************************** @@ -106,13 +106,10 @@ class eeprom_serial_base_device : public eeprom_base_device { public: // inline configuration helpers - static void static_set_address_bits(device_t &device, int addrbits); - static void static_enable_streaming(device_t &device); - static void static_enable_output_on_falling_clock(device_t &device); - template<class Object> static devcb_base &static_set_do_callback(device_t &device, Object &&object) - { - return downcast<eeprom_serial_base_device &>(device).m_do_cb.set_callback(std::forward<Object>(object)); - } + void set_address_bits(int addrbits) { m_command_address_bits = addrbits; } + void enable_streaming(bool enable) { m_streaming_enabled = enable; } + void enable_output_on_falling_clock(bool enable) { m_output_on_falling_clock_enabled = enable; } + template<class Object> devcb_base &set_do_callback(Object &&cb) { return m_do_cb.set_callback(std::forward<Object>(cb)); } protected: // construction/destruction diff --git a/src/devices/machine/f3853.h b/src/devices/machine/f3853.h index 3cc3b07b524..657a073bb1a 100644 --- a/src/devices/machine/f3853.h +++ b/src/devices/machine/f3853.h @@ -44,7 +44,7 @@ //************************************************************************** #define MCFG_F3853_EXT_INPUT_CB(_class, _method) \ - f3853_device::set_interrupt_req_callback(*device, f3853_device::interrupt_req_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<f3853_device &>(*device).set_interrupt_req_callback(f3853_device::interrupt_req_delegate(&_class::_method, #_class "::" #_method, this)); /*************************************************************************** TYPE DEFINITIONS @@ -63,7 +63,7 @@ public: // construction/destruction f3853_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_interrupt_req_callback(device_t &device, interrupt_req_delegate &&callback) { downcast<f3853_device &>(device).m_interrupt_req_cb = std::move(callback); } + template <typename Object> void set_interrupt_req_callback(Object &&cb) { m_interrupt_req_cb = std::forward<Object>(cb); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/fga002.h b/src/devices/machine/fga002.h index 2be2e889ec6..01372e41231 100644 --- a/src/devices/machine/fga002.h +++ b/src/devices/machine/fga002.h @@ -9,19 +9,19 @@ // LOCAL IRQ callbacks #define MCFG_FGA002_OUT_INT_CB(_devcb) \ - devcb = &fga002_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<fga002_device &>(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_FGA002_OUT_LIACK4_CB(_devcb) \ - devcb = &fga002_device::set_liack4_callback(*device, DEVCB_##_devcb); + devcb = &downcast<fga002_device &>(*device).set_liack4_callback(DEVCB_##_devcb); #define MCFG_FGA002_OUT_LIACK5_CB(_devcb) \ - devcb = &fga002_device::set_liack5_callback(*device, DEVCB_##_devcb); + devcb = &downcast<fga002_device &>(*device).set_liack5_callback(DEVCB_##_devcb); #define MCFG_FGA002_OUT_LIACK6_CB(_devcb) \ - devcb = &fga002_device::set_liack6_callback(*device, DEVCB_##_devcb); + devcb = &downcast<fga002_device &>(*device).set_liack6_callback(DEVCB_##_devcb); #define MCFG_FGA002_OUT_LIACK7_CB(_devcb) \ - devcb = &fga002_device::set_liack7_callback(*device, DEVCB_##_devcb); + devcb = &downcast<fga002_device &>(*device).set_liack7_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -53,11 +53,11 @@ class fga002_device : public device_t int acknowledge(); int get_irq_level(); - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_liack4_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack4_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_liack5_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack5_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_liack6_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack6_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_liack7_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack7_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_liack4_callback(Object &&cb) { return m_liack4_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_liack5_callback(Object &&cb) { return m_liack5_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_liack6_callback(Object &&cb) { return m_liack6_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_liack7_callback(Object &&cb) { return m_liack7_cb.set_callback(std::forward<Object>(cb)); } protected: // type for array of mapping of FGA registers that assembles an IRQ source diff --git a/src/devices/machine/gayle.cpp b/src/devices/machine/gayle.cpp index c0369cddc4f..1c0326b0ae6 100644 --- a/src/devices/machine/gayle.cpp +++ b/src/devices/machine/gayle.cpp @@ -47,16 +47,6 @@ gayle_device::gayle_device(const machine_config &mconfig, const char *tag, devic } //------------------------------------------------- -// set_id - set gayle id -//------------------------------------------------- - -void gayle_device::set_id(device_t &device, uint8_t id) -{ - gayle_device &gayle = downcast<gayle_device &>(device); - gayle.m_gayle_id = id; -} - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/machine/gayle.h b/src/devices/machine/gayle.h index 07158185e96..81b0f6bafaa 100644 --- a/src/devices/machine/gayle.h +++ b/src/devices/machine/gayle.h @@ -21,22 +21,22 @@ #define MCFG_GAYLE_ADD(_tag, _clock, _id) \ MCFG_DEVICE_ADD(_tag, GAYLE, _clock) \ - gayle_device::set_id(*device, _id); + downcast<gayle_device &>(*device).set_id(_id); #define MCFG_GAYLE_INT2_HANDLER(_devcb) \ - devcb = &gayle_device::set_int2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gayle_device &>(*device).set_int2_handler(DEVCB_##_devcb); #define MCFG_GAYLE_CS0_READ_HANDLER(_devcb) \ - devcb = &gayle_device::set_cs0_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gayle_device &>(*device).set_cs0_read_handler(DEVCB_##_devcb); #define MCFG_GAYLE_CS0_WRITE_HANDLER(_devcb) \ - devcb = &gayle_device::set_cs0_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gayle_device &>(*device).set_cs0_write_handler(DEVCB_##_devcb); #define MCFG_GAYLE_CS1_READ_HANDLER(_devcb) \ - devcb = &gayle_device::set_cs1_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gayle_device &>(*device).set_cs1_read_handler(DEVCB_##_devcb); #define MCFG_GAYLE_CS1_WRITE_HANDLER(_devcb) \ - devcb = &gayle_device::set_cs1_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<gayle_device &>(*device).set_cs1_write_handler(DEVCB_##_devcb); //************************************************************************** @@ -52,20 +52,11 @@ public: gayle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // callbacks - template <class Object> static devcb_base &set_int2_handler(device_t &device, Object &&cb) - { return downcast<gayle_device &>(device).m_int2_w.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_cs0_read_handler(device_t &device, Object &&cb) - { return downcast<gayle_device &>(device).m_cs0_read.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_cs0_write_handler(device_t &device, Object &&cb) - { return downcast<gayle_device &>(device).m_cs0_write.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_cs1_read_handler(device_t &device, Object &&cb) - { return downcast<gayle_device &>(device).m_cs1_read.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_cs1_write_handler(device_t &device, Object &&cb) - { return downcast<gayle_device &>(device).m_cs1_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int2_handler(Object &&cb) { return m_int2_w.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cs0_read_handler(Object &&cb) { return m_cs0_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cs0_write_handler(Object &&cb) { return m_cs0_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cs1_read_handler(Object &&cb) { return m_cs1_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cs1_write_handler(Object &&cb) { return m_cs1_write.set_callback(std::forward<Object>(cb)); } // interface DECLARE_WRITE_LINE_MEMBER( ide_interrupt_w ); @@ -76,7 +67,7 @@ public: DECLARE_WRITE16_MEMBER( gayle_id_w ); // inline configuration - static void set_id(device_t &device, uint8_t id); + void set_id(uint8_t id) { m_gayle_id = id; } protected: virtual void device_start() override; diff --git a/src/devices/machine/gen_latch.h b/src/devices/machine/gen_latch.h index 4e7aecf791c..ca3309133ef 100644 --- a/src/devices/machine/gen_latch.h +++ b/src/devices/machine/gen_latch.h @@ -32,10 +32,10 @@ DECLARE_DEVICE_TYPE(GENERIC_LATCH_16, generic_latch_16_device) MCFG_DEVICE_ADD(_tag, GENERIC_LATCH_16, 0) #define MCFG_GENERIC_LATCH_DATA_PENDING_CB(_devcb) \ - devcb = &generic_latch_base_device::set_data_pending_callback(*device, DEVCB_##_devcb); + devcb = &downcast<generic_latch_base_device &>(*device).set_data_pending_callback(DEVCB_##_devcb); #define MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(_ack) \ - generic_latch_base_device::set_separate_acknowledge(*device, _ack); + downcast<generic_latch_base_device &>(*device).set_separate_acknowledge(_ack); //************************************************************************** @@ -51,10 +51,9 @@ protected: generic_latch_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); public: - // static configuration - template <class Object> static devcb_base &set_data_pending_callback(device_t &device, Object &&cb) - { return downcast<generic_latch_base_device &>(device).m_data_pending_cb.set_callback(std::forward<Object>(cb)); } - static void set_separate_acknowledge(device_t &device, bool ack) { downcast<generic_latch_base_device &>(device).m_separate_acknowledge = ack; } + // configuration + template <class Object> devcb_base &set_data_pending_callback(Object &&cb) { return m_data_pending_cb.set_callback(std::forward<Object>(cb)); } + void set_separate_acknowledge(bool ack) { m_separate_acknowledge = ack; } DECLARE_READ_LINE_MEMBER(pending_r); diff --git a/src/devices/machine/genpc.cpp b/src/devices/machine/genpc.cpp index 66d46d81ebd..65a25896392 100644 --- a/src/devices/machine/genpc.cpp +++ b/src/devices/machine/genpc.cpp @@ -496,12 +496,6 @@ ioport_constructor ibm5160_mb_device::device_input_ports() const } -void ibm5160_mb_device::static_set_cputag(device_t &device, const char *tag) -{ - ibm5160_mb_device &board = downcast<ibm5160_mb_device &>(device); - board.m_maincpu.set_tag(tag); -} - //************************************************************************** // LIVE DEVICE //************************************************************************** diff --git a/src/devices/machine/genpc.h b/src/devices/machine/genpc.h index f6242f0a2ca..1c94244e6ff 100644 --- a/src/devices/machine/genpc.h +++ b/src/devices/machine/genpc.h @@ -25,8 +25,8 @@ #define MCFG_IBM5160_MOTHERBOARD_ADD(_tag, _cputag) \ MCFG_DEVICE_ADD(_tag, IBM5160_MOTHERBOARD, 0) \ - ibm5160_mb_device::static_set_cputag(*device, "^" _cputag); \ - isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag); + downcast<ibm5160_mb_device &>(*device).set_cputag("^" _cputag); \ + (*device->subdevice<isa8_device>("isa")).set_cputag("^^" _cputag); // ======================> ibm5160_mb_device class ibm5160_mb_device : public device_t @@ -36,7 +36,7 @@ public: ibm5160_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - static void static_set_cputag(device_t &device, const char *tag); + void set_cputag(const char *tag) { m_maincpu.set_tag(tag); } void map(address_map &map); @@ -130,8 +130,8 @@ DECLARE_DEVICE_TYPE(IBM5160_MOTHERBOARD, ibm5160_mb_device) #define MCFG_IBM5150_MOTHERBOARD_ADD(_tag, _cputag) \ MCFG_DEVICE_ADD(_tag, IBM5150_MOTHERBOARD, 0) \ - ibm5150_mb_device::static_set_cputag(*device, "^" _cputag); \ - isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag); + downcast<ibm5150_mb_device &>(*device).set_cputag("^" _cputag); \ + (*device->subdevice<isa8_device>("isa")).set_cputag("^^" _cputag); // ======================> ibm5150_mb_device class ibm5150_mb_device : public ibm5160_mb_device @@ -163,8 +163,8 @@ DECLARE_DEVICE_TYPE(IBM5150_MOTHERBOARD, ibm5150_mb_device) #define MCFG_EC1841_MOTHERBOARD_ADD(_tag, _cputag) \ MCFG_DEVICE_ADD(_tag, EC1841_MOTHERBOARD, 0) \ - ec1841_mb_device::static_set_cputag(*device, "^" _cputag); \ - isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag); + downcast<ec1841_mb_device &>(*device).set_cputag("^" _cputag); \ + (*device->subdevice<isa8_device>("isa")).set_cputag("^^" _cputag); class ec1841_mb_device : public ibm5160_mb_device { @@ -189,8 +189,8 @@ DECLARE_DEVICE_TYPE(EC1841_MOTHERBOARD, ec1841_mb_device) #define MCFG_PCNOPPI_MOTHERBOARD_ADD(_tag, _cputag) \ MCFG_DEVICE_ADD(_tag, PCNOPPI_MOTHERBOARD, 0) \ - pc_noppi_mb_device::static_set_cputag(*device, "^" _cputag); \ - isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag); + downcast<pc_noppi_mb_device &>(*device).set_cputag("^" _cputag); \ + (*device->subdevice<isa8_device>("isa")).set_cputag("^^" _cputag); class pc_noppi_mb_device : public ibm5160_mb_device { diff --git a/src/devices/machine/hd63450.h b/src/devices/machine/hd63450.h index 2e525cabf70..794c2ec91da 100644 --- a/src/devices/machine/hd63450.h +++ b/src/devices/machine/hd63450.h @@ -11,76 +11,74 @@ #define MCFG_HD63450_DMA_END_CB(_devcb) \ - devcb = &hd63450_device::set_dma_end_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd63450_device &>(*device).set_dma_end_callback(DEVCB_##_devcb); #define MCFG_HD63450_DMA_ERROR_CB(_devcb) \ - devcb = &hd63450_device::set_dma_error_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd63450_device &>(*device).set_dma_error_callback(DEVCB_##_devcb); #define MCFG_HD63450_DMA_READ_0_CB(_devcb) \ - devcb = &hd63450_device::set_dma_read_0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd63450_device &>(*device).set_dma_read_0_callback(DEVCB_##_devcb); #define MCFG_HD63450_DMA_READ_1_CB(_devcb) \ - devcb = &hd63450_device::set_dma_read_1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd63450_device &>(*device).set_dma_read_1_callback(DEVCB_##_devcb); #define MCFG_HD63450_DMA_READ_2_CB(_devcb) \ - devcb = &hd63450_device::set_dma_read_2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd63450_device &>(*device).set_dma_read_2_callback(DEVCB_##_devcb); #define MCFG_HD63450_DMA_READ_3_CB(_devcb) \ - devcb = &hd63450_device::set_dma_read_3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd63450_device &>(*device).set_dma_read_3_callback(DEVCB_##_devcb); #define MCFG_HD63450_DMA_WRITE_0_CB(_devcb) \ - devcb = &hd63450_device::set_dma_write_0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd63450_device &>(*device).set_dma_write_0_callback(DEVCB_##_devcb); #define MCFG_HD63450_DMA_WRITE_1_CB(_devcb) \ - devcb = &hd63450_device::set_dma_write_1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd63450_device &>(*device).set_dma_write_1_callback(DEVCB_##_devcb); #define MCFG_HD63450_DMA_WRITE_2_CB(_devcb) \ - devcb = &hd63450_device::set_dma_write_2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd63450_device &>(*device).set_dma_write_2_callback(DEVCB_##_devcb); #define MCFG_HD63450_DMA_WRITE_3_CB(_devcb) \ - devcb = &hd63450_device::set_dma_write_3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd63450_device &>(*device).set_dma_write_3_callback(DEVCB_##_devcb); #define MCFG_HD63450_CPU(_tag) \ - hd63450_device::set_cpu_tag(*device, _tag); + downcast<hd63450_device &>(*device).set_cpu_tag(_tag); #define MCFG_HD63450_CLOCKS(_clk1, _clk2, _clk3, _clk4) \ - hd63450_device::set_our_clocks(*device, _clk1, _clk2, _clk3, _clk4); + downcast<hd63450_device &>(*device).set_our_clocks(_clk1, _clk2, _clk3, _clk4); #define MCFG_HD63450_BURST_CLOCKS(_clk1, _clk2, _clk3, _clk4) \ - hd63450_device::set_burst_clocks(*device, _clk1, _clk2, _clk3, _clk4); + downcast<hd63450_device &>(*device).set_burst_clocks(_clk1, _clk2, _clk3, _clk4); class hd63450_device : public device_t { public: hd63450_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_dma_end_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_end.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_error_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_error.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_read_0_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_read_1_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_read_2_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_read_3_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_write_0_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_write_1_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_write_2_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_write_3_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_3.set_callback(std::forward<Object>(cb)); } - - static void set_cpu_tag(device_t &device, const char *tag) { downcast<hd63450_device &>(device).m_cpu_tag = tag; } - static void set_our_clocks(device_t &device, const attotime &clk1, const attotime &clk2, const attotime &clk3, const attotime &clk4) + template <class Object> devcb_base &set_dma_end_callback(Object &&cb) { return m_dma_end.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_error_callback(Object &&cb) { return m_dma_error.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_read_0_callback(Object &&cb) { return m_dma_read_0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_read_1_callback(Object &&cb) { return m_dma_read_1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_read_2_callback(Object &&cb) { return m_dma_read_2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_read_3_callback(Object &&cb) { return m_dma_read_3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_write_0_callback(Object &&cb) { return m_dma_write_0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_write_1_callback(Object &&cb) { return m_dma_write_1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_write_2_callback(Object &&cb) { return m_dma_write_2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_write_3_callback(Object &&cb) { return m_dma_write_3.set_callback(std::forward<Object>(cb)); } + + void set_cpu_tag(const char *tag) { m_cpu_tag = tag; } + void set_our_clocks(const attotime &clk1, const attotime &clk2, const attotime &clk3, const attotime &clk4) { - hd63450_device &dev = downcast<hd63450_device &>(device); - dev.m_our_clock[0] = clk1; - dev.m_our_clock[1] = clk2; - dev.m_our_clock[2] = clk3; - dev.m_our_clock[3] = clk4; + m_our_clock[0] = clk1; + m_our_clock[1] = clk2; + m_our_clock[2] = clk3; + m_our_clock[3] = clk4; } - static void set_burst_clocks(device_t &device, const attotime &clk1, const attotime &clk2, const attotime &clk3, const attotime &clk4) + void set_burst_clocks(const attotime &clk1, const attotime &clk2, const attotime &clk3, const attotime &clk4) { - hd63450_device &dev = downcast<hd63450_device &>(device); - dev.m_burst_clock[0] = clk1; - dev.m_burst_clock[1] = clk2; - dev.m_burst_clock[2] = clk3; - dev.m_burst_clock[3] = clk4; + m_burst_clock[0] = clk1; + m_burst_clock[1] = clk2; + m_burst_clock[2] = clk3; + m_burst_clock[3] = clk4; } DECLARE_READ16_MEMBER( read ); diff --git a/src/devices/machine/hd64610.h b/src/devices/machine/hd64610.h index edaa7a70c16..948f6b4e549 100644 --- a/src/devices/machine/hd64610.h +++ b/src/devices/machine/hd64610.h @@ -35,10 +35,10 @@ //************************************************************************** #define MCFG_HD64610_OUT_IRQ_CB(_devcb) \ - devcb = &hd64610_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd64610_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_HD64610_OUT_1HZ_CB(_devcb) \ - devcb = &hd64610_device::set_out_1hz_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd64610_device &>(*device).set_out_1hz_callback(DEVCB_##_devcb); //************************************************************************** @@ -55,8 +55,8 @@ public: // construction/destruction hd64610_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<hd64610_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_1hz_callback(device_t &device, Object &&cb) { return downcast<hd64610_device &>(device).m_out_1hz_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_1hz_callback(Object &&cb) { return m_out_1hz_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/hdc92x4.h b/src/devices/machine/hdc92x4.h index 0555099e132..9eb2e6f827b 100644 --- a/src/devices/machine/hdc92x4.h +++ b/src/devices/machine/hdc92x4.h @@ -18,33 +18,33 @@ DECLARE_DEVICE_TYPE(HDC9234, hdc9234_device) /* Interrupt line. To be connected with the controller PCB. */ #define MCFG_HDC92X4_INTRQ_CALLBACK(_write) \ - devcb = &hdc92x4_device::set_intrq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<hdc92x4_device &>(*device).set_intrq_wr_callback(DEVCB_##_write); /* DMA request line. To be connected with the controller PCB. */ #define MCFG_HDC92X4_DMARQ_CALLBACK(_write) \ - devcb = &hdc92x4_device::set_dmarq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<hdc92x4_device &>(*device).set_dmarq_wr_callback(DEVCB_##_write); /* DMA in progress line. To be connected with the controller PCB. */ #define MCFG_HDC92X4_DIP_CALLBACK(_write) \ - devcb = &hdc92x4_device::set_dip_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<hdc92x4_device &>(*device).set_dip_wr_callback(DEVCB_##_write); /* Auxiliary Bus. These 8 lines need to be connected to external latches and to a counter circuitry which works together with the external RAM. We use the S0/S1 lines as address lines. */ #define MCFG_HDC92X4_AUXBUS_OUT_CALLBACK(_write) \ - devcb = &hdc92x4_device::set_auxbus_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<hdc92x4_device &>(*device).set_auxbus_wr_callback(DEVCB_##_write); /* Callback to read the contents of the external RAM via the data bus. Note that the address must be set and automatically increased by external circuitry. */ #define MCFG_HDC92X4_DMA_IN_CALLBACK(_read) \ - devcb = &hdc92x4_device::set_dma_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<hdc92x4_device &>(*device).set_dma_rd_callback(DEVCB_##_read); /* Callback to write the contents of the external RAM via the data bus. Note that the address must be set and automatically increased by external circuitry. */ #define MCFG_HDC92X4_DMA_OUT_CALLBACK(_write) \ - devcb = &hdc92x4_device::set_dma_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<hdc92x4_device &>(*device).set_dma_wr_callback(DEVCB_##_write); //=================================================================== @@ -85,12 +85,12 @@ public: DECLARE_WRITE_LINE_MEMBER( dmaack ); // Callbacks - template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_intrq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dmarq_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_dmarq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dip_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_dip.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_auxbus_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_auxbus.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_rd_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_in_dma.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_dma.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intrq_wr_callback(Object &&cb) { return m_out_intrq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dmarq_wr_callback(Object &&cb) { return m_out_dmarq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dip_wr_callback(Object &&cb) { return m_out_dip.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_auxbus_wr_callback(Object &&cb) { return m_out_auxbus.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_rd_callback(Object &&cb) { return m_in_dma.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_wr_callback(Object &&cb) { return m_out_dma.set_callback(std::forward<Object>(cb)); } // auxbus_in is intended to read events from the drives // In the real chip the status is polled; to avoid unnecessary load diff --git a/src/devices/machine/hp_taco.h b/src/devices/machine/hp_taco.h index d5fe4fb9b23..3b926a0946a 100644 --- a/src/devices/machine/hp_taco.h +++ b/src/devices/machine/hp_taco.h @@ -16,13 +16,13 @@ #include "formats/hti_tape.h" #define MCFG_TACO_IRQ_HANDLER(_devcb) \ - devcb = &hp_taco_device::set_irq_handler(*device , DEVCB_##_devcb); + devcb = &downcast<hp_taco_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_TACO_FLG_HANDLER(_devcb) \ - devcb = &hp_taco_device::set_flg_handler(*device , DEVCB_##_devcb); + devcb = &downcast<hp_taco_device &>(*device).set_flg_handler(DEVCB_##_devcb); #define MCFG_TACO_STS_HANDLER(_devcb) \ - devcb = &hp_taco_device::set_sts_handler(*device , DEVCB_##_devcb); + devcb = &downcast<hp_taco_device &>(*device).set_sts_handler(DEVCB_##_devcb); class hp_taco_device : public device_t , public device_image_interface @@ -31,10 +31,10 @@ public: // construction/destruction hp_taco_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<hp_taco_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_flg_handler(device_t &device, Object &&cb) { return downcast<hp_taco_device &>(device).m_flg_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sts_handler(device_t &device, Object &&cb) { return downcast<hp_taco_device &>(device).m_sts_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + 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_flg_handler(Object &&cb) { return m_flg_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sts_handler(Object &&cb) { return m_sts_handler.set_callback(std::forward<Object>(cb)); } // Register read/write DECLARE_WRITE16_MEMBER(reg_w); diff --git a/src/devices/machine/i2cmem.h b/src/devices/machine/i2cmem.h index b0061f2759b..68bef6dde2f 100644 --- a/src/devices/machine/i2cmem.h +++ b/src/devices/machine/i2cmem.h @@ -30,19 +30,19 @@ MCFG_DEVICE_ADD( _tag, I2CMEM, 0 ) #define MCFG_I2CMEM_ADDRESS( address ) \ - i2cmem_device::set_address(*device, address); + downcast<i2cmem_device &>(*device).set_address(address); #define MCFG_I2CMEM_PAGE_SIZE( page_size ) \ - i2cmem_device::set_page_size(*device, page_size); + downcast<i2cmem_device &>(*device).set_page_size(page_size); #define MCFG_I2CMEM_DATA_SIZE(data_size) \ - i2cmem_device::set_data_size(*device, data_size); + downcast<i2cmem_device &>(*device).set_data_size(data_size); #define MCFG_I2CMEM_E0(e0) \ - i2cmem_device::set_e0(*device, e0); + downcast<i2cmem_device &>(*device).set_e0(e0); #define MCFG_I2CMEM_E1(e1) \ - i2cmem_device::set_e1(*device, e1); + downcast<i2cmem_device &>(*device).set_e1(e1); #define MCFG_I2CMEM_E2(e2) \ - i2cmem_device::set_e2(*device, e2); + downcast<i2cmem_device &>(*device).set_e2(e2); #define MCFG_I2CMEM_WC(wc) \ - i2cmem_device::set_wc(*device, wc); + downcast<i2cmem_device &>(*device).set_wc(wc); #define MCFG_X2404P_ADD( _tag ) \ MCFG_I2CMEM_ADD( _tag ) \ @@ -91,13 +91,13 @@ public: // construction/destruction i2cmem_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock ); - static void set_address(device_t &device, int address) { downcast<i2cmem_device &>(device).m_slave_address = address; } - static void set_page_size(device_t &device, int page_size) { downcast<i2cmem_device &>(device).m_page_size = page_size; } - static void set_data_size(device_t &device, int data_size) { downcast<i2cmem_device &>(device).m_data_size = data_size; } - static void set_e0(device_t &device, int e0) { downcast<i2cmem_device &>(device).m_e0 = e0; } - static void set_e1(device_t &device, int e1) { downcast<i2cmem_device &>(device).m_e1 = e1; } - static void set_e2(device_t &device, int e2) { downcast<i2cmem_device &>(device).m_e2 = e2; } - static void set_wc(device_t &device, int wc) { downcast<i2cmem_device &>(device).m_wc = wc; } + void set_address(int address) { m_slave_address = address; } + void set_page_size(int page_size) { m_page_size = page_size; } + void set_data_size(int data_size) { m_data_size = data_size; } + void set_e0(int e0) { m_e0 = e0; } + void set_e1(int e1) { m_e1 = e1; } + void set_e2(int e2) { m_e2 = e2; } + void set_wc(int wc) { m_wc = wc; } // I/O operations DECLARE_WRITE_LINE_MEMBER( write_e0 ); diff --git a/src/devices/machine/i7220.h b/src/devices/machine/i7220.h index d681695a455..78aef97bdab 100644 --- a/src/devices/machine/i7220.h +++ b/src/devices/machine/i7220.h @@ -43,13 +43,13 @@ ///************************************************************************* #define MCFG_I7220_IRQ_CALLBACK(_write) \ - devcb = &i7220_device::set_intrq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i7220_device &>(*device).set_intrq_wr_callback(DEVCB_##_write); #define MCFG_I7220_DRQ_CALLBACK(_write) \ - devcb = &i7220_device::set_drq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i7220_device &>(*device).set_drq_wr_callback(DEVCB_##_write); #define MCFG_I7220_DATA_SIZE(data_size) \ - i7220_device::set_data_size(*device, data_size); + downcast<i7220_device &>(*device).set_data_size(data_size); @@ -66,10 +66,10 @@ public: // construction/destruction i7220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<i7220_device &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<i7220_device &>(device).drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq_wr_callback(Object &&cb) { return drq_cb.set_callback(std::forward<Object>(cb)); } - static void set_data_size(device_t &device, int data_size) { downcast<i7220_device &>(device).m_data_size = data_size; } + void set_data_size(int data_size) { m_data_size = data_size; } // image-level overrides virtual image_init_result call_load() override; diff --git a/src/devices/machine/i80130.h b/src/devices/machine/i80130.h index b876041b89d..385d361c423 100644 --- a/src/devices/machine/i80130.h +++ b/src/devices/machine/i80130.h @@ -21,22 +21,22 @@ ///************************************************************************* #define MCFG_I80130_IRQ_CALLBACK(_write) \ - devcb = &i80130_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i80130_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_I80130_ACK_CALLBACK(_write) \ - devcb = &i80130_device::set_ack_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i80130_device &>(*device).set_ack_wr_callback(DEVCB_##_write); #define MCFG_I80130_LIR_CALLBACK(_write) \ - devcb = &i80130_device::set_lir_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i80130_device &>(*device).set_lir_wr_callback(DEVCB_##_write); #define MCFG_I80130_SYSTICK_CALLBACK(_write) \ - devcb = &i80130_device::set_systick_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i80130_device &>(*device).set_systick_wr_callback(DEVCB_##_write); #define MCFG_I80130_DELAY_CALLBACK(_write) \ - devcb = &i80130_device::set_delay_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i80130_device &>(*device).set_delay_wr_callback(DEVCB_##_write); #define MCFG_I80130_BAUD_CALLBACK(_write) \ - devcb = &i80130_device::set_baud_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i80130_device &>(*device).set_baud_wr_callback(DEVCB_##_write); @@ -52,12 +52,12 @@ public: // construction/destruction i80130_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ack_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_ack.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_lir_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_lir.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_systick_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_systick.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_delay_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_delay.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_baud_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_baud.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ack_wr_callback(Object &&cb) { return m_write_ack.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_lir_wr_callback(Object &&cb) { return m_write_lir.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_systick_wr_callback(Object &&cb) { return m_write_systick.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_delay_wr_callback(Object &&cb) { return m_write_delay.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_baud_wr_callback(Object &&cb) { return m_write_baud.set_callback(std::forward<Object>(cb)); } virtual void rom_map(address_map &map); virtual void io_map(address_map &map); diff --git a/src/devices/machine/i8087.h b/src/devices/machine/i8087.h index 25d52aeabba..62c847e2cbf 100644 --- a/src/devices/machine/i8087.h +++ b/src/devices/machine/i8087.h @@ -9,13 +9,13 @@ #endif #define MCFG_I8087_DATA_WIDTH(_data_width) \ - i8087_device::set_data_width(*device, _data_width); + downcast<i8087_device &>(*device).set_data_width(_data_width); #define MCFG_I8087_INT_HANDLER(_devcb) \ - devcb = &i8087_device::set_int(*device, DEVCB_##_devcb); + devcb = &downcast<i8087_device &>(*device).set_int(DEVCB_##_devcb); #define MCFG_I8087_BUSY_HANDLER(_devcb) \ - devcb = &i8087_device::set_busy(*device, DEVCB_##_devcb); + devcb = &downcast<i8087_device &>(*device).set_busy(DEVCB_##_devcb); DECLARE_DEVICE_TYPE(I8087, i8087_device) @@ -24,9 +24,9 @@ class i8087_device : public device_t, { public: i8087_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - static void set_data_width(device_t &device, u8 data_width) { downcast<i8087_device &>(device).m_data_width = data_width; } - template <class Object> static devcb_base &set_int(device_t &device, Object &&cb) { return downcast<i8087_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_busy(device_t &device, Object &&cb) { return downcast<i8087_device &>(device).m_busy_handler.set_callback(std::forward<Object>(cb)); } + void set_data_width(u8 data_width) { m_data_width = data_width; } + template <class Object> devcb_base &set_int(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_busy(Object &&cb) { return m_busy_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE32_MEMBER(insn_w); // the real 8087 sniffs the bus watching for esc, can't do that here so provide a poke spot DECLARE_WRITE32_MEMBER(addr_w); diff --git a/src/devices/machine/i8155.h b/src/devices/machine/i8155.h index a6c1a8e5c4b..0c1f387ea2b 100644 --- a/src/devices/machine/i8155.h +++ b/src/devices/machine/i8155.h @@ -41,25 +41,25 @@ //************************************************************************** #define MCFG_I8155_IN_PORTA_CB(_devcb) \ - devcb = &i8155_device::set_in_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8155_device &>(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_I8155_IN_PORTB_CB(_devcb) \ - devcb = &i8155_device::set_in_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8155_device &>(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_I8155_IN_PORTC_CB(_devcb) \ - devcb = &i8155_device::set_in_pc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8155_device &>(*device).set_in_pc_callback(DEVCB_##_devcb); #define MCFG_I8155_OUT_PORTA_CB(_devcb) \ - devcb = &i8155_device::set_out_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8155_device &>(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_I8155_OUT_PORTB_CB(_devcb) \ - devcb = &i8155_device::set_out_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8155_device &>(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_I8155_OUT_PORTC_CB(_devcb) \ - devcb = &i8155_device::set_out_pc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8155_device &>(*device).set_out_pc_callback(DEVCB_##_devcb); #define MCFG_I8155_OUT_TIMEROUT_CB(_devcb) \ - devcb = &i8155_device::set_out_to_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8155_device &>(*device).set_out_to_callback(DEVCB_##_devcb); //************************************************************************** @@ -75,13 +75,13 @@ public: // construction/destruction i8155_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_pc_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_in_pc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pc_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_pc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_to_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_to_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pc_callback(Object &&cb) { return m_in_pc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pc_callback(Object &&cb) { return m_out_pc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_to_callback(Object &&cb) { return m_out_to_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( io_r ); DECLARE_WRITE8_MEMBER( io_w ); diff --git a/src/devices/machine/i8212.h b/src/devices/machine/i8212.h index 4f871420128..b98ab2c0c55 100644 --- a/src/devices/machine/i8212.h +++ b/src/devices/machine/i8212.h @@ -34,16 +34,16 @@ ///************************************************************************* #define MCFG_I8212_INT_CALLBACK(_write) \ - devcb = &i8212_device::set_int_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i8212_device &>(*device).set_int_wr_callback(DEVCB_##_write); #define MCFG_I8212_DI_CALLBACK(_read) \ - devcb = &i8212_device::set_di_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<i8212_device &>(*device).set_di_rd_callback(DEVCB_##_read); #define MCFG_I8212_DO_CALLBACK(_write) \ - devcb = &i8212_device::set_do_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i8212_device &>(*device).set_do_wr_callback(DEVCB_##_write); #define MCFG_I8212_MD_CALLBACK(_read) \ - devcb = &i8212_device::set_md_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<i8212_device &>(*device).set_md_rd_callback(DEVCB_##_read); @@ -65,10 +65,10 @@ public: // construction/destruction i8212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<i8212_device &>(device).m_write_int.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_di_rd_callback(device_t &device, Object &&cb) { return downcast<i8212_device &>(device).m_read_di.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_do_wr_callback(device_t &device, Object &&cb) { return downcast<i8212_device &>(device).m_write_do.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_md_rd_callback(device_t &device, Object &&cb) { return downcast<i8212_device &>(device).m_read_md.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_di_rd_callback(Object &&cb) { return m_read_di.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_do_wr_callback(Object &&cb) { return m_write_do.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_md_rd_callback(Object &&cb) { return m_read_md.set_callback(std::forward<Object>(cb)); } // data read handlers DECLARE_READ8_MEMBER(read); diff --git a/src/devices/machine/i8214.h b/src/devices/machine/i8214.h index be29f0e787e..aafcde5f908 100644 --- a/src/devices/machine/i8214.h +++ b/src/devices/machine/i8214.h @@ -33,10 +33,10 @@ ///************************************************************************* #define MCFG_I8214_INT_CALLBACK(_write) \ - devcb = &i8214_device::set_int_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i8214_device &>(*device).set_int_wr_callback(DEVCB_##_write); #define MCFG_I8214_ENLG_CALLBACK(_write) \ - devcb = &i8214_device::set_enlg_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i8214_device &>(*device).set_enlg_wr_callback(DEVCB_##_write); @@ -52,8 +52,8 @@ public: // construction/destruction i8214_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<i8214_device &>(device).m_write_int.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_enlg_wr_callback(device_t &device, Object &&cb) { return downcast<i8214_device &>(device).m_write_enlg.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_enlg_wr_callback(Object &&cb) { return m_write_enlg.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( sgs_w ); DECLARE_WRITE_LINE_MEMBER( etlg_w ); diff --git a/src/devices/machine/i82371sb.h b/src/devices/machine/i82371sb.h index 23af8b89352..ba0ba296e96 100644 --- a/src/devices/machine/i82371sb.h +++ b/src/devices/machine/i82371sb.h @@ -31,13 +31,13 @@ MCFG_PCI_DEVICE_ADD(_tag, I82371SB_ISA, 0x80867000, 0x03, 0x060100, 0x00000000) #define MCFG_I82371SB_BOOT_STATE_HOOK(_devcb) \ - devcb = &i82371sb_isa_device::set_boot_state_hook(*device, DEVCB_##_devcb); + devcb = &downcast<i82371sb_isa_device &>(*device).set_boot_state_hook(DEVCB_##_devcb); class i82371sb_isa_device : public pci_device { public: i82371sb_isa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_boot_state_hook(device_t &device, Object &&cb) { return downcast<i82371sb_isa_device &>(device).m_boot_state_hook.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_boot_state_hook(Object &&cb) { return m_boot_state_hook.set_callback(std::forward<Object>(cb)); } protected: virtual void device_start() override; diff --git a/src/devices/machine/i8243.h b/src/devices/machine/i8243.h index e2dd1968050..fef950ffacb 100644 --- a/src/devices/machine/i8243.h +++ b/src/devices/machine/i8243.h @@ -24,9 +24,9 @@ MCFG_I8243_READHANDLER(_read) \ MCFG_I8243_WRITEHANDLER(_write) #define MCFG_I8243_READHANDLER(_devcb) \ - devcb = &i8243_device::set_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i8243_device &>(*device).set_read_handler(DEVCB_##_devcb); #define MCFG_I8243_WRITEHANDLER(_devcb) \ - devcb = &i8243_device::set_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i8243_device &>(*device).set_write_handler(DEVCB_##_devcb); /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ @@ -40,9 +40,9 @@ public: // construction/destruction i8243_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_read_handler(device_t &device, Object &&cb) { return downcast<i8243_device &>(device).m_readhandler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_handler(device_t &device, Object &&cb) { return downcast<i8243_device &>(device).m_writehandler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_handler(Object &&cb) { return m_readhandler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_handler(Object &&cb) { return m_writehandler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(p2_r); DECLARE_WRITE8_MEMBER(p2_w); diff --git a/src/devices/machine/i8251.h b/src/devices/machine/i8251.h index d3df46df789..ed10716dc02 100644 --- a/src/devices/machine/i8251.h +++ b/src/devices/machine/i8251.h @@ -19,25 +19,25 @@ //************************************************************************** #define MCFG_I8251_TXD_HANDLER(_devcb) \ - devcb = &i8251_device::set_txd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i8251_device &>(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_I8251_DTR_HANDLER(_devcb) \ - devcb = &i8251_device::set_dtr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i8251_device &>(*device).set_dtr_handler(DEVCB_##_devcb); #define MCFG_I8251_RTS_HANDLER(_devcb) \ - devcb = &i8251_device::set_rts_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i8251_device &>(*device).set_rts_handler(DEVCB_##_devcb); #define MCFG_I8251_RXRDY_HANDLER(_devcb) \ - devcb = &i8251_device::set_rxrdy_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i8251_device &>(*device).set_rxrdy_handler(DEVCB_##_devcb); #define MCFG_I8251_TXRDY_HANDLER(_devcb) \ - devcb = &i8251_device::set_txrdy_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i8251_device &>(*device).set_txrdy_handler(DEVCB_##_devcb); #define MCFG_I8251_TXEMPTY_HANDLER(_devcb) \ - devcb = &i8251_device::set_txempty_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i8251_device &>(*device).set_txempty_handler(DEVCB_##_devcb); #define MCFG_I8251_SYNDET_HANDLER(_devcb) \ - devcb = &i8251_device::set_syndet_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i8251_device &>(*device).set_syndet_handler(DEVCB_##_devcb); class i8251_device : public device_t, public device_serial_interface @@ -46,14 +46,14 @@ public: // construction/destruction i8251_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rxrdy_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_rxrdy_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txrdy_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_txrdy_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txempty_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_txempty_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_syndet_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_syndet_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dtr_handler(Object &&cb) { return m_dtr_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxrdy_handler(Object &&cb) { return m_rxrdy_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txrdy_handler(Object &&cb) { return m_txrdy_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txempty_handler(Object &&cb) { return m_txempty_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_syndet_handler(Object &&cb) { return m_syndet_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(data_r); DECLARE_WRITE8_MEMBER(data_w); diff --git a/src/devices/machine/i8255.h b/src/devices/machine/i8255.h index 93e1c07ee0e..80b0cfbe1fb 100644 --- a/src/devices/machine/i8255.h +++ b/src/devices/machine/i8255.h @@ -40,29 +40,29 @@ //************************************************************************** #define MCFG_I8255_IN_PORTA_CB(_devcb) \ - devcb = &i8255_device::set_in_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8255_device &>(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_I8255_IN_PORTB_CB(_devcb) \ - devcb = &i8255_device::set_in_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8255_device &>(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_I8255_IN_PORTC_CB(_devcb) \ - devcb = &i8255_device::set_in_pc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8255_device &>(*device).set_in_pc_callback(DEVCB_##_devcb); #define MCFG_I8255_OUT_PORTA_CB(_devcb) \ - devcb = &i8255_device::set_out_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8255_device &>(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_I8255_OUT_PORTB_CB(_devcb) \ - devcb = &i8255_device::set_out_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8255_device &>(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_I8255_OUT_PORTC_CB(_devcb) \ - devcb = &i8255_device::set_out_pc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8255_device &>(*device).set_out_pc_callback(DEVCB_##_devcb); // output state when pins are in tri-state, default 0xff #define MCFG_I8255_TRISTATE_PORTA_CB(_devcb) \ - devcb = &i8255_device::set_tri_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8255_device &>(*device).set_tri_pa_callback(DEVCB_##_devcb); #define MCFG_I8255_TRISTATE_PORTB_CB(_devcb) \ - devcb = &i8255_device::set_tri_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8255_device &>(*device).set_tri_pb_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -76,14 +76,14 @@ public: // construction/destruction i8255_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_pc_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_in_pc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pc_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_out_pc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tri_pa_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_tri_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tri_pb_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_tri_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pc_callback(Object &&cb) { return m_in_pc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pc_callback(Object &&cb) { return m_out_pc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tri_pa_callback(Object &&cb) { return m_tri_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tri_pb_callback(Object &&cb) { return m_tri_pb_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/i82586.h b/src/devices/machine/i82586.h index 60ee47bd936..dfd073190ae 100644 --- a/src/devices/machine/i82586.h +++ b/src/devices/machine/i82586.h @@ -7,7 +7,7 @@ #pragma once #define MCFG_I82586_IRQ_CB(_out_irq) \ - devcb = &i82586_base_device::static_set_out_irq_callback(*device, DEVCB_##_out_irq); + devcb = &downcast<i82586_base_device &>(*device).set_out_irq_callback(DEVCB_##_out_irq); class i82586_base_device : public device_t, @@ -157,7 +157,7 @@ public: static const u32 FCS_RESIDUE = 0xdebb20e3; // the residue after computing the fcs over a complete frame (including fcs) - template <class Object> static devcb_base &static_set_out_irq_callback(device_t &device, Object &&cb) { return downcast<i82586_base_device &>(device).m_out_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(ca); virtual void recv_cb(u8 *buf, int length) override; diff --git a/src/devices/machine/i8271.h b/src/devices/machine/i8271.h index 6881bbe6e4c..3db17379760 100644 --- a/src/devices/machine/i8271.h +++ b/src/devices/machine/i8271.h @@ -9,16 +9,16 @@ #include "fdc_pll.h" #define MCFG_I8271_IRQ_CALLBACK(_write) \ - devcb = &i8271_device::set_intrq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i8271_device &>(*device).set_intrq_wr_callback(DEVCB_##_write); #define MCFG_I8271_DRQ_CALLBACK(_write) \ - devcb = &i8271_device::set_drq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i8271_device &>(*device).set_drq_wr_callback(DEVCB_##_write); #define MCFG_I8271_HDL_CALLBACK(_write) \ - devcb = &i8271_device::set_hdl_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i8271_device &>(*device).set_hdl_wr_callback(DEVCB_##_write); #define MCFG_I8271_OPT_CALLBACK(_write) \ - devcb = &i8271_device::set_opt_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<i8271_device &>(*device).set_opt_wr_callback(DEVCB_##_write); /*************************************************************************** MACROS @@ -29,10 +29,10 @@ class i8271_device : public device_t public: i8271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).drq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_hdl_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).hdl_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_opt_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).opt_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq_wr_callback(Object &&cb) { return drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_hdl_wr_callback(Object &&cb) { return hdl_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_opt_wr_callback(Object &&cb) { return opt_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER (data_r); DECLARE_WRITE8_MEMBER(data_w); diff --git a/src/devices/machine/i8279.h b/src/devices/machine/i8279.h index 458c9732b8d..c50dfd1d54d 100644 --- a/src/devices/machine/i8279.h +++ b/src/devices/machine/i8279.h @@ -43,25 +43,25 @@ ***************************************************************************/ #define MCFG_I8279_OUT_IRQ_CB(_devcb) \ - devcb = &i8279_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8279_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_I8279_OUT_SL_CB(_devcb) \ - devcb = &i8279_device::set_out_sl_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8279_device &>(*device).set_out_sl_callback(DEVCB_##_devcb); #define MCFG_I8279_OUT_DISP_CB(_devcb) \ - devcb = &i8279_device::set_out_disp_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8279_device &>(*device).set_out_disp_callback(DEVCB_##_devcb); #define MCFG_I8279_OUT_BD_CB(_devcb) \ - devcb = &i8279_device::set_out_bd_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8279_device &>(*device).set_out_bd_callback(DEVCB_##_devcb); #define MCFG_I8279_IN_RL_CB(_devcb) \ - devcb = &i8279_device::set_in_rl_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8279_device &>(*device).set_in_rl_callback(DEVCB_##_devcb); #define MCFG_I8279_IN_SHIFT_CB(_devcb) \ - devcb = &i8279_device::set_in_shift_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8279_device &>(*device).set_in_shift_callback(DEVCB_##_devcb); #define MCFG_I8279_IN_CTRL_CB(_devcb) \ - devcb = &i8279_device::set_in_ctrl_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8279_device &>(*device).set_in_ctrl_callback(DEVCB_##_devcb); /*************************************************************************** TYPE DEFINITIONS @@ -75,13 +75,13 @@ public: // construction/destruction i8279_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_sl_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_sl_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_disp_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_disp_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_bd_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_bd_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_rl_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_in_rl_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_shift_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_in_shift_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_ctrl_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_in_ctrl_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_sl_callback(Object &&cb) { return m_out_sl_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_disp_callback(Object &&cb) { return m_out_disp_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_bd_callback(Object &&cb) { return m_out_bd_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_rl_callback(Object &&cb) { return m_in_rl_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_shift_callback(Object &&cb) { return m_in_shift_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_ctrl_callback(Object &&cb) { return m_in_ctrl_cb.set_callback(std::forward<Object>(cb)); } // read & write handlers DECLARE_READ8_MEMBER(read); diff --git a/src/devices/machine/i8355.h b/src/devices/machine/i8355.h index 58ea5b4b9d3..a9d5297bc26 100644 --- a/src/devices/machine/i8355.h +++ b/src/devices/machine/i8355.h @@ -49,16 +49,16 @@ ///************************************************************************* #define MCFG_I8355_IN_PA_CB(_devcb) \ - devcb = &i8355_device::set_in_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8355_device &>(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_I8355_OUT_PA_CB(_devcb) \ - devcb = &i8355_device::set_out_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8355_device &>(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_I8355_IN_PB_CB(_devcb) \ - devcb = &i8355_device::set_in_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8355_device &>(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_I8355_OUT_PB_CB(_devcb) \ - devcb = &i8355_device::set_out_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i8355_device &>(*device).set_out_pb_callback(DEVCB_##_devcb); ///************************************************************************* @@ -73,10 +73,10 @@ public: // construction/destruction i8355_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( io_r ); DECLARE_WRITE8_MEMBER( io_w ); diff --git a/src/devices/machine/idectrl.h b/src/devices/machine/idectrl.h index b8f065f6443..6ba5882202c 100644 --- a/src/devices/machine/idectrl.h +++ b/src/devices/machine/idectrl.h @@ -20,12 +20,12 @@ ***************************************************************************/ #define MCFG_IDE_CONTROLLER_ADD(_tag, _slot_intf, _master, _slave, _fixed) \ - MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER, 0) \ - MCFG_DEVICE_MODIFY(_tag ":0") \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \ - MCFG_DEVICE_MODIFY(_tag ":1") \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \ - MCFG_DEVICE_MODIFY(_tag) + MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER, 0) \ + MCFG_DEVICE_MODIFY(_tag ":0") \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \ + MCFG_DEVICE_MODIFY(_tag ":1") \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \ + MCFG_DEVICE_MODIFY(_tag) class ide_controller_device : public abstract_ata_interface_device { @@ -50,12 +50,12 @@ DECLARE_DEVICE_TYPE(IDE_CONTROLLER, ide_controller_device) #define MCFG_IDE_CONTROLLER_32_ADD(_tag, _slot_intf, _master, _slave, _fixed) \ - MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER_32, 0) \ - MCFG_DEVICE_MODIFY(_tag ":0") \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \ - MCFG_DEVICE_MODIFY(_tag ":1") \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \ - MCFG_DEVICE_MODIFY(_tag) + MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER_32, 0) \ + MCFG_DEVICE_MODIFY(_tag ":0") \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \ + MCFG_DEVICE_MODIFY(_tag ":1") \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \ + MCFG_DEVICE_MODIFY(_tag) class ide_controller_32_device : public abstract_ata_interface_device { @@ -80,21 +80,21 @@ DECLARE_DEVICE_TYPE(IDE_CONTROLLER_32, ide_controller_32_device) #define MCFG_BUS_MASTER_IDE_CONTROLLER_ADD(_tag, _slot_intf, _master, _slave, _fixed) \ - MCFG_DEVICE_ADD(_tag, BUS_MASTER_IDE_CONTROLLER, 0) \ - MCFG_DEVICE_MODIFY(_tag ":0") \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \ - MCFG_DEVICE_MODIFY(_tag ":1") \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \ - MCFG_DEVICE_MODIFY(_tag) + MCFG_DEVICE_ADD(_tag, BUS_MASTER_IDE_CONTROLLER, 0) \ + MCFG_DEVICE_MODIFY(_tag ":0") \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \ + MCFG_DEVICE_MODIFY(_tag ":1") \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \ + MCFG_DEVICE_MODIFY(_tag) #define MCFG_BUS_MASTER_IDE_CONTROLLER_SPACE(bmcpu, bmspace) \ - bus_master_ide_controller_device::set_bus_master_space(*device, bmcpu, bmspace); + downcast<bus_master_ide_controller_device &>(*device).set_bus_master_space(bmcpu, bmspace); class bus_master_ide_controller_device : public ide_controller_32_device { public: bus_master_ide_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_bus_master_space(device_t &device, const char *bmcpu, uint32_t bmspace) { bus_master_ide_controller_device &ide = downcast<bus_master_ide_controller_device &>(device); ide.m_bmcpu = bmcpu; ide.m_bmspace = bmspace; } + void set_bus_master_space(const char *bmcpu, uint32_t bmspace) { m_bmcpu = bmcpu; m_bmspace = bmspace; } DECLARE_READ32_MEMBER( bmdma_r ); DECLARE_WRITE32_MEMBER( bmdma_w ); diff --git a/src/devices/machine/ie15_kbd.h b/src/devices/machine/ie15_kbd.h index 4ba7fe30821..4d5c7370160 100644 --- a/src/devices/machine/ie15_kbd.h +++ b/src/devices/machine/ie15_kbd.h @@ -11,7 +11,7 @@ ***************************************************************************/ #define MCFG_IE15_KEYBOARD_CB(_devcb) \ - devcb = &ie15_keyboard_device::set_keyboard_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ie15_keyboard_device &>(*device).set_keyboard_callback(DEVCB_##_devcb); /*************************************************************************** FUNCTION PROTOTYPES @@ -47,7 +47,7 @@ public: ie15_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_keyboard_callback(device_t &device, Object &&cb) { return downcast<ie15_keyboard_device &>(device).m_keyboard_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_keyboard_callback(Object &&cb) { return m_keyboard_cb.set_callback(std::forward<Object>(cb)); } protected: ie15_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/machine/im6402.h b/src/devices/machine/im6402.h index 1dd485a6eec..b2ea2fc4441 100644 --- a/src/devices/machine/im6402.h +++ b/src/devices/machine/im6402.h @@ -50,20 +50,20 @@ #define MCFG_IM6402_ADD(_tag, _rrc, _trc) \ MCFG_DEVICE_ADD(_tag, IM6402, 0) \ - im6402_device::set_rrc(*device, _rrc); \ - im6402_device::set_trc(*device, _trc); + downcast<im6402_device &>(*device).set_rrc(_rrc); \ + downcast<im6402_device &>(*device).set_trc(_trc); #define MCFG_IM6402_TRO_CALLBACK(_write) \ - devcb = &im6402_device::set_tro_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<im6402_device &>(*device).set_tro_wr_callback(DEVCB_##_write); #define MCFG_IM6402_DR_CALLBACK(_write) \ - devcb = &im6402_device::set_dr_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<im6402_device &>(*device).set_dr_wr_callback(DEVCB_##_write); #define MCFG_IM6402_TBRE_CALLBACK(_write) \ - devcb = &im6402_device::set_tbre_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<im6402_device &>(*device).set_tbre_wr_callback(DEVCB_##_write); #define MCFG_IM6402_TRE_CALLBACK(_write) \ - devcb = &im6402_device::set_tre_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<im6402_device &>(*device).set_tre_wr_callback(DEVCB_##_write); @@ -79,12 +79,12 @@ public: // construction/destruction im6402_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_rrc(device_t &device, int rrc) { downcast<im6402_device &>(device).m_rrc = rrc; } - static void set_trc(device_t &device, int trc) { downcast<im6402_device &>(device).m_trc = trc; } - template <class Object> static devcb_base &set_tro_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_tro.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dr_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_dr.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tbre_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_tbre.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tre_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_tre.set_callback(std::forward<Object>(cb)); } + void set_rrc(int rrc) { m_rrc = rrc; } + void set_trc(int trc) { m_trc = trc; } + template <class Object> devcb_base &set_tro_wr_callback(Object &&cb) { return m_write_tro.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dr_wr_callback(Object &&cb) { return m_write_dr.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tbre_wr_callback(Object &&cb) { return m_write_tbre.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tre_wr_callback(Object &&cb) { return m_write_tre.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ) { return m_rbr; } DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/input_merger.h b/src/devices/machine/input_merger.h index 0ce9eb2ef62..3f2e1c884e7 100644 --- a/src/devices/machine/input_merger.h +++ b/src/devices/machine/input_merger.h @@ -33,7 +33,7 @@ MCFG_DEVICE_ADD(_tag, INPUT_MERGER_ALL_LOW, 0) #define MCFG_INPUT_MERGER_OUTPUT_HANDLER(_devcb) \ - devcb = &input_merger_device::set_output_handler(*device, DEVCB_##_devcb); + devcb = &downcast<input_merger_device &>(*device).set_output_handler(DEVCB_##_devcb); //************************************************************************** @@ -44,8 +44,7 @@ class input_merger_device : public device_t { public: // callback - template <class Object> static devcb_base &set_output_handler(device_t &device, Object &&cb) - { return downcast<input_merger_device &>(device).m_output_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_handler(Object &&cb) { return m_output_handler.set_callback(std::forward<Object>(cb)); } // input lines template <unsigned Bit> DECLARE_WRITE_LINE_MEMBER(in_w) { static_assert(Bit < 32, "invalid bit"); machine().scheduler().synchronize(timer_expired_delegate(FUNC(input_merger_device::update_state), this), (Bit << 1) | (state ? 1U : 0U)); } diff --git a/src/devices/machine/ins8154.h b/src/devices/machine/ins8154.h index b87ff329675..1c6596ccc13 100644 --- a/src/devices/machine/ins8154.h +++ b/src/devices/machine/ins8154.h @@ -43,19 +43,19 @@ ***************************************************************************/ #define MCFG_INS8154_IN_A_CB(_devcb) \ - devcb = &ins8154_device::set_in_a_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ins8154_device &>(*device).set_in_a_callback(DEVCB_##_devcb); #define MCFG_INS8154_OUT_A_CB(_devcb) \ - devcb = &ins8154_device::set_out_a_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ins8154_device &>(*device).set_out_a_callback(DEVCB_##_devcb); #define MCFG_INS8154_IN_B_CB(_devcb) \ - devcb = &ins8154_device::set_in_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ins8154_device &>(*device).set_in_b_callback(DEVCB_##_devcb); #define MCFG_INS8154_OUT_B_CB(_devcb) \ - devcb = &ins8154_device::set_out_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ins8154_device &>(*device).set_out_b_callback(DEVCB_##_devcb); #define MCFG_INS8154_OUT_IRQ_CB(_devcb) \ - devcb = &ins8154_device::set_out_irq_callback(*device, DEVCB_##_devcb); //currently unused + devcb = &downcast<ins8154_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); //currently unused /*************************************************************************** TYPE DEFINITIONS @@ -69,11 +69,11 @@ public: // construction/destruction ins8154_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_in_a_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_in_a_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_a_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_out_a_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_b_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_in_b_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_b_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_out_b_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_a_callback(Object &&cb) { return m_in_a_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_a_callback(Object &&cb) { return m_out_a_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_b_callback(Object &&cb) { return m_in_b_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_b_callback(Object &&cb) { return m_out_b_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( ins8154_r ); DECLARE_WRITE8_MEMBER( ins8154_w ); diff --git a/src/devices/machine/ins8250.h b/src/devices/machine/ins8250.h index d9ab726cf18..997b7090654 100644 --- a/src/devices/machine/ins8250.h +++ b/src/devices/machine/ins8250.h @@ -20,12 +20,12 @@ class ins8250_uart_device : public device_t, public device_serial_interface { public: - template <class Object> static devcb_base &set_out_tx_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_tx_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_dtr_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_dtr_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rts_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_rts_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_out1_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_out1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_out2_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_out2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_tx_callback(Object &&cb) { return m_out_tx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_dtr_callback(Object &&cb) { return m_out_dtr_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rts_callback(Object &&cb) { return m_out_rts_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_out1_callback(Object &&cb) { return m_out_out1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_out2_callback(Object &&cb) { return m_out_out2_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER( ins8250_w ); DECLARE_READ8_MEMBER( ins8250_r ); @@ -156,21 +156,21 @@ DECLARE_DEVICE_TYPE(NS16550, ns16550_device) ***************************************************************************/ #define MCFG_INS8250_OUT_TX_CB(_devcb) \ - devcb = &ins8250_uart_device::set_out_tx_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ins8250_uart_device &>(*device).set_out_tx_callback(DEVCB_##_devcb); #define MCFG_INS8250_OUT_DTR_CB(_devcb) \ - devcb = &ins8250_uart_device::set_out_dtr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ins8250_uart_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb); #define MCFG_INS8250_OUT_RTS_CB(_devcb) \ - devcb = &ins8250_uart_device::set_out_rts_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ins8250_uart_device &>(*device).set_out_rts_callback(DEVCB_##_devcb); #define MCFG_INS8250_OUT_INT_CB(_devcb) \ - devcb = &ins8250_uart_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ins8250_uart_device &>(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_INS8250_OUT_OUT1_CB(_devcb) \ - devcb = &ins8250_uart_device::set_out_out1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ins8250_uart_device &>(*device).set_out_out1_callback(DEVCB_##_devcb); #define MCFG_INS8250_OUT_OUT2_CB(_devcb) \ - devcb = &ins8250_uart_device::set_out_out2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ins8250_uart_device &>(*device).set_out_out2_callback(DEVCB_##_devcb); #endif // MAME_MACHINE_INS8250_H diff --git a/src/devices/machine/jvsdev.cpp b/src/devices/machine/jvsdev.cpp index f248e40d71d..20c3e538c5a 100644 --- a/src/devices/machine/jvsdev.cpp +++ b/src/devices/machine/jvsdev.cpp @@ -4,12 +4,6 @@ #include "jvsdev.h" #include "jvshost.h" -void jvs_device::static_set_jvs_host_tag(device_t &device, const char *jvs_host_tag) -{ - jvs_device &jvsdev = downcast<jvs_device &>(device); - jvsdev.jvs_host_tag = jvs_host_tag; -} - jvs_device::jvs_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock), jvs_outputs(0), jvs_address(0), jvs_reset_counter(0) { diff --git a/src/devices/machine/jvsdev.h b/src/devices/machine/jvsdev.h index 6fc47cf739a..5002d807252 100644 --- a/src/devices/machine/jvsdev.h +++ b/src/devices/machine/jvsdev.h @@ -8,14 +8,14 @@ #define MCFG_JVS_DEVICE_ADD(_tag, _type, _host) \ MCFG_DEVICE_ADD(_tag, _type, 0) \ - jvs_device::static_set_jvs_host_tag(*device, _host); + downcast<jvs_device &>(*device).set_jvs_host_tag(_host); class jvs_host; class jvs_device : public device_t { public: - static void static_set_jvs_host_tag(device_t &device, const char *jvs_host_tag); + void set_jvs_host_tag(const char *host_tag) { jvs_host_tag = host_tag; } void chain(jvs_device *dev); void message(uint8_t dest, const uint8_t *send_buffer, uint32_t send_size, uint8_t *recv_buffer, uint32_t &recv_size); diff --git a/src/devices/machine/k033906.h b/src/devices/machine/k033906.h index c8dea1471b4..4f46c7f7dc8 100644 --- a/src/devices/machine/k033906.h +++ b/src/devices/machine/k033906.h @@ -19,7 +19,7 @@ ***************************************************************************/ #define MCFG_K033906_VOODOO(_tag) \ - k033906_device::set_voodoo_tag(*device, "^" _tag); + downcast<k033906_device &>(*device).set_voodoo_tag("^" _tag); /*************************************************************************** TYPE DEFINITIONS @@ -34,7 +34,7 @@ public: // construction/destruction k033906_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_voodoo_tag(device_t &device, const char *tag) { downcast<k033906_device &>(device).m_voodoo.set_tag(tag); } + void set_voodoo_tag(const char *tag) { m_voodoo.set_tag(tag); } DECLARE_READ32_MEMBER( read ); DECLARE_WRITE32_MEMBER( write ); diff --git a/src/devices/machine/k053252.cpp b/src/devices/machine/k053252.cpp index f219c26f3cb..050a7faea90 100644 --- a/src/devices/machine/k053252.cpp +++ b/src/devices/machine/k053252.cpp @@ -249,10 +249,3 @@ WRITE8_MEMBER( k053252_device::write ) case 0x0f: m_int2_ack_cb(1); break; } } - - -void k053252_device::static_set_slave_screen(device_t &device, const char *tag) -{ - k053252_device &dev = downcast<k053252_device &>(device); - dev.m_slave_screen.set_tag(tag); -} diff --git a/src/devices/machine/k053252.h b/src/devices/machine/k053252.h index 725a8ae34d5..917fd5e96d5 100644 --- a/src/devices/machine/k053252.h +++ b/src/devices/machine/k053252.h @@ -11,25 +11,25 @@ #include "screen.h" #define MCFG_K053252_INT1_EN_CB(_devcb) \ - devcb = &k053252_device::set_int1_en_callback(*device, DEVCB_##_devcb); + devcb = &downcast<k053252_device &>(*device).set_int1_en_callback(DEVCB_##_devcb); #define MCFG_K053252_INT2_EN_CB(_devcb) \ - devcb = &k053252_device::set_int2_en_callback(*device, DEVCB_##_devcb); + devcb = &downcast<k053252_device &>(*device).set_int2_en_callback(DEVCB_##_devcb); #define MCFG_K053252_INT1_ACK_CB(_devcb) \ - devcb = &k053252_device::set_int1_ack_callback(*device, DEVCB_##_devcb); + devcb = &downcast<k053252_device &>(*device).set_int1_ack_callback(DEVCB_##_devcb); #define MCFG_K053252_INT2_ACK_CB(_devcb) \ - devcb = &k053252_device::set_int2_ack_callback(*device, DEVCB_##_devcb); + devcb = &downcast<k053252_device &>(*device).set_int2_ack_callback(DEVCB_##_devcb); #define MCFG_K053252_INT_TIME_CB(_devcb) \ - devcb = &k053252_device::set_int_time_callback(*device, DEVCB_##_devcb); + devcb = &downcast<k053252_device &>(*device).set_int_time_callback(DEVCB_##_devcb); #define MCFG_K053252_OFFSETS(_offsx, _offsy) \ - k053252_device::set_offsets(*device, _offsx, _offsy); + downcast<k053252_device &>(*device).set_offsets(_offsx, _offsy); #define MCFG_K053252_SET_SLAVE_SCREEN(_tag) \ - k053252_device::static_set_slave_screen(*device, "^" _tag); + downcast<k053252_device &>(*device).set_slave_screen("^" _tag); class k053252_device : public device_t, public device_video_interface @@ -37,19 +37,19 @@ class k053252_device : public device_t, public device_video_interface public: k053252_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_int1_en_callback(device_t &device, Object &&obj) { return downcast<k053252_device &>(device).m_int1_en_cb.set_callback(std::forward<Object>(obj)); } - template <class Object> static devcb_base &set_int2_en_callback(device_t &device, Object &&obj) { return downcast<k053252_device &>(device).m_int2_en_cb.set_callback(std::forward<Object>(obj)); } - template <class Object> static devcb_base &set_int1_ack_callback(device_t &device, Object &&obj) { return downcast<k053252_device &>(device).m_int1_ack_cb.set_callback(std::forward<Object>(obj)); } - template <class Object> static devcb_base &set_int2_ack_callback(device_t &device, Object &&obj) { return downcast<k053252_device &>(device).m_int2_ack_cb.set_callback(std::forward<Object>(obj)); } - template <class Object> static devcb_base &set_int_time_callback(device_t &device, Object &&obj) { return downcast<k053252_device &>(device).m_int_time_cb.set_callback(std::forward<Object>(obj)); } - static void set_offsets(device_t &device, int offsx, int offsy) { downcast<k053252_device &>(device).m_offsx = offsx; downcast<k053252_device &>(device).m_offsy = offsy; } + template <class Object> devcb_base &set_int1_en_callback(Object &&obj) { return m_int1_en_cb.set_callback(std::forward<Object>(obj)); } + template <class Object> devcb_base &set_int2_en_callback(Object &&obj) { return m_int2_en_cb.set_callback(std::forward<Object>(obj)); } + template <class Object> devcb_base &set_int1_ack_callback(Object &&obj) { return m_int1_ack_cb.set_callback(std::forward<Object>(obj)); } + template <class Object> devcb_base &set_int2_ack_callback(Object &&obj) { return m_int2_ack_cb.set_callback(std::forward<Object>(obj)); } + template <class Object> devcb_base &set_int_time_callback(Object &&obj) { return m_int_time_cb.set_callback(std::forward<Object>(obj)); } + void set_offsets(int offsx, int offsy) { m_offsx = offsx; m_offsy = offsy; } DECLARE_READ8_MEMBER( read ); // CCU registers DECLARE_WRITE8_MEMBER( write ); void res_change(); - static void static_set_slave_screen(device_t &device, const char *tag); + void set_slave_screen(const char *tag) { m_slave_screen.set_tag(tag); } protected: // device-level overrides diff --git a/src/devices/machine/k056230.h b/src/devices/machine/k056230.h index 9a6e4bbd061..98f1326541e 100644 --- a/src/devices/machine/k056230.h +++ b/src/devices/machine/k056230.h @@ -19,10 +19,10 @@ ***************************************************************************/ #define MCFG_K056230_CPU(_tag) \ - k056230_device::set_cpu_tag(*device, "^" _tag); + downcast<k056230_device &>(*device).set_cpu_tag("^" _tag); #define MCFG_K056230_HACK(_region) \ - k056230_device::set_thunderh_hack(*device, _region); + downcast<k056230_device &>(*device).set_thunderh_hack(_region); /*************************************************************************** @@ -37,8 +37,8 @@ public: // construction/destruction k056230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_cpu_tag(device_t &device, const char *tag) { downcast<k056230_device &>(device).m_cpu.set_tag(tag); } - static void set_thunderh_hack(device_t &device, int thunderh) { downcast<k056230_device &>(device).m_is_thunderh = thunderh; } + void set_cpu_tag(const char *tag) { m_cpu.set_tag(tag); } + void set_thunderh_hack(int thunderh) { m_is_thunderh = thunderh; } DECLARE_READ32_MEMBER(lanc_ram_r); DECLARE_WRITE32_MEMBER(lanc_ram_w); diff --git a/src/devices/machine/kb3600.h b/src/devices/machine/kb3600.h index 50a4095b516..14c738d9f22 100644 --- a/src/devices/machine/kb3600.h +++ b/src/devices/machine/kb3600.h @@ -64,31 +64,31 @@ //************************************************************************** #define MCFG_AY3600_MATRIX_X0(_cb) \ - devcb = &ay3600_device::set_x0_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_x0_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X1(_cb) \ - devcb = &ay3600_device::set_x1_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_x1_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X2(_cb) \ - devcb = &ay3600_device::set_x2_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_x2_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X3(_cb) \ - devcb = &ay3600_device::set_x3_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_x3_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X4(_cb) \ - devcb = &ay3600_device::set_x4_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_x4_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X5(_cb) \ - devcb = &ay3600_device::set_x5_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_x5_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X6(_cb) \ - devcb = &ay3600_device::set_x6_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_x6_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X7(_cb) \ - devcb = &ay3600_device::set_x7_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_x7_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X8(_cb) \ - devcb = &ay3600_device::set_x8_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_x8_cb(DEVCB_##_cb); #define MCFG_AY3600_SHIFT_CB(_cb) \ - devcb = &ay3600_device::set_shift_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_shift_cb(DEVCB_##_cb); #define MCFG_AY3600_CONTROL_CB(_cb) \ - devcb = &ay3600_device::set_control_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_control_cb(DEVCB_##_cb); #define MCFG_AY3600_DATA_READY_CB(_cb) \ - devcb = &ay3600_device::set_data_ready_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_data_ready_cb(DEVCB_##_cb); #define MCFG_AY3600_AKO_CB(_cb) \ - devcb = &ay3600_device::set_ako_cb(*device, DEVCB_##_cb); + devcb = &downcast<ay3600_device &>(*device).set_ako_cb(DEVCB_##_cb); //************************************************************************** // TYPE DEFINITIONS @@ -105,19 +105,19 @@ public: // public interface uint16_t b_r(); - template <class Object> static devcb_base &set_x0_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x0.set_callback(std::forward<Object>(rd)); } - template <class Object> static devcb_base &set_x1_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x1.set_callback(std::forward<Object>(rd)); } - template <class Object> static devcb_base &set_x2_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x2.set_callback(std::forward<Object>(rd)); } - template <class Object> static devcb_base &set_x3_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x3.set_callback(std::forward<Object>(rd)); } - template <class Object> static devcb_base &set_x4_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x4.set_callback(std::forward<Object>(rd)); } - template <class Object> static devcb_base &set_x5_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x5.set_callback(std::forward<Object>(rd)); } - template <class Object> static devcb_base &set_x6_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x6.set_callback(std::forward<Object>(rd)); } - template <class Object> static devcb_base &set_x7_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x7.set_callback(std::forward<Object>(rd)); } - template <class Object> static devcb_base &set_x8_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x8.set_callback(std::forward<Object>(rd)); } - template <class Object> static devcb_base &set_shift_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_shift.set_callback(std::forward<Object>(rd)); } - template <class Object> static devcb_base &set_control_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_control.set_callback(std::forward<Object>(rd)); } - template <class Object> static devcb_base &set_data_ready_cb(device_t &device, Object &&wr) { return downcast<ay3600_device &>(device).m_write_data_ready.set_callback(std::forward<Object>(wr)); } - template <class Object> static devcb_base &set_ako_cb(device_t &device, Object &&wr) { return downcast<ay3600_device &>(device).m_write_ako.set_callback(std::forward<Object>(wr)); } + template <class Object> devcb_base &set_x0_cb(Object &&rd) { return m_read_x0.set_callback(std::forward<Object>(rd)); } + template <class Object> devcb_base &set_x1_cb(Object &&rd) { return m_read_x1.set_callback(std::forward<Object>(rd)); } + template <class Object> devcb_base &set_x2_cb(Object &&rd) { return m_read_x2.set_callback(std::forward<Object>(rd)); } + template <class Object> devcb_base &set_x3_cb(Object &&rd) { return m_read_x3.set_callback(std::forward<Object>(rd)); } + template <class Object> devcb_base &set_x4_cb(Object &&rd) { return m_read_x4.set_callback(std::forward<Object>(rd)); } + template <class Object> devcb_base &set_x5_cb(Object &&rd) { return m_read_x5.set_callback(std::forward<Object>(rd)); } + template <class Object> devcb_base &set_x6_cb(Object &&rd) { return m_read_x6.set_callback(std::forward<Object>(rd)); } + template <class Object> devcb_base &set_x7_cb(Object &&rd) { return m_read_x7.set_callback(std::forward<Object>(rd)); } + template <class Object> devcb_base &set_x8_cb(Object &&rd) { return m_read_x8.set_callback(std::forward<Object>(rd)); } + template <class Object> devcb_base &set_shift_cb(Object &&rd) { return m_read_shift.set_callback(std::forward<Object>(rd)); } + template <class Object> devcb_base &set_control_cb(Object &&rd) { return m_read_control.set_callback(std::forward<Object>(rd)); } + template <class Object> devcb_base &set_data_ready_cb(Object &&wr) { return m_write_data_ready.set_callback(std::forward<Object>(wr)); } + template <class Object> devcb_base &set_ako_cb(Object &&wr) { return m_write_ako.set_callback(std::forward<Object>(wr)); } protected: // device-level overrides diff --git a/src/devices/machine/keyboard.h b/src/devices/machine/keyboard.h index a2ebd3e8672..661f8319ecf 100644 --- a/src/devices/machine/keyboard.h +++ b/src/devices/machine/keyboard.h @@ -14,7 +14,7 @@ #define KEYBOARDCB_DEVPUT(tag, cls, fnc) generic_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), (tag), ((cls *)nullptr)) #define MCFG_GENERIC_KEYBOARD_CB(cb) \ - generic_keyboard_device::set_keyboard_callback(*device, (KEYBOARDCB_##cb)); + downcast<generic_keyboard_device &>(*device).set_keyboard_callback((KEYBOARDCB_##cb)); @@ -90,7 +90,7 @@ public: device_t *owner, u32 clock); - template <class Object> static void set_keyboard_callback(device_t &device, Object &&cb) { downcast<generic_keyboard_device &>(device).m_keyboard_cb = std::forward<Object>(cb); } + template <class Object> void set_keyboard_callback(Object &&cb) { m_keyboard_cb = std::forward<Object>(cb); } virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/machine/kr2376.h b/src/devices/machine/kr2376.h index 6206e82ba2c..3b25d0c527c 100644 --- a/src/devices/machine/kr2376.h +++ b/src/devices/machine/kr2376.h @@ -36,7 +36,7 @@ #define MCFG_KR2376_STROBE_CALLBACK(_write) \ - devcb = &kr2376_device::set_strobe_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<kr2376_device &>(*device).set_strobe_wr_callback(DEVCB_##_write); class kr2376_device : public device_t { @@ -58,7 +58,7 @@ public: kr2376_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_strobe_wr_callback(device_t &device, Object &&cb) { return downcast<kr2376_device &>(device).m_write_strobe.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_strobe_wr_callback(Object &&cb) { return m_write_strobe.set_callback(std::forward<Object>(cb)); } /* keyboard data */ DECLARE_READ8_MEMBER( data_r ); diff --git a/src/devices/machine/laserdsc.cpp b/src/devices/machine/laserdsc.cpp index 72ac3d42ab4..301eb39b2d3 100644 --- a/src/devices/machine/laserdsc.cpp +++ b/src/devices/machine/laserdsc.cpp @@ -207,100 +207,6 @@ uint32_t laserdisc_device::screen_update(screen_device &screen, bitmap_rgb32 &bi } -//------------------------------------------------- -// static_set_get_disc - set the get disc -// delegate -//------------------------------------------------- - -void laserdisc_device::static_set_get_disc(device_t &device, get_disc_delegate &&callback) -{ - downcast<laserdisc_device &>(device).m_getdisc_callback = std::move(callback); -} - - -//------------------------------------------------- -// static_set_get_disc - set the audio interceptor -// delegate -//------------------------------------------------- - -void laserdisc_device::static_set_audio(device_t &device, audio_delegate &&callback) -{ - downcast<laserdisc_device &>(device).m_audio_callback = std::move(callback); -} - - -//------------------------------------------------- -// static_set_overlay - set the overlay parameters -//------------------------------------------------- - -void laserdisc_device::static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_ind16_delegate &&update) -{ - laserdisc_device &ld = downcast<laserdisc_device &>(device); - ld.m_overwidth = width; - ld.m_overheight = height; - ld.m_overclip.set(0, width - 1, 0, height - 1); - ld.m_overupdate_ind16 = std::move(update); - ld.m_overupdate_rgb32 = screen_update_rgb32_delegate(); -} - -void laserdisc_device::static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_rgb32_delegate &&update) -{ - laserdisc_device &ld = downcast<laserdisc_device &>(device); - ld.m_overwidth = width; - ld.m_overheight = height; - ld.m_overclip.set(0, width - 1, 0, height - 1); - ld.m_overupdate_ind16 = screen_update_ind16_delegate(); - ld.m_overupdate_rgb32 = std::move(update); -} - - -//------------------------------------------------- -// static_set_overlay - set the overlay visible -// memregion -//------------------------------------------------- - -void laserdisc_device::static_set_overlay_clip(device_t &device, int32_t minx, int32_t maxx, int32_t miny, int32_t maxy) -{ - downcast<laserdisc_device &>(device).m_overclip.set(minx, maxx, miny, maxy); -} - - -//------------------------------------------------- -// static_set_overlay_position - set the overlay -// position parameters -//------------------------------------------------- - -void laserdisc_device::static_set_overlay_position(device_t &device, float posx, float posy) -{ - laserdisc_device &ld = downcast<laserdisc_device &>(device); - ld.m_orig_config.m_overposx = ld.m_overposx = posx; - ld.m_orig_config.m_overposy = ld.m_overposy = posy; -} - - -//------------------------------------------------- -// static_set_overlay_scale - set the overlay -// scale parameters -//------------------------------------------------- - -void laserdisc_device::static_set_overlay_scale(device_t &device, float scalex, float scaley) -{ - laserdisc_device &ld = downcast<laserdisc_device &>(device); - ld.m_orig_config.m_overscalex = ld.m_overscalex = scalex; - ld.m_orig_config.m_overscaley = ld.m_overscaley = scaley; - -} - -//------------------------------------------------- -// static_set_overlay_palette - set the screen palette -// configuration -//------------------------------------------------- - -void laserdisc_device::static_set_overlay_palette(device_t &device, const char *tag) -{ - downcast<laserdisc_device &>(device).m_overlay_palette.set_tag(tag); -} - //************************************************************************** // DEVICE INTERFACE //************************************************************************** diff --git a/src/devices/machine/laserdsc.h b/src/devices/machine/laserdsc.h index e2f8f9ebd41..157009f865d 100644 --- a/src/devices/machine/laserdsc.h +++ b/src/devices/machine/laserdsc.h @@ -59,32 +59,32 @@ enum laserdisc_field_code //************************************************************************** #define MCFG_LASERDISC_GET_DISC(_func) \ - laserdisc_device::static_set_get_disc(*device, _func); + downcast<laserdisc_device &>(*device).set_get_disc(_func); #define MCFG_LASERDISC_AUDIO(_func) \ - laserdisc_device::static_set_audio(*device, _func); + downcast<laserdisc_device &>(*device).set_audio(_func); #define MCFG_LASERDISC_SCREEN(_tag) \ - laserdisc_device::static_set_screen(*device, _tag); + downcast<laserdisc_device &>(*device).set_screen(_tag); #define MCFG_LASERDISC_OVERLAY_STATIC(_width, _height, _func) \ - laserdisc_device::static_set_overlay(*device, _width, _height, screen_update_delegate_smart(&screen_update_##_func, "screen_update_" #_func)); + downcast<laserdisc_device &>(*device).set_overlay(_width, _height, screen_update_delegate_smart(&screen_update_##_func, "screen_update_" #_func)); #define MCFG_LASERDISC_OVERLAY_DRIVER(_width, _height, _class, _method) \ - laserdisc_device::static_set_overlay(*device, _width, _height, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, nullptr)); + downcast<laserdisc_device &>(*device).set_overlay(_width, _height, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, nullptr)); #define MCFG_LASERDISC_OVERLAY_DEVICE(_width, _height, _device, _class, _method) \ - laserdisc_device::static_set_overlay(*device, _width, _height, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, _device)); + downcast<laserdisc_device &>(*device).set_overlay(_width, _height, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, _device)); #define MCFG_LASERDISC_OVERLAY_CLIP(_minx, _maxx, _miny, _maxy) \ - laserdisc_device::static_set_overlay_clip(*device, _minx, _maxx, _miny, _maxy); + downcast<laserdisc_device &>(*device).set_overlay_clip(_minx, _maxx, _miny, _maxy); #define MCFG_LASERDISC_OVERLAY_POSITION(_posx, _posy) \ - laserdisc_device::static_set_overlay_position(*device, _posx, _posy); + downcast<laserdisc_device &>(*device).set_overlay_position(_posx, _posy); #define MCFG_LASERDISC_OVERLAY_SCALE(_scalex, _scaley) \ - laserdisc_device::static_set_overlay_scale(*device, _scalex, _scaley); + downcast<laserdisc_device &>(*device).set_overlay_scale(_scalex, _scaley); #define MCFG_LASERDISC_OVERLAY_PALETTE(_palette_tag) \ - laserdisc_device::static_set_overlay_palette(*device, "^" _palette_tag); + downcast<laserdisc_device &>(*device).set_overlay_palette("^" _palette_tag); // use these to add laserdisc screens with proper video update parameters // TODO: actually move these SCREEN_RAW_PARAMS to a common screen info header // TODO: someday we'll kill the pixel clock hack ... #define MCFG_LASERDISC_SCREEN_ADD_NTSC(_tag, _ldtag) \ MCFG_DEVICE_MODIFY(_ldtag) \ - laserdisc_device::static_set_screen(*device, _tag); \ + downcast<laserdisc_device &>(*device).set_screen(_tag); \ MCFG_SCREEN_ADD(_tag, RASTER) \ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_SELF_RENDER) \ MCFG_SCREEN_RAW_PARAMS(XTAL(14'318'181)*2, 910, 0, 704, 525, 44, 524) \ @@ -92,7 +92,7 @@ enum laserdisc_field_code #define MCFG_LASERDISC_SCREEN_ADD_PAL(_tag, _ldtag) \ MCFG_DEVICE_MODIFY(_ldtag) \ - laserdisc_device::static_set_screen(*device, _tag); \ + downcast<laserdisc_device &>(*device).set_screen(_tag); \ MCFG_SCREEN_ADD(_tag, RASTER) \ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_SELF_RENDER) \ MCFG_SCREEN_RAW_PARAMS(XTAL(17'734'470)*2, 1135, 0, 768, 625, 48, 624) \ @@ -162,15 +162,37 @@ public: void get_overlay_config(laserdisc_overlay_config &config) { config = static_cast<laserdisc_overlay_config &>(*this); } void set_overlay_config(const laserdisc_overlay_config &config) { static_cast<laserdisc_overlay_config &>(*this) = config; } - // static configuration helpers - static void static_set_get_disc(device_t &device, get_disc_delegate &&callback); - static void static_set_audio(device_t &device, audio_delegate &&callback); - static void static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_ind16_delegate &&update); - static void static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_rgb32_delegate &&update); - static void static_set_overlay_clip(device_t &device, int32_t minx, int32_t maxx, int32_t miny, int32_t maxy); - static void static_set_overlay_position(device_t &device, float posx, float posy); - static void static_set_overlay_scale(device_t &device, float scalex, float scaley); - static void static_set_overlay_palette(device_t &device, const char *tag); + // configuration helpers + void set_get_disc(get_disc_delegate &&callback) { m_getdisc_callback = std::move(callback); } + void set_audio(audio_delegate &&callback) { m_audio_callback = std::move(callback); } + void set_overlay(uint32_t width, uint32_t height, screen_update_ind16_delegate &&update) + { + m_overwidth = width; + m_overheight = height; + m_overclip.set(0, width - 1, 0, height - 1); + m_overupdate_ind16 = std::move(update); + m_overupdate_rgb32 = screen_update_rgb32_delegate(); + } + void set_overlay(uint32_t width, uint32_t height, screen_update_rgb32_delegate &&update) + { + m_overwidth = width; + m_overheight = height; + m_overclip.set(0, width - 1, 0, height - 1); + m_overupdate_ind16 = screen_update_ind16_delegate(); + m_overupdate_rgb32 = std::move(update); + } + void set_overlay_clip(int32_t minx, int32_t maxx, int32_t miny, int32_t maxy) { m_overclip.set(minx, maxx, miny, maxy); } + void set_overlay_position(float posx, float posy) + { + m_orig_config.m_overposx = m_overposx = posx; + m_orig_config.m_overposy = m_overposy = posy; + } + void set_overlay_scale(float scalex, float scaley) + { + m_orig_config.m_overscalex = m_overscalex = scalex; + m_orig_config.m_overscaley = m_overscaley = scaley; + } + void set_overlay_palette(const char *tag) { m_overlay_palette.set_tag(tag); } protected: // timer IDs diff --git a/src/devices/machine/latch.h b/src/devices/machine/latch.h index 8c93a40f8b0..edc87eefd1c 100644 --- a/src/devices/machine/latch.h +++ b/src/devices/machine/latch.h @@ -7,36 +7,35 @@ #define MCFG_OUTPUT_LATCH_BIT0_HANDLER(_devcb) \ - devcb = &output_latch_device::set_bit_handler<0>(*device, DEVCB_##_devcb); + devcb = &downcast<output_latch_device &>(*device).set_bit_handler<0>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT1_HANDLER(_devcb) \ - devcb = &output_latch_device::set_bit_handler<1>(*device, DEVCB_##_devcb); + devcb = &downcast<output_latch_device &>(*device).set_bit_handler<1>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT2_HANDLER(_devcb) \ - devcb = &output_latch_device::set_bit_handler<2>(*device, DEVCB_##_devcb); + devcb = &downcast<output_latch_device &>(*device).set_bit_handler<2>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT3_HANDLER(_devcb) \ - devcb = &output_latch_device::set_bit_handler<3>(*device, DEVCB_##_devcb); + devcb = &downcast<output_latch_device &>(*device).set_bit_handler<3>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT4_HANDLER(_devcb) \ - devcb = &output_latch_device::set_bit_handler<4>(*device, DEVCB_##_devcb); + devcb = &downcast<output_latch_device &>(*device).set_bit_handler<4>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT5_HANDLER(_devcb) \ - devcb = &output_latch_device::set_bit_handler<5>(*device, DEVCB_##_devcb); + devcb = &downcast<output_latch_device &>(*device).set_bit_handler<5>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT6_HANDLER(_devcb) \ - devcb = &output_latch_device::set_bit_handler<6>(*device, DEVCB_##_devcb); + devcb = &downcast<output_latch_device &>(*device).set_bit_handler<6>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT7_HANDLER(_devcb) \ - devcb = &output_latch_device::set_bit_handler<7>(*device, DEVCB_##_devcb); + devcb = &downcast<output_latch_device &>(*device).set_bit_handler<7>(DEVCB_##_devcb); class output_latch_device : public device_t { public: output_latch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <unsigned Bit, class Object> static devcb_base &set_bit_handler(device_t &device, Object &&cb) - { return downcast<output_latch_device &>(device).m_bit_handlers[Bit].set_callback(std::forward<Object>(cb)); } + template <unsigned Bit, class Object> devcb_base &set_bit_handler(Object &&cb) { return m_bit_handlers[Bit].set_callback(std::forward<Object>(cb)); } void write(uint8_t data); DECLARE_WRITE8_MEMBER(write) { write(data); } diff --git a/src/devices/machine/latch8.h b/src/devices/machine/latch8.h index 6acb1b54903..e7d3e0bb006 100644 --- a/src/devices/machine/latch8.h +++ b/src/devices/machine/latch8.h @@ -74,13 +74,13 @@ public: DECLARE_WRITE8_MEMBER( bit6_w ); DECLARE_WRITE8_MEMBER( bit7_w ); - static void set_maskout(device_t &device, uint32_t maskout) { downcast<latch8_device &>(device).m_maskout = maskout; } - static void set_xorvalue(device_t &device, uint32_t xorvalue) { downcast<latch8_device &>(device).m_xorvalue = xorvalue; } - static void set_nosync(device_t &device, uint32_t nosync) { downcast<latch8_device &>(device).m_nosync = nosync; } + void set_maskout(uint32_t maskout) { m_maskout = maskout; } + void set_xorvalue(uint32_t xorvalue) { m_xorvalue = xorvalue; } + void set_nosync(uint32_t nosync) { m_nosync = nosync; } - template <unsigned N, class Object> static devcb_base &set_write_cb(device_t &device, Object &&cb) { return downcast<latch8_device &>(device).m_write_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_write_cb(Object &&cb) { return m_write_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_read_cb(device_t &device, Object &&cb) { return downcast<latch8_device &>(device).m_read_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_read_cb(Object &&cb) { return m_read_cb[N].set_callback(std::forward<Object>(cb)); } protected: // device-level overrides @@ -119,65 +119,65 @@ DECLARE_DEVICE_TYPE(LATCH8, latch8_device) /* Bit mask specifying bits to be masked *out* */ #define MCFG_LATCH8_MASKOUT(_maskout) \ - latch8_device::set_maskout(*device, _maskout); + downcast<latch8_device &>(*device).set_maskout(_maskout); /* Bit mask specifying bits to be inverted */ #define MCFG_LATCH8_INVERT(_xor) \ - latch8_device::set_xorvalue(*device, _xor); + downcast<latch8_device &>(*device).set_xorvalue(_xor); /* Bit mask specifying bits not needing cpu synchronization. */ #define MCFG_LATCH8_NOSYNC(_nosync) \ - latch8_device::set_nosync(*device, _nosync); + downcast<latch8_device &>(*device).set_nosync(_nosync); /* Write bit to discrete node */ #define MCFG_LATCH8_WRITE_0(_devcb) \ - devcb = &latch8_device::set_write_cb<0>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_write_cb<0>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_1(_devcb) \ - devcb = &latch8_device::set_write_cb<1>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_write_cb<1>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_2(_devcb) \ - devcb = &latch8_device::set_write_cb<2>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_write_cb<2>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_3(_devcb) \ - devcb = &latch8_device::set_write_cb<3>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_write_cb<3>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_4(_devcb) \ - devcb = &latch8_device::set_write_cb<4>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_write_cb<4>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_5(_devcb) \ - devcb = &latch8_device::set_write_cb<5>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_write_cb<5>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_6(_devcb) \ - devcb = &latch8_device::set_write_cb<6>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_write_cb<6>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_7(_devcb) \ - devcb = &latch8_device::set_write_cb<7>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_write_cb<7>(DEVCB_##_devcb); /* Upon read, replace bits by reading from another device handler */ #define MCFG_LATCH8_READ_0(_devcb) \ - devcb = &latch8_device::set_read_cb<0>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_read_cb<0>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_1(_devcb) \ - devcb = &latch8_device::set_read_cb<1>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_read_cb<1>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_2(_devcb) \ - devcb = &latch8_device::set_read_cb<2>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_read_cb<2>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_3(_devcb) \ - devcb = &latch8_device::set_read_cb<3>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_read_cb<3>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_4(_devcb) \ - devcb = &latch8_device::set_read_cb<4>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_read_cb<4>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_5(_devcb) \ - devcb = &latch8_device::set_read_cb<5>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_read_cb<5>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_6(_devcb) \ - devcb = &latch8_device::set_read_cb<6>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_read_cb<6>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_7(_devcb) \ - devcb = &latch8_device::set_read_cb<7>(*device, DEVCB_##_devcb); + devcb = &downcast<latch8_device &>(*device).set_read_cb<7>(DEVCB_##_devcb); #endif // MAME_MACHINE_LATCH8_H diff --git a/src/devices/machine/legscsi.h b/src/devices/machine/legscsi.h index cf6482f0067..d00cdd9ef38 100644 --- a/src/devices/machine/legscsi.h +++ b/src/devices/machine/legscsi.h @@ -8,12 +8,12 @@ #include "bus/scsi/scsihle.h" #define MCFG_LEGACY_SCSI_PORT(_tag) \ - legacy_scsi_host_adapter::set_scsi_port(*device, "^" _tag); + downcast<legacy_scsi_host_adapter &>(*device).set_scsi_port("^" _tag); class legacy_scsi_host_adapter : public device_t { public: - static void set_scsi_port(device_t &device, const char *tag) { downcast<legacy_scsi_host_adapter &>(device).m_scsi_port.set_tag(tag); } + void set_scsi_port(const char *tag) { m_scsi_port.set_tag(tag); } protected: legacy_scsi_host_adapter(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/machine/lh5810.h b/src/devices/machine/lh5810.h index 8e105a01f2e..51b288be8e3 100644 --- a/src/devices/machine/lh5810.h +++ b/src/devices/machine/lh5810.h @@ -17,22 +17,22 @@ //************************************************************************* #define MCFG_LH5810_PORTA_R_CB(_devcb) \ - devcb = &lh5810_device::set_porta_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<lh5810_device &>(*device).set_porta_r_callback(DEVCB_##_devcb); #define MCFG_LH5810_PORTA_W_CB(_devcb) \ - devcb = &lh5810_device::set_porta_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<lh5810_device &>(*device).set_porta_w_callback(DEVCB_##_devcb); #define MCFG_LH5810_PORTB_R_CB(_devcb) \ - devcb = &lh5810_device::set_portb_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<lh5810_device &>(*device).set_portb_r_callback(DEVCB_##_devcb); #define MCFG_LH5810_PORTB_W_CB(_devcb) \ - devcb = &lh5810_device::set_portb_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<lh5810_device &>(*device).set_portb_w_callback(DEVCB_##_devcb); #define MCFG_LH5810_PORTC_W_CB(_devcb) \ - devcb = &lh5810_device::set_portc_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<lh5810_device &>(*device).set_portc_w_callback(DEVCB_##_devcb); #define MCFG_LH5810_OUT_INT_CB(_devcb) \ - devcb = &lh5810_device::set_out_int_callback(*device, DEVCB_##_devcb); //currently unused + devcb = &downcast<lh5810_device &>(*device).set_out_int_callback(DEVCB_##_devcb); //currently unused @@ -48,12 +48,12 @@ public: // construction/destruction lh5810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_porta_r_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_porta_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porta_w_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_porta_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portb_r_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_portb_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portb_w_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_portb_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portc_w_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_portc_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porta_r_callback(Object &&cb) { return m_porta_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porta_w_callback(Object &&cb) { return m_porta_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portb_r_callback(Object &&cb) { return m_portb_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portb_w_callback(Object &&cb) { return m_portb_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portc_w_callback(Object &&cb) { return m_portc_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( data_r ); DECLARE_WRITE8_MEMBER( data_w ); diff --git a/src/devices/machine/mb8421.h b/src/devices/machine/mb8421.h index 2d6a31ae85c..705e4c0c1e7 100644 --- a/src/devices/machine/mb8421.h +++ b/src/devices/machine/mb8421.h @@ -20,10 +20,10 @@ // note: INT pins are only available on MB84x1 // INTL is for the CPU on the left side, INTR for the one on the right #define MCFG_MB8421_INTL_HANDLER(_devcb) \ - devcb = &mb8421_master_device::set_intl_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mb8421_master_device &>(*device).set_intl_handler(DEVCB_##_devcb); #define MCFG_MB8421_INTR_HANDLER(_devcb) \ - devcb = &mb8421_master_device::set_intr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mb8421_master_device &>(*device).set_intr_handler(DEVCB_##_devcb); //************************************************************************** @@ -35,9 +35,9 @@ class mb8421_master_device : public device_t { public: - // static configuration helpers - template <class Object> static devcb_base &set_intl_handler(device_t &device, Object &&cb) { return downcast<mb8421_master_device &>(device).m_intl_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_intr_handler(device_t &device, Object &&cb) { return downcast<mb8421_master_device &>(device).m_intr_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_intl_handler(Object &&cb) { return m_intl_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intr_handler(Object &&cb) { return m_intr_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ_LINE_MEMBER(busy_r) { return 0; } // _BUSY pin - not emulated diff --git a/src/devices/machine/mb87078.h b/src/devices/machine/mb87078.h index a82225ebc23..bb7700bbfcf 100644 --- a/src/devices/machine/mb87078.h +++ b/src/devices/machine/mb87078.h @@ -18,7 +18,7 @@ ***************************************************************************/ #define MCFG_MB87078_GAIN_CHANGED_CB(_devcb) \ - devcb = &mb87078_device::set_gain_changed_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb87078_device &>(*device).set_gain_changed_callback(DEVCB_##_devcb); /*************************************************************************** TYPE DEFINITIONS @@ -29,7 +29,7 @@ class mb87078_device : public device_t public: mb87078_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_gain_changed_callback(device_t &device, Object &&cb) { return downcast<mb87078_device &>(device).m_gain_changed_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gain_changed_callback(Object &&cb) { return m_gain_changed_cb.set_callback(std::forward<Object>(cb)); } void data_w(int data, int dsel); void reset_comp_w(int level); diff --git a/src/devices/machine/mb8795.h b/src/devices/machine/mb8795.h index 3f0d9efa466..018ef6ef1e6 100644 --- a/src/devices/machine/mb8795.h +++ b/src/devices/machine/mb8795.h @@ -9,16 +9,16 @@ downcast<mb8795_device *>(device)->set_drq_cb(_tx_drq, _rx_drq); #define MCFG_MB8795_TX_IRQ_CALLBACK(_write) \ - devcb = &mb8795_device::set_tx_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mb8795_device &>(*device).set_tx_irq_wr_callback(DEVCB_##_write); #define MCFG_MB8795_RX_IRQ_CALLBACK(_write) \ - devcb = &mb8795_device::set_rx_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mb8795_device &>(*device).set_rx_irq_wr_callback(DEVCB_##_write); #define MCFG_MB8795_TX_DRQ_CALLBACK(_write) \ - devcb = &mb8795_device::set_tx_drq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mb8795_device &>(*device).set_tx_drq_wr_callback(DEVCB_##_write); #define MCFG_MB8795_RX_DRQ_CALLBACK(_write) \ - devcb = &mb8795_device::set_rx_drq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mb8795_device &>(*device).set_rx_drq_wr_callback(DEVCB_##_write); class mb8795_device : public device_t, public device_network_interface @@ -26,10 +26,10 @@ class mb8795_device : public device_t, public: mb8795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_tx_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).irq_tx_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rx_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).irq_rx_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tx_drq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).drq_tx_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rx_drq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).drq_rx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tx_irq_wr_callback(Object &&cb) { return irq_tx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rx_irq_wr_callback(Object &&cb) { return irq_rx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tx_drq_wr_callback(Object &&cb) { return drq_tx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rx_drq_wr_callback(Object &&cb) { return drq_rx_cb.set_callback(std::forward<Object>(cb)); } void tx_dma_w(uint8_t data, bool eof); void rx_dma_r(uint8_t &data, bool &eof); diff --git a/src/devices/machine/mb89352.h b/src/devices/machine/mb89352.h index 8a520281241..b30b1601fd0 100644 --- a/src/devices/machine/mb89352.h +++ b/src/devices/machine/mb89352.h @@ -12,10 +12,10 @@ #include "legscsi.h" #define MCFG_MB89352A_IRQ_CB(_devcb) \ - devcb = &mb89352_device::set_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89352_device &>(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_MB89352A_DRQ_CB(_devcb) \ - devcb = &mb89352_device::set_drq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89352_device &>(*device).set_drq_callback(DEVCB_##_devcb); class mb89352_device : public legacy_scsi_host_adapter { @@ -23,8 +23,8 @@ public: // construction/destruction mb89352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<mb89352_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_callback(device_t &device, Object &&cb) { return downcast<mb89352_device &>(device).m_drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq_callback(Object &&cb) { return m_drq_cb.set_callback(std::forward<Object>(cb)); } // any publically accessible interfaces needed for runtime DECLARE_READ8_MEMBER( mb89352_r ); diff --git a/src/devices/machine/mb89363b.h b/src/devices/machine/mb89363b.h index 32e0b9177fd..2aaad46c28e 100644 --- a/src/devices/machine/mb89363b.h +++ b/src/devices/machine/mb89363b.h @@ -24,41 +24,41 @@ DECLARE_DEVICE_TYPE(MB89363B, mb89363b_device) #define MCFG_MB89363B_IN_PORTA_CB(_devcb) \ - devcb = &mb89363b_device::set_in_a_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_in_a_pa_callback(DEVCB_##_devcb); #define MCFG_MB89363B_IN_PORTB_CB(_devcb) \ - devcb = &mb89363b_device::set_in_a_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_in_a_pb_callback(DEVCB_##_devcb); #define MCFG_MB89363B_IN_PORTC_CB(_devcb) \ - devcb = &mb89363b_device::set_in_a_pc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_in_a_pc_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTA_CB(_devcb) \ - devcb = &mb89363b_device::set_out_a_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_out_a_pa_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTB_CB(_devcb) \ - devcb = &mb89363b_device::set_out_a_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_out_a_pb_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTC_CB(_devcb) \ - devcb = &mb89363b_device::set_out_a_pc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_out_a_pc_callback(DEVCB_##_devcb); #define MCFG_MB89363B_IN_PORTD_CB(_devcb) \ - devcb = &mb89363b_device::set_in_b_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_in_b_pa_callback(DEVCB_##_devcb); #define MCFG_MB89363B_IN_PORTE_CB(_devcb) \ - devcb = &mb89363b_device::set_in_b_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_in_b_pb_callback(DEVCB_##_devcb); #define MCFG_MB89363B_IN_PORTF_CB(_devcb) \ - devcb = &mb89363b_device::set_in_b_pc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_in_b_pc_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTD_CB(_devcb) \ - devcb = &mb89363b_device::set_out_b_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_out_b_pa_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTE_CB(_devcb) \ - devcb = &mb89363b_device::set_out_b_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_out_b_pb_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTF_CB(_devcb) \ - devcb = &mb89363b_device::set_out_b_pc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb89363b_device &>(*device).set_out_b_pc_callback(DEVCB_##_devcb); @@ -71,19 +71,19 @@ public: DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); - template <class Object> static devcb_base &set_in_a_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_a_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_a_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_a_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_a_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_a_pc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_a_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_a_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_a_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_a_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_a_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_a_pc_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_in_b_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_b_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_b_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_b_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_b_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_b_pc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_b_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_b_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_b_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_b_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_b_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_b_pc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_a_pa_callback(Object &&cb) { return m_in_a_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_a_pb_callback(Object &&cb) { return m_in_a_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_a_pc_callback(Object &&cb) { return m_in_a_pc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_a_pa_callback(Object &&cb) { return m_out_a_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_a_pb_callback(Object &&cb) { return m_out_a_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_a_pc_callback(Object &&cb) { return m_out_a_pc_cb.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_in_b_pa_callback(Object &&cb) { return m_in_b_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_b_pb_callback(Object &&cb) { return m_in_b_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_b_pc_callback(Object &&cb) { return m_in_b_pc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_b_pa_callback(Object &&cb) { return m_out_b_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_b_pb_callback(Object &&cb) { return m_out_b_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_b_pc_callback(Object &&cb) { return m_out_b_pc_cb.set_callback(std::forward<Object>(cb)); } protected: virtual void device_add_mconfig(machine_config &config) override; diff --git a/src/devices/machine/mc14411.h b/src/devices/machine/mc14411.h index 772be8370b4..c206b8df917 100644 --- a/src/devices/machine/mc14411.h +++ b/src/devices/machine/mc14411.h @@ -33,22 +33,22 @@ #define MCFG_MC14411_ADD(_tag, _clock) MCFG_DEVICE_ADD(_tag, MC14411, _clock) -#define MCFG_MC14411_F1_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 0, DEVCB_##_devcb); -#define MCFG_MC14411_F2_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 1, DEVCB_##_devcb); -#define MCFG_MC14411_F3_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 2, DEVCB_##_devcb); -#define MCFG_MC14411_F4_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 3, DEVCB_##_devcb); -#define MCFG_MC14411_F5_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 4, DEVCB_##_devcb); -#define MCFG_MC14411_F6_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 5, DEVCB_##_devcb); -#define MCFG_MC14411_F7_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 6, DEVCB_##_devcb); -#define MCFG_MC14411_F8_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 7, DEVCB_##_devcb); -#define MCFG_MC14411_F9_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 8, DEVCB_##_devcb); -#define MCFG_MC14411_F10_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 9, DEVCB_##_devcb); -#define MCFG_MC14411_F11_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 10, DEVCB_##_devcb); -#define MCFG_MC14411_F12_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 11, DEVCB_##_devcb); -#define MCFG_MC14411_F13_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 12, DEVCB_##_devcb); -#define MCFG_MC14411_F14_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 13, DEVCB_##_devcb); -#define MCFG_MC14411_F15_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 14, DEVCB_##_devcb); -#define MCFG_MC14411_F16_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 15, DEVCB_##_devcb); +#define MCFG_MC14411_F1_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 0, DEVCB_##_devcb); +#define MCFG_MC14411_F2_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 1, DEVCB_##_devcb); +#define MCFG_MC14411_F3_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 2, DEVCB_##_devcb); +#define MCFG_MC14411_F4_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 3, DEVCB_##_devcb); +#define MCFG_MC14411_F5_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 4, DEVCB_##_devcb); +#define MCFG_MC14411_F6_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 5, DEVCB_##_devcb); +#define MCFG_MC14411_F7_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 6, DEVCB_##_devcb); +#define MCFG_MC14411_F8_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 7, DEVCB_##_devcb); +#define MCFG_MC14411_F9_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 8, DEVCB_##_devcb); +#define MCFG_MC14411_F10_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 9, DEVCB_##_devcb); +#define MCFG_MC14411_F11_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(10, DEVCB_##_devcb); +#define MCFG_MC14411_F12_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(11, DEVCB_##_devcb); +#define MCFG_MC14411_F13_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(12, DEVCB_##_devcb); +#define MCFG_MC14411_F14_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(13, DEVCB_##_devcb); +#define MCFG_MC14411_F15_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(14, DEVCB_##_devcb); +#define MCFG_MC14411_F16_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(15, DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -88,7 +88,7 @@ public: // construction/destruction mc14411_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_fx_cb(device_t &device, int index, Object &&cb) { return downcast<mc14411_device &>(device).m_out_fx_cbs[index].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_fx_cb(int index, Object &&cb) { return m_out_fx_cbs[index].set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(reset_w); DECLARE_WRITE8_MEMBER(rate_select_w); diff --git a/src/devices/machine/mc146818.h b/src/devices/machine/mc146818.h index 85256106abf..8275a8b060f 100644 --- a/src/devices/machine/mc146818.h +++ b/src/devices/machine/mc146818.h @@ -25,7 +25,7 @@ MCFG_DEVICE_ADD(_tag, MC146818, _xtal) #define MCFG_MC146818_IRQ_HANDLER(_irq) \ - devcb = &mc146818_device::set_irq_callback(*device, DEVCB_##_irq); + devcb = &downcast<mc146818_device &>(*device).set_irq_callback(DEVCB_##_irq); // The MC146818 doesn't have century support, but when syncing the date & time at startup we can optionally store the century. #define MCFG_MC146818_CENTURY_INDEX(_century_index) \ @@ -61,7 +61,7 @@ public: mc146818_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // callbacks - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<mc146818_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } void set_century_index(int century_index) { m_century_index = century_index; } void set_use_utc(bool use_utc) { m_use_utc = use_utc; } void set_binary(bool binary) { m_binary = binary; } diff --git a/src/devices/machine/mc2661.h b/src/devices/machine/mc2661.h index 3c798b62c8d..8e03672d483 100644 --- a/src/devices/machine/mc2661.h +++ b/src/devices/machine/mc2661.h @@ -36,34 +36,34 @@ ***************************************************************************/ #define MCFG_MC2661_RXC(_clock) \ - mc2661_device::static_set_rxc(*device, _clock); + downcast<mc2661_device &>(*device).set_rxc(_clock); #define MCFG_MC2661_TXC(_clock) \ - mc2661_device::static_set_txc(*device, _clock); + downcast<mc2661_device &>(*device).set_txc(_clock); #define MCFG_MC2661_TXD_HANDLER(_write) \ - devcb = &mc2661_device::set_txd_callback(*device, DEVCB_##_write); + devcb = &downcast<mc2661_device &>(*device).set_txd_callback(DEVCB_##_write); #define MCFG_MC2661_RXRDY_HANDLER(_write) \ - devcb = &mc2661_device::set_rxrdy_callback(*device, DEVCB_##_write); + devcb = &downcast<mc2661_device &>(*device).set_rxrdy_callback(DEVCB_##_write); #define MCFG_MC2661_TXRDY_HANDLER(_write) \ - devcb = &mc2661_device::set_txrdy_callback(*device, DEVCB_##_write); + devcb = &downcast<mc2661_device &>(*device).set_txrdy_callback(DEVCB_##_write); #define MCFG_MC2661_RTS_HANDLER(_write) \ - devcb = &mc2661_device::set_rts_callback(*device, DEVCB_##_write); + devcb = &downcast<mc2661_device &>(*device).set_rts_callback(DEVCB_##_write); #define MCFG_MC2661_DTR_HANDLER(_write) \ - devcb = &mc2661_device::set_dtr_callback(*device, DEVCB_##_write); + devcb = &downcast<mc2661_device &>(*device).set_dtr_callback(DEVCB_##_write); #define MCFG_MC2661_TXEMT_DSCHG_HANDLER(_write) \ - devcb = &mc2661_device::set_txemt_dschg_callback(*device, DEVCB_##_write); + devcb = &downcast<mc2661_device &>(*device).set_txemt_dschg_callback(DEVCB_##_write); #define MCFG_MC2661_BKDET_HANDLER(_write) \ - devcb = &mc2661_device::set_bkdet_callback(*device, DEVCB_##_write); + devcb = &downcast<mc2661_device &>(*device).set_bkdet_callback(DEVCB_##_write); #define MCFG_MC2661_XSYNC_HANDLER(_write) \ - devcb = &mc2661_device::set_xsync_callback(*device, DEVCB_##_write); + devcb = &downcast<mc2661_device &>(*device).set_xsync_callback(DEVCB_##_write); @@ -80,17 +80,17 @@ public: // construction/destruction mc2661_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_rxc(device_t &device, int clock) { downcast<mc2661_device &>(device).m_rxc = clock; } - static void static_set_txc(device_t &device, int clock) { downcast<mc2661_device &>(device).m_txc = clock; } - - template <class Object> static devcb_base &set_txd_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_txd.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rxrdy_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_rxrdy.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txrdy_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_txrdy.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rts_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_rts.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dtr_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_dtr.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txemt_dschg_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_txemt_dschg.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_bkdet_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_bkdet.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_xsync_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_xsync.set_callback(std::forward<Object>(cb)); } + void set_rxc(int clock) { m_rxc = clock; } + void set_txc(int clock) { m_txc = clock; } + + template <class Object> devcb_base &set_txd_callback(Object &&cb) { return m_write_txd.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxrdy_callback(Object &&cb) { return m_write_rxrdy.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txrdy_callback(Object &&cb) { return m_write_txrdy.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rts_callback(Object &&cb) { return m_write_rts.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dtr_callback(Object &&cb) { return m_write_dtr.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txemt_dschg_callback(Object &&cb) { return m_write_txemt_dschg.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_bkdet_callback(Object &&cb) { return m_write_bkdet.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_xsync_callback(Object &&cb) { return m_write_xsync.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/mc68328.h b/src/devices/machine/mc68328.h index 4b4892a64d3..36b756d5fe1 100644 --- a/src/devices/machine/mc68328.h +++ b/src/devices/machine/mc68328.h @@ -97,31 +97,31 @@ class mc68328_device : public device_t public: mc68328_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_cpu_tag(device_t &device, const char *tag) { downcast<mc68328_device &>(device).m_cpu.set_tag(tag); } - template <class Object> static devcb_base &set_out_port_a_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_a_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_port_b_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_b_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_port_c_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_c_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_port_d_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_d_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_port_e_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_e_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_port_f_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_f_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_port_g_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_g_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_port_j_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_j_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_port_k_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_k_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_port_m_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_m_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_port_a_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_a_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_port_b_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_b_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_port_c_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_c_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_port_d_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_d_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_port_e_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_e_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_port_f_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_f_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_port_g_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_g_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_port_j_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_j_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_port_k_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_k_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_port_m_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_m_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pwm_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_pwm_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_spim_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_spim_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_spim_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_spim_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_spim_xch_trigger_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_spim_xch_trigger_cb.set_callback(std::forward<Object>(cb)); } + void set_cpu_tag(const char *tag) { m_cpu.set_tag(tag); } + template <class Object> devcb_base &set_out_port_a_callback(Object &&cb) { return m_out_port_a_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_port_b_callback(Object &&cb) { return m_out_port_b_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_port_c_callback(Object &&cb) { return m_out_port_c_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_port_d_callback(Object &&cb) { return m_out_port_d_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_port_e_callback(Object &&cb) { return m_out_port_e_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_port_f_callback(Object &&cb) { return m_out_port_f_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_port_g_callback(Object &&cb) { return m_out_port_g_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_port_j_callback(Object &&cb) { return m_out_port_j_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_port_k_callback(Object &&cb) { return m_out_port_k_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_port_m_callback(Object &&cb) { return m_out_port_m_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_port_a_callback(Object &&cb) { return m_in_port_a_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_port_b_callback(Object &&cb) { return m_in_port_b_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_port_c_callback(Object &&cb) { return m_in_port_c_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_port_d_callback(Object &&cb) { return m_in_port_d_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_port_e_callback(Object &&cb) { return m_in_port_e_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_port_f_callback(Object &&cb) { return m_in_port_f_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_port_g_callback(Object &&cb) { return m_in_port_g_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_port_j_callback(Object &&cb) { return m_in_port_j_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_port_k_callback(Object &&cb) { return m_in_port_k_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_port_m_callback(Object &&cb) { return m_in_port_m_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pwm_callback(Object &&cb) { return m_out_pwm_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_spim_callback(Object &&cb) { return m_out_spim_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_spim_callback(Object &&cb) { return m_in_spim_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_spim_xch_trigger_callback(Object &&cb) { return m_spim_xch_trigger_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE16_MEMBER(write); @@ -386,79 +386,79 @@ private: DECLARE_DEVICE_TYPE(MC68328, mc68328_device) #define MCFG_MC68328_CPU(_tag) \ - mc68328_device::static_set_cpu_tag(*device, "^" _tag); + downcast<mc68328_device &>(*device).set_cpu_tag("^" _tag); #define MCFG_MC68328_OUT_PORT_A_CB(_devcb) \ - devcb = &mc68328_device::set_out_port_a_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_port_a_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_B_CB(_devcb) \ - devcb = &mc68328_device::set_out_port_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_port_b_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_C_CB(_devcb) \ - devcb = &mc68328_device::set_out_port_c_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_port_c_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_D_CB(_devcb) \ - devcb = &mc68328_device::set_out_port_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_port_d_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_E_CB(_devcb) \ - devcb = &mc68328_device::set_out_port_e_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_port_e_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_F_CB(_devcb) \ - devcb = &mc68328_device::set_out_port_f_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_port_f_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_G_CB(_devcb) \ - devcb = &mc68328_device::set_out_port_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_port_g_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_J_CB(_devcb) \ - devcb = &mc68328_device::set_out_port_j_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_port_j_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_K_CB(_devcb) \ - devcb = &mc68328_device::set_out_port_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_port_k_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_M_CB(_devcb) \ - devcb = &mc68328_device::set_out_port_m_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_port_m_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_A_CB(_devcb) \ - devcb = &mc68328_device::set_in_port_a_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_in_port_a_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_B_CB(_devcb) \ - devcb = &mc68328_device::set_in_port_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_in_port_b_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_C_CB(_devcb) \ - devcb = &mc68328_device::set_in_port_c_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_in_port_c_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_D_CB(_devcb) \ - devcb = &mc68328_device::set_in_port_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_in_port_d_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_E_CB(_devcb) \ - devcb = &mc68328_device::set_in_port_e_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_in_port_e_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_F_CB(_devcb) \ - devcb = &mc68328_device::set_in_port_f_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_in_port_f_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_G_CB(_devcb) \ - devcb = &mc68328_device::set_in_port_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_in_port_g_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_J_CB(_devcb) \ - devcb = &mc68328_device::set_in_port_j_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_in_port_j_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_K_CB(_devcb) \ - devcb = &mc68328_device::set_in_port_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_in_port_k_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_M_CB(_devcb) \ - devcb = &mc68328_device::set_in_port_m_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_in_port_m_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PWM_CB(_devcb) \ - devcb = &mc68328_device::set_out_pwm_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_pwm_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_SPIM_CB(_devcb) \ - devcb = &mc68328_device::set_out_spim_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_out_spim_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_SPIM_CB(_devcb) \ - devcb = &mc68328_device::set_in_spim_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_in_spim_callback(DEVCB_##_devcb); #define MCFG_MC68328_SPIM_XCH_TRIGGER_CB(_devcb) \ - devcb = &mc68328_device::set_spim_xch_trigger_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68328_device &>(*device).set_spim_xch_trigger_callback(DEVCB_##_devcb); #endif // MAME_MACHINE_MC68328_H diff --git a/src/devices/machine/mc6843.h b/src/devices/machine/mc6843.h index 820ac1aec93..ef5e457958a 100644 --- a/src/devices/machine/mc6843.h +++ b/src/devices/machine/mc6843.h @@ -16,14 +16,14 @@ #include "imagedev/flopdrv.h" #define MCFG_MC6843_IRQ_CALLBACK(_write) \ - devcb = &mc6843_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mc6843_device &>(*device).set_irq_wr_callback(DEVCB_##_write); class mc6843_device : public device_t { public: mc6843_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mc6843_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/mc6846.h b/src/devices/machine/mc6846.h index e35d08f7af8..676db3129f9 100644 --- a/src/devices/machine/mc6846.h +++ b/src/devices/machine/mc6846.h @@ -15,22 +15,22 @@ #define MCFG_MC6846_OUT_PORT_CB(_devcb) \ - devcb = &mc6846_device::set_out_port_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc6846_device &>(*device).set_out_port_callback(DEVCB_##_devcb); #define MCFG_MC6846_OUT_CP1_CB(_devcb) \ - devcb = &mc6846_device::set_out_cp1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc6846_device &>(*device).set_out_cp1_callback(DEVCB_##_devcb); #define MCFG_MC6846_OUT_CP2_CB(_devcb) \ - devcb = &mc6846_device::set_out_cp2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc6846_device &>(*device).set_out_cp2_callback(DEVCB_##_devcb); #define MCFG_MC6846_IN_PORT_CB(_devcb) \ - devcb = &mc6846_device::set_in_port_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc6846_device &>(*device).set_in_port_callback(DEVCB_##_devcb); #define MCFG_MC6846_OUT_CTO_CB(_devcb) \ - devcb = &mc6846_device::set_out_cto_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc6846_device &>(*device).set_out_cto_callback(DEVCB_##_devcb); #define MCFG_MC6846_IRQ_CB(_devcb) \ - devcb = &mc6846_device::set_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc6846_device &>(*device).set_irq_callback(DEVCB_##_devcb); class mc6846_device : public device_t @@ -38,12 +38,12 @@ class mc6846_device : public device_t public: mc6846_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_port_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_port_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_cp1_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_cp1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_cp2_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_cp2_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_port_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_in_port_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_cto_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_cto_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_port_callback(Object &&cb) { return m_out_port_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_cp1_callback(Object &&cb) { return m_out_cp1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_cp2_callback(Object &&cb) { return m_out_cp2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_port_callback(Object &&cb) { return m_in_port_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_cto_callback(Object &&cb) { return m_out_cto_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } /* interface to CPU via address/data bus*/ DECLARE_READ8_MEMBER(read); diff --git a/src/devices/machine/mc6852.h b/src/devices/machine/mc6852.h index 464ed55102a..3f32eb5ea5f 100644 --- a/src/devices/machine/mc6852.h +++ b/src/devices/machine/mc6852.h @@ -35,22 +35,22 @@ //************************************************************************** #define MCFG_MC6852_RX_CLOCK(_clock) \ - mc6852_device::set_rx_clock(*device, _clock); + downcast<mc6852_device &>(*device).set_rx_clock(_clock); #define MCFG_MC6852_TX_CLOCK(_clock) \ - mc6852_device::set_tx_clock(*device, _clock); + downcast<mc6852_device &>(*device).set_tx_clock(_clock); #define MCFG_MC6852_TX_DATA_CALLBACK(_write) \ - devcb = &mc6852_device::set_tx_data_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mc6852_device &>(*device).set_tx_data_wr_callback(DEVCB_##_write); #define MCFG_MC6852_IRQ_CALLBACK(_write) \ - devcb = &mc6852_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mc6852_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_MC6852_SM_DTR_CALLBACK(_write) \ - devcb = &mc6852_device::set_sm_dtr_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mc6852_device &>(*device).set_sm_dtr_wr_callback(DEVCB_##_write); #define MCFG_MC6852_TUF_CALLBACK(_write) \ - devcb = &mc6852_device::set_tuf_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mc6852_device &>(*device).set_tuf_wr_callback(DEVCB_##_write); @@ -67,12 +67,12 @@ public: // construction/destruction mc6852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_rx_clock(device_t &device, int clock) { downcast<mc6852_device &>(device).m_rx_clock = clock; } - static void set_tx_clock(device_t &device, int clock) { downcast<mc6852_device &>(device).m_tx_clock = clock; } - template <class Object> static devcb_base &set_tx_data_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_tx_data.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sm_dtr_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_sm_dtr.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_tuf_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_tuf.set_callback(std::forward<Object>(cb)); } + void set_rx_clock(int clock) { m_rx_clock = clock; } + void set_tx_clock(int clock) { m_tx_clock = clock; } + template <class Object> devcb_base &set_tx_data_wr_callback(Object &&cb) { return m_write_tx_data.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sm_dtr_wr_callback(Object &&cb) { return m_write_sm_dtr.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tuf_wr_callback(Object &&cb) { return m_write_tuf.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/mc6854.h b/src/devices/machine/mc6854.h index a1ae7d5801b..36548024bfd 100644 --- a/src/devices/machine/mc6854.h +++ b/src/devices/machine/mc6854.h @@ -18,19 +18,19 @@ #define MCFG_MC6854_OUT_IRQ_CB(_devcb) \ - devcb = &mc6854_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc6854_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_MC6854_OUT_TXD_CB(_devcb) \ - devcb = &mc6854_device::set_out_txd_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc6854_device &>(*device).set_out_txd_callback(DEVCB_##_devcb); #define MCFG_MC6854_OUT_FRAME_CB(_class, _method) \ - mc6854_device::set_out_frame_callback(*device, mc6854_device::out_frame_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<mc6854_device &>(*device).set_out_frame_callback(mc6854_device::out_frame_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_MC6854_OUT_RTS_CB(_devcb) \ - devcb = &mc6854_device::set_out_rts_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc6854_device &>(*device).set_out_rts_callback(DEVCB_##_devcb); #define MCFG_MC6854_OUT_DTR_CB(_devcb) \ - devcb = &mc6854_device::set_out_dtr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc6854_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb); class mc6854_device : public device_t @@ -42,11 +42,11 @@ public: mc6854_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_txd_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_txd_cb.set_callback(std::forward<Object>(cb)); } - static void set_out_frame_callback(device_t &device, out_frame_delegate &&callback) { downcast<mc6854_device &>(device).m_out_frame_cb = std::move(callback); } - template <class Object> static devcb_base &set_out_rts_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_rts_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_dtr_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_dtr_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_txd_callback(Object &&cb) { return m_out_txd_cb.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_out_frame_callback(Object &&cb) { m_out_frame_cb = std::forward<Object>(cb); } + template <class Object> devcb_base &set_out_rts_callback(Object &&cb) { return m_out_rts_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_dtr_callback(Object &&cb) { return m_out_dtr_cb.set_callback(std::forward<Object>(cb)); } /* interface to CPU via address/data bus*/ DECLARE_READ8_MEMBER( read ); diff --git a/src/devices/machine/mc68681.cpp b/src/devices/machine/mc68681.cpp index 015997b8db3..e311c0a7ac2 100644 --- a/src/devices/machine/mc68681.cpp +++ b/src/devices/machine/mc68681.cpp @@ -137,17 +137,16 @@ mc68340_duart_device::mc68340_duart_device(const machine_config &mconfig, const } //------------------------------------------------- -// static_set_clocks - configuration helper to set +// set_clocks - configuration helper to set // the external clocks //------------------------------------------------- -void duart_base_device::static_set_clocks(device_t &device, int clk3, int clk4, int clk5, int clk6) +void duart_base_device::set_clocks(int clk3, int clk4, int clk5, int clk6) { - duart_base_device &duart = downcast<duart_base_device &>(device); - duart.ip3clk = clk3; - duart.ip4clk = clk4; - duart.ip5clk = clk5; - duart.ip6clk = clk6; + ip3clk = clk3; + ip4clk = clk4; + ip5clk = clk5; + ip6clk = clk6; } /*------------------------------------------------- diff --git a/src/devices/machine/mc68681.h b/src/devices/machine/mc68681.h index e6e588ddb25..afcaed336aa 100644 --- a/src/devices/machine/mc68681.h +++ b/src/devices/machine/mc68681.h @@ -7,33 +7,33 @@ #define MCFG_MC68681_IRQ_CALLBACK(_cb) \ - devcb = &duart_base_device::set_irq_cb(*device, DEVCB_##_cb); + devcb = &downcast<duart_base_device &>(*device).set_irq_cb(DEVCB_##_cb); #define MCFG_MC68681_A_TX_CALLBACK(_cb) \ - devcb = &duart_base_device::set_a_tx_cb(*device, DEVCB_##_cb); + devcb = &downcast<duart_base_device &>(*device).set_a_tx_cb(DEVCB_##_cb); #define MCFG_MC68681_B_TX_CALLBACK(_cb) \ - devcb = &duart_base_device::set_b_tx_cb(*device, DEVCB_##_cb); + devcb = &downcast<duart_base_device &>(*device).set_b_tx_cb(DEVCB_##_cb); // deprecated: use ipX_w() instead #define MCFG_MC68681_INPORT_CALLBACK(_cb) \ - devcb = &duart_base_device::set_inport_cb(*device, DEVCB_##_cb); + devcb = &downcast<duart_base_device &>(*device).set_inport_cb(DEVCB_##_cb); #define MCFG_MC68681_OUTPORT_CALLBACK(_cb) \ - devcb = &duart_base_device::set_outport_cb(*device, DEVCB_##_cb); + devcb = &downcast<duart_base_device &>(*device).set_outport_cb(DEVCB_##_cb); #define MCFG_MC68681_SET_EXTERNAL_CLOCKS(_a, _b, _c, _d) \ - duart_base_device::static_set_clocks(*device, _a, _b, _c, _d); + downcast<duart_base_device &>(*device).set_clocks(_a, _b, _c, _d); // SC28C94 specific callbacks #define MCFG_SC28C94_ADD(_tag, _clock) \ MCFG_DEVICE_ADD(_tag, SC28C94, _clock) #define MCFG_SC28C94_C_TX_CALLBACK(_cb) \ - devcb = &sc28c94_device::set_c_tx_cb(*device, DEVCB_##_cb); + devcb = &downcast<sc28c94_device &>(*device).set_c_tx_cb(DEVCB_##_cb); #define MCFG_SC28C94_D_TX_CALLBACK(_cb) \ - devcb = &sc28c94_device::set_d_tx_cb(*device, DEVCB_##_cb); + devcb = &downcast<sc28c94_device &>(*device).set_d_tx_cb(DEVCB_##_cb); // MC68340SERIAL specific callbacks #define MCFG_MC68340DUART_ADD(_tag, _clock) \ @@ -120,9 +120,9 @@ public: optional_device<duart_channel> m_chanD; // inline configuration helpers - static void static_set_clocks(device_t &device, int clk3, int clk4, int clk5, int clk6); - static void static_set_clocks(device_t &device, const XTAL &clk3, const XTAL &clk4, const XTAL &clk5, const XTAL &clk6) { - static_set_clocks(device, clk3.value(), clk4.value(), clk5.value(), clk6.value()); + void set_clocks(int clk3, int clk4, int clk5, int clk6); + void set_clocks(const XTAL &clk3, const XTAL &clk4, const XTAL &clk5, const XTAL &clk6) { + set_clocks(clk3.value(), clk4.value(), clk5.value(), clk6.value()); } // API @@ -132,11 +132,11 @@ public: DECLARE_WRITE_LINE_MEMBER( rx_a_w ) { m_chanA->device_serial_interface::rx_w((uint8_t)state); } DECLARE_WRITE_LINE_MEMBER( rx_b_w ) { m_chanB->device_serial_interface::rx_w((uint8_t)state); } - template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&cb) { return downcast<duart_base_device &>(device).write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_a_tx_cb(device_t &device, Object &&cb) { return downcast<duart_base_device &>(device).write_a_tx.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_b_tx_cb(device_t &device, Object &&cb) { return downcast<duart_base_device &>(device).write_b_tx.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_inport_cb(device_t &device, Object &&cb) { return downcast<duart_base_device &>(device).read_inport.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_outport_cb(device_t &device, Object &&cb) { return downcast<duart_base_device &>(device).write_outport.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_cb(Object &&cb) { return write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_a_tx_cb(Object &&cb) { return write_a_tx.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_b_tx_cb(Object &&cb) { return write_b_tx.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_inport_cb(Object &&cb) { return read_inport.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_outport_cb(Object &&cb) { return write_outport.set_callback(std::forward<Object>(cb)); } // new-style push handlers for input port bits DECLARE_WRITE_LINE_MEMBER( ip0_w ); @@ -243,8 +243,8 @@ class sc28c94_device : public duart_base_device public: sc28c94_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_c_tx_cb(device_t &device, Object &&cb) { return downcast<sc28c94_device &>(device).write_c_tx.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d_tx_cb(device_t &device, Object &&cb) { return downcast<sc28c94_device &>(device).write_d_tx.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_c_tx_cb(Object &&cb) { return write_c_tx.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_d_tx_cb(Object &&cb) { return write_d_tx.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( rx_c_w ) { m_chanC->device_serial_interface::rx_w((uint8_t)state); } DECLARE_WRITE_LINE_MEMBER( rx_d_w ) { m_chanD->device_serial_interface::rx_w((uint8_t)state); } diff --git a/src/devices/machine/mc68901.h b/src/devices/machine/mc68901.h index c4270b230e3..63a0c456e62 100644 --- a/src/devices/machine/mc68901.h +++ b/src/devices/machine/mc68901.h @@ -45,40 +45,40 @@ //************************************************************************** #define MCFG_MC68901_TIMER_CLOCK(_clk) \ - mc68901_device::set_timer_clock(*device, _clk); + downcast<mc68901_device &>(*device).set_timer_clock(_clk); #define MCFG_MC68901_RX_CLOCK(_clk) \ - mc68901_device::set_rx_clock(*device, _clk); + downcast<mc68901_device &>(*device).set_rx_clock(_clk); #define MCFG_MC68901_TX_CLOCK(_clk) \ - mc68901_device::set_tx_clock(*device, _clk); + downcast<mc68901_device &>(*device).set_tx_clock(_clk); #define MCFG_MC68901_OUT_IRQ_CB(_devcb) \ - devcb = &mc68901_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68901_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_GPIO_CB(_devcb) \ - devcb = &mc68901_device::set_out_gpio_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68901_device &>(*device).set_out_gpio_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_TAO_CB(_devcb) \ - devcb = &mc68901_device::set_out_tao_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68901_device &>(*device).set_out_tao_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_TBO_CB(_devcb) \ - devcb = &mc68901_device::set_out_tbo_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68901_device &>(*device).set_out_tbo_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_TCO_CB(_devcb) \ - devcb = &mc68901_device::set_out_tco_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68901_device &>(*device).set_out_tco_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_TDO_CB(_devcb) \ - devcb = &mc68901_device::set_out_tdo_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68901_device &>(*device).set_out_tdo_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_SO_CB(_devcb) \ - devcb = &mc68901_device::set_out_so_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68901_device &>(*device).set_out_so_callback(DEVCB_##_devcb); /*#define MCFG_MC68901_OUT_RR_CB(_devcb) \ - devcb = &mc68901_device::set_out_rr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mc68901_device &>(*device).set_out_rr_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_TR_CB(_devcb) \ - devcb = &mc68901_device::set_out_tr_callback(*device, DEVCB_##_devcb);*/ + devcb = &downcast<mc68901_device &>(*device).set_out_tr_callback(DEVCB_##_devcb);*/ //************************************************************************** @@ -95,21 +95,21 @@ public: // construction/destruction mc68901_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_timer_clock(device_t &device, int timer_clock) { downcast<mc68901_device &>(device).m_timer_clock = timer_clock; } - static void set_rx_clock(device_t &device, int rx_clock) { downcast<mc68901_device &>(device).m_rx_clock = rx_clock; } - static void set_tx_clock(device_t &device, int tx_clock) { downcast<mc68901_device &>(device).m_tx_clock = tx_clock; } - static void set_timer_clock(device_t &device, const XTAL &xtal) { set_timer_clock(device, xtal.value()); } - static void set_rx_clock(device_t &device, const XTAL &xtal) { set_rx_clock(device, xtal.value()); } - static void set_tx_clock(device_t &device, const XTAL &xtal) { set_tx_clock(device, xtal.value()); } - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_gpio_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_gpio_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_tao_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tao_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_tbo_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tbo_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_tco_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tco_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_tdo_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tdo_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_so_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_so_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_rr_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_rr_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_tr_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tr_cb.set_callback(std::forward<Object>(cb)); } + void set_timer_clock(int timer_clock) { m_timer_clock = timer_clock; } + void set_rx_clock(int rx_clock) { m_rx_clock = rx_clock; } + void set_tx_clock(int tx_clock) { m_tx_clock = tx_clock; } + void set_timer_clock(const XTAL &xtal) { set_timer_clock(xtal.value()); } + void set_rx_clock(const XTAL &xtal) { set_rx_clock(xtal.value()); } + void set_tx_clock(const XTAL &xtal) { set_tx_clock(xtal.value()); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_gpio_callback(Object &&cb) { return m_out_gpio_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_tao_callback(Object &&cb) { return m_out_tao_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_tbo_callback(Object &&cb) { return m_out_tbo_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_tco_callback(Object &&cb) { return m_out_tco_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_tdo_callback(Object &&cb) { return m_out_tdo_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_so_callback(Object &&cb) { return m_out_so_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_rr_callback(Object &&cb) { return m_out_rr_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_tr_callback(Object &&cb) { return m_out_tr_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/mccs1850.h b/src/devices/machine/mccs1850.h index e446d2083f3..8241203c3aa 100644 --- a/src/devices/machine/mccs1850.h +++ b/src/devices/machine/mccs1850.h @@ -31,13 +31,13 @@ //************************************************************************** #define MCFG_MCCS1850_INT_CALLBACK(_write) \ - devcb = &mccs1850_device::set_int_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mccs1850_device &>(*device).set_int_wr_callback(DEVCB_##_write); #define MCFG_MCCS1850_PSE_CALLBACK(_write) \ - devcb = &mccs1850_device::set_pse_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mccs1850_device &>(*device).set_pse_wr_callback(DEVCB_##_write); #define MCFG_MCCS1850_NUC_CALLBACK(_write) \ - devcb = &mccs1850_device::set_nuc_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mccs1850_device &>(*device).set_nuc_wr_callback(DEVCB_##_write); @@ -55,9 +55,9 @@ public: // construction/destruction mccs1850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<mccs1850_device &>(device).int_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pse_wr_callback(device_t &device, Object &&cb) { return downcast<mccs1850_device &>(device).pse_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nuc_wr_callback(device_t &device, Object &&cb) { return downcast<mccs1850_device &>(device).nuc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_wr_callback(Object &&cb) { return int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pse_wr_callback(Object &&cb) { return pse_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nuc_wr_callback(Object &&cb) { return nuc_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( ce_w ); DECLARE_WRITE_LINE_MEMBER( sck_w ); diff --git a/src/devices/machine/meters.h b/src/devices/machine/meters.h index fd69152f0b7..1a349f82485 100644 --- a/src/devices/machine/meters.h +++ b/src/devices/machine/meters.h @@ -16,7 +16,7 @@ #define MCFG_METERS_NUMBER(_number) \ - meters_device::static_set_number_meters(*device, _number); + downcast<meters_device &>(*device).set_number_meters(_number); class meters_device : public device_t { @@ -27,7 +27,7 @@ public: meters_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_number_meters(device_t &device, int number) { downcast<meters_device &>(device).m_number_mtr = number; } + void set_number_meters(int number) { m_number_mtr = number; } int update(int id, int state); int GetActivity(int id); diff --git a/src/devices/machine/microtch.h b/src/devices/machine/microtch.h index 696807f044c..d39e930de10 100644 --- a/src/devices/machine/microtch.h +++ b/src/devices/machine/microtch.h @@ -12,14 +12,14 @@ class microtouch_device : { public: microtouch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &static_set_stx_callback(device_t &device, Object &&cb) { return downcast<microtouch_device &>(device).m_out_stx_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_stx_callback(Object &&cb) { return m_out_stx_func.set_callback(std::forward<Object>(cb)); } virtual ioport_constructor device_input_ports() const override; DECLARE_WRITE_LINE_MEMBER(rx) { device_serial_interface::rx_w(state); } DECLARE_INPUT_CHANGED_MEMBER(touch); typedef delegate<int (int *, int *)> touch_cb; - static void static_set_touch_callback(device_t &device, touch_cb &&object) { downcast<microtouch_device &>(device).m_out_touch_cb = std::move(object); } + template <typename Object> void set_touch_callback(Object &&cb) { m_out_touch_cb = std::forward<Object>(cb); } protected: virtual void device_start() override; @@ -73,9 +73,9 @@ DECLARE_DEVICE_TYPE(MICROTOUCH, microtouch_device) #define MCFG_MICROTOUCH_ADD(_tag, _clock, _devcb) \ MCFG_DEVICE_ADD(_tag, MICROTOUCH, _clock) \ - devcb = µtouch_device::static_set_stx_callback(*device, DEVCB_##_devcb); + devcb = &downcast<microtouch_device &>(*device).set_stx_callback(DEVCB_##_devcb); #define MCFG_MICROTOUCH_TOUCH_CB(_class, _touch_cb) \ - microtouch_device::static_set_touch_callback(*device, microtouch_device::touch_cb(&_class::_touch_cb, this)); + downcast<microtouch_device &>(*device).set_touch_callback(microtouch_device::touch_cb(&_class::_touch_cb, this)); #endif // MAME_MACHINE_MICROTCH_H diff --git a/src/devices/machine/mm5740.h b/src/devices/machine/mm5740.h index 4602d9da2e6..bbdc12f5c47 100644 --- a/src/devices/machine/mm5740.h +++ b/src/devices/machine/mm5740.h @@ -83,18 +83,18 @@ Vgg 18 -12V // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_MM5740_MATRIX_X1(_cb) devcb = &mm5740_device::set_x_cb<0>(*device, DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X2(_cb) devcb = &mm5740_device::set_x_cb<1>(*device, DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X3(_cb) devcb = &mm5740_device::set_x_cb<2>(*device, DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X4(_cb) devcb = &mm5740_device::set_x_cb<3>(*device, DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X5(_cb) devcb = &mm5740_device::set_x_cb<4>(*device, DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X6(_cb) devcb = &mm5740_device::set_x_cb<5>(*device, DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X7(_cb) devcb = &mm5740_device::set_x_cb<6>(*device, DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X8(_cb) devcb = &mm5740_device::set_x_cb<7>(*device, DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X9(_cb) devcb = &mm5740_device::set_x_cb<8>(*device, DEVCB_##_cb); -#define MCFG_MM5740_SHIFT_CB(_cb) devcb = &mm5740_device::set_shift_cb(*device, DEVCB_##_cb); -#define MCFG_MM5740_CONTROL_CB(_cb) devcb = &mm5740_device::set_control_cb(*device, DEVCB_##_cb); -#define MCFG_MM5740_DATA_READY_CB(_cb) devcb = &mm5740_device::set_data_ready_cb(*device, DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X1(_cb) devcb = &downcast<mm5740_device &>(*device).set_x_cb<0>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X2(_cb) devcb = &downcast<mm5740_device &>(*device).set_x_cb<1>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X3(_cb) devcb = &downcast<mm5740_device &>(*device).set_x_cb<2>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X4(_cb) devcb = &downcast<mm5740_device &>(*device).set_x_cb<3>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X5(_cb) devcb = &downcast<mm5740_device &>(*device).set_x_cb<4>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X6(_cb) devcb = &downcast<mm5740_device &>(*device).set_x_cb<5>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X7(_cb) devcb = &downcast<mm5740_device &>(*device).set_x_cb<6>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X8(_cb) devcb = &downcast<mm5740_device &>(*device).set_x_cb<7>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X9(_cb) devcb = &downcast<mm5740_device &>(*device).set_x_cb<8>(DEVCB_##_cb); +#define MCFG_MM5740_SHIFT_CB(_cb) devcb = &downcast<mm5740_device &>(*device).set_shift_cb(DEVCB_##_cb); +#define MCFG_MM5740_CONTROL_CB(_cb) devcb = &downcast<mm5740_device &>(*device).set_control_cb(DEVCB_##_cb); +#define MCFG_MM5740_DATA_READY_CB(_cb) devcb = &downcast<mm5740_device &>(*device).set_data_ready_cb(DEVCB_##_cb); //************************************************************************** // TYPE DEFINITIONS @@ -111,21 +111,21 @@ public: // public interface uint16_t b_r(); - template <unsigned N, typename Object> static devcb_base &set_x_cb(device_t &device, Object &&cb) + template <unsigned N, typename Object> devcb_base &set_x_cb(Object &&cb) { - return downcast<mm5740_device &>(device).m_read_x[N].set_callback(std::forward<Object>(cb)); + return m_read_x[N].set_callback(std::forward<Object>(cb)); } - template <typename Object> static devcb_base &set_shift_cb(device_t &device, Object &&cb) + template <typename Object> devcb_base &set_shift_cb(Object &&cb) { - return downcast<mm5740_device &>(device).m_read_shift.set_callback(std::forward<Object>(cb)); + return m_read_shift.set_callback(std::forward<Object>(cb)); } - template <typename Object> static devcb_base &set_control_cb(device_t &device, Object &&cb) + template <typename Object> devcb_base &set_control_cb(Object &&cb) { - return downcast<mm5740_device &>(device).m_read_control.set_callback(std::forward<Object>(cb)); + return m_read_control.set_callback(std::forward<Object>(cb)); } - template <typename Object> static devcb_base &set_data_ready_cb(device_t &device, Object &&cb) + template <typename Object> devcb_base &set_data_ready_cb(Object &&cb) { - return downcast<mm5740_device &>(device).m_write_data_ready.set_callback(std::forward<Object>(cb)); + return m_write_data_ready.set_callback(std::forward<Object>(cb)); } static uint32_t calc_effective_clock_key_debounce(uint32_t capacitance); diff --git a/src/devices/machine/mm58167.h b/src/devices/machine/mm58167.h index 4d924b291f6..63cad307e7b 100644 --- a/src/devices/machine/mm58167.h +++ b/src/devices/machine/mm58167.h @@ -19,7 +19,7 @@ //************************************************************************** #define MCFG_MM58167_IRQ_CALLBACK(_cb) \ - devcb = &mm58167_device::set_irq_cb(*device, DEVCB_##_cb); + devcb = &downcast<mm58167_device &>(*device).set_irq_cb(DEVCB_##_cb); //************************************************************************** @@ -38,7 +38,7 @@ public: DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); - template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&wr) { return downcast<mm58167_device &>(device).m_irq_w.set_callback(std::forward<Object>(wr)); } + template <class Object> devcb_base &set_irq_cb(Object &&wr) { return m_irq_w.set_callback(std::forward<Object>(wr)); } devcb_write_line m_irq_w; diff --git a/src/devices/machine/mm58274c.h b/src/devices/machine/mm58274c.h index 716070df2f1..213b0fa6ab3 100644 --- a/src/devices/machine/mm58274c.h +++ b/src/devices/machine/mm58274c.h @@ -12,8 +12,8 @@ class mm58274c_device : public device_t public: mm58274c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_mode24(device_t &device, int mode) { downcast<mm58274c_device &>(device).m_mode24 = mode; } - static void set_day1(device_t &device, int day) { downcast<mm58274c_device &>(device).m_day1 = day; } + void set_mode24(int mode) { m_mode24 = mode; } + void set_day1(int day) { m_day1 = day; } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); @@ -71,9 +71,9 @@ DECLARE_DEVICE_TYPE(MM58274C, mm58274c_device) ***************************************************************************/ #define MCFG_MM58274C_MODE24(_mode) \ - mm58274c_device::set_mode24(*device, _mode); + downcast<mm58274c_device &>(*device).set_mode24(_mode); #define MCFG_MM58274C_DAY1(_day) \ - mm58274c_device::set_day1(*device, _day); + downcast<mm58274c_device &>(*device).set_day1(_day); #endif // MAME_MACHINE_MM58274C_H diff --git a/src/devices/machine/mm74c922.h b/src/devices/machine/mm74c922.h index 819731e3710..f3dc274ecc5 100644 --- a/src/devices/machine/mm74c922.h +++ b/src/devices/machine/mm74c922.h @@ -43,28 +43,28 @@ //************************************************************************** #define MCFG_MM74C922_OSC(_value) \ - mm74c922_device::static_set_cap_osc(*device, _value); + downcast<mm74c922_device &>(*device).set_cap_osc(_value); #define MCFG_MM74C922_DEBOUNCE(_value) \ - mm74c922_device::static_set_cap_debounce(*device, _value); + downcast<mm74c922_device &>(*device).set_cap_debounce(_value); #define MCFG_MM74C922_DA_CALLBACK(_write) \ - devcb = &mm74c922_device::set_da_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mm74c922_device &>(*device).set_da_wr_callback(DEVCB_##_write); #define MCFG_MM74C922_X1_CALLBACK(_read) \ - devcb = &mm74c922_device::set_x1_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mm74c922_device &>(*device).set_x1_rd_callback(DEVCB_##_read); #define MCFG_MM74C922_X2_CALLBACK(_read) \ - devcb = &mm74c922_device::set_x2_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mm74c922_device &>(*device).set_x2_rd_callback(DEVCB_##_read); #define MCFG_MM74C922_X3_CALLBACK(_read) \ - devcb = &mm74c922_device::set_x3_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mm74c922_device &>(*device).set_x3_rd_callback(DEVCB_##_read); #define MCFG_MM74C922_X4_CALLBACK(_read) \ - devcb = &mm74c922_device::set_x4_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mm74c922_device &>(*device).set_x4_rd_callback(DEVCB_##_read); #define MCFG_MM74C922_X5_CALLBACK(_read) \ - devcb = &mm74c922_device::set_x5_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mm74c922_device &>(*device).set_x5_rd_callback(DEVCB_##_read); @@ -80,15 +80,15 @@ public: // construction/destruction mm74c922_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_cap_osc(device_t &device, double value) { downcast<mm74c922_device &>(device).m_cap_osc = value; } - static void static_set_cap_debounce(device_t &device, double value) { downcast<mm74c922_device &>(device).m_cap_debounce = value; } + void set_cap_osc(double value) { m_cap_osc = value; } + void set_cap_debounce(double value) { m_cap_debounce = value; } - template <class Object> static devcb_base &set_da_wr_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_write_da.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_x1_rd_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_read_x1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_x2_rd_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_read_x2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_x3_rd_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_read_x3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_x4_rd_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_read_x4.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_x5_rd_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_read_x5.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_x1_rd_callback(Object &&cb) { return m_read_x1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_x2_rd_callback(Object &&cb) { return m_read_x2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_x3_rd_callback(Object &&cb) { return m_read_x3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_x4_rd_callback(Object &&cb) { return m_read_x4.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_x5_rd_callback(Object &&cb) { return m_read_x5.set_callback(std::forward<Object>(cb)); } uint8_t read(); diff --git a/src/devices/machine/mos6526.h b/src/devices/machine/mos6526.h index a16650d8891..509ff81ed74 100644 --- a/src/devices/machine/mos6526.h +++ b/src/devices/machine/mos6526.h @@ -68,31 +68,31 @@ //************************************************************************** #define MCFG_MOS6526_TOD(_clock) \ - mos6526_device::static_set_tod_clock(*device, _clock); + downcast<mos6526_device &>(*device).set_tod_clock(_clock); #define MCFG_MOS6526_IRQ_CALLBACK(_write) \ - devcb = &mos6526_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mos6526_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_MOS6526_CNT_CALLBACK(_write) \ - devcb = &mos6526_device::set_cnt_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mos6526_device &>(*device).set_cnt_wr_callback(DEVCB_##_write); #define MCFG_MOS6526_SP_CALLBACK(_write) \ - devcb = &mos6526_device::set_sp_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mos6526_device &>(*device).set_sp_wr_callback(DEVCB_##_write); #define MCFG_MOS6526_PA_INPUT_CALLBACK(_read) \ - devcb = &mos6526_device::set_pa_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mos6526_device &>(*device).set_pa_rd_callback(DEVCB_##_read); #define MCFG_MOS6526_PA_OUTPUT_CALLBACK(_write) \ - devcb = &mos6526_device::set_pa_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mos6526_device &>(*device).set_pa_wr_callback(DEVCB_##_write); #define MCFG_MOS6526_PB_INPUT_CALLBACK(_read) \ - devcb = &mos6526_device::set_pb_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mos6526_device &>(*device).set_pb_rd_callback(DEVCB_##_read); #define MCFG_MOS6526_PB_OUTPUT_CALLBACK(_write) \ - devcb = &mos6526_device::set_pb_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mos6526_device &>(*device).set_pb_wr_callback(DEVCB_##_write); #define MCFG_MOS6526_PC_CALLBACK(_write) \ - devcb = &mos6526_device::set_pc_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mos6526_device &>(*device).set_pc_wr_callback(DEVCB_##_write); @@ -109,16 +109,16 @@ public: // construction/destruction mos6526_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_tod_clock(device_t &device, int clock) { downcast<mos6526_device &>(device).m_tod_clock = clock; } + void set_tod_clock(int clock) { m_tod_clock = clock; } - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cnt_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_cnt.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sp_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_sp.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pa_rd_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_read_pa.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pa_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_pa.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_rd_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_read_pb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_pb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pc_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_pc.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cnt_wr_callback(Object &&cb) { return m_write_cnt.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sp_wr_callback(Object &&cb) { return m_write_sp.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_rd_callback(Object &&cb) { return m_read_pa.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_wr_callback(Object &&cb) { return m_write_pa.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_rd_callback(Object &&cb) { return m_read_pb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_wr_callback(Object &&cb) { return m_write_pb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pc_wr_callback(Object &&cb) { return m_write_pc.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/mos6529.h b/src/devices/machine/mos6529.h index 75d10082ab1..ca0a4525d1b 100644 --- a/src/devices/machine/mos6529.h +++ b/src/devices/machine/mos6529.h @@ -32,28 +32,28 @@ //************************************************************************** #define MCFG_MOS6529_P0_HANDLER(_devcb) \ - devcb = &mos6529_device::set_p0_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6529_device &>(*device).set_p0_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P1_HANDLER(_devcb) \ - devcb = &mos6529_device::set_p1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6529_device &>(*device).set_p1_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P2_HANDLER(_devcb) \ - devcb = &mos6529_device::set_p2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6529_device &>(*device).set_p2_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P3_HANDLER(_devcb) \ - devcb = &mos6529_device::set_p3_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6529_device &>(*device).set_p3_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P4_HANDLER(_devcb) \ - devcb = &mos6529_device::set_p4_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6529_device &>(*device).set_p4_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P5_HANDLER(_devcb) \ - devcb = &mos6529_device::set_p5_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6529_device &>(*device).set_p5_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P6_HANDLER(_devcb) \ - devcb = &mos6529_device::set_p6_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6529_device &>(*device).set_p6_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P7_HANDLER(_devcb) \ - devcb = &mos6529_device::set_p7_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6529_device &>(*device).set_p7_handler(DEVCB_##_devcb); //************************************************************************** @@ -68,14 +68,14 @@ public: // construction/destruction mos6529_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_p0_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p0_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_p1_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_p2_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p2_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_p3_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p3_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_p4_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p4_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_p5_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p5_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_p6_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p6_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_p7_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p7_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p0_handler(Object &&cb) { return m_p0_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p1_handler(Object &&cb) { return m_p1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p2_handler(Object &&cb) { return m_p2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p3_handler(Object &&cb) { return m_p3_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p4_handler(Object &&cb) { return m_p4_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p5_handler(Object &&cb) { return m_p5_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p6_handler(Object &&cb) { return m_p6_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p7_handler(Object &&cb) { return m_p7_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/mos6530.h b/src/devices/machine/mos6530.h index a76a756c64a..2491e547a53 100644 --- a/src/devices/machine/mos6530.h +++ b/src/devices/machine/mos6530.h @@ -48,10 +48,10 @@ class mos6530_device : public device_t public: mos6530_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<mos6530_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<mos6530_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<mos6530_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<mos6530_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -110,15 +110,15 @@ DECLARE_DEVICE_TYPE(MOS6530, mos6530_device) #define MCFG_MOS6530_IN_PA_CB(_devcb) \ - devcb = &mos6530_device::set_in_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mos6530_device &>(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_MOS6530_OUT_PA_CB(_devcb) \ - devcb = &mos6530_device::set_out_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mos6530_device &>(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_MOS6530_IN_PB_CB(_devcb) \ - devcb = &mos6530_device::set_in_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mos6530_device &>(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_MOS6530_OUT_PB_CB(_devcb) \ - devcb = &mos6530_device::set_out_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mos6530_device &>(*device).set_out_pb_callback(DEVCB_##_devcb); #endif // MAME_MACHINE_MOS6530_H diff --git a/src/devices/machine/mos6530n.h b/src/devices/machine/mos6530n.h index 3031e98d6eb..56080ff49dc 100644 --- a/src/devices/machine/mos6530n.h +++ b/src/devices/machine/mos6530n.h @@ -64,115 +64,115 @@ //************************************************************************** #define MCFG_MOS6530n_IRQ_CB(_write) \ - devcb = &mos6530_device_base::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_MOS6530n_IN_PA_CB(_read) \ - devcb = &mos6530_device_base::set_pa_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback(DEVCB_##_read); #define MCFG_MOS6530n_OUT_PA_CB(_write) \ - devcb = &mos6530_device_base::set_pa_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback(DEVCB_##_write); #define MCFG_MOS6530n_IN_PB_CB(_read) \ - devcb = &mos6530_device_base::set_pb_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback(DEVCB_##_read); #define MCFG_MOS6530n_OUT_PB_CB(_write) \ - devcb = &mos6530_device_base::set_pb_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback(DEVCB_##_write); #define MCFG_MOS6530n_IN_PA0_CB(_read) \ - devcb = &mos6530_device_base::set_pa_rd_callback<0>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<0>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA1_CB(_read) \ - devcb = &mos6530_device_base::set_pa_rd_callback<1>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<1>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA2_CB(_read) \ - devcb = &mos6530_device_base::set_pa_rd_callback<2>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<2>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA3_CB(_read) \ - devcb = &mos6530_device_base::set_pa_rd_callback<3>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<3>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA4_CB(_read) \ - devcb = &mos6530_device_base::set_pa_rd_callback<4>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<4>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA5_CB(_read) \ - devcb = &mos6530_device_base::set_pa_rd_callback<5>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<5>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA6_CB(_read) \ - devcb = &mos6530_device_base::set_pa_rd_callback<6>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<6>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA7_CB(_read) \ - devcb = &mos6530_device_base::set_pa_rd_callback<7>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<7>(DEVCB_##_read); #define MCFG_MOS6530n_OUT_PA0_CB(_write) \ - devcb = &mos6530_device_base::set_pa_wr_callback<0>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<0>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA1_CB(_write) \ - devcb = &mos6530_device_base::set_pa_wr_callback<1>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<1>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA2_CB(_write) \ - devcb = &mos6530_device_base::set_pa_wr_callback<2>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<2>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA3_CB(_write) \ - devcb = &mos6530_device_base::set_pa_wr_callback<3>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<3>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA4_CB(_write) \ - devcb = &mos6530_device_base::set_pa_wr_callback<4>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<4>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA5_CB(_write) \ - devcb = &mos6530_device_base::set_pa_wr_callback<5>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<5>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA6_CB(_write) \ - devcb = &mos6530_device_base::set_pa_wr_callback<6>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<6>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA7_CB(_write) \ - devcb = &mos6530_device_base::set_pa_wr_callback<7>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<7>(DEVCB_##_write); #define MCFG_MOS6530n_IN_PB0_CB(_read) \ - devcb = &mos6530_device_base::set_pb_rd_callback<0>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<0>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB1_CB(_read) \ - devcb = &mos6530_device_base::set_pb_rd_callback<1>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<1>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB2_CB(_read) \ - devcb = &mos6530_device_base::set_pb_rd_callback<2>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<2>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB3_CB(_read) \ - devcb = &mos6530_device_base::set_pb_rd_callback<3>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<3>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB4_CB(_read) \ - devcb = &mos6530_device_base::set_pb_rd_callback<4>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<4>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB5_CB(_read) \ - devcb = &mos6530_device_base::set_pb_rd_callback<5>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<5>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB6_CB(_read) \ - devcb = &mos6530_device_base::set_pb_rd_callback<6>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<6>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB7_CB(_read) \ - devcb = &mos6530_device_base::set_pb_rd_callback<7>(*device, DEVCB_##_read); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<7>(DEVCB_##_read); #define MCFG_MOS6530n_OUT_PB0_CB(_write) \ - devcb = &mos6530_device_base::set_pb_wr_callback<0>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<0>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB1_CB(_write) \ - devcb = &mos6530_device_base::set_pb_wr_callback<1>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<1>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB2_CB(_write) \ - devcb = &mos6530_device_base::set_pb_wr_callback<2>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<2>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB3_CB(_write) \ - devcb = &mos6530_device_base::set_pb_wr_callback<3>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<3>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB4_CB(_write) \ - devcb = &mos6530_device_base::set_pb_wr_callback<4>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<4>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB5_CB(_write) \ - devcb = &mos6530_device_base::set_pb_wr_callback<5>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<5>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB6_CB(_write) \ - devcb = &mos6530_device_base::set_pb_wr_callback<6>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<6>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB7_CB(_write) \ - devcb = &mos6530_device_base::set_pb_wr_callback<7>(*device, DEVCB_##_write); + devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<7>(DEVCB_##_write); @@ -185,15 +185,15 @@ class mos6530_device_base : public device_t { public: - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pa_rd_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_in8_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pa_wr_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_out8_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_rd_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_in8_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_wr_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_out8_pb_cb.set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_pa_rd_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_in_pa_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_pa_wr_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_out_pa_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_pb_rd_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_in_pb_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_pb_wr_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_out_pb_cb[N].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_rd_callback(Object &&cb) { return m_in8_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_wr_callback(Object &&cb) { return m_out8_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_rd_callback(Object &&cb) { return m_in8_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_wr_callback(Object &&cb) { return m_out8_pb_cb.set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_pa_rd_callback(Object &&cb) { return m_in_pa_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_pa_wr_callback(Object &&cb) { return m_out_pa_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_pb_rd_callback(Object &&cb) { return m_in_pb_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_pb_wr_callback(Object &&cb) { return m_out_pb_cb[N].set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( pa0_w ) { pa_w(0, state); } DECLARE_WRITE_LINE_MEMBER( pa1_w ) { pa_w(1, state); } diff --git a/src/devices/machine/mos6551.h b/src/devices/machine/mos6551.h index e08ddeb716a..07d1f7069ba 100644 --- a/src/devices/machine/mos6551.h +++ b/src/devices/machine/mos6551.h @@ -31,35 +31,33 @@ #include "machine/clock.h" #define MCFG_MOS6551_XTAL(_xtal) \ - mos6551_device::set_xtal(*device, _xtal); + downcast<mos6551_device &>(*device).set_xtal(_xtal); #define MCFG_MOS6551_IRQ_HANDLER(_devcb) \ - devcb = &mos6551_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6551_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_MOS6551_TXD_HANDLER(_devcb) \ - devcb = &mos6551_device::set_txd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6551_device &>(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_MOS6551_RXC_HANDLER(_devcb) \ - devcb = &mos6551_device::set_rxc_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6551_device &>(*device).set_rxc_handler(DEVCB_##_devcb); #define MCFG_MOS6551_RTS_HANDLER(_devcb) \ - devcb = &mos6551_device::set_rts_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6551_device &>(*device).set_rts_handler(DEVCB_##_devcb); #define MCFG_MOS6551_DTR_HANDLER(_devcb) \ - devcb = &mos6551_device::set_dtr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mos6551_device &>(*device).set_dtr_handler(DEVCB_##_devcb); class mos6551_device : public device_t { public: mos6551_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_xtal(device_t &device, uint32_t xtal) { downcast<mos6551_device &>(device).set_xtal(xtal); } - static void set_xtal(device_t &device, const XTAL &xtal) { set_xtal(device, xtal.value()); } - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<mos6551_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<mos6551_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rxc_handler(device_t &device, Object &&cb) { return downcast<mos6551_device &>(device).m_rxc_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<mos6551_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<mos6551_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); } + 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_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxc_handler(Object &&cb) { return m_rxc_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dtr_handler(Object &&cb) { return m_dtr_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/mos8722.h b/src/devices/machine/mos8722.h index 9f3286e4c30..330d22059b6 100644 --- a/src/devices/machine/mos8722.h +++ b/src/devices/machine/mos8722.h @@ -46,19 +46,19 @@ //************************************************************************** #define MCFG_MOS8722_Z80EN_CALLBACK(_write) \ - devcb = &mos8722_device::set_z80en_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mos8722_device &>(*device).set_z80en_wr_callback(DEVCB_##_write); #define MCFG_MOS8722_FSDIR_CALLBACK(_write) \ - devcb = &mos8722_device::set_fsdir_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<mos8722_device &>(*device).set_fsdir_wr_callback(DEVCB_##_write); #define MCFG_MOS8722_GAME_CALLBACK(_read) \ - devcb = &mos8722_device::set_game_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mos8722_device &>(*device).set_game_rd_callback(DEVCB_##_read); #define MCFG_MOS8722_EXROM_CALLBACK(_read) \ - devcb = &mos8722_device::set_exrom_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mos8722_device &>(*device).set_exrom_rd_callback(DEVCB_##_read); #define MCFG_MOS8722_SENSE40_CALLBACK(_read) \ - devcb = &mos8722_device::set_sense40_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<mos8722_device &>(*device).set_sense40_rd_callback(DEVCB_##_read); @@ -74,11 +74,11 @@ public: // construction/destruction mos8722_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_z80en_wr_callback(device_t &device, Object &&cb) { return downcast<mos8722_device &>(device).m_write_z80en.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_fsdir_wr_callback(device_t &device, Object &&cb) { return downcast<mos8722_device &>(device).m_write_fsdir.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_game_rd_callback(device_t &device, Object &&cb) { return downcast<mos8722_device &>(device).m_read_game.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_exrom_rd_callback(device_t &device, Object &&cb) { return downcast<mos8722_device &>(device).m_read_exrom.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sense40_rd_callback(device_t &device, Object &&cb) { return downcast<mos8722_device &>(device).m_read_sense40.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_z80en_wr_callback(Object &&cb) { return m_write_z80en.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_fsdir_wr_callback(Object &&cb) { return m_write_fsdir.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_game_rd_callback(Object &&cb) { return m_read_game.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_exrom_rd_callback(Object &&cb) { return m_read_exrom.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sense40_rd_callback(Object &&cb) { return m_read_sense40.set_callback(std::forward<Object>(cb)); } uint8_t read(offs_t offset, uint8_t data); diff --git a/src/devices/machine/msm58321.h b/src/devices/machine/msm58321.h index ba9ba8502a8..2d0d9a4d424 100644 --- a/src/devices/machine/msm58321.h +++ b/src/devices/machine/msm58321.h @@ -45,25 +45,25 @@ //************************************************************************** #define MCFG_MSM58321_D0_HANDLER(_devcb) \ - devcb = &msm58321_device::set_d0_handler(*device, DEVCB_##_devcb); + devcb = &downcast<msm58321_device &>(*device).set_d0_handler(DEVCB_##_devcb); #define MCFG_MSM58321_D1_HANDLER(_devcb) \ - devcb = &msm58321_device::set_d1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<msm58321_device &>(*device).set_d1_handler(DEVCB_##_devcb); #define MCFG_MSM58321_D2_HANDLER(_devcb) \ - devcb = &msm58321_device::set_d2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<msm58321_device &>(*device).set_d2_handler(DEVCB_##_devcb); #define MCFG_MSM58321_D3_HANDLER(_devcb) \ - devcb = &msm58321_device::set_d3_handler(*device, DEVCB_##_devcb); + devcb = &downcast<msm58321_device &>(*device).set_d3_handler(DEVCB_##_devcb); #define MCFG_MSM58321_BUSY_HANDLER(_devcb) \ - devcb = &msm58321_device::set_busy_handler(*device, DEVCB_##_devcb); + devcb = &downcast<msm58321_device &>(*device).set_busy_handler(DEVCB_##_devcb); #define MCFG_MSM58321_YEAR0(_year0) \ - msm58321_device::set_year0(*device, _year0); + downcast<msm58321_device &>(*device).set_year0(_year0); #define MCFG_MSM58321_DEFAULT_24H(_default_24h) \ - msm58321_device::set_default_24h(*device, _default_24h); + downcast<msm58321_device &>(*device).set_default_24h(_default_24h); // ======================> msm58321_device @@ -75,14 +75,14 @@ public: // construction/destruction msm58321_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_d0_handler(device_t &device, Object &&cb) { return downcast<msm58321_device &>(device).m_d0_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d1_handler(device_t &device, Object &&cb) { return downcast<msm58321_device &>(device).m_d1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d2_handler(device_t &device, Object &&cb) { return downcast<msm58321_device &>(device).m_d2_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_d3_handler(device_t &device, Object &&cb) { return downcast<msm58321_device &>(device).m_d3_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_busy_handler(device_t &device, Object &&cb) { return downcast<msm58321_device &>(device).m_busy_handler.set_callback(std::forward<Object>(cb)); } - static void set_year0(device_t &device, int year0) { downcast<msm58321_device &>(device).m_year0 = year0; } - static void set_default_24h(device_t &device, bool default_24h) { downcast<msm58321_device &>(device).m_default_24h = default_24h; } + // configuration helpers + template <class Object> devcb_base &set_d0_handler(Object &&cb) { return m_d0_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_d1_handler(Object &&cb) { return m_d1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_d2_handler(Object &&cb) { return m_d2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_d3_handler(Object &&cb) { return m_d3_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_busy_handler(Object &&cb) { return m_busy_handler.set_callback(std::forward<Object>(cb)); } + void set_year0(int year0) { m_year0 = year0; } + void set_default_24h(bool default_24h) { m_default_24h = default_24h; } DECLARE_WRITE_LINE_MEMBER( cs2_w ); DECLARE_WRITE_LINE_MEMBER( write_w ); diff --git a/src/devices/machine/msm6242.h b/src/devices/machine/msm6242.h index 2c99b9eada3..0c8d387df82 100644 --- a/src/devices/machine/msm6242.h +++ b/src/devices/machine/msm6242.h @@ -41,7 +41,7 @@ #define MCFG_MSM6242_OUT_INT_HANDLER(_devcb) \ - devcb = &msm6242_device::set_out_int_handler(*device, DEVCB_##_devcb); + devcb = &downcast<msm6242_device &>(*device).set_out_int_handler(DEVCB_##_devcb); // ======================> msm6242_device @@ -52,7 +52,7 @@ public: // construction/destruction msm6242_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_int_handler(device_t &device, Object &&cb) { return downcast<msm6242_device &>(device).m_out_int_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_handler(Object &&cb) { return m_out_int_handler.set_callback(std::forward<Object>(cb)); } // I/O operations DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/msm6253.h b/src/devices/machine/msm6253.h index 01edcbe1812..8daae35a3c3 100644 --- a/src/devices/machine/msm6253.h +++ b/src/devices/machine/msm6253.h @@ -28,31 +28,31 @@ //************************************************************************** #define MCFG_MSM6253_IN0_ANALOG_PORT(_input) \ - msm6253_device::static_set_input_tag(*device, 0, "^" _input); + downcast<msm6253_device &>(*device).set_input_tag(0, "^" _input); #define MCFG_MSM6253_IN1_ANALOG_PORT(_input) \ - msm6253_device::static_set_input_tag(*device, 1, "^" _input); + downcast<msm6253_device &>(*device).set_input_tag(1, "^" _input); #define MCFG_MSM6253_IN2_ANALOG_PORT(_input) \ - msm6253_device::static_set_input_tag(*device, 2, "^" _input); + downcast<msm6253_device &>(*device).set_input_tag(2, "^" _input); #define MCFG_MSM6253_IN3_ANALOG_PORT(_input) \ - msm6253_device::static_set_input_tag(*device, 3, "^" _input); + downcast<msm6253_device &>(*device).set_input_tag(3, "^" _input); #define MCFG_MSM6253_IN0_ANALOG_READ(_class, _method) \ - msm6253_device::static_set_input_cb(*device, 0, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<msm6253_device &>(*device).set_input_cb(0, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_MSM6253_IN1_ANALOG_READ(_class, _method) \ - msm6253_device::static_set_input_cb(*device, 1, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<msm6253_device &>(*device).set_input_cb(1, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_MSM6253_IN2_ANALOG_READ(_class, _method) \ - msm6253_device::static_set_input_cb(*device, 2, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<msm6253_device &>(*device).set_input_cb(2, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_MSM6253_IN3_ANALOG_READ(_class, _method) \ - msm6253_device::static_set_input_cb(*device, 3, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<msm6253_device &>(*device).set_input_cb(3, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_MSM6253_IN0_ANALOG_DEVREAD(_tag, _class, _method) \ - msm6253_device::static_set_input_cb(*device, 0, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); + downcast<msm6253_device &>(*device).set_input_cb(0, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); #define MCFG_MSM6253_IN1_ANALOG_DEVREAD(_tag, _class, _method) \ - msm6253_device::static_set_input_cb(*device, 1, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); + downcast<msm6253_device &>(*device).set_input_cb(1, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); #define MCFG_MSM6253_IN2_ANALOG_DEVREAD(_tag, _class, _method) \ - msm6253_device::static_set_input_cb(*device, 2, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); + downcast<msm6253_device &>(*device).set_input_cb(2, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); #define MCFG_MSM6253_IN3_ANALOG_DEVREAD(_tag, _class, _method) \ - msm6253_device::static_set_input_cb(*device, 3, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); + downcast<msm6253_device &>(*device).set_input_cb(3, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); //************************************************************************** @@ -69,9 +69,9 @@ public: // construction/destruction msm6253_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration - static void static_set_input_tag(device_t &device, int port, const char *tag) { downcast<msm6253_device &>(device).m_analog_ports[port].set_tag(tag); } - static void static_set_input_cb(device_t &device, int port, port_read_delegate &&cb) { downcast<msm6253_device &>(device).m_analog_input_cb[port] = std::move(cb); } + // configuration + void set_input_tag(int port, const char *tag) { m_analog_ports[port].set_tag(tag); } + template <typename Object> void set_input_cb(int port, Object &&cb) { m_analog_input_cb[port] = std::forward<Object>(cb); } // write handlers WRITE8_MEMBER(address_w); diff --git a/src/devices/machine/myb3k_kbd.h b/src/devices/machine/myb3k_kbd.h index 69a5e5c0513..747289a53f1 100644 --- a/src/devices/machine/myb3k_kbd.h +++ b/src/devices/machine/myb3k_kbd.h @@ -27,7 +27,7 @@ #define MYB3K_KBD_CB_PUT(cls, fnc) myb3k_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), DEVICE_SELF, ((cls *)nullptr)) #define MYB3K_KBD_CB_DEVPUT(tag, cls, fnc) myb3k_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), (tag), ((cls *)nullptr)) -#define MCFG_MYB3K_KEYBOARD_CB(cb) myb3k_keyboard_device::set_keyboard_callback(*device, (MYB3K_KBD_CB_##cb)); +#define MCFG_MYB3K_KEYBOARD_CB(cb) downcast<myb3k_keyboard_device &>(*device).set_keyboard_callback((MYB3K_KBD_CB_##cb)); DECLARE_DEVICE_TYPE(MYB3K_KEYBOARD, myb3k_keyboard_device) DECLARE_DEVICE_TYPE(JB3000_KEYBOARD, jb3000_keyboard_device) @@ -51,9 +51,7 @@ public: TIMER_ID_SECOND_BYTE }; - template <class Object> static void set_keyboard_callback(device_t &device, Object &&cb) { - downcast<myb3k_keyboard_device &>(device).m_keyboard_cb = std::forward<Object>(cb); - } + template <class Object> void set_keyboard_callback(Object &&cb) { m_keyboard_cb = std::forward<Object>(cb); } protected: myb3k_keyboard_device( diff --git a/src/devices/machine/ncr5380.h b/src/devices/machine/ncr5380.h index 7c1c8d49a03..ca63db53817 100644 --- a/src/devices/machine/ncr5380.h +++ b/src/devices/machine/ncr5380.h @@ -37,7 +37,7 @@ enum // device stuff #define MCFG_NCR5380_IRQ_CB(_devcb) \ - devcb = &ncr5380_device::set_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ncr5380_device &>(*device).set_irq_callback(DEVCB_##_devcb); class ncr5380_device : public legacy_scsi_host_adapter { @@ -45,7 +45,7 @@ public: // construction/destruction ncr5380_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<ncr5380_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } // our API uint8_t ncr5380_read_reg(uint32_t offset); diff --git a/src/devices/machine/ncr5380n.h b/src/devices/machine/ncr5380n.h index af0a85ce744..8d627970df9 100644 --- a/src/devices/machine/ncr5380n.h +++ b/src/devices/machine/ncr5380n.h @@ -16,19 +16,19 @@ #include "machine/nscsi_bus.h" #define MCFG_NCR5380N_IRQ_HANDLER(_devcb) \ - devcb = &ncr5380n_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ncr5380n_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_NCR5380N_DRQ_HANDLER(_devcb) \ - devcb = &ncr5380n_device::set_drq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ncr5380n_device &>(*device).set_drq_handler(DEVCB_##_devcb); class ncr5380n_device : public nscsi_device { public: ncr5380n_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ncr5380n_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb) { return downcast<ncr5380n_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + 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)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/ncr5390.h b/src/devices/machine/ncr5390.h index 294148d8890..59ebc50fdbd 100644 --- a/src/devices/machine/ncr5390.h +++ b/src/devices/machine/ncr5390.h @@ -8,19 +8,19 @@ #include "machine/nscsi_bus.h" #define MCFG_NCR5390_IRQ_HANDLER(_devcb) \ - devcb = &ncr5390_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ncr5390_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_NCR5390_DRQ_HANDLER(_devcb) \ - devcb = &ncr5390_device::set_drq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ncr5390_device &>(*device).set_drq_handler(DEVCB_##_devcb); class ncr5390_device : public nscsi_device { public: ncr5390_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ncr5390_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb) { return downcast<ncr5390_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + 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)); } virtual void map(address_map &map); diff --git a/src/devices/machine/ncr539x.h b/src/devices/machine/ncr539x.h index 56a34e58e85..074a73c307d 100644 --- a/src/devices/machine/ncr539x.h +++ b/src/devices/machine/ncr539x.h @@ -15,10 +15,10 @@ // device stuff #define MCFG_NCR539X_OUT_IRQ_CB(_devcb) \ - devcb = &ncr539x_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ncr539x_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_NCR539X_OUT_DRQ_CB(_devcb) \ - devcb = &ncr539x_device::set_out_drq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ncr539x_device &>(*device).set_out_drq_callback(DEVCB_##_devcb); class ncr539x_device : public legacy_scsi_host_adapter { @@ -26,8 +26,8 @@ public: // construction/destruction ncr539x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<ncr539x_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_drq_callback(device_t &device, Object &&cb) { return downcast<ncr539x_device &>(device).m_out_drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_drq_callback(Object &&cb) { return m_out_drq_cb.set_callback(std::forward<Object>(cb)); } // our API DECLARE_READ8_MEMBER(read); diff --git a/src/devices/machine/netlist.cpp b/src/devices/machine/netlist.cpp index 30ef04433f2..d1dc5f78b59 100644 --- a/src/devices/machine/netlist.cpp +++ b/src/devices/machine/netlist.cpp @@ -509,11 +509,10 @@ void netlist_mame_cpu_device::state_string_export(const device_state_entry &entr // netlist_mame_analog_input_device // ---------------------------------------------------------------------------------------- -void netlist_mame_sub_interface::static_set_mult_offset(device_t &device, const double mult, const double offset) +void netlist_mame_sub_interface::set_mult_offset(const double mult, const double offset) { - netlist_mame_sub_interface &netlist = dynamic_cast<netlist_mame_sub_interface &>(device); - netlist.m_mult = mult; - netlist.m_offset = offset; + m_mult = mult; + m_offset = offset; } @@ -526,12 +525,6 @@ netlist_mame_analog_input_device::netlist_mame_analog_input_device(const machine { } -void netlist_mame_analog_input_device::static_set_name(device_t &device, const char *param_name) -{ - netlist_mame_analog_input_device &netlist = downcast<netlist_mame_analog_input_device &>(device); - netlist.m_param_name = param_name; -} - void netlist_mame_analog_input_device::device_start() { LOGDEVCALLS("start\n"); @@ -561,11 +554,10 @@ netlist_mame_analog_output_device::netlist_mame_analog_output_device(const machi { } -void netlist_mame_analog_output_device::static_set_params(device_t &device, const char *in_name, output_delegate &&adelegate) +void netlist_mame_analog_output_device::set_params(const char *in_name, output_delegate &&adelegate) { - netlist_mame_analog_output_device &mame_output = downcast<netlist_mame_analog_output_device &>(device); - mame_output.m_in = in_name; - mame_output.m_delegate = std::move(adelegate); + m_in = in_name; + m_delegate = std::move(adelegate); } void netlist_mame_analog_output_device::custom_netlist_additions(netlist::setup_t &setup) @@ -597,11 +589,10 @@ netlist_mame_logic_output_device::netlist_mame_logic_output_device(const machine { } -void netlist_mame_logic_output_device::static_set_params(device_t &device, const char *in_name, output_delegate &&adelegate) +void netlist_mame_logic_output_device::set_params(const char *in_name, output_delegate &&adelegate) { - netlist_mame_logic_output_device &mame_output = downcast<netlist_mame_logic_output_device &>(device); - mame_output.m_in = in_name; - mame_output.m_delegate = std::move(adelegate); + m_in = in_name; + m_delegate = std::move(adelegate); } void netlist_mame_logic_output_device::custom_netlist_additions(netlist::setup_t &setup) @@ -636,13 +627,12 @@ netlist_mame_int_input_device::netlist_mame_int_input_device(const machine_confi { } -void netlist_mame_int_input_device::static_set_params(device_t &device, const char *param_name, const uint32_t mask, const uint32_t shift) +void netlist_mame_int_input_device::set_params(const char *param_name, const uint32_t mask, const uint32_t shift) { - netlist_mame_int_input_device &netlist = downcast<netlist_mame_int_input_device &>(device); - if (LOG_DEV_CALLS) device.logerror("static_set_params\n"); - netlist.m_param_name = param_name; - netlist.m_shift = shift; - netlist.m_mask = mask; + if (LOG_DEV_CALLS) logerror("set_params\n"); + m_param_name = param_name; + m_shift = shift; + m_mask = mask; } void netlist_mame_int_input_device::device_start() @@ -669,12 +659,11 @@ netlist_mame_logic_input_device::netlist_mame_logic_input_device(const machine_c { } -void netlist_mame_logic_input_device::static_set_params(device_t &device, const char *param_name, const uint32_t shift) +void netlist_mame_logic_input_device::set_params(const char *param_name, const uint32_t shift) { - netlist_mame_logic_input_device &netlist = downcast<netlist_mame_logic_input_device &>(device); - if (LOG_DEV_CALLS) device.logerror("static_set_params\n"); - netlist.m_param_name = param_name; - netlist.m_shift = shift; + if (LOG_DEV_CALLS) logerror("set_params\n"); + m_param_name = param_name; + m_shift = shift; } void netlist_mame_logic_input_device::device_start() @@ -702,11 +691,10 @@ netlist_mame_ram_pointer_device::netlist_mame_ram_pointer_device(const machine_c { } -void netlist_mame_ram_pointer_device::static_set_params(device_t &device, const char *param_name) +void netlist_mame_ram_pointer_device::set_params(const char *param_name) { - netlist_mame_ram_pointer_device &netlist = downcast<netlist_mame_ram_pointer_device&>(device); - if (LOG_DEV_CALLS) device.logerror("static_set_params\n"); - netlist.m_param_name = param_name; + if (LOG_DEV_CALLS) logerror("set_params\n"); + m_param_name = param_name; } void netlist_mame_ram_pointer_device::device_start() @@ -734,11 +722,10 @@ netlist_mame_stream_input_device::netlist_mame_stream_input_device(const machine { } -void netlist_mame_stream_input_device::static_set_params(device_t &device, int channel, const char *param_name) +void netlist_mame_stream_input_device::set_params(int channel, const char *param_name) { - netlist_mame_stream_input_device &netlist = downcast<netlist_mame_stream_input_device &>(device); - netlist.m_param_name = param_name; - netlist.m_channel = channel; + m_param_name = param_name; + m_channel = channel; } void netlist_mame_stream_input_device::device_start() @@ -771,11 +758,10 @@ netlist_mame_stream_output_device::netlist_mame_stream_output_device(const machi { } -void netlist_mame_stream_output_device::static_set_params(device_t &device, int channel, const char *out_name) +void netlist_mame_stream_output_device::set_params(int channel, const char *out_name) { - netlist_mame_stream_output_device &netlist = downcast<netlist_mame_stream_output_device &>(device); - netlist.m_out_name = out_name; - netlist.m_channel = channel; + m_out_name = out_name; + m_channel = channel; } void netlist_mame_stream_output_device::device_start() @@ -821,11 +807,10 @@ netlist_mame_device::~netlist_mame_device() LOGDEVCALLS("~netlist_mame_device\n"); } -void netlist_mame_device::static_set_constructor(device_t &device, void (*setup_func)(netlist::setup_t &)) +void netlist_mame_device::set_constructor(void (*setup_func)(netlist::setup_t &)) { - if (LOG_DEV_CALLS) device.logerror("static_set_constructor\n"); - netlist_mame_device &netlist = downcast<netlist_mame_device &>(device); - netlist.m_setup_func = setup_func; + if (LOG_DEV_CALLS) logerror("set_constructor\n"); + m_setup_func = setup_func; } void netlist_mame_device::device_config_complete() diff --git a/src/devices/machine/netlist.h b/src/devices/machine/netlist.h index 18a13d31f41..0a374ee605c 100644 --- a/src/devices/machine/netlist.h +++ b/src/devices/machine/netlist.h @@ -29,46 +29,46 @@ namespace netlist { #define MCFG_NETLIST_SETUP(_setup) \ - netlist_mame_device::static_set_constructor(*device, NETLIST_NAME(_setup)); + downcast<netlist_mame_device &>(*device).set_constructor(NETLIST_NAME(_setup)); #define MCFG_NETLIST_ANALOG_INPUT(_basetag, _tag, _name) \ MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_ANALOG_INPUT, 0) \ - netlist_mame_analog_input_device::static_set_name(*device, _name); + downcast<netlist_mame_analog_input_device &>(*device).set_name(_name); #define MCFG_NETLIST_ANALOG_MULT_OFFSET(_mult, _offset) \ - netlist_mame_sub_interface::static_set_mult_offset(*device, _mult, _offset); + dynamic_cast<netlist_mame_sub_interface &>(*device).set_mult_offset(_mult, _offset); #define MCFG_NETLIST_ANALOG_OUTPUT(_basetag, _tag, _IN, _class, _member, _class_tag) \ MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_ANALOG_OUTPUT, 0) \ - netlist_mame_analog_output_device::static_set_params(*device, _IN, \ + downcast<netlist_mame_analog_output_device &>(*device).set_params(_IN, \ netlist_mame_analog_output_device::output_delegate(& _class :: _member, \ # _class "::" # _member, _class_tag, (_class *)nullptr) ); #define MCFG_NETLIST_LOGIC_OUTPUT(_basetag, _tag, _IN, _class, _member, _class_tag) \ MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_LOGIC_OUTPUT, 0) \ - netlist_mame_logic_output_device::static_set_params(*device, _IN, \ + downcast<netlist_mame_logic_output_device &>(*device).set_params(_IN, \ netlist_mame_logic_output_device::output_delegate(& _class :: _member, \ # _class "::" # _member, _class_tag, (_class *)nullptr) ); #define MCFG_NETLIST_LOGIC_INPUT(_basetag, _tag, _name, _shift) \ MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_LOGIC_INPUT, 0) \ - netlist_mame_logic_input_device::static_set_params(*device, _name, _shift); + downcast<netlist_mame_logic_input_device &>(*device).set_params(_name, _shift); #define MCFG_NETLIST_INT_INPUT(_basetag, _tag, _name, _shift, _mask) \ MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_INT_INPUT, 0) \ - netlist_mame_int_input_device::static_set_params(*device, _name, _mask, _shift); + downcast<netlist_mame_int_input_device &>(*device).set_params(_name, _mask, _shift); #define MCFG_NETLIST_RAM_POINTER(_basetag, _tag, _name) \ MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_RAM_POINTER, 0) \ - netlist_mame_ram_pointer_device::static_set_params(*device, _name ".m_RAM"); + downcast<netlist_mame_ram_pointer_device &>(*device).set_params(_name ".m_RAM"); #define MCFG_NETLIST_STREAM_INPUT(_basetag, _chan, _name) \ MCFG_DEVICE_ADD(_basetag ":cin" # _chan, NETLIST_STREAM_INPUT, 0) \ - netlist_mame_stream_input_device::static_set_params(*device, _chan, _name); + downcast<netlist_mame_stream_input_device &>(*device).set_params(_chan, _name); #define MCFG_NETLIST_STREAM_OUTPUT(_basetag, _chan, _name) \ MCFG_DEVICE_ADD(_basetag ":cout" # _chan, NETLIST_STREAM_OUTPUT, 0) \ - netlist_mame_stream_output_device::static_set_params(*device, _chan, _name); + downcast<netlist_mame_stream_output_device &>(*device).set_params(_chan, _name); #define NETLIST_LOGIC_PORT_CHANGED(_base, _tag) \ PORT_CHANGED_MEMBER(_base ":" _tag, netlist_mame_logic_input_device, input_changed, 0) @@ -104,7 +104,7 @@ public: netlist_mame_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~netlist_mame_device(); - static void static_set_constructor(device_t &device, void (*setup_func)(netlist::setup_t &)); + void set_constructor(void (*setup_func)(netlist::setup_t &)); ATTR_HOT inline netlist::setup_t &setup(); ATTR_HOT inline netlist_mame_t &netlist() { return *m_netlist; } @@ -264,7 +264,7 @@ public: inline void update_to_current_time() { m_sound->get_stream()->update(); } - static void static_set_mult_offset(device_t &device, const double mult, const double offset); + void set_mult_offset(const double mult, const double offset); protected: double m_offset; @@ -286,7 +286,7 @@ public: // construction/destruction netlist_mame_analog_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_name(device_t &device, const char *param_name); + void set_name(const char *param_name) { m_param_name = param_name; } void write(const double val); @@ -325,7 +325,7 @@ public: // construction/destruction netlist_mame_analog_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_params(device_t &device, const char *in_name, output_delegate &&adelegate); + void set_params(const char *in_name, output_delegate &&adelegate); protected: // device-level overrides @@ -349,7 +349,7 @@ public: // construction/destruction netlist_mame_logic_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_params(device_t &device, const char *in_name, output_delegate &&adelegate); + void set_params(const char *in_name, output_delegate &&adelegate); protected: // device-level overrides @@ -371,7 +371,7 @@ public: // construction/destruction netlist_mame_int_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_params(device_t &device, const char *param_name, const uint32_t mask, const uint32_t shift); + void set_params(const char *param_name, const uint32_t mask, const uint32_t shift); void write(const uint32_t val); @@ -405,7 +405,7 @@ public: // construction/destruction netlist_mame_logic_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_params(device_t &device, const char *param_name, const uint32_t shift); + void set_params(const char *param_name, const uint32_t shift); void write(const uint32_t val); @@ -439,7 +439,7 @@ public: uint8_t* ptr() const { return m_data; } - static void static_set_params(device_t &device, const char *param_name); + void set_params(const char *param_name); protected: // device-level overrides @@ -462,7 +462,7 @@ public: // construction/destruction netlist_mame_stream_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_params(device_t &device, int channel, const char *param_name); + void set_params(int channel, const char *param_name); protected: // device-level overrides @@ -483,7 +483,7 @@ public: // construction/destruction netlist_mame_stream_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_params(device_t &device, int channel, const char *out_name); + void set_params(int channel, const char *out_name); protected: // device-level overrides diff --git a/src/devices/machine/nsc810.h b/src/devices/machine/nsc810.h index f2fd3b9b699..ca175ebd6b8 100644 --- a/src/devices/machine/nsc810.h +++ b/src/devices/machine/nsc810.h @@ -18,14 +18,14 @@ public: // construction/destruction nsc810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_portA_read_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portA_r.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portB_read_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portB_r.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portC_read_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portC_r.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portA_write_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portA_w.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portB_write_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portB_w.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portC_write_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portC_w.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_timer0_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_timer0_out.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_timer1_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_timer1_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portA_read_callback(Object &&cb) { return m_portA_r.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portB_read_callback(Object &&cb) { return m_portB_r.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portC_read_callback(Object &&cb) { return m_portC_r.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portA_write_callback(Object &&cb) { return m_portA_w.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portB_write_callback(Object &&cb) { return m_portB_w.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portC_write_callback(Object &&cb) { return m_portC_w.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_timer0_callback(Object &&cb) { return m_timer0_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_timer1_callback(Object &&cb) { return m_timer1_out.set_callback(std::forward<Object>(cb)); } void set_timer0_clock(uint32_t clk) { m_timer0_clock = clk; } void set_timer0_clock(const XTAL &clk) { set_timer0_clock(clk.value()); } @@ -108,28 +108,28 @@ private: downcast<nsc810_device *>(device)->set_timer1_clock(_t1clk); #define MCFG_NSC810_PORTA_READ(_read) \ - devcb = &nsc810_device::set_portA_read_callback(*device, DEVCB_##_read); + devcb = &downcast<nsc810_device &>(*device).set_portA_read_callback(DEVCB_##_read); #define MCFG_NSC810_PORTB_READ(_read) \ - devcb = &nsc810_device::set_portB_read_callback(*device, DEVCB_##_read); + devcb = &downcast<nsc810_device &>(*device).set_portB_read_callback(DEVCB_##_read); #define MCFG_NSC810_PORTC_READ(_read) \ - devcb = &nsc810_device::set_portC_read_callback(*device, DEVCB_##_read); + devcb = &downcast<nsc810_device &>(*device).set_portC_read_callback(DEVCB_##_read); #define MCFG_NSC810_PORTA_WRITE(_write) \ - devcb = &nsc810_device::set_portA_write_callback(*device, DEVCB_##_write); + devcb = &downcast<nsc810_device &>(*device).set_portA_write_callback(DEVCB_##_write); #define MCFG_NSC810_PORTB_WRITE(_write) \ - devcb = &nsc810_device::set_portB_write_callback(*device, DEVCB_##_write); + devcb = &downcast<nsc810_device &>(*device).set_portB_write_callback(DEVCB_##_write); #define MCFG_NSC810_PORTC_WRITE(_write) \ - devcb = &nsc810_device::set_portC_write_callback(*device, DEVCB_##_write); + devcb = &downcast<nsc810_device &>(*device).set_portC_write_callback(DEVCB_##_write); #define MCFG_NSC810_TIMER0_OUT(_write) \ - devcb = &nsc810_device::set_timer0_callback(*device, DEVCB_##_write); + devcb = &downcast<nsc810_device &>(*device).set_timer0_callback(DEVCB_##_write); #define MCFG_NSC810_TIMER1_OUT(_write) \ - devcb = &nsc810_device::set_timer1_callback(*device, DEVCB_##_write); + devcb = &downcast<nsc810_device &>(*device).set_timer1_callback(DEVCB_##_write); // device type definition DECLARE_DEVICE_TYPE(NSC810, nsc810_device) diff --git a/src/devices/machine/nvram.cpp b/src/devices/machine/nvram.cpp index ff3f852e050..b2949c1e837 100644 --- a/src/devices/machine/nvram.cpp +++ b/src/devices/machine/nvram.cpp @@ -34,31 +34,6 @@ nvram_device::nvram_device(const machine_config &mconfig, const char *tag, devic //------------------------------------------------- -// static_set_interface - configuration helper -// to set the interface -//------------------------------------------------- - -void nvram_device::static_set_default_value(device_t &device, default_value value) -{ - nvram_device &nvram = downcast<nvram_device &>(device); - nvram.m_default_value = value; -} - - -//------------------------------------------------- -// static_set_custom_handler - configuration -// helper to set a custom callback -//------------------------------------------------- - -void nvram_device::static_set_custom_handler(device_t &device, init_delegate &&handler) -{ - nvram_device &nvram = downcast<nvram_device &>(device); - nvram.m_default_value = DEFAULT_CUSTOM; - nvram.m_custom_handler = std::move(handler); -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/machine/nvram.h b/src/devices/machine/nvram.h index 2a982b590e1..15dd08fa9e0 100644 --- a/src/devices/machine/nvram.h +++ b/src/devices/machine/nvram.h @@ -21,32 +21,32 @@ #define MCFG_NVRAM_ADD_0FILL(_tag) \ MCFG_DEVICE_ADD(_tag, NVRAM, 0) \ - nvram_device::static_set_default_value(*device, nvram_device::DEFAULT_ALL_0); + downcast<nvram_device &>(*device).set_default_value(nvram_device::DEFAULT_ALL_0); #define MCFG_NVRAM_ADD_1FILL(_tag) \ MCFG_DEVICE_ADD(_tag, NVRAM, 0) \ - nvram_device::static_set_default_value(*device, nvram_device::DEFAULT_ALL_1); + downcast<nvram_device &>(*device).set_default_value(nvram_device::DEFAULT_ALL_1); #define MCFG_NVRAM_ADD_RANDOM_FILL(_tag) \ MCFG_DEVICE_ADD(_tag, NVRAM, 0) \ - nvram_device::static_set_default_value(*device, nvram_device::DEFAULT_RANDOM); + downcast<nvram_device &>(*device).set_default_value(nvram_device::DEFAULT_RANDOM); #define MCFG_NVRAM_ADD_NO_FILL(_tag) \ MCFG_DEVICE_ADD(_tag, NVRAM, 0) \ - nvram_device::static_set_default_value(*device, nvram_device::DEFAULT_NONE); + downcast<nvram_device &>(*device).set_default_value(nvram_device::DEFAULT_NONE); #define MCFG_NVRAM_ADD_CUSTOM_DRIVER(_tag, _class, _method) \ MCFG_DEVICE_ADD(_tag, NVRAM, 0) \ - nvram_device::static_set_custom_handler(*device, nvram_device::init_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); + downcast<nvram_device &>(*device).set_custom_handler(nvram_device::init_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); #define MCFG_NVRAM_REPLACE_0FILL(_tag) \ MCFG_DEVICE_REPLACE(_tag, NVRAM, 0) \ - nvram_device::static_set_default_value(*device, nvram_device::DEFAULT_ALL_0); + downcast<nvram_device &>(*device).set_default_value(nvram_device::DEFAULT_ALL_0); #define MCFG_NVRAM_REPLACE_1FILL(_tag) \ MCFG_DEVICE_REPLACE(_tag, NVRAM, 0) \ - nvram_device::static_set_default_value(*device, nvram_device::DEFAULT_ALL_1); + downcast<nvram_device &>(*device).set_default_value(nvram_device::DEFAULT_ALL_1); #define MCFG_NVRAM_REPLACE_RANDOM_FILL(_tag) \ MCFG_DEVICE_REPLACE(_tag, NVRAM, 0) \ - nvram_device::static_set_default_value(*device, nvram_device::DEFAULT_RANDOM); + downcast<nvram_device &>(*device).set_default_value(*nvram_device::DEFAULT_RANDOM); #define MCFG_NVRAM_REPLACE_CUSTOM_DRIVER(_tag, _class, _method) \ MCFG_DEVICE_REPLACE(_tag, NVRAM, 0) \ - nvram_device::static_set_custom_handler(*device, nvram_device::init_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); + downcast<nvram_device &>(*device).set_custom_handler(nvram_device::init_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); //************************************************************************** @@ -76,8 +76,12 @@ public: nvram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - static void static_set_default_value(device_t &device, default_value value); - static void static_set_custom_handler(device_t &device, init_delegate &&callback); + void set_default_value(default_value value) { m_default_value = value; } + template <typename Object> void set_custom_handler(Object &&cb) + { + m_default_value = DEFAULT_CUSTOM; + m_custom_handler = std::forward<Object>(cb); + } // controls void set_base(void *base, size_t length) { m_base = base; m_length = length; } diff --git a/src/devices/machine/pc_fdc.h b/src/devices/machine/pc_fdc.h index 8e430dace7a..2cc6970a621 100644 --- a/src/devices/machine/pc_fdc.h +++ b/src/devices/machine/pc_fdc.h @@ -20,15 +20,15 @@ MCFG_DEVICE_ADD(_tag, PC_FDC_AT, 0) #define MCFG_PC_FDC_INTRQ_CALLBACK(_write) \ - devcb = &pc_fdc_family_device::set_intrq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<pc_fdc_family_device &>(*device).set_intrq_wr_callback(DEVCB_##_write); #define MCFG_PC_FDC_DRQ_CALLBACK(_write) \ - devcb = &pc_fdc_family_device::set_drq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<pc_fdc_family_device &>(*device).set_drq_wr_callback(DEVCB_##_write); class pc_fdc_family_device : public pc_fdc_interface { public: - template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<pc_fdc_family_device &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<pc_fdc_family_device &>(device).drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq_wr_callback(Object &&cb) { return drq_cb.set_callback(std::forward<Object>(cb)); } virtual void map(address_map &map) override; diff --git a/src/devices/machine/pc_lpt.h b/src/devices/machine/pc_lpt.h index 9d8aaf83164..e9d46e37247 100644 --- a/src/devices/machine/pc_lpt.h +++ b/src/devices/machine/pc_lpt.h @@ -14,7 +14,7 @@ #include "bus/centronics/ctronics.h" #define MCFG_PC_LPT_IRQ_HANDLER(_devcb) \ - devcb = &pc_lpt_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pc_lpt_device &>(*device).set_irq_handler(DEVCB_##_devcb); /*************************************************************************** DEVICE CONFIGURATION MACROS @@ -25,8 +25,8 @@ class pc_lpt_device : public device_t public: pc_lpt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<pc_lpt_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/pci-ide.h b/src/devices/machine/pci-ide.h index 25005342704..95f43ea8e15 100644 --- a/src/devices/machine/pci-ide.h +++ b/src/devices/machine/pci-ide.h @@ -27,7 +27,7 @@ TODO: downcast<ide_pci_device *>(device)->set_irq_info(_cpu_tag, _irq_num); #define MCFG_IDE_PCI_IRQ_HANDLER(_devcb) \ - devcb = &ide_pci_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ide_pci_device &>(*device).set_irq_handler(DEVCB_##_devcb); // This will set the top 12 bits for address decoding in legacy mode. Needed for seattle driver. #define MCFG_IDE_PCI_SET_LEGACY_TOP(_val) \ @@ -42,7 +42,7 @@ public: ide_pci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); void set_irq_info(const char *tag, const int irq_num); - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ide_pci_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } void set_legacy_top(int val) { m_legacy_top = val & 0xfff; }; void set_pif(int val) { m_pif = val & 0xff; }; diff --git a/src/devices/machine/pci9050.h b/src/devices/machine/pci9050.h index 6feeca34e19..f57303cdfac 100644 --- a/src/devices/machine/pci9050.h +++ b/src/devices/machine/pci9050.h @@ -22,18 +22,18 @@ downcast<pci9050_device *>(device)->set_map(id, address_map_constructor(&map, #map, this), this); #define MCFG_PCI9050_USER_INPUT_CALLBACK(_write) \ - devcb = &pci9050_device::set_user_input_callback(*device, DEVCB_##_write); + devcb = &downcast<pci9050_device &>(*device).set_user_input_callback(DEVCB_##_write); #define MCFG_PCI9050_USER_OUTPUT_CALLBACK(_read) \ - devcb = &pci9050_device::set_user_output_callback(*device, DEVCB_##_read); + devcb = &downcast<pci9050_device &>(*device).set_user_output_callback(DEVCB_##_read); class pci9050_device : public pci_device { public: pci9050_device(const machine_config &mconfig, const char *tag, device_t *device, uint32_t clock); - template <class Object> static devcb_base &set_user_input_callback(device_t &device, Object &&cb) { return downcast<pci9050_device &>(device).m_user_input_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_user_output_callback(device_t &device, Object &&cb) { return downcast<pci9050_device &>(device).m_user_output_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_user_input_callback(Object &&cb) { return m_user_input_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_user_output_callback(Object &&cb) { return m_user_output_handler.set_callback(std::forward<Object>(cb)); } void set_map(int id, const address_map_constructor &map, device_t *device); diff --git a/src/devices/machine/pckeybrd.h b/src/devices/machine/pckeybrd.h index 419a10acafd..d890861b4ba 100644 --- a/src/devices/machine/pckeybrd.h +++ b/src/devices/machine/pckeybrd.h @@ -25,8 +25,7 @@ public: DECLARE_READ8_MEMBER(read); DECLARE_WRITE_LINE_MEMBER(enable); - template <class Object> static devcb_base &static_set_keypress_callback(device_t &device, Object &&cb) - { return downcast<pc_keyboard_device &>(device).m_out_keypress_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_keypress_callback(Object &&cb) { return m_out_keypress_func.set_callback(std::forward<Object>(cb)); } enum class KEYBOARD_TYPE { @@ -81,8 +80,7 @@ public: DECLARE_WRITE8_MEMBER( write ); - static void static_set_type(device_t &device, KEYBOARD_TYPE type, int default_set) - { downcast<at_keyboard_device &>(device).m_scan_code_set = default_set; downcast<at_keyboard_device &>(device).m_type = type; } + void set_type(KEYBOARD_TYPE type, int default_set) { m_scan_code_set = default_set; m_type = type; } protected: virtual void device_reset() override; @@ -116,16 +114,16 @@ DECLARE_DEVICE_TYPE(AT_KEYB, at_keyboard_device) #define MCFG_PC_KEYB_ADD(_tag, _cb) \ MCFG_DEVICE_ADD(_tag, PC_KEYB, 0) \ - devcb = &pc_keyboard_device::static_set_keypress_callback(*device, DEVCB_##_cb); + devcb = &downcast<pc_keyboard_device &>(*device).set_keypress_callback(DEVCB_##_cb); #define MCFG_AT_KEYB_ADD(_tag, _def_set, _cb) \ MCFG_DEVICE_ADD(_tag, AT_KEYB, 0) \ - at_keyboard_device::static_set_type(*device, pc_keyboard_device::KEYBOARD_TYPE::AT, _def_set); \ - devcb = &pc_keyboard_device::static_set_keypress_callback(*device, DEVCB_##_cb); + downcast<at_keyboard_device &>(*device).set_type(pc_keyboard_device::KEYBOARD_TYPE::AT, _def_set); \ + devcb = &downcast<pc_keyboard_device &>(*device).set_keypress_callback(DEVCB_##_cb); #define MCFG_AT_MF2_KEYB_ADD(_tag, _def_set, _cb) \ MCFG_DEVICE_ADD(_tag, AT_KEYB, 0) \ - at_keyboard_device::static_set_type(*device, pc_keyboard_device::KEYBOARD_TYPE_MF2, _def_set); \ - devcb = &pc_keyboard_device::static_set_keypress_callback(*device, DEVCB_##_cb); + downcast<at_keyboard_device &>(*device).set_type(pc_keyboard_device::KEYBOARD_TYPE_MF2, _def_set); \ + devcb = &downcast<pc_keyboard_device &>(*device).set_keypress_callback(DEVCB_##_cb); #endif // MAME_MACHINE_PCKEYBRD_H diff --git a/src/devices/machine/pdc.h b/src/devices/machine/pdc.h index 7d1abc57590..734a1849af6 100644 --- a/src/devices/machine/pdc.h +++ b/src/devices/machine/pdc.h @@ -37,8 +37,8 @@ public: pdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); /* Callbacks */ - template <class Object> static devcb_base &m68k_r_callback(device_t &device, Object &&cb) { return downcast<pdc_device &>(device).m_m68k_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &m68k_w_callback(device_t &device, Object &&cb) { return downcast<pdc_device &>(device).m_m68k_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &m68k_r_callback(Object &&cb) { return m_m68k_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &m68k_w_callback(Object &&cb) { return m_m68k_w_cb.set_callback(std::forward<Object>(cb)); } /* Read and Write members */ DECLARE_WRITE_LINE_MEMBER(hdd_irq); @@ -115,8 +115,8 @@ DECLARE_DEVICE_TYPE(PDC, pdc_device) /* MCFG defines */ #define MCFG_PDC_R_CB(_devcb) \ - devcb = &pdc_device::m68k_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pdc_device &>(*device).m68k_r_callback(DEVCB_##_devcb); #define MCFG_PDC_W_CB(_devcb) \ - devcb = &pdc_device::m68k_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pdc_device &>(*device).m68k_w_callback(DEVCB_##_devcb); #endif // MAME_MACHINE_PDC_H diff --git a/src/devices/machine/phi.h b/src/devices/machine/phi.h index c3b78f1d8a0..6a1e9bfaad5 100644 --- a/src/devices/machine/phi.h +++ b/src/devices/machine/phi.h @@ -13,41 +13,41 @@ // Set read and write callbacks to access DIO bus on IEEE-488 #define MCFG_PHI_DIO_READWRITE_CB(_read , _write) \ - phi_device::set_dio_read_cb(*device , DEVCB_##_read); \ - phi_device::set_dio_write_cb(*device , DEVCB_##_write); + downcast<phi_device &>(*device).set_dio_read_cb(DEVCB_##_read); \ + downcast<phi_device &>(*device).set_dio_write_cb(DEVCB_##_write); // Set write callbacks to access uniline signals on IEEE-488 #define MCFG_PHI_EOI_WRITE_CB(_write) \ - phi_device::set_488_signal_write_cb(*device , phi_device::PHI_488_EOI , DEVCB_##_write); + downcast<phi_device &>(*device).set_488_signal_write_cb(phi_device::PHI_488_EOI , DEVCB_##_write); #define MCFG_PHI_DAV_WRITE_CB(_write) \ - phi_device::set_488_signal_write_cb(*device , phi_device::PHI_488_DAV , DEVCB_##_write); + downcast<phi_device &>(*device).set_488_signal_write_cb(phi_device::PHI_488_DAV , DEVCB_##_write); #define MCFG_PHI_NRFD_WRITE_CB(_write) \ - phi_device::set_488_signal_write_cb(*device , phi_device::PHI_488_NRFD , DEVCB_##_write); + downcast<phi_device &>(*device).set_488_signal_write_cb(phi_device::PHI_488_NRFD , DEVCB_##_write); #define MCFG_PHI_NDAC_WRITE_CB(_write) \ - phi_device::set_488_signal_write_cb(*device , phi_device::PHI_488_NDAC , DEVCB_##_write); + downcast<phi_device &>(*device).set_488_signal_write_cb(phi_device::PHI_488_NDAC , DEVCB_##_write); #define MCFG_PHI_IFC_WRITE_CB(_write) \ - phi_device::set_488_signal_write_cb(*device , phi_device::PHI_488_IFC , DEVCB_##_write); + downcast<phi_device &>(*device).set_488_signal_write_cb(phi_device::PHI_488_IFC , DEVCB_##_write); #define MCFG_PHI_SRQ_WRITE_CB(_write) \ - phi_device::set_488_signal_write_cb(*device , phi_device::PHI_488_SRQ , DEVCB_##_write); + downcast<phi_device &>(*device).set_488_signal_write_cb(phi_device::PHI_488_SRQ , DEVCB_##_write); #define MCFG_PHI_ATN_WRITE_CB(_write) \ - phi_device::set_488_signal_write_cb(*device , phi_device::PHI_488_ATN , DEVCB_##_write); + downcast<phi_device &>(*device).set_488_signal_write_cb(phi_device::PHI_488_ATN , DEVCB_##_write); #define MCFG_PHI_REN_WRITE_CB(_write) \ - phi_device::set_488_signal_write_cb(*device , phi_device::PHI_488_REN , DEVCB_##_write); + downcast<phi_device &>(*device).set_488_signal_write_cb(phi_device::PHI_488_REN , DEVCB_##_write); // Set write callback for INT signal #define MCFG_PHI_INT_WRITE_CB(_write) \ - phi_device::set_int_write_cb(*device , DEVCB_##_write); + downcast<phi_device &>(*device).set_int_write_cb(DEVCB_##_write); // Set write callback for DMARQ signal #define MCFG_PHI_DMARQ_WRITE_CB(_write) \ - phi_device::set_dmarq_write_cb(*device , DEVCB_##_write); + downcast<phi_device &>(*device).set_dmarq_write_cb(DEVCB_##_write); class phi_device : public device_t { @@ -68,20 +68,11 @@ public: PHI_488_SIGNAL_COUNT }; - template<class _Object> static devcb_base& set_dio_read_cb(device_t &device , _Object object) - { return downcast<phi_device&>(device).m_dio_read_func.set_callback(object); } - - template<class _Object> static devcb_base& set_dio_write_cb(device_t &device , _Object object) - { return downcast<phi_device&>(device).m_dio_write_func.set_callback(object); } - - template<class _Object> static devcb_base& set_488_signal_write_cb(device_t &device , phi_488_signal_t signal , _Object object) - { return downcast<phi_device&>(device).m_signal_wr_fns[ signal ].set_callback(object); } - - template<class _Object> static devcb_base& set_int_write_cb(device_t &device , _Object object) - { return downcast<phi_device&>(device).m_int_write_func.set_callback(object); } - - template<class _Object> static devcb_base& set_dmarq_write_cb(device_t &device , _Object object) - { return downcast<phi_device&>(device).m_dmarq_write_func.set_callback(object); } + template<class Object> devcb_base& set_dio_read_cb(Object &&cb) { return m_dio_read_func.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base& set_dio_write_cb(Object &&cb) { return m_dio_write_func.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base& set_488_signal_write_cb(phi_488_signal_t signal , Object &&cb) { return m_signal_wr_fns[ signal ].set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base& set_int_write_cb(Object &&cb) { return m_int_write_func.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base& set_dmarq_write_cb(Object &&cb) { return m_dmarq_write_func.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(eoi_w); DECLARE_WRITE_LINE_MEMBER(dav_w); diff --git a/src/devices/machine/pic8259.h b/src/devices/machine/pic8259.h index af46b03569d..481384999d4 100644 --- a/src/devices/machine/pic8259.h +++ b/src/devices/machine/pic8259.h @@ -34,15 +34,15 @@ // Interrupt request output to CPU or master 8259 (active high) #define MCFG_PIC8259_OUT_INT_CB(_devcb) \ - devcb = &pic8259_device::static_set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic8259_device &>(*device).set_out_int_callback(DEVCB_##_devcb); // Slave program select (VCC = master; GND = slave; pin becomes EN output in buffered mode) #define MCFG_PIC8259_IN_SP_CB(_devcb) \ - devcb = &pic8259_device::static_set_in_sp_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic8259_device &>(*device).set_in_sp_callback(DEVCB_##_devcb); // Cascaded interrupt acknowledge request for slave 8259 to place vector on data bus #define MCFG_PIC8259_CASCADE_ACK_CB(_devcb) \ - devcb = &pic8259_device::static_set_read_slave_ack_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic8259_device &>(*device).set_read_slave_ack_callback(DEVCB_##_devcb); class pic8259_device : public device_t @@ -50,9 +50,9 @@ class pic8259_device : public device_t public: pic8259_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &static_set_out_int_callback(device_t &device, Object &&cb) { return downcast<pic8259_device &>(device).m_out_int_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_in_sp_callback(device_t &device, Object &&cb) { return downcast<pic8259_device &>(device).m_in_sp_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_read_slave_ack_callback(device_t &device, Object &&cb) { return downcast<pic8259_device &>(device).m_read_slave_ack_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_sp_callback(Object &&cb) { return m_in_sp_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_slave_ack_callback(Object &&cb) { return m_read_slave_ack_func.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/pit8253.h b/src/devices/machine/pit8253.h index 998de676bb3..69f25ba7484 100644 --- a/src/devices/machine/pit8253.h +++ b/src/devices/machine/pit8253.h @@ -35,22 +35,22 @@ ***************************************************************************/ #define MCFG_PIT8253_CLK0(_clk) \ - pit8253_device::set_clk0(*device, _clk); + downcast<pit8253_device &>(*device).set_clk0(_clk); #define MCFG_PIT8253_CLK1(_clk) \ - pit8253_device::set_clk1(*device, _clk); + downcast<pit8253_device &>(*device).set_clk1(_clk); #define MCFG_PIT8253_CLK2(_clk) \ - pit8253_device::set_clk2(*device, _clk); + downcast<pit8253_device &>(*device).set_clk2(_clk); #define MCFG_PIT8253_OUT0_HANDLER(_devcb) \ - devcb = &pit8253_device::set_out0_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pit8253_device &>(*device).set_out0_handler(DEVCB_##_devcb); #define MCFG_PIT8253_OUT1_HANDLER(_devcb) \ - devcb = &pit8253_device::set_out1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pit8253_device &>(*device).set_out1_handler(DEVCB_##_devcb); #define MCFG_PIT8253_OUT2_HANDLER(_devcb) \ - devcb = &pit8253_device::set_out2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<pit8253_device &>(*device).set_out2_handler(DEVCB_##_devcb); class pit8253_device : public device_t @@ -58,16 +58,16 @@ class pit8253_device : public device_t public: pit8253_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_clk0(device_t &device, double clk0) { downcast<pit8253_device &>(device).m_clk0 = clk0; } - static void set_clk1(device_t &device, double clk1) { downcast<pit8253_device &>(device).m_clk1 = clk1; } - static void set_clk2(device_t &device, double clk2) { downcast<pit8253_device &>(device).m_clk2 = clk2; } - static void set_clk0(device_t &device, const XTAL &xtal) { set_clk0(device, xtal.dvalue()); } - static void set_clk1(device_t &device, const XTAL &xtal) { set_clk1(device, xtal.dvalue()); } - static void set_clk2(device_t &device, const XTAL &xtal) { set_clk2(device, xtal.dvalue()); } - template <class Object> static devcb_base &set_out0_handler(device_t &device, Object &&cb) { return downcast<pit8253_device &>(device).m_out0_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out1_handler(device_t &device, Object &&cb) { return downcast<pit8253_device &>(device).m_out1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out2_handler(device_t &device, Object &&cb) { return downcast<pit8253_device &>(device).m_out2_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + void set_clk0(double clk0) { m_clk0 = clk0; } + void set_clk1(double clk1) { m_clk1 = clk1; } + void set_clk2(double clk2) { m_clk2 = clk2; } + void set_clk0(const XTAL &xtal) { set_clk0(xtal.dvalue()); } + void set_clk1(const XTAL &xtal) { set_clk1(xtal.dvalue()); } + void set_clk2(const XTAL &xtal) { set_clk2(xtal.dvalue()); } + template <class Object> devcb_base &set_out0_handler(Object &&cb) { return m_out0_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out1_handler(Object &&cb) { return m_out1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out2_handler(Object &&cb) { return m_out2_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/pla.h b/src/devices/machine/pla.h index be998c3184a..a0272117613 100644 --- a/src/devices/machine/pla.h +++ b/src/devices/machine/pla.h @@ -19,16 +19,16 @@ ///************************************************************************* #define MCFG_PLA_ADD(tag, inputs, outputs, terms) \ - MCFG_DEVICE_ADD((tag), PLA, 0) \ - pla_device::set_num_inputs(*device, (inputs)); \ - pla_device::set_num_outputs(*device, (outputs)); \ - pla_device::set_num_terms(*device, (terms)); + MCFG_DEVICE_ADD((tag), PLA, 0) \ + downcast<pla_device &>(*device).set_num_inputs((inputs)); \ + downcast<pla_device &>(*device).set_num_outputs((outputs)); \ + downcast<pla_device &>(*device).set_num_terms((terms)); #define MCFG_PLA_INPUTMASK(mask) \ - pla_device::set_inputmask(*device, (mask)); + downcast<pla_device &>(*device).set_inputmask((mask)); #define MCFG_PLA_FILEFORMAT(format) \ - pla_device::set_format(*device, (pla_device::FMT::format)); + downcast<pla_device &>(*device).set_format((pla_device::FMT::format)); // macros for known (and used) devices @@ -52,12 +52,12 @@ GND 14 |_____________| 15 F3 */ #define MCFG_PLS100_ADD(tag) \ - MCFG_PLA_ADD((tag), 16, 8, 48) + MCFG_PLA_ADD((tag), 16, 8, 48) // MOS 8721 PLA // TODO: actual number of terms is unknown #define MCFG_MOS8721_ADD(tag) \ - MCFG_PLA_ADD((tag), 27, 18, 379) + MCFG_PLA_ADD((tag), 27, 18, 379) @@ -79,12 +79,12 @@ public: // construction/destruction pla_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_num_inputs(device_t &device, uint32_t i) { downcast<pla_device &>(device).m_inputs = i; } - static void set_num_outputs(device_t &device, uint32_t o) { downcast<pla_device &>(device).m_outputs = o; } - static void set_num_terms(device_t &device, uint32_t t) { downcast<pla_device &>(device).m_terms = t; } - static void set_inputmask(device_t &device, uint32_t mask) { downcast<pla_device &>(device).m_input_mask = mask; } // uint32_t! - static void set_format(device_t &device, FMT format) { downcast<pla_device &>(device).m_format = format; } + // configuration helpers + void set_num_inputs(uint32_t i) { m_inputs = i; } + void set_num_outputs(uint32_t o) { m_outputs = o; } + void set_num_terms(uint32_t t) { m_terms = t; } + void set_inputmask(uint32_t mask) { m_input_mask = mask; } // uint32_t! + void set_format(FMT format) { m_format = format; } uint32_t inputs() { return m_inputs; } uint32_t outputs() { return m_outputs; } diff --git a/src/devices/machine/r10696.h b/src/devices/machine/r10696.h index ef5d4c8e78f..1abbb030d88 100644 --- a/src/devices/machine/r10696.h +++ b/src/devices/machine/r10696.h @@ -28,8 +28,8 @@ /* Set the read and write group (4-bit; nibble) delegates */ #define MCFG_R10696_IO(_devcb_rd,_devcb_wr) \ - r10696_device::set_iord(*device, DEVCB_##_devcb_rd); \ - r10696_device::set_iowr(*device, DEVCB_##_devcb_wr); + downcast<r10696_device &>(*device).set_iord(DEVCB_##_devcb_rd); \ + downcast<r10696_device &>(*device).set_iowr(DEVCB_##_devcb_wr); class r10696_device : public device_t { @@ -39,8 +39,8 @@ public: DECLARE_READ8_MEMBER ( io_r ); DECLARE_WRITE8_MEMBER( io_w ); - template <class Object> static devcb_base &set_iord(device_t &device, Object &&cb) { return downcast<r10696_device &>(device).m_iord.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_iowr(device_t &device, Object &&cb) { return downcast<r10696_device &>(device).m_iowr.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_iord(Object &&cb) { return m_iord.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_iowr(Object &&cb) { return m_iowr.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/machine/r10788.h b/src/devices/machine/r10788.h index 43c0b76ca88..5899e1c203a 100644 --- a/src/devices/machine/r10788.h +++ b/src/devices/machine/r10788.h @@ -27,7 +27,7 @@ /* Set the writer used to update a display digit */ #define MCFG_R10788_UPDATE(devcb) \ - r10788_device::set_update(*device, DEVCB_##devcb); + downcast<r10788_device &>(*device).set_update(DEVCB_##devcb); class r10788_device : public device_t { @@ -48,7 +48,7 @@ public: DECLARE_READ8_MEMBER ( io_r ); DECLARE_WRITE8_MEMBER( io_w ); - template <class Object> static devcb_base &set_update(device_t &device, Object &&cb) { return downcast<r10788_device &>(device).m_display.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_update(Object &&cb) { return m_display.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/machine/ra17xx.h b/src/devices/machine/ra17xx.h index a88111a9776..c0715336145 100644 --- a/src/devices/machine/ra17xx.h +++ b/src/devices/machine/ra17xx.h @@ -26,13 +26,13 @@ // Set the read line handler #define MCFG_RA17XX_READ(devcb) \ - ra17xx_device::set_iord(*device, DEVCB_##devcb); + downcast<ra17xx_device &>(*device).set_iord(DEVCB_##devcb); // Set the write line handler #define MCFG_RA17XX_WRITE(devcb) \ - ra17xx_device::set_iowr(*device, DEVCB_##devcb); + downcast<ra17xx_device &>(*device).set_iowr(DEVCB_##devcb); #define MCFG_RA17XX_CPU(tag) \ - ra17xx_device::set_cpu_tag(*device, "^" tag); + downcast<ra17xx_device &>(*device).set_cpu_tag("^" tag); class ra17xx_device : public device_t { @@ -42,9 +42,9 @@ public: DECLARE_READ8_MEMBER ( io_r ); DECLARE_WRITE8_MEMBER( io_w ); - template <class Object> static devcb_base &set_iord(device_t &device, Object &&cb) { return downcast<ra17xx_device &>(device).m_iord.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_iowr(device_t &device, Object &&cb) { return downcast<ra17xx_device &>(device).m_iowr.set_callback(std::forward<Object>(cb)); } - static void set_cpu_tag(device_t &device, const char *tag) { downcast<ra17xx_device &>(device).m_cpu.set_tag(tag); } + template <class Object> devcb_base &set_iord(Object &&cb) { return m_iord.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_iowr(Object &&cb) { return m_iowr.set_callback(std::forward<Object>(cb)); } + void set_cpu_tag(const char *tag) { m_cpu.set_tag(tag); } protected: // device-level overrides diff --git a/src/devices/machine/ram.h b/src/devices/machine/ram.h index 503ad8d0328..eeea59abd7b 100644 --- a/src/devices/machine/ram.h +++ b/src/devices/machine/ram.h @@ -33,16 +33,16 @@ #define MCFG_RAM_MODIFY(_tag) \ MCFG_DEVICE_MODIFY(_tag) \ - ram_device::static_set_extra_options(*device, nullptr); + downcast<ram_device &>(*device).set_extra_options(nullptr); #define MCFG_RAM_DEFAULT_SIZE(_default_size) \ - ram_device::static_set_default_size(*device, _default_size); + downcast<ram_device &>(*device).set_default_size(_default_size); #define MCFG_RAM_EXTRA_OPTIONS(_extra_options) \ - ram_device::static_set_extra_options(*device, _extra_options); + downcast<ram_device &>(*device).set_extra_options(_extra_options); #define MCFG_RAM_DEFAULT_VALUE(_default_value) \ - ram_device::static_set_default_value(*device, _default_value); + downcast<ram_device &>(*device).set_default_value(_default_value); /*************************************************************************** @@ -67,9 +67,9 @@ public: void write(offs_t offset, uint8_t data) { m_pointer[offset % m_size] = data; } // inline configuration helpers - static void static_set_default_size(device_t &device, const char *default_size) { downcast<ram_device &>(device).m_default_size = default_size; } - static void static_set_extra_options(device_t &device, const char *extra_options) { downcast<ram_device &>(device).m_extra_options_string = extra_options && extra_options[0] ? extra_options : nullptr; downcast<ram_device &>(device).m_extra_options.clear(); } - static void static_set_default_value(device_t &device, uint8_t default_value) { downcast<ram_device &>(device).m_default_value = default_value; } + void set_default_size(const char *default_size) { m_default_size = default_size; } + void set_extra_options(const char *extra_options) { m_extra_options_string = extra_options && extra_options[0] ? extra_options : nullptr; m_extra_options.clear(); } + void set_default_value(uint8_t default_value) { m_default_value = default_value; } protected: virtual void device_start() override; diff --git a/src/devices/machine/rf5c296.h b/src/devices/machine/rf5c296.h index f27644e0269..47ebf683cf3 100644 --- a/src/devices/machine/rf5c296.h +++ b/src/devices/machine/rf5c296.h @@ -8,15 +8,15 @@ #include "pccard.h" #define MCFG_RF5C296_SLOT(name) \ - rf5c296_device::set_pccard_name(*device, name); + downcast<rf5c296_device &>(*device).set_pccard_name(name); class rf5c296_device : public device_t { public: rf5c296_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - static void set_pccard_name(device_t &device, const char *name) { downcast<rf5c296_device &>(device).m_pccard_name = name; } + // configuration helpers + void set_pccard_name(const char *name) { m_pccard_name = name; } DECLARE_WRITE16_MEMBER(io_w); DECLARE_READ16_MEMBER(io_r); diff --git a/src/devices/machine/ripple_counter.cpp b/src/devices/machine/ripple_counter.cpp index ae38d342d68..ec0808181ff 100644 --- a/src/devices/machine/ripple_counter.cpp +++ b/src/devices/machine/ripple_counter.cpp @@ -48,19 +48,6 @@ ripple_counter_device::ripple_counter_device(const machine_config &mconfig, cons //------------------------------------------------- -// static_set_stages - configure the number of -// stages used to count -//------------------------------------------------- - -void ripple_counter_device::static_set_stages(device_t &device, u8 stages) -{ - auto &dev = downcast<ripple_counter_device &>(device); - dev.m_count_mask = (1U << stages) - 1; - dev.set_rom_addr_width(stages); -} - - -//------------------------------------------------- // memory_space_config - return a description of // any address spaces owned by this device //------------------------------------------------- diff --git a/src/devices/machine/ripple_counter.h b/src/devices/machine/ripple_counter.h index f9e997f3348..cdbcb214d7d 100644 --- a/src/devices/machine/ripple_counter.h +++ b/src/devices/machine/ripple_counter.h @@ -16,13 +16,13 @@ //************************************************************************** #define MCFG_RIPPLE_COUNTER_STAGES(_stages) \ - ripple_counter_device::static_set_stages(*device, _stages); + downcast<ripple_counter_device &>(*device).set_stages(_stages); // output callbacks #define MCFG_RIPPLE_COUNTER_COUNT_OUT_CB(_devcb) \ - devcb = &ripple_counter_device::static_set_count_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ripple_counter_device &>(*device).set_count_out_cb(DEVCB_##_devcb); #define MCFG_RIPPLE_COUNTER_ROM_OUT_CB(_devcb) \ - devcb = &ripple_counter_device::static_set_rom_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<ripple_counter_device &>(*device).set_rom_out_cb(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -36,12 +36,10 @@ public: // construction/destruction ripple_counter_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration - static void static_set_stages(device_t &device, u8 stages); - template<class Object> static devcb_base &static_set_count_out_cb(device_t &device, Object &&cb) - { return downcast<ripple_counter_device &>(device).m_count_out_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &static_set_rom_out_cb(device_t &device, Object &&cb) - { return downcast<ripple_counter_device &>(device).m_rom_out_cb.set_callback(std::forward<Object>(cb)); } + // configuration + void set_stages(u8 stages) { m_count_mask = (1U << stages) - 1; set_rom_addr_width(stages); } + template<class Object> devcb_base &set_count_out_cb(Object &&cb) { return m_count_out_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_rom_out_cb(Object &&cb) { return m_rom_out_cb.set_callback(std::forward<Object>(cb)); } // control line handlers DECLARE_WRITE_LINE_MEMBER(clock_w); diff --git a/src/devices/machine/rp5c01.h b/src/devices/machine/rp5c01.h index 247c6157ad0..6c0cf00050b 100644 --- a/src/devices/machine/rp5c01.h +++ b/src/devices/machine/rp5c01.h @@ -32,11 +32,11 @@ //************************************************************************** #define MCFG_RP5C01_OUT_ALARM_CB(_devcb) \ - devcb = &rp5c01_device::set_out_alarm_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rp5c01_device &>(*device).set_out_alarm_callback(DEVCB_##_devcb); // include this macro if the chip is not battery backed #define MCFG_RP5C01_REMOVE_BATTERY() \ - rp5c01_device::remove_battery(*device); + downcast<rp5c01_device &>(*device).remove_battery(); //************************************************************************** @@ -53,8 +53,8 @@ public: // construction/destruction rp5c01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_alarm_callback(device_t &device, Object &&cb) { return downcast<rp5c01_device &>(device).m_out_alarm_cb.set_callback(std::forward<Object>(cb)); } - static void remove_battery(device_t &device) { downcast<rp5c01_device &>(device).m_battery_backed = false; } + template <class Object> devcb_base &set_out_alarm_callback(Object &&cb) { return m_out_alarm_cb.set_callback(std::forward<Object>(cb)); } + void remove_battery() { m_battery_backed = false; } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/rp5c15.h b/src/devices/machine/rp5c15.h index 128d2da6d2c..21633834f07 100644 --- a/src/devices/machine/rp5c15.h +++ b/src/devices/machine/rp5c15.h @@ -32,10 +32,10 @@ //************************************************************************** #define MCFG_RP5C15_OUT_ALARM_CB(_devcb) \ - devcb = &rp5c15_device::set_out_alarm_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rp5c15_device &>(*device).set_out_alarm_callback(DEVCB_##_devcb); #define MCFG_RP5C15_OUT_CLKOUT_CB(_devcb) \ - devcb = &rp5c15_device::set_out_clkout_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rp5c15_device &>(*device).set_out_clkout_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -50,8 +50,8 @@ public: // construction/destruction rp5c15_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_alarm_callback(device_t &device, Object &&cb) { return downcast<rp5c15_device &>(device).m_out_alarm_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_clkout_callback(device_t &device, Object &&cb) { return downcast<rp5c15_device &>(device).m_out_clkout_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_alarm_callback(Object &&cb) { return m_out_alarm_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_clkout_callback(Object &&cb) { return m_out_clkout_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/rstbuf.h b/src/devices/machine/rstbuf.h index 39a45400ee3..fe808b473e6 100644 --- a/src/devices/machine/rstbuf.h +++ b/src/devices/machine/rstbuf.h @@ -16,7 +16,7 @@ //************************************************************************** #define MCFG_RST_BUFFER_INT_CALLBACK(_devcb) \ - devcb = &rst_buffer_device::set_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rst_buffer_device &>(*device).set_int_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -27,12 +27,8 @@ class rst_buffer_device : public device_t { public: - // static configuration - template<class Object> - static devcb_base &set_int_callback(device_t &device, Object &&object) - { - return downcast<rst_buffer_device &>(device).m_int_cb.set_callback(std::forward<Object>(object)); - } + // configuration + template<class Object> devcb_base &set_int_callback(Object &&object) { return m_int_cb.set_callback(std::forward<Object>(object)); } // getter (required override) virtual u8 get_vector() const = 0; diff --git a/src/devices/machine/rtc4543.h b/src/devices/machine/rtc4543.h index fd63705ab91..3741f8a46d8 100644 --- a/src/devices/machine/rtc4543.h +++ b/src/devices/machine/rtc4543.h @@ -24,7 +24,7 @@ MCFG_DEVICE_ADD((tag), RTC4543, (clock)) #define MCFG_RTC4543_DATA_CALLBACK(cb) \ - devcb = &rtc4543_device::set_data_cb(*device, DEVCB_##cb); + devcb = &downcast<rtc4543_device &>(*device).set_data_cb(DEVCB_##cb); #define MCFG_JRC6355E_ADD(tag, clock) \ MCFG_DEVICE_ADD((tag), JRC6355E, (clock)) @@ -52,7 +52,7 @@ public: DECLARE_READ_LINE_MEMBER( data_r ); DECLARE_WRITE_LINE_MEMBER( data_w ); - template <class Object> static devcb_base &set_data_cb(device_t &device, Object &&cb) { return downcast<rtc4543_device &>(device).data_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_data_cb(Object &&cb) { return data_cb.set_callback(std::forward<Object>(cb)); } protected: rtc4543_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/machine/rtc65271.h b/src/devices/machine/rtc65271.h index e32c87af8c7..93284622b1a 100644 --- a/src/devices/machine/rtc65271.h +++ b/src/devices/machine/rtc65271.h @@ -15,7 +15,7 @@ //************************************************************************** #define MCFG_RTC65271_INTERRUPT_CB(cb) \ - devcb = &rtc65271_device::set_interrupt_callback(*device, DEVCB_##cb); + devcb = &downcast<rtc65271_device &>(*device).set_interrupt_callback(DEVCB_##cb); // ======================> rtc65271_device @@ -27,7 +27,7 @@ public: // construction/destruction rtc65271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_interrupt_callback(device_t &device, Object &&cb) { return downcast<rtc65271_device &>(device).m_interrupt_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_interrupt_callback(Object &&cb) { return m_interrupt_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( rtc_r ); DECLARE_READ8_MEMBER( xram_r ); diff --git a/src/devices/machine/s2636.h b/src/devices/machine/s2636.h index 507351b5ad9..4653273c281 100644 --- a/src/devices/machine/s2636.h +++ b/src/devices/machine/s2636.h @@ -23,13 +23,13 @@ *************************************/ #define MCFG_S2636_OFFSETS(yoffs, xoffs) \ - s2636_device::set_offsets(*device, (yoffs), (xoffs)); + downcast<s2636_device &>(*device).set_offsets((yoffs), (xoffs)); #define MCFG_S2636_DIVIDER(divider) \ - s2636_device::set_divider(*device, (divider)); + downcast<s2636_device &>(*device).set_divider((divider)); #define MCFG_S2623_SET_INTREQ_CALLBACK(cb) \ - devcb = &s2636_device::set_intreq_cb(*device, DEVCB_##cb); + devcb = &downcast<s2636_device &>(*device).set_intreq_cb(DEVCB_##cb); /************************************* @@ -45,24 +45,11 @@ class s2636_device : public device_t, public: s2636_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_offsets(device_t &device, int y_offset, int x_offset) - { - s2636_device &dev = downcast<s2636_device &>(device); - dev.m_x_offset = x_offset; - dev.m_y_offset = y_offset; - } + void set_offsets(int y_offset, int x_offset) { m_x_offset = x_offset; m_y_offset = y_offset; } - static void set_divider(device_t &device, int divider) - { - s2636_device &dev = downcast<s2636_device &>(device); - dev.m_divider = divider; - } + void set_divider(int divider) { m_divider = divider; } - template <class Object> static devcb_base &set_intreq_cb(device_t &device, Object &&cb) - { - s2636_device &dev = downcast<s2636_device &>(device); - return dev.m_intreq_cb.set_callback(std::forward<Object>(cb)); - } + template <class Object> devcb_base &set_intreq_cb(Object &&cb) { return m_intreq_cb.set_callback(std::forward<Object>(cb)); } // returns a BITMAP_FORMAT_IND16 bitmap the size of the screen // D0-D2 of each pixel is the pixel color diff --git a/src/devices/machine/s3c2400.cpp b/src/devices/machine/s3c2400.cpp index c076abbd96d..f250759e0fb 100644 --- a/src/devices/machine/s3c2400.cpp +++ b/src/devices/machine/s3c2400.cpp @@ -217,16 +217,6 @@ s3c2400_device::~s3c2400_device() } //------------------------------------------------- -// static_set_palette_tag: Set the tag of the -// palette device -//------------------------------------------------- - -void s3c2400_device::static_set_palette_tag(device_t &device, const char *tag) -{ - downcast<s3c2400_device &>(device).m_palette.set_tag(tag); -} - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/machine/s3c2400.h b/src/devices/machine/s3c2400.h index 4c58e4b67dd..b58b24e30af 100644 --- a/src/devices/machine/s3c2400.h +++ b/src/devices/machine/s3c2400.h @@ -21,37 +21,37 @@ #define S3C2400_TAG "s3c2400" #define MCFG_S3C2400_PALETTE(palette_tag) \ - s3c2400_device::static_set_palette_tag(*device, ("^" palette_tag)); + downcast<s3c2400_device &>(*device).set_palette_tag(("^" palette_tag)); #define MCFG_S3C2400_CORE_PIN_R_CB(cb) \ - devcb = &s3c2400_device::set_core_pin_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2400_device &>(*device).set_core_pin_r_callback(DEVCB_##cb); #define MCFG_S3C2400_CORE_PIN_W_CB(cb) \ - devcb = &s3c2400_device::set_core_pin_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2400_device &>(*device).set_core_pin_w_callback(DEVCB_##cb); #define MCFG_S3C2400_GPIO_PORT_R_CB(cb) \ - devcb = &s3c2400_device::set_gpio_port_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2400_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb); #define MCFG_S3C2400_GPIO_PORT_W_CB(cb) \ - devcb = &s3c2400_device::set_gpio_port_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2400_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb); #define MCFG_S3C2400_I2C_SCL_W_CB(cb) \ - devcb = &s3c2400_device::set_i2c_scl_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2400_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb); #define MCFG_S3C2400_I2C_SDA_R_CB(cb) \ - devcb = &s3c2400_device::set_i2c_sda_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2400_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb); #define MCFG_S3C2400_I2C_SDA_W_CB(cb) \ - devcb = &s3c2400_device::set_i2c_sda_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2400_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb); #define MCFG_S3C2400_ADC_DATA_R_CB(cb) \ - devcb = &s3c2400_device::set_adc_data_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2400_device &>(*device).set_adc_data_r_callback(DEVCB_##cb); #define MCFG_S3C2400_I2S_DATA_W_CB(cb) \ - devcb = &s3c2400_device::set_i2s_data_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2400_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb); #define MCFG_S3C2400_LCD_FLAGS(flags) \ - s3c2400_device::set_lcd_flags(*device, (flags)); + downcast<s3c2400_device &>(*device).set_lcd_flags((flags)); enum { @@ -157,18 +157,18 @@ public: s3c2400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~s3c2400_device(); - // static configuration - static void static_set_palette_tag(device_t &device, const char *tag); - template <class Object> static devcb_base &set_core_pin_r_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_pin_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_core_pin_w_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_pin_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_gpio_port_r_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_port_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_gpio_port_w_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_port_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_scl_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_sda_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_sda_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_adc_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_data_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2s_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_data_w_cb.set_callback(std::forward<Object>(cb)); } - static void set_lcd_flags(device_t &device, int flags) { downcast<s3c2400_device &>(device).m_flags = flags; } + // configuration + void set_palette_tag(const char *tag) { m_palette.set_tag(tag); } + template <class Object> devcb_base &set_core_pin_r_callback(Object &&cb) { return m_pin_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_core_pin_w_callback(Object &&cb) { return m_pin_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gpio_port_r_callback(Object &&cb) { return m_port_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gpio_port_w_callback(Object &&cb) { return m_port_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_scl_w_callback(Object &&cb) { return m_scl_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_sda_r_callback(Object &&cb) { return m_sda_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_sda_w_callback(Object &&cb) { return m_sda_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_adc_data_r_callback(Object &&cb) { return m_data_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2s_data_w_callback(Object &&cb) { return m_data_w_cb.set_callback(std::forward<Object>(cb)); } + void set_lcd_flags(int flags) { m_flags = flags; } protected: // device-level overrides diff --git a/src/devices/machine/s3c2410.cpp b/src/devices/machine/s3c2410.cpp index 175138443ab..c6728ba6135 100644 --- a/src/devices/machine/s3c2410.cpp +++ b/src/devices/machine/s3c2410.cpp @@ -279,16 +279,6 @@ s3c2410_device::~s3c2410_device() } //------------------------------------------------- -// static_set_palette_tag: Set the tag of the -// palette device -//------------------------------------------------- - -void s3c2410_device::static_set_palette_tag(device_t &device, const char *tag) -{ - downcast<s3c2410_device &>(device).m_palette.set_tag(tag); -} - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/machine/s3c2410.h b/src/devices/machine/s3c2410.h index eadaf786a37..10b7ee800b3 100644 --- a/src/devices/machine/s3c2410.h +++ b/src/devices/machine/s3c2410.h @@ -21,49 +21,49 @@ #define S3C2410_TAG "s3c2410" #define MCFG_S3C2410_PALETTE(palette_tag) \ - s3c2410_device::static_set_palette_tag(*device, ("^" palette_tag)); + downcast<s3c2410_device &>(*device).set_palette_tag(("^" palette_tag)); #define MCFG_S3C2410_CORE_PIN_R_CB(cb) \ - devcb = &s3c2410_device::set_core_pin_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_core_pin_r_callback(DEVCB_##cb); #define MCFG_S3C2410_CORE_PIN_W_CB(cb) \ - devcb = &s3c2410_device::set_core_pin_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_core_pin_w_callback(DEVCB_##cb); #define MCFG_S3C2410_GPIO_PORT_R_CB(cb) \ - devcb = &s3c2410_device::set_gpio_port_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb); #define MCFG_S3C2410_GPIO_PORT_W_CB(cb) \ - devcb = &s3c2410_device::set_gpio_port_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb); #define MCFG_S3C2410_I2C_SCL_W_CB(cb) \ - devcb = &s3c2410_device::set_i2c_scl_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb); #define MCFG_S3C2410_I2C_SDA_R_CB(cb) \ - devcb = &s3c2410_device::set_i2c_sda_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb); #define MCFG_S3C2410_I2C_SDA_W_CB(cb) \ - devcb = &s3c2410_device::set_i2c_sda_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb); #define MCFG_S3C2410_ADC_DATA_R_CB(cb) \ - devcb = &s3c2410_device::set_adc_data_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_adc_data_r_callback(DEVCB_##cb); #define MCFG_S3C2410_I2S_DATA_W_CB(cb) \ - devcb = &s3c2410_device::set_i2s_data_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb); #define MCFG_S3C2410_NAND_COMMAND_W_CB(cb) \ - devcb = &s3c2410_device::set_nand_command_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_nand_command_w_callback(DEVCB_##cb); #define MCFG_S3C2410_NAND_ADDRESS_W_CB(cb) \ - devcb = &s3c2410_device::set_nand_address_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_nand_address_w_callback(DEVCB_##cb); #define MCFG_S3C2410_NAND_DATA_R_CB(cb) \ - devcb = &s3c2410_device::set_nand_data_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_nand_data_r_callback(DEVCB_##cb); #define MCFG_S3C2410_NAND_DATA_W_CB(cb) \ - devcb = &s3c2410_device::set_nand_data_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c2410_device &>(*device).set_nand_data_w_callback(DEVCB_##cb); #define MCFG_S3C2410_LCD_FLAGS(flags) \ - s3c2410_device::set_lcd_flags(*device, (flags)); + downcast<s3c2410_device &>(*device).set_lcd_flags((flags)); enum { @@ -187,22 +187,22 @@ public: s3c2410_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~s3c2410_device(); - // static configuration - static void static_set_palette_tag(device_t &device, const char *tag); - template <class Object> static devcb_base &set_core_pin_r_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_pin_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_core_pin_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_pin_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_gpio_port_r_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_port_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_gpio_port_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_port_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_scl_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_sda_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_sda_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_adc_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_data_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2s_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_data_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nand_command_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_command_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nand_address_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_address_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nand_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_nand_data_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nand_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_nand_data_w_cb.set_callback(std::forward<Object>(cb)); } - static void set_lcd_flags(device_t &device, int flags) { downcast<s3c2410_device &>(device).m_flags = flags; } + // configuration + void set_palette_tag(const char *tag) { m_palette.set_tag(tag); } + template <class Object> devcb_base &set_core_pin_r_callback(Object &&cb) { return m_pin_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_core_pin_w_callback(Object &&cb) { return m_pin_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gpio_port_r_callback(Object &&cb) { return m_port_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gpio_port_w_callback(Object &&cb) { return m_port_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_scl_w_callback(Object &&cb) { return m_scl_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_sda_r_callback(Object &&cb) { return m_sda_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_sda_w_callback(Object &&cb) { return m_sda_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_adc_data_r_callback(Object &&cb) { return m_data_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2s_data_w_callback(Object &&cb) { return m_data_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nand_command_w_callback(Object &&cb) { return m_command_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nand_address_w_callback(Object &&cb) { return m_address_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nand_data_r_callback(Object &&cb) { return m_nand_data_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nand_data_w_callback(Object &&cb) { return m_nand_data_w_cb.set_callback(std::forward<Object>(cb)); } + void set_lcd_flags(int flags) { m_flags = flags; } DECLARE_WRITE_LINE_MEMBER( frnb_w ); diff --git a/src/devices/machine/s3c2440.cpp b/src/devices/machine/s3c2440.cpp index bf707ea50cd..927b1d0299b 100644 --- a/src/devices/machine/s3c2440.cpp +++ b/src/devices/machine/s3c2440.cpp @@ -296,17 +296,6 @@ s3c2440_device::~s3c2440_device() } //------------------------------------------------- -// static_set_palette_tag: Set the tag of the -// palette device -//------------------------------------------------- - -void s3c2440_device::static_set_palette_tag(device_t &device, const char *tag) -{ - downcast<s3c2440_device &>(device).m_palette.set_tag(tag); -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/machine/s3c2440.h b/src/devices/machine/s3c2440.h index a90f4e96bed..a835f26c8ff 100644 --- a/src/devices/machine/s3c2440.h +++ b/src/devices/machine/s3c2440.h @@ -20,49 +20,49 @@ #define S3C2440_TAG "s3c2440" #define MCFG_S3C2440_PALETTE(_palette_tag) \ - s3c2440_device::static_set_palette_tag(*device, "^" _palette_tag); + downcast<s3c2440_device &>(*device).set_palette_tag("^" _palette_tag); #define MCFG_S3C2440_CORE_PIN_R_CB(_devcb) \ - devcb = &s3c2440_device::set_core_pin_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_core_pin_r_callback(DEVCB_##_devcb); #define MCFG_S3C2440_CORE_PIN_W_CB(_devcb) \ - devcb = &s3c2440_device::set_core_pin_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_core_pin_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_GPIO_PORT_R_CB(_devcb) \ - devcb = &s3c2440_device::set_gpio_port_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_gpio_port_r_callback(DEVCB_##_devcb); #define MCFG_S3C2440_GPIO_PORT_W_CB(_devcb) \ - devcb = &s3c2440_device::set_gpio_port_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_gpio_port_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_I2C_SCL_W_CB(_devcb) \ - devcb = &s3c2440_device::set_i2c_scl_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_i2c_scl_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_I2C_SDA_R_CB(_devcb) \ - devcb = &s3c2440_device::set_i2c_sda_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_i2c_sda_r_callback(DEVCB_##_devcb); #define MCFG_S3C2440_I2C_SDA_W_CB(_devcb) \ - devcb = &s3c2440_device::set_i2c_sda_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_i2c_sda_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_ADC_DATA_R_CB(_devcb) \ - devcb = &s3c2440_device::set_adc_data_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_adc_data_r_callback(DEVCB_##_devcb); #define MCFG_S3C2440_I2S_DATA_W_CB(_devcb) \ - devcb = &s3c2440_device::set_i2s_data_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_i2s_data_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_NAND_COMMAND_W_CB(_devcb) \ - devcb = &s3c2440_device::set_nand_command_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_nand_command_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_NAND_ADDRESS_W_CB(_devcb) \ - devcb = &s3c2440_device::set_nand_address_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_nand_address_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_NAND_DATA_R_CB(_devcb) \ - devcb = &s3c2440_device::set_nand_data_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_nand_data_r_callback(DEVCB_##_devcb); #define MCFG_S3C2440_NAND_DATA_W_CB(_devcb) \ - devcb = &s3c2440_device::set_nand_data_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<s3c2440_device &>(*device).set_nand_data_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_LCD_FLAGS(_flags) \ - s3c2440_device::set_lcd_flags(*device, _flags); + downcast<s3c2440_device &>(*device).set_lcd_flags(_flags); enum { @@ -204,22 +204,22 @@ public: s3c2440_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~s3c2440_device(); - // static configuration - static void static_set_palette_tag(device_t &device, const char *tag); - template <class Object> static devcb_base &set_core_pin_r_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_pin_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_core_pin_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_pin_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_gpio_port_r_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_port_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_gpio_port_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_port_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_scl_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_sda_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_sda_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_adc_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_data_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2s_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_data_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nand_command_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_command_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nand_address_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_address_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nand_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_nand_data_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_nand_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_nand_data_w_cb.set_callback(std::forward<Object>(cb)); } - static void set_lcd_flags(device_t &device, int flags) { downcast<s3c2440_device &>(device).m_flags = flags; } + // configuration + void set_palette_tag(const char *tag) { m_palette.set_tag(tag); } + template <class Object> devcb_base &set_core_pin_r_callback(Object &&cb) { return m_pin_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_core_pin_w_callback(Object &&cb) { return m_pin_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gpio_port_r_callback(Object &&cb) { return m_port_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gpio_port_w_callback(Object &&cb) { return m_port_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_scl_w_callback(Object &&cb) { return m_scl_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_sda_r_callback(Object &&cb) { return m_sda_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_sda_w_callback(Object &&cb) { return m_sda_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_adc_data_r_callback(Object &&cb) { return m_data_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2s_data_w_callback(Object &&cb) { return m_data_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nand_command_w_callback(Object &&cb) { return m_command_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nand_address_w_callback(Object &&cb) { return m_address_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nand_data_r_callback(Object &&cb) { return m_nand_data_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nand_data_w_callback(Object &&cb) { return m_nand_data_w_cb.set_callback(std::forward<Object>(cb)); } + void set_lcd_flags(int flags) { m_flags = flags; } DECLARE_WRITE_LINE_MEMBER( frnb_w ); diff --git a/src/devices/machine/s3c44b0.h b/src/devices/machine/s3c44b0.h index 08c4282ad52..00523b56a2b 100644 --- a/src/devices/machine/s3c44b0.h +++ b/src/devices/machine/s3c44b0.h @@ -116,13 +116,13 @@ class s3c44b0_device : public device_t public: s3c44b0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_gpio_port_r_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_port_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_gpio_port_w_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_port_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_scl_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_sda_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_sda_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_adc_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_data_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_i2s_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_data_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gpio_port_r_callback(Object &&cb) { return m_port_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gpio_port_w_callback(Object &&cb) { return m_port_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_scl_w_callback(Object &&cb) { return m_scl_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_sda_r_callback(Object &&cb) { return m_sda_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2c_sda_w_callback(Object &&cb) { return m_sda_w_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_adc_data_r_callback(Object &&cb) { return m_data_r_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_i2s_data_w_callback(Object &&cb) { return m_data_w_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ32_MEMBER(lcd_r); DECLARE_READ32_MEMBER(clkpow_r); @@ -605,25 +605,25 @@ DECLARE_DEVICE_TYPE(S3C44B0, s3c44b0_device) #define MCFG_S3C44B0_GPIO_PORT_R_CB(cb) \ - devcb = &s3c44b0_device::set_gpio_port_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c44b0_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb); #define MCFG_S3C44B0_GPIO_PORT_W_CB(cb) \ - devcb = &s3c44b0_device::set_gpio_port_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c44b0_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb); #define MCFG_S3C44B0_I2C_SCL_W_CB(cb) \ - devcb = &s3c44b0_device::set_i2c_scl_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c44b0_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb); #define MCFG_S3C44B0_I2C_SDA_R_CB(cb) \ - devcb = &s3c44b0_device::set_i2c_sda_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c44b0_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb); #define MCFG_S3C44B0_I2C_SDA_W_CB(cb) \ - devcb = &s3c44b0_device::set_i2c_sda_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c44b0_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb); #define MCFG_S3C44B0_ADC_DATA_R_CB(cb) \ - devcb = &s3c44b0_device::set_adc_data_r_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c44b0_device &>(*device).set_adc_data_r_callback(DEVCB_##cb); #define MCFG_S3C44B0_I2S_DATA_W_CB(cb) \ - devcb = &s3c44b0_device::set_i2s_data_w_callback(*device, DEVCB_##cb); + devcb = &downcast<s3c44b0_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb); #endif // MAME_MACHINE_S3C44B0_H diff --git a/src/devices/machine/scnxx562.h b/src/devices/machine/scnxx562.h index 2ea72b67b57..160c6d1214c 100644 --- a/src/devices/machine/scnxx562.h +++ b/src/devices/machine/scnxx562.h @@ -73,48 +73,48 @@ /* Generic macros */ #define MCFG_DUSCC_OFFSETS(_rxa, _txa, _rxb, _txb) \ - duscc_device::configure_channels(*device, _rxa, _txa, _rxb, _txb); + downcast<duscc_device &>(*device).configure_channels(_rxa, _txa, _rxb, _txb); // Port A callbacks #define MCFG_DUSCC_OUT_TXDA_CB(_devcb) \ - devcb = &duscc_device::set_out_txda_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_txda_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_DTRA_CB(_devcb) \ - devcb = &duscc_device::set_out_dtra_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_RTSA_CB(_devcb) \ - devcb = &duscc_device::set_out_rtsa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_SYNCA_CB(_devcb) \ - devcb = &duscc_device::set_out_synca_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_synca_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_TRXCA_CB(_devcb) \ - devcb = &duscc_device::set_out_trxca_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_trxca_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_RTXCA_CB(_devcb) \ - devcb = &duscc_device::set_out_rtxca_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_rtxca_callback(DEVCB_##_devcb); // Port B callbacks #define MCFG_DUSCC_OUT_TXDB_CB(_devcb) \ - devcb = &duscc_device::set_out_txdb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_DTRB_CB(_devcb) \ - devcb = &duscc_device::set_out_dtrb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_RTSB_CB(_devcb) \ - devcb = &duscc_device::set_out_rtsb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_SYNCB_CB(_devcb) \ - devcb = &duscc_device::set_out_syncb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_TRXCB_CB(_devcb) \ - devcb = &duscc_device::set_out_trxcb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_trxcb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_RTXCB_CB(_devcb) \ - devcb = &duscc_device::set_out_rtxcb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_rtxcb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_INT_CB(_devcb) \ - devcb = &duscc_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<duscc_device &>(*device).set_out_int_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -607,29 +607,28 @@ public: // construction/destruction duscc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_txda_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_txda_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_dtra_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_dtra_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rtsa_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_synca_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_synca_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rtxca_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_rtxca_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_trxca_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_trxca_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_out_txdb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_txdb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_dtrb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rtsb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_syncb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_syncb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rtxcb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_rtxcb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_trxcb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_trxcb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } - - static void configure_channels(device_t &device, int rxa, int txa, int rxb, int txb) + template <class Object> devcb_base &set_out_txda_callback(Object &&cb) { return m_out_txda_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_dtra_callback(Object &&cb) { return m_out_dtra_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rtsa_callback(Object &&cb) { return m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_synca_callback(Object &&cb) { return m_out_synca_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rtxca_callback(Object &&cb) { return m_out_rtxca_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_trxca_callback(Object &&cb) { return m_out_trxca_cb.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_out_txdb_callback(Object &&cb) { return m_out_txdb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_dtrb_callback(Object &&cb) { return m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rtsb_callback(Object &&cb) { return m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_syncb_callback(Object &&cb) { return m_out_syncb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rtxcb_callback(Object &&cb) { return m_out_rtxcb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_trxcb_callback(Object &&cb) { return m_out_trxcb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } + + void configure_channels(int rxa, int txa, int rxb, int txb) { #if 0 // TODO: Fix this, need a way to set external rx/tx clocks for the channels - duscc_device &dev = downcast<duscc_device &>(device); - dev.m_chanA->m_rxc = rxa; - dev.m_chanA->m_txc = txa; - dev.m_chanB->m_rxc = rxb; - dev.m_chanB->m_txc = txb; + m_chanA->m_rxc = rxa; + m_chanA->m_txc = txa; + m_chanB->m_rxc = rxb; + m_chanB->m_txc = txb; #endif } diff --git a/src/devices/machine/sega_scu.cpp b/src/devices/machine/sega_scu.cpp index f45082ebb5b..37bad76416b 100644 --- a/src/devices/machine/sega_scu.cpp +++ b/src/devices/machine/sega_scu.cpp @@ -150,13 +150,6 @@ sega_scu_device::sega_scu_device(const machine_config &mconfig, const char *tag, { } -void sega_scu_device::static_set_hostcpu(device_t &device, const char *cputag) -{ - sega_scu_device &dev = downcast<sega_scu_device &>(device); - dev.m_hostcpu_tag = cputag; -} - - //------------------------------------------------- // add_device_mconfig - device-specific machine // configuration addiitons diff --git a/src/devices/machine/sega_scu.h b/src/devices/machine/sega_scu.h index 9957a841c21..91de1f0c659 100644 --- a/src/devices/machine/sega_scu.h +++ b/src/devices/machine/sega_scu.h @@ -62,7 +62,7 @@ public: DECLARE_WRITE_LINE_MEMBER(sound_req_w); DECLARE_WRITE_LINE_MEMBER(smpc_irq_w); - static void static_set_hostcpu(device_t &device, const char *cputag); + void set_hostcpu(const char *cputag) { m_hostcpu_tag = cputag; } protected: // device-level overrides diff --git a/src/devices/machine/smartmed.h b/src/devices/machine/smartmed.h index 12f7e8c7539..5c9d3cfd946 100644 --- a/src/devices/machine/smartmed.h +++ b/src/devices/machine/smartmed.h @@ -15,10 +15,10 @@ //#define SMARTMEDIA_IMAGE_SAVE #define MCFG_NAND_TYPE(type) \ - nand_device::set_nand_type(*device, (nand_device::chip::type)); + downcast<nand_device &>(*device).set_nand_type((nand_device::chip::type)); #define MCFG_NAND_RNB_CALLBACK(write) \ - devcb = &nand_device::set_rnb_wr_callback(*device, DEVCB_##write); + devcb = &downcast<nand_device &>(*device).set_rnb_wr_callback(DEVCB_##write); /*************************************************************************** TYPE DEFINITIONS @@ -41,78 +41,77 @@ public: // construction/destruction nand_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_rnb_wr_callback(device_t &device, Object &&cb) { return downcast<nand_device &>(device).m_write_rnb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rnb_wr_callback(Object &&cb) { return m_write_rnb.set_callback(std::forward<Object>(cb)); } - static void set_nand_type(device_t &device, chip type) + void set_nand_type(chip type) { - nand_device &dev = downcast<nand_device &>(device); switch (type) { case chip::K9F5608U0D: - dev.m_id_len = 2; - dev.m_id[0] = 0xec; - dev.m_id[1] = 0x75; - dev.m_page_data_size = 512; - dev.m_page_total_size = 512 + 16; - dev.m_log2_pages_per_block = compute_log2(32); - dev.m_num_pages = 32 * 2048; - dev.m_col_address_cycles = 1; - dev.m_row_address_cycles = 2; - dev.m_sequential_row_read = 1; + m_id_len = 2; + m_id[0] = 0xec; + m_id[1] = 0x75; + m_page_data_size = 512; + m_page_total_size = 512 + 16; + m_log2_pages_per_block = compute_log2(32); + m_num_pages = 32 * 2048; + m_col_address_cycles = 1; + m_row_address_cycles = 2; + m_sequential_row_read = 1; break; case chip::K9F5608U0D_J: case chip::K9F5608U0B: - dev.m_id_len = 2; - dev.m_id[0] = 0xec; - dev.m_id[1] = 0x75; - dev.m_page_data_size = 512; - dev.m_page_total_size = 512 + 16; - dev.m_log2_pages_per_block = compute_log2(32); - dev.m_num_pages = 32 * 2048; - dev.m_col_address_cycles = 1; - dev.m_row_address_cycles = 2; - dev.m_sequential_row_read = 0; + m_id_len = 2; + m_id[0] = 0xec; + m_id[1] = 0x75; + m_page_data_size = 512; + m_page_total_size = 512 + 16; + m_log2_pages_per_block = compute_log2(32); + m_num_pages = 32 * 2048; + m_col_address_cycles = 1; + m_row_address_cycles = 2; + m_sequential_row_read = 0; break; case chip::K9F1G08U0B: - dev.m_id_len = 5; - dev.m_id[0] = 0xec; - dev.m_id[1] = 0xf1; - dev.m_id[2] = 0x00; - dev.m_id[3] = 0x95; - dev.m_id[4] = 0x40; - dev.m_page_data_size = 2048; - dev.m_page_total_size = 2048 + 64; - dev.m_log2_pages_per_block = compute_log2(64); - dev.m_num_pages = 64 * 1024; - dev.m_col_address_cycles = 2; - dev.m_row_address_cycles = 2; - dev.m_sequential_row_read = 0; + m_id_len = 5; + m_id[0] = 0xec; + m_id[1] = 0xf1; + m_id[2] = 0x00; + m_id[3] = 0x95; + m_id[4] = 0x40; + m_page_data_size = 2048; + m_page_total_size = 2048 + 64; + m_log2_pages_per_block = compute_log2(64); + m_num_pages = 64 * 1024; + m_col_address_cycles = 2; + m_row_address_cycles = 2; + m_sequential_row_read = 0; break; case chip::K9LAG08U0M: - dev.m_id_len = 5; - dev.m_id[0] = 0xec; - dev.m_id[1] = 0xd5; - dev.m_id[2] = 0x55; - dev.m_id[3] = 0x25; - dev.m_id[4] = 0x68; - dev.m_page_data_size = 2048; - dev.m_page_total_size = 2048 + 64; - dev.m_log2_pages_per_block = compute_log2(128); - dev.m_num_pages = 128 * 8192; - dev.m_col_address_cycles = 2; - dev.m_row_address_cycles = 3; - dev.m_sequential_row_read = 0; + m_id_len = 5; + m_id[0] = 0xec; + m_id[1] = 0xd5; + m_id[2] = 0x55; + m_id[3] = 0x25; + m_id[4] = 0x68; + m_page_data_size = 2048; + m_page_total_size = 2048 + 64; + m_log2_pages_per_block = compute_log2(128); + m_num_pages = 128 * 8192; + m_col_address_cycles = 2; + m_row_address_cycles = 3; + m_sequential_row_read = 0; break; default: printf("Unknown NAND type!\n"); - dev.m_id_len = 0; - dev.m_page_data_size = 0; - dev.m_page_total_size = 0; - dev.m_log2_pages_per_block = 0; - dev.m_num_pages = 0; - dev.m_col_address_cycles = 0; - dev.m_row_address_cycles = 0; - dev.m_sequential_row_read = 0; + m_id_len = 0; + m_page_data_size = 0; + m_page_total_size = 0; + m_log2_pages_per_block = 0; + m_num_pages = 0; + m_col_address_cycles = 0; + m_row_address_cycles = 0; + m_sequential_row_read = 0; break; } } diff --git a/src/devices/machine/smc91c9x.h b/src/devices/machine/smc91c9x.h index cd4018c4f65..cdbf1be1952 100644 --- a/src/devices/machine/smc91c9x.h +++ b/src/devices/machine/smc91c9x.h @@ -18,7 +18,7 @@ class smc91c9x_device : public device_t,public device_network_interface { public: - template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<smc91c9x_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ16_MEMBER( read ); DECLARE_WRITE16_MEMBER( write ); @@ -112,15 +112,15 @@ DECLARE_DEVICE_TYPE(SMC91C96, smc91c96_device) ***************************************************************************/ #define MCFG_SMC91C94_ADD(tag) \ - MCFG_DEVICE_ADD((tag), SMC91C94, 0) + MCFG_DEVICE_ADD((tag), SMC91C94, 0) #define MCFG_SMC91C94_IRQ_CALLBACK(write) \ - devcb = &smc91c94_device::set_irq_callback(*device, DEVCB_##write); + devcb = &downcast<smc91c94_device &>(*device).set_irq_callback(DEVCB_##write); #define MCFG_SMC91C96_ADD(tag) \ MCFG_DEVICE_ADD((tag), SMC91C96, 0) #define MCFG_SMC91C96_IRQ_CALLBACK(write) \ - devcb = &smc91c96_device::set_irq_callback(*device, DEVCB_##write); + devcb = &downcast<smc91c96_device &>(*device).set_irq_callback(DEVCB_##write); #endif // MAME_MACHINE_SMC91C9X_H diff --git a/src/devices/machine/smpc.cpp b/src/devices/machine/smpc.cpp index a6d497fb62b..0f6154a5b60 100644 --- a/src/devices/machine/smpc.cpp +++ b/src/devices/machine/smpc.cpp @@ -226,22 +226,6 @@ smpc_hle_device::smpc_hle_device(const machine_config &mconfig, const char *tag, m_has_ctrl_ports = false; } -// method setters -void smpc_hle_device::static_set_region_code(device_t &device, uint8_t rgn) -{ - smpc_hle_device &dev = downcast<smpc_hle_device &>(device); - dev.m_region_code = rgn; -} - -void smpc_hle_device::static_set_control_port_tags(device_t &device, const char *tag1, const char *tag2) -{ - smpc_hle_device &dev = downcast<smpc_hle_device &>(device); - dev.m_ctrl1_tag = tag1; - dev.m_ctrl2_tag = tag2; - // TODO: checking against nullptr still returns a device!? - dev.m_has_ctrl_ports = true; -} - //------------------------------------------------- // device_add_mconfig - device-specific machine // configuration addiitons diff --git a/src/devices/machine/smpc.h b/src/devices/machine/smpc.h index bca1938e25c..ab9fc141097 100644 --- a/src/devices/machine/smpc.h +++ b/src/devices/machine/smpc.h @@ -21,44 +21,44 @@ //************************************************************************** #define MCFG_SMPC_HLE_ADD(tag, clock) \ - MCFG_DEVICE_ADD((tag), SMPC_HLE, (clock)) + MCFG_DEVICE_ADD((tag), SMPC_HLE, (clock)) #define MCFG_SMPC_HLE_PDR1_IN_CB(_devcb) \ - devcb = &smpc_hle_device::set_pdr1_in_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_pdr1_in_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_PDR2_IN_CB(_devcb) \ - devcb = &smpc_hle_device::set_pdr2_in_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_pdr2_in_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_PDR1_OUT_CB(_devcb) \ - devcb = &smpc_hle_device::set_pdr1_out_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_pdr1_out_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_PDR2_OUT_CB(_devcb) \ - devcb = &smpc_hle_device::set_pdr2_out_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_pdr2_out_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_MASTER_RESET_CB(_devcb) \ - devcb = &smpc_hle_device::set_master_reset_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_master_reset_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_MASTER_NMI_CB(_devcb) \ - devcb = &smpc_hle_device::set_master_nmi_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_master_nmi_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_SLAVE_RESET_CB(_devcb) \ - devcb = &smpc_hle_device::set_slave_reset_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_slave_reset_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_SOUND_RESET_CB(_devcb) \ - devcb = &smpc_hle_device::set_sound_reset_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_sound_reset_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_SYSTEM_RESET_CB(_devcb) \ - devcb = &smpc_hle_device::set_system_reset_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_system_reset_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_SYSTEM_HALT_CB(_devcb) \ - devcb = &smpc_hle_device::set_system_halt_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_system_halt_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_DOT_SELECT_CB(_devcb) \ - devcb = &smpc_hle_device::set_dot_select_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_dot_select_handler(DEVCB_##_devcb); // set_irq_handler doesn't work in Saturn driver??? #define MCFG_SMPC_HLE_IRQ_HANDLER_CB(_devcb) \ - devcb = &smpc_hle_device::set_interrupt_handler(*device, DEVCB_##_devcb); + devcb = &downcast<smpc_hle_device &>(*device).set_interrupt_handler(DEVCB_##_devcb); //************************************************************************** @@ -82,30 +82,73 @@ public: DECLARE_INPUT_CHANGED_MEMBER( trigger_nmi_r ); void m68k_reset_trigger(); + bool get_iosel(bool which); + uint8_t get_ddr(bool which); // system delegation - template <class Object> static devcb_base &set_master_reset_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_mshres.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_master_nmi_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_mshnmi.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_slave_reset_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_sshres.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sound_reset_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_sndres.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_system_reset_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_sysres.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_system_halt_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_syshalt.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dot_select_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_dotsel.set_callback(std::forward<Object>(cb)); } + template<class Object> + devcb_base &set_master_reset_handler(Object &&cb) + { return m_mshres.set_callback(std::forward<Object>(cb)); } + + template<class Object> + devcb_base &set_master_nmi_handler(Object &&cb) + { return m_mshnmi.set_callback(std::forward<Object>(cb)); } + + template<class Object> + devcb_base &set_slave_reset_handler(Object &&cb) + { return m_sshres.set_callback(std::forward<Object>(cb)); } + + template<class Object> + devcb_base &set_sound_reset_handler(Object &&cb) + { return m_sndres.set_callback(std::forward<Object>(cb)); } + + template<class Object> + devcb_base &set_system_reset_handler(Object &&cb) + { return m_sysres.set_callback(std::forward<Object>(cb)); } + + template<class Object> + devcb_base &set_system_halt_handler(Object &&cb) + { return m_syshalt.set_callback(std::forward<Object>(cb)); } + + template<class Object> + devcb_base &set_dot_select_handler(Object &&cb) + { return m_dotsel.set_callback(std::forward<Object>(cb)); } // PDR delegation - template <class Object> static devcb_base &set_pdr1_in_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_pdr1_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pdr2_in_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_pdr2_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pdr1_out_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_pdr1_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pdr2_out_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_pdr2_write.set_callback(std::forward<Object>(cb)); } + template<class Object> + devcb_base &set_pdr1_in_handler(Object &&cb) + { return m_pdr1_read.set_callback(std::forward<Object>(cb)); } + + template<class Object> + devcb_base &set_pdr2_in_handler(Object &&cb) + { return m_pdr2_read.set_callback(std::forward<Object>(cb)); } + + template<class Object> + devcb_base &set_pdr1_out_handler(Object &&cb) + { return m_pdr1_write.set_callback(std::forward<Object>(cb)); } + + template<class Object> + devcb_base &set_pdr2_out_handler(Object &&cb) + { return m_pdr2_write.set_callback(std::forward<Object>(cb)); } // interrupt handler - template <class Object> static devcb_base &set_interrupt_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_irq_line.set_callback(std::forward<Object>(cb)); } + template<class Object> + devcb_base &set_interrupt_handler(Object &&cb) + { return m_irq_line.set_callback(std::forward<Object>(cb)); } + + void set_region_code(uint8_t rgn) + { m_region_code = rgn; } - static void static_set_region_code(device_t &device, uint8_t rgn); - static void static_set_control_port_tags(device_t &device, const char *tag1, const char *tag2); + void set_control_port_tags(const char *tag1, const char *tag2) + { + m_ctrl1_tag = tag1; + m_ctrl2_tag = tag2; + // TODO: checking against nullptr still returns a device!? + m_has_ctrl_ports = true; + } protected: // device-level overrides diff --git a/src/devices/machine/steppers.h b/src/devices/machine/steppers.h index 40e675714db..893c1d3f01f 100644 --- a/src/devices/machine/steppers.h +++ b/src/devices/machine/steppers.h @@ -37,27 +37,27 @@ MCFG_DEVICE_ADD(_tag, STEPPER, 0) #define MCFG_STEPPER_REEL_TYPE(_data) \ - stepper_device::set_reel_type(*device, _data); + downcast<stepper_device &>(*device).set_reel_type(_data); /* total size of reel (in half steps) */ #define MCFG_STEPPER_MAX_STEPS(_write) \ - stepper_device::set_max_steps(*device, _write); + downcast<stepper_device &>(*device).set_max_steps(_write); /* start position of index (in half steps) */ #define MCFG_STEPPER_START_INDEX(_write) \ - stepper_device::set_start_index(*device, _write); + downcast<stepper_device &>(*device).set_start_index(_write); /* end position of index (in half steps) */ #define MCFG_STEPPER_END_INDEX(_write) \ - stepper_device::set_end_index(*device, _write); + downcast<stepper_device &>(*device).set_end_index(_write); /* end position of index (in half steps) */ #define MCFG_STEPPER_INDEX_PATTERN(_write) \ - stepper_device::set_index_pattern(*device, _write); + downcast<stepper_device &>(*device).set_index_pattern(_write); /* Phase at 0, for opto linkage */ #define MCFG_STEPPER_INIT_PHASE(_write) \ - stepper_device::set_init_phase(*device, _write); + downcast<stepper_device &>(*device).set_init_phase(_write); #define MCFG_STARPOINT_48STEP_ADD(_tag)\ MCFG_STEPPER_ADD(_tag)\ @@ -95,7 +95,7 @@ MCFG_STEPPER_INIT_PHASE(7) #define MCFG_STEPPER_OPTIC_CALLBACK(_write) \ - devcb = &stepper_device::set_optic_handler(*device, DEVCB_##_write); + devcb = &downcast<stepper_device &>(*device).set_optic_handler(DEVCB_##_write); DECLARE_DEVICE_TYPE(STEPPER, stepper_device) @@ -104,11 +104,11 @@ class stepper_device : public device_t public: stepper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_optic_handler(device_t &device, Object &&cb) { return downcast<stepper_device &>(device).m_optic_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_optic_handler(Object &&cb) { return m_optic_cb.set_callback(std::forward<Object>(cb)); } - static void set_reel_type(device_t &device, uint8_t type) + void set_reel_type(uint8_t type) { - downcast<stepper_device &>(device).m_type = type; + m_type = type; switch ( type ) { default: @@ -117,33 +117,28 @@ public: case MPU3_48STEP_REEL : case GAMESMAN_48STEP_REEL : /* Gamesman GMxxxx */ case PROJECT_48STEP_REEL : - downcast<stepper_device &>(device).m_max_steps = (48*2); + m_max_steps = (48*2); break; case GAMESMAN_100STEP_REEL : - downcast<stepper_device &>(device).m_max_steps = (100*2); + m_max_steps = (100*2); break; case STARPOINT_144STEP_DICE :/* STARPOINT 1DCU DICE mechanism */ //Dice reels are 48 step motors, but complete three full cycles between opto updates - downcast<stepper_device &>(device).m_max_steps = ((48*3)*2); + m_max_steps = ((48*3)*2); break; case STARPOINT_200STEP_REEL : case GAMESMAN_200STEP_REEL : case ECOIN_200STEP_REEL : - downcast<stepper_device &>(device).m_max_steps = (200*2); + m_max_steps = (200*2); break; } } - static void set_max_steps(device_t &device, int16_t steps) { downcast<stepper_device &>(device).m_max_steps = steps; } - static void set_start_index(device_t &device, int16_t index) { downcast<stepper_device &>(device).m_index_start = index; } - static void set_end_index(device_t &device, int16_t index) { downcast<stepper_device &>(device).m_index_end = index; } - static void set_index_pattern(device_t &device, int16_t index) { downcast<stepper_device &>(device).m_index_patt = index; } - static void set_init_phase(device_t &device, uint8_t phase) - { - downcast<stepper_device &>(device).m_initphase = phase; - downcast<stepper_device &>(device).m_phase = phase; - downcast<stepper_device &>(device).m_old_phase = phase; - } + void set_max_steps(int16_t steps) { m_max_steps = steps; } + void set_start_index(int16_t index) { m_index_start = index; } + void set_end_index(int16_t index) { m_index_end = index; } + void set_index_pattern(int16_t index) { m_index_patt = index; } + void set_init_phase(uint8_t phase) { m_initphase = phase; m_phase = phase; m_old_phase = phase; } /* update a motor */ int update(uint8_t pattern); diff --git a/src/devices/machine/tc009xlvc.cpp b/src/devices/machine/tc009xlvc.cpp index a0ca847f0cf..808dbba0574 100644 --- a/src/devices/machine/tc009xlvc.cpp +++ b/src/devices/machine/tc009xlvc.cpp @@ -175,17 +175,6 @@ tc0091lvc_device::tc0091lvc_device(const machine_config &mconfig, const char *ta { } -//------------------------------------------------- -// static_set_gfxdecode_tag: Set the tag of the -// gfx decoder -//------------------------------------------------- - -void tc0091lvc_device::static_set_gfxdecode_tag(device_t &device, const char *tag) -{ - downcast<tc0091lvc_device &>(device).m_gfxdecode.set_tag(tag); -} - - TILE_GET_INFO_MEMBER(tc0091lvc_device::get_bg0_tile_info) { int attr = m_vram0[2 * tile_index + 1]; diff --git a/src/devices/machine/tc009xlvc.h b/src/devices/machine/tc009xlvc.h index 6415ba9906f..cd6ec859876 100644 --- a/src/devices/machine/tc009xlvc.h +++ b/src/devices/machine/tc009xlvc.h @@ -17,8 +17,8 @@ class tc0091lvc_device : public device_t, public device_memory_interface public: tc0091lvc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - static void static_set_gfxdecode_tag(device_t &device, const char *tag); + // configuration + void set_gfxdecode_tag(const char *tag) { m_gfxdecode.set_tag(tag); } DECLARE_READ8_MEMBER( vregs_r ); DECLARE_WRITE8_MEMBER( vregs_w ); @@ -85,6 +85,6 @@ DECLARE_DEVICE_TYPE(TC0091LVC, tc0091lvc_device) #define MCFG_TC0091LVC_GFXDECODE(gfxtag) \ - tc0091lvc_device::static_set_gfxdecode_tag(*device, ("^" gfxtag)); + downcast<tc0091lvc_device &>(*device).set_gfxdecode_tag(("^" gfxtag)); #endif // MAME_MACHINE_TL009XLVC_H diff --git a/src/devices/machine/te7750.h b/src/devices/machine/te7750.h index caf8bd1d464..8f3cc234060 100644 --- a/src/devices/machine/te7750.h +++ b/src/devices/machine/te7750.h @@ -16,45 +16,45 @@ //************************************************************************** #define MCFG_TE7750_IN_PORT1_CB(_devcb) \ - devcb = &te7750_device::set_input_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_input_cb(0, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT2_CB(_devcb) \ - devcb = &te7750_device::set_input_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_input_cb(1, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT3_CB(_devcb) \ - devcb = &te7750_device::set_input_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_input_cb(2, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT4_CB(_devcb) \ - devcb = &te7750_device::set_input_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_input_cb(3, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT5_CB(_devcb) \ - devcb = &te7750_device::set_input_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_input_cb(4, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT6_CB(_devcb) \ - devcb = &te7750_device::set_input_cb(*device, 5, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_input_cb(5, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT7_CB(_devcb) \ - devcb = &te7750_device::set_input_cb(*device, 6, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_input_cb(6, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT8_CB(_devcb) \ - devcb = &te7750_device::set_input_cb(*device, 7, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_input_cb(7, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT9_CB(_devcb) \ - devcb = &te7750_device::set_input_cb(*device, 8, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_input_cb(8, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT1_CB(_devcb) \ - devcb = &te7750_device::set_output_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_output_cb(0, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT2_CB(_devcb) \ - devcb = &te7750_device::set_output_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_output_cb(1, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT3_CB(_devcb) \ - devcb = &te7750_device::set_output_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_output_cb(2, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT4_CB(_devcb) \ - devcb = &te7750_device::set_output_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_output_cb(3, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT5_CB(_devcb) \ - devcb = &te7750_device::set_output_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_output_cb(4, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT6_CB(_devcb) \ - devcb = &te7750_device::set_output_cb(*device, 5, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_output_cb(5, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT7_CB(_devcb) \ - devcb = &te7750_device::set_output_cb(*device, 6, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_output_cb(6, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT8_CB(_devcb) \ - devcb = &te7750_device::set_output_cb(*device, 7, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_output_cb(7, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT9_CB(_devcb) \ - devcb = &te7750_device::set_output_cb(*device, 8, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_output_cb(8, DEVCB_##_devcb); #define MCFG_TE7750_IOS_CB(_devcb) \ - devcb = &te7750_device::set_ios_cb(*device, DEVCB_##_devcb); + devcb = &downcast<te7750_device &>(*device).set_ios_cb(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -68,23 +68,20 @@ public: // construction/destruction te7750_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration - template<class Object> - static devcb_base &set_input_cb(device_t &device, int port, Object &&obj) + // configuration + template<class Object> devcb_base &set_input_cb(int port, Object &&obj) { assert(port >= 0 && port < 9); - return downcast<te7750_device &>(device).m_input_cb[port].set_callback(std::forward<Object>(obj)); + return m_input_cb[port].set_callback(std::forward<Object>(obj)); } - template<class Object> - static devcb_base &set_output_cb(device_t &device, int port, Object &&obj) + template<class Object> devcb_base &set_output_cb(int port, Object &&obj) { assert(port >= 0 && port < 9); - return downcast<te7750_device &>(device).m_output_cb[port].set_callback(std::forward<Object>(obj)); + return m_output_cb[port].set_callback(std::forward<Object>(obj)); } - template<class Object> - static devcb_base &set_ios_cb(device_t &device, Object &&obj) + template<class Object> devcb_base &set_ios_cb(Object &&obj) { - return downcast<te7750_device &>(device).m_ios_cb.set_callback(std::forward<Object>(obj)); + return m_ios_cb.set_callback(std::forward<Object>(obj)); } // bus-compatible interface diff --git a/src/devices/machine/terminal.h b/src/devices/machine/terminal.h index d68b052ac4a..e200de29cd6 100644 --- a/src/devices/machine/terminal.h +++ b/src/devices/machine/terminal.h @@ -17,7 +17,7 @@ ***************************************************************************/ #define MCFG_GENERIC_TERMINAL_KEYBOARD_CB(cb) \ - generic_terminal_device::set_keyboard_callback(*device, (KEYBOARDCB_##cb)); + downcast<generic_terminal_device &>(*device).set_keyboard_callback((KEYBOARDCB_##cb)); /*************************************************************************** @@ -31,8 +31,7 @@ class generic_terminal_device : public device_t public: generic_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static void set_keyboard_callback(device_t &device, Object &&cb) - { downcast<generic_terminal_device &>(device).m_keyboard_cb = std::forward<Object>(cb); } + template <class Object> void set_keyboard_callback(Object &&cb) { m_keyboard_cb = std::forward<Object>(cb); } DECLARE_WRITE8_MEMBER(write) { term_write(data); } diff --git a/src/devices/machine/ticket.cpp b/src/devices/machine/ticket.cpp index 2180d4fd17e..4df285d7650 100644 --- a/src/devices/machine/ticket.cpp +++ b/src/devices/machine/ticket.cpp @@ -64,36 +64,6 @@ ticket_dispenser_device::~ticket_dispenser_device() //************************************************************************** -// CONFIGURATION HELPERS -//************************************************************************** - -//------------------------------------------------- -// static_set_period - configure the clock period -// for dispensing -//------------------------------------------------- - -void ticket_dispenser_device::static_set_period(device_t &device, const attotime &period) -{ - downcast<ticket_dispenser_device &>(device).m_period = period; -} - - -//------------------------------------------------- -// static_set_senses - configure the senses of -// the motor and status bits -//------------------------------------------------- - -void ticket_dispenser_device::static_set_senses(device_t &device, uint8_t motor_sense, uint8_t status_sense, bool hopper_type) -{ - ticket_dispenser_device &ticket = downcast<ticket_dispenser_device &>(device); - ticket.m_motor_sense = motor_sense; - ticket.m_status_sense = status_sense; - ticket.m_hopper_type = hopper_type; -} - - - -//************************************************************************** // READ/WRITE HANDLERS //************************************************************************** diff --git a/src/devices/machine/ticket.h b/src/devices/machine/ticket.h index cef52442159..a008d143cb9 100644 --- a/src/devices/machine/ticket.h +++ b/src/devices/machine/ticket.h @@ -29,13 +29,13 @@ DECLARE_DEVICE_TYPE(TICKET_DISPENSER, ticket_dispenser_device) // add/remove dispensers #define MCFG_TICKET_DISPENSER_ADD(_tag, _period_in_msec, _motor_sense, _status_sense) \ MCFG_DEVICE_ADD(_tag, TICKET_DISPENSER, 0) \ - ticket_dispenser_device::static_set_period(*device, _period_in_msec); \ - ticket_dispenser_device::static_set_senses(*device, _motor_sense, _status_sense, false); + downcast<ticket_dispenser_device &>(*device).set_period(_period_in_msec); \ + downcast<ticket_dispenser_device &>(*device).set_senses(_motor_sense, _status_sense, false); #define MCFG_HOPPER_ADD(_tag, _period_in_msec, _motor_sense, _status_sense) \ MCFG_DEVICE_ADD(_tag, TICKET_DISPENSER, 0) \ - ticket_dispenser_device::static_set_period(*device, _period_in_msec); \ - ticket_dispenser_device::static_set_senses(*device, _motor_sense, _status_sense, true); + downcast<ticket_dispenser_device &>(*device).set_period(_period_in_msec); \ + downcast<ticket_dispenser_device &>(*device).set_senses(_motor_sense, _status_sense, true); //************************************************************************** // CONSTANTS @@ -63,8 +63,13 @@ public: virtual ~ticket_dispenser_device(); // inline configuration helpers - static void static_set_period(device_t &device, const attotime &period); - static void static_set_senses(device_t &device, uint8_t motor_sense, uint8_t status_sense, bool hopper_type); + void set_period(const attotime &period) { m_period = period; } + void set_senses(uint8_t motor_sense, uint8_t status_sense, bool hopper_type) + { + m_motor_sense = motor_sense; + m_status_sense = status_sense; + m_hopper_type = hopper_type; + } // read/write handlers DECLARE_READ_LINE_MEMBER( line_r ); diff --git a/src/devices/machine/timekpr.h b/src/devices/machine/timekpr.h index 3a7983dc291..dadbdde63f0 100644 --- a/src/devices/machine/timekpr.h +++ b/src/devices/machine/timekpr.h @@ -36,10 +36,10 @@ MCFG_DEVICE_ADD(_tag, M48T37, 0) #define MCFG_M48T37_RESET_HANDLER(_devcb) \ - devcb = &timekeeper_device::set_reset_handler(*device, DEVCB_##_devcb); + devcb = &downcast<timekeeper_device &>(*device).set_reset_handler(DEVCB_##_devcb); #define MCFG_M48T37_IRQ_HANDLER(_devcb) \ - devcb = &timekeeper_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<timekeeper_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_M48T58_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, M48T58, 0) @@ -65,8 +65,8 @@ public: DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER(watchdog_write); - template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb) { return downcast<timekeeper_device &>(device).m_reset_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<timekeeper_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_reset_handler(Object &&cb) { return m_reset_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } protected: // construction/destruction diff --git a/src/devices/machine/timer.cpp b/src/devices/machine/timer.cpp index 1bc10dab25a..1108fe0927f 100644 --- a/src/devices/machine/timer.cpp +++ b/src/devices/machine/timer.cpp @@ -53,97 +53,6 @@ timer_device::timer_device(const machine_config &mconfig, const char *tag, devic //------------------------------------------------- -// static_configure_generic - configuration -// helper to set up a generic timer -//------------------------------------------------- - -void timer_device::static_configure_generic(device_t &device, expired_delegate callback) -{ - timer_device &timer = downcast<timer_device &>(device); - timer.m_type = TIMER_TYPE_GENERIC; - timer.m_callback = callback; -} - - -//------------------------------------------------- -// static_configure_periodic - configuration -// helper to set up a periodic timer -//------------------------------------------------- - -void timer_device::static_configure_periodic(device_t &device, expired_delegate callback, const attotime &period) -{ - timer_device &timer = downcast<timer_device &>(device); - timer.m_type = TIMER_TYPE_PERIODIC; - timer.m_callback = callback; - timer.m_period = period; -} - - -//------------------------------------------------- -// static_configure_scanline - configuration -// helper to set up a scanline timer -//------------------------------------------------- - -void timer_device::static_configure_scanline(device_t &device, expired_delegate callback, const char *screen, int first_vpos, int increment) -{ - timer_device &timer = downcast<timer_device &>(device); - timer.m_type = TIMER_TYPE_SCANLINE; - timer.m_callback = callback; - timer.m_screen_tag = screen; - timer.m_first_vpos = first_vpos; - timer.m_increment = increment; -} - - -//------------------------------------------------- -// static_set_callback - configuration helper -// to set the callback -//------------------------------------------------- - -void timer_device::static_set_callback(device_t &device, expired_delegate callback) -{ - timer_device &timer = downcast<timer_device &>(device); - timer.m_callback = callback; -} - - -//------------------------------------------------- -// static_set_start_delay - configuration helper -// to set the starting delay -//------------------------------------------------- - -void timer_device::static_set_start_delay(device_t &device, const attotime &delay) -{ - timer_device &timer = downcast<timer_device &>(device); - timer.m_start_delay = delay; -} - - -//------------------------------------------------- -// static_set_param - configuration helper to set -// the integer parameter -//------------------------------------------------- - -void timer_device::static_set_param(device_t &device, int param) -{ - timer_device &timer = downcast<timer_device &>(device); - timer.m_param = param; -} - - -//------------------------------------------------- -// static_set_ptr - configuration helper to set -// the pointer parameter -//------------------------------------------------- - -void timer_device::static_set_ptr(device_t &device, void *ptr) -{ - timer_device &timer = downcast<timer_device &>(device); - timer.m_ptr = ptr; -} - - -//------------------------------------------------- // device_validity_check - validate the device // configuration //------------------------------------------------- diff --git a/src/devices/machine/timer.h b/src/devices/machine/timer.h index b6a7ea33025..44a7582bec7 100644 --- a/src/devices/machine/timer.h +++ b/src/devices/machine/timer.h @@ -28,36 +28,36 @@ #define MCFG_TIMER_ADD_NONE(_tag) \ MCFG_DEVICE_ADD(_tag, TIMER, 0) \ - timer_device::static_configure_generic(*device, timer_device::expired_delegate()); + downcast<timer_device &>(*device).configure_generic(timer_device::expired_delegate()); #define MCFG_TIMER_DRIVER_ADD(_tag, _class, _callback) \ MCFG_DEVICE_ADD(_tag, TIMER, 0) \ - timer_device::static_configure_generic(*device, timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr)); + downcast<timer_device &>(*device).configure_generic(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr)); #define MCFG_TIMER_DEVICE_ADD(_tag, _devtag, _class, _callback) \ MCFG_DEVICE_ADD(_tag, TIMER, 0) \ - timer_device::static_configure_generic(*device, timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, _devtag, (_class *)nullptr)); + downcast<timer_device &>(*device).configure_generic(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, _devtag, (_class *)nullptr)); #define MCFG_TIMER_DRIVER_ADD_PERIODIC(_tag, _class, _callback, _period) \ MCFG_DEVICE_ADD(_tag, TIMER, 0) \ - timer_device::static_configure_periodic(*device, timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr), _period); + downcast<timer_device &>(*device).configure_periodic(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr), _period); #define MCFG_TIMER_DEVICE_ADD_PERIODIC(_tag, _devtag, _class, _callback, _period) \ MCFG_DEVICE_ADD(_tag, TIMER, 0) \ - timer_device::static_configure_periodic(*device, timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, _devtag, (_class *)nullptr), _period); + downcast<timer_device &>(*device).configure_periodic(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, _devtag, (_class *)nullptr), _period); #define MCFG_TIMER_DRIVER_ADD_SCANLINE(_tag, _class, _callback, _screen, _first_vpos, _increment) \ MCFG_DEVICE_ADD(_tag, TIMER, 0) \ - timer_device::static_configure_scanline(*device, timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr), _screen, _first_vpos, _increment); + downcast<timer_device &>(*device).configure_scanline(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr), _screen, _first_vpos, _increment); #define MCFG_TIMER_DEVICE_ADD_SCANLINE(_tag, _devtag, _class, _callback, _screen, _first_vpos, _increment) \ MCFG_DEVICE_ADD(_tag, TIMER, 0) \ - timer_device::static_configure_scanline(*device, timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, _devtag, (_class *)nullptr), _screen, _first_vpos, _increment); + downcast<timer_device &>(*device).configure_scanline(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, _devtag, (_class *)nullptr), _screen, _first_vpos, _increment); #define MCFG_TIMER_MODIFY(_tag) \ MCFG_DEVICE_MODIFY(_tag) #define MCFG_TIMER_DRIVER_CALLBACK(_class, _callback) \ - timer_device::static_set_callback(*device, timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr)); + downcast<timer_device &>(*device).set_callback(timer_device::expired_delegate(&_class::_callback, #_class "::" #_callback, nullptr, (_class *)nullptr)); #define MCFG_TIMER_START_DELAY(_start_delay) \ - timer_device::static_set_start_delay(*device, _start_delay); + downcast<timer_device &>(*device).set_start_delay(_start_delay); #define MCFG_TIMER_PARAM(_param) \ - timer_device::static_set_param(*device, _param); + downcast<timer_device &>(*device).config_param(_param); #define MCFG_TIMER_PTR(_ptr) \ - timer_device::static_set_ptr(*device, (void *)(_ptr)); + downcast<timer_device &>(*device).set_ptr((void *)(_ptr)); //************************************************************************** @@ -76,13 +76,28 @@ public: timer_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // inline configuration helpers - static void static_configure_generic(device_t &device, expired_delegate callback); - static void static_configure_periodic(device_t &device, expired_delegate callback, const attotime &period); - static void static_configure_scanline(device_t &device, expired_delegate callback, const char *screen, int first_vpos, int increment); - static void static_set_callback(device_t &device, expired_delegate callback); - static void static_set_start_delay(device_t &device, const attotime &delay); - static void static_set_param(device_t &device, int param); - static void static_set_ptr(device_t &device, void *ptr); + template <typename Object> void configure_generic(Object &&cb) + { + m_type = TIMER_TYPE_GENERIC; + m_callback = std::forward<Object>(cb); + } + template <typename Object> void configure_periodic(Object &&cb, const attotime &period) + { + m_type = TIMER_TYPE_PERIODIC; + m_callback = std::forward<Object>(cb); + m_period = period; + } + template <typename Object> void configure_scanline(Object &&cb, const char *screen, int first_vpos, int increment) + { + m_type = TIMER_TYPE_SCANLINE; + m_callback = std::forward<Object>(cb); + m_screen_tag = screen; + m_first_vpos = first_vpos; + m_increment = increment; + } + template <typename Object> void set_callback(Object &&cb) { m_callback = std::forward<Object>(cb); } + void set_start_delay(const attotime &delay) { m_start_delay = delay; } + void config_param(int param) { m_param = param; } // property getters int param() const { return m_timer->param(); } diff --git a/src/devices/machine/tmc0430.h b/src/devices/machine/tmc0430.h index 51d94b35bf0..2f4e54df7cf 100644 --- a/src/devices/machine/tmc0430.h +++ b/src/devices/machine/tmc0430.h @@ -33,7 +33,7 @@ class tmc0430_device : public device_t public: tmc0430_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_ready_wr_callback(device_t &device, Object &&cb) { return downcast<tmc0430_device &>(device).m_gromready.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ready_wr_callback(Object &&cb) { return m_gromready.set_callback(std::forward<Object>(cb)); } DECLARE_READ8Z_MEMBER(readz); DECLARE_WRITE8_MEMBER(write); @@ -46,11 +46,11 @@ public: DECLARE_WRITE8_MEMBER( set_lines ); - static void set_region_and_ident(device_t &device, const char *regionname, int offset, int ident) + void set_region_and_ident(const char *regionname, int offset, int ident) { - downcast<tmc0430_device &>(device).m_regionname = regionname; - downcast<tmc0430_device &>(device).m_offset = offset; - downcast<tmc0430_device &>(device).m_ident = ident<<13; + m_regionname = regionname; + m_offset = offset; + m_ident = ident<<13; } int debug_get_address(); @@ -109,8 +109,8 @@ private: }; #define MCFG_GROM_ADD(_tag, _ident, _region, _offset, _ready) \ - MCFG_DEVICE_ADD(_tag, TMC0430, 0) \ - tmc0430_device::set_region_and_ident(*device, _region, _offset, _ident); \ - tmc0430_device::set_ready_wr_callback(*device, DEVCB_##_ready); + MCFG_DEVICE_ADD(_tag, TMC0430, 0) \ + downcast<tmc0430_device &>(*device).set_region_and_ident(_region, _offset, _ident); \ + downcast<tmc0430_device &>(*device).set_ready_wr_callback(DEVCB_##_ready); #endif // MAME_MACHINE_TMC0430_H diff --git a/src/devices/machine/tmp68301.h b/src/devices/machine/tmp68301.h index 458f821c057..3034e192b2c 100644 --- a/src/devices/machine/tmp68301.h +++ b/src/devices/machine/tmp68301.h @@ -15,13 +15,13 @@ // FIXME: M68000 ought to be a parent class, not an external object #define MCFG_TMP68301_CPU(_tag) \ - tmp68301_device::set_cpu_tag(*device, "^" _tag); + downcast<tmp68301_device &>(*device).set_cpu_tag("^" _tag); #define MCFG_TMP68301_IN_PARALLEL_CB(cb) \ - devcb = &tmp68301_device::set_in_parallel_callback(*device, (DEVCB_##cb)); + devcb = &downcast<tmp68301_device &>(*device).set_in_parallel_callback((DEVCB_##cb)); #define MCFG_TMP68301_OUT_PARALLEL_CB(cb) \ - devcb = &tmp68301_device::set_out_parallel_callback(*device, (DEVCB_##cb)); + devcb = &downcast<tmp68301_device &>(*device).set_out_parallel_callback((DEVCB_##cb)); //************************************************************************** @@ -36,9 +36,9 @@ class tmp68301_device : public device_t, public: tmp68301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_cpu_tag(device_t &device, const char *tag) { downcast<tmp68301_device &>(device).m_cpu.set_tag(tag); } - template <class Object> static devcb_base &set_in_parallel_callback(device_t &device, Object &&cb) { return downcast<tmp68301_device &>(device).m_in_parallel_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_parallel_callback(device_t &device, Object &&cb) { return downcast<tmp68301_device &>(device).m_out_parallel_cb.set_callback(std::forward<Object>(cb)); } + void set_cpu_tag(const char *tag) { m_cpu.set_tag(tag); } + template <class Object> devcb_base &set_in_parallel_callback(Object &&cb) { return m_in_parallel_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_parallel_callback(Object &&cb) { return m_out_parallel_cb.set_callback(std::forward<Object>(cb)); } // Hardware Registers DECLARE_READ16_MEMBER( regs_r ); diff --git a/src/devices/machine/tms1024.h b/src/devices/machine/tms1024.h index fec6685c42d..ea63328af02 100644 --- a/src/devices/machine/tms1024.h +++ b/src/devices/machine/tms1024.h @@ -18,9 +18,9 @@ // 4-bit ports (3210 = DCBA) // valid ports: 4-7 for TMS1024, 1-7 for TMS1025 #define MCFG_TMS1025_READ_PORT_CB(X, cb) \ - devcb = &tms1024_device::set_read_port_callback<(tms1024_device::X)>(*device, (DEVCB_##cb)); + devcb = &downcast<tms1024_device &>(*device).set_read_port_callback<(tms1024_device::X)>((DEVCB_##cb)); #define MCFG_TMS1025_WRITE_PORT_CB(X, cb) \ - devcb = &tms1024_device::set_write_port_callback<(tms1024_device::X)>(*device, (DEVCB_##cb)); + devcb = &downcast<tms1024_device &>(*device).set_write_port_callback<(tms1024_device::X)>((DEVCB_##cb)); // pinout reference @@ -68,15 +68,9 @@ public: tms1024_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <unsigned N, class Object> static devcb_base &set_read_port_callback(device_t &device, Object &&cb) - { - return downcast<tms1024_device &>(device).m_read_port[N].set_callback(std::forward<Object>(cb)); - } - template <unsigned N, class Object> static devcb_base &set_write_port_callback(device_t &device, Object &&cb) - { - return downcast<tms1024_device &>(device).m_write_port[N].set_callback(std::forward<Object>(cb)); - } + // configuration helpers + template <unsigned N, class Object> devcb_base &set_read_port_callback(Object &&cb) { return m_read_port[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_write_port_callback(Object &&cb) { return m_write_port[N].set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER(write_h); DECLARE_READ8_MEMBER(read_h); diff --git a/src/devices/machine/tms5501.h b/src/devices/machine/tms5501.h index 43ff4c7e2a5..8b7905df77c 100644 --- a/src/devices/machine/tms5501.h +++ b/src/devices/machine/tms5501.h @@ -42,16 +42,16 @@ //************************************************************************** #define MCFG_TMS5501_IRQ_CALLBACK(_write) \ - devcb = &tms5501_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<tms5501_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_TMS5501_XMT_CALLBACK(_write) \ - devcb = &tms5501_device::set_xmt_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<tms5501_device &>(*device).set_xmt_wr_callback(DEVCB_##_write); #define MCFG_TMS5501_XI_CALLBACK(_read) \ - devcb = &tms5501_device::set_xi_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<tms5501_device &>(*device).set_xi_rd_callback(DEVCB_##_read); #define MCFG_TMS5501_XO_CALLBACK(_write) \ - devcb = &tms5501_device::set_xo_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<tms5501_device &>(*device).set_xo_wr_callback(DEVCB_##_write); @@ -68,10 +68,10 @@ public: // construction/destruction tms5501_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<tms5501_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_xmt_wr_callback(device_t &device, Object &&cb) { return downcast<tms5501_device &>(device).m_write_xmt.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_xi_rd_callback(device_t &device, Object &&cb) { return downcast<tms5501_device &>(device).m_read_xi.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_xo_wr_callback(device_t &device, Object &&cb) { return downcast<tms5501_device &>(device).m_write_xo.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_xmt_wr_callback(Object &&cb) { return m_write_xmt.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_xi_rd_callback(Object &&cb) { return m_read_xi.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_xo_wr_callback(Object &&cb) { return m_write_xo.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( rcv_w ); diff --git a/src/devices/machine/tms6100.h b/src/devices/machine/tms6100.h index ec1f3b9817c..d9e34634279 100644 --- a/src/devices/machine/tms6100.h +++ b/src/devices/machine/tms6100.h @@ -21,7 +21,7 @@ // note: in 4-bit mode, use data_r, otherwise use data_line_r #define MCFG_TMS6100_4BIT_MODE() \ - tms6100_device::enable_4bit_mode(*device); + downcast<tms6100_device &>(*device).enable_4bit_mode(true); // pinout reference @@ -97,7 +97,7 @@ class tms6100_device : public device_t public: tms6100_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - static void enable_4bit_mode(device_t &device) { downcast<tms6100_device &>(device).m_4bit_mode = true; } + void enable_4bit_mode(bool mode) { m_4bit_mode = mode; } DECLARE_WRITE_LINE_MEMBER(m0_w); DECLARE_WRITE_LINE_MEMBER(m1_w); diff --git a/src/devices/machine/tms9901.h b/src/devices/machine/tms9901.h index f83e8ad6e22..51807b56bec 100644 --- a/src/devices/machine/tms9901.h +++ b/src/devices/machine/tms9901.h @@ -63,9 +63,9 @@ public: DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); - template <class Object> static devcb_base &static_set_readblock_callback(device_t &device, Object &&cb) { return downcast<tms9901_device &>(device).m_read_block.set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &static_set_p_callback(device_t &device, Object &&cb) { return downcast<tms9901_device &>(device).m_write_p[N].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_intlevel_callback(device_t &device, Object &&cb) { return downcast<tms9901_device &>(device).m_interrupt.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_readblock_callback(Object &&cb) { return m_read_block.set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_p_callback(Object &&cb) { return m_write_p[N].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intlevel_callback(Object &&cb) { return m_interrupt.set_callback(std::forward<Object>(cb)); } private: static constexpr device_timer_id DECREMENTER = 0; @@ -139,57 +139,57 @@ private: ***************************************************************************/ #define MCFG_TMS9901_READBLOCK_HANDLER( _read ) \ - devcb = &tms9901_device::static_set_readblock_callback( *device, DEVCB_##_read ); + devcb = &downcast<tms9901_device &>(*device).set_readblock_callback(DEVCB_##_read); #define MCFG_TMS9901_P0_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<0>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<0>(DEVCB_##_write); #define MCFG_TMS9901_P1_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<1>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<1>(DEVCB_##_write); #define MCFG_TMS9901_P2_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<2>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<2>(DEVCB_##_write); #define MCFG_TMS9901_P3_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<3>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<3>(DEVCB_##_write); #define MCFG_TMS9901_P4_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<4>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<4>(DEVCB_##_write); #define MCFG_TMS9901_P5_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<5>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<5>(DEVCB_##_write); #define MCFG_TMS9901_P6_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<6>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<6>(DEVCB_##_write); #define MCFG_TMS9901_P7_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<7>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<7>(DEVCB_##_write); #define MCFG_TMS9901_P8_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<8>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<8>(DEVCB_##_write); #define MCFG_TMS9901_P9_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<9>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<9>(DEVCB_##_write); #define MCFG_TMS9901_P10_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<10>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<10>(DEVCB_##_write); #define MCFG_TMS9901_P11_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<11>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<11>(DEVCB_##_write); #define MCFG_TMS9901_P12_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<12>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<12>(DEVCB_##_write); #define MCFG_TMS9901_P13_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<13>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<13>(DEVCB_##_write); #define MCFG_TMS9901_P14_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<14>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<14>(DEVCB_##_write); #define MCFG_TMS9901_P15_HANDLER( _write ) \ - devcb = &tms9901_device::static_set_p_callback<15>( *device, DEVCB_##_write ); + devcb = &downcast<tms9901_device &>(*device).set_p_callback<15>(DEVCB_##_write); #define MCFG_TMS9901_INTLEVEL_HANDLER( _intlevel ) \ - devcb = &tms9901_device::static_set_intlevel_callback( *device, DEVCB_##_intlevel ); + devcb = &downcast<tms9901_device &>(*device).set_intlevel_callback(DEVCB_##_intlevel); #endif // MAME_MACHINE_TMS9901_H diff --git a/src/devices/machine/tms9902.h b/src/devices/machine/tms9902.h index ecff8ad1ac6..1cc824e73ff 100644 --- a/src/devices/machine/tms9902.h +++ b/src/devices/machine/tms9902.h @@ -50,10 +50,10 @@ public: tms9902_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_int_callback(device_t &device, Object &&cb) { return downcast<tms9902_device &>(device).m_int_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rcv_callback(device_t &device, Object &&cb) { return downcast<tms9902_device &>(device).m_rcv_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_xmit_callback(device_t &device, Object &&cb) { return downcast<tms9902_device &>(device).m_xmit_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ctrl_callback(device_t &device, Object &&cb) { return downcast<tms9902_device &>(device).m_ctrl_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rcv_callback(Object &&cb) { return m_rcv_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_xmit_callback(Object &&cb) { return m_xmit_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ctrl_callback(Object &&cb) { return m_ctrl_cb.set_callback(std::forward<Object>(cb)); } void set_clock(bool state); @@ -190,15 +190,15 @@ private: ***************************************************************************/ #define MCFG_TMS9902_INT_CB(cb) \ - devcb = &tms9902_device::set_int_callback(*device, (DEVCB_##cb)); + devcb = &downcast<tms9902_device &>(*device).set_int_callback((DEVCB_##cb)); #define MCFG_TMS9902_RCV_CB(cb) \ - devcb = &tms9902_device::set_rcv_callback(*device, (DEVCB_##cb)); + devcb = &downcast<tms9902_device &>(*device).set_rcv_callback((DEVCB_##cb)); #define MCFG_TMS9902_XMIT_CB(cb) \ - devcb = &tms9902_device::set_xmit_callback(*device, (DEVCB_##cb)); + devcb = &downcast<tms9902_device &>(*device).set_xmit_callback((DEVCB_##cb)); #define MCFG_TMS9902_CTRL_CB(cb) \ - devcb = &tms9902_device::set_ctrl_callback(*device, (DEVCB_##cb)); + devcb = &downcast<tms9902_device &>(*device).set_ctrl_callback((DEVCB_##cb)); #endif // MAME_MACHINE_TMS9902_H diff --git a/src/devices/machine/tube.h b/src/devices/machine/tube.h index ffa27bac813..71e7693a8ba 100644 --- a/src/devices/machine/tube.h +++ b/src/devices/machine/tube.h @@ -21,16 +21,16 @@ MCFG_DEVICE_ADD(_tag, TUBE, 0); #define MCFG_TUBE_HIRQ_HANDLER(_devcb) \ - devcb = &tube_device::set_hirq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<tube_device &>(*device).set_hirq_handler(DEVCB_##_devcb); #define MCFG_TUBE_PNMI_HANDLER(_devcb) \ - devcb = &tube_device::set_pnmi_handler(*device, DEVCB_##_devcb); + devcb = &downcast<tube_device &>(*device).set_pnmi_handler(DEVCB_##_devcb); #define MCFG_TUBE_PIRQ_HANDLER(_devcb) \ - devcb = &tube_device::set_pirq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<tube_device &>(*device).set_pirq_handler(DEVCB_##_devcb); #define MCFG_TUBE_DRQ_HANDLER(_devcb) \ - devcb = &tube_device::set_drq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<tube_device &>(*device).set_drq_handler(DEVCB_##_devcb); @@ -48,10 +48,10 @@ public: tube_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // callbacks - template <class Object> static devcb_base &set_hirq_handler(device_t &device, Object &&cb) { return downcast<tube_device &>(device).m_hirq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pnmi_handler(device_t &device, Object &&cb) { return downcast<tube_device &>(device).m_pnmi_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pirq_handler(device_t &device, Object &&cb) { return downcast<tube_device &>(device).m_pirq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb) { return downcast<tube_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_hirq_handler(Object &&cb) { return m_hirq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pnmi_handler(Object &&cb) { return m_pnmi_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pirq_handler(Object &&cb) { return m_pirq_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)); } DECLARE_READ8_MEMBER(host_r); DECLARE_WRITE8_MEMBER(host_w); diff --git a/src/devices/machine/upd4701.h b/src/devices/machine/upd4701.h index bc07106d597..a7a09397281 100644 --- a/src/devices/machine/upd4701.h +++ b/src/devices/machine/upd4701.h @@ -32,26 +32,24 @@ ***************************************************************************/ #define MCFG_UPD4701_PORTX(_tag) \ - upd4701_device::set_portx_tag(*device, "^" _tag); + downcast<upd4701_device &>(*device).set_portx_tag("^" _tag); #define MCFG_UPD4701_PORTY(_tag) \ - upd4701_device::set_porty_tag(*device, "^" _tag); + downcast<upd4701_device &>(*device).set_porty_tag("^" _tag); #define MCFG_UPD4701_CF_CALLBACK(_devcb) \ - devcb = upd4701_device::set_cf_cb(*device, DEVCB_##_devcb); + devcb = downcast<upd4701_device &>(*device).set_cf_cb(DEVCB_##_devcb); #define MCFG_UPD4701_SF_CALLBACK(_devcb) \ - devcb = upd4701_device::set_sf_cb(*device, DEVCB_##_devcb); + devcb = downcast<upd4701_device &>(*device).set_sf_cb(DEVCB_##_devcb); class upd4701_device : public device_t { public: upd4701_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration - static void set_portx_tag(device_t &device, const char *tag) { downcast<upd4701_device &>(device).m_portx.set_tag(tag); } - static void set_porty_tag(device_t &device, const char *tag) { downcast<upd4701_device &>(device).m_porty.set_tag(tag); } - template<class Object> - static devcb_base &set_cf_cb(device_t &device, Object &&cb) { return downcast<upd4701_device &>(device).m_cf_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> - static devcb_base &set_sf_cb(device_t &device, Object &&cb) { return downcast<upd4701_device &>(device).m_sf_cb.set_callback(std::forward<Object>(cb)); } + // configuration + void set_portx_tag(const char *tag) { m_portx.set_tag(tag); } + void set_porty_tag(const char *tag) { m_porty.set_tag(tag); } + template<class Object> devcb_base &set_cf_cb(Object &&cb) { return m_cf_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_sf_cb(Object &&cb) { return m_sf_cb.set_callback(std::forward<Object>(cb)); } void x_add(s16 data); void y_add(s16 data); diff --git a/src/devices/machine/upd7002.h b/src/devices/machine/upd7002.h index 3632b7b8c47..2dda4bc8e18 100644 --- a/src/devices/machine/upd7002.h +++ b/src/devices/machine/upd7002.h @@ -36,8 +36,8 @@ public: upd7002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_get_analogue_callback(device_t &device, get_analogue_delegate &&callback) { downcast<upd7002_device &>(device).m_get_analogue_cb = std::move(callback); } - static void set_eoc_callback(device_t &device, eoc_delegate &&callback) { downcast<upd7002_device &>(device).m_eoc_cb = std::move(callback); } + template <typename Object> void set_get_analogue_callback(Object &&cb) { m_get_analogue_cb = std::forward<Object>(cb); } + template <typename Object> void set_eoc_callback(Object &&cb) { m_eoc_cb = std::forward<Object>(cb); } DECLARE_READ8_MEMBER(eoc_r); DECLARE_READ8_MEMBER(read); @@ -100,9 +100,9 @@ DECLARE_DEVICE_TYPE(UPD7002, upd7002_device) ***************************************************************************/ #define MCFG_UPD7002_GET_ANALOGUE_CB(_class, _method) \ - upd7002_device::set_get_analogue_callback(*device, upd7002_device::get_analogue_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<upd7002_device &>(*device).set_get_analogue_callback(upd7002_device::get_analogue_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_UPD7002_EOC_CB(_class, _method) \ - upd7002_device::set_eoc_callback(*device, upd7002_device::eoc_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<upd7002_device &>(*device).set_eoc_callback(upd7002_device::eoc_delegate(&_class::_method, #_class "::" #_method, this)); #endif // MAME_MACHINE_UPD7002_H diff --git a/src/devices/machine/upd71071.h b/src/devices/machine/upd71071.h index 21720d295d6..813a5bea3fe 100644 --- a/src/devices/machine/upd71071.h +++ b/src/devices/machine/upd71071.h @@ -11,15 +11,15 @@ class upd71071_device : public device_t public: upd71071_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_cpu_tag(device_t &device, const char *tag) { downcast<upd71071_device &>(device).m_cpu.set_tag(tag); } - static void set_clock(device_t &device, int clock) { downcast<upd71071_device &>(device).m_upd_clock = clock; } + void set_cpu_tag(const char *tag) { m_cpu.set_tag(tag); } + void set_clock(int clock) { m_upd_clock = clock; } - template <class Object> static devcb_base &set_out_hreq_callback(device_t &device, Object &&cb) { return downcast<upd71071_device &>(device).m_out_hreq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_eop_callback(device_t &device, Object &&cb) { return downcast<upd71071_device &>(device).m_out_eop_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_hreq_callback(Object &&cb) { return m_out_hreq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_eop_callback(Object &&cb) { return m_out_eop_cb.set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_dma_read_callback(device_t &device, Object &&cb) { return downcast<upd71071_device &>(device).m_dma_read_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_dma_write_callback(device_t &device, Object &&cb) { return downcast<upd71071_device &>(device).m_dma_write_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_dack_callback(device_t &device, Object &&cb) { return downcast<upd71071_device &>(device).m_out_dack_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_dma_read_callback(Object &&cb) { return m_dma_read_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_dma_write_callback(Object &&cb) { return m_dma_write_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_dack_callback(Object &&cb) { return m_out_dack_cb[N].set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); @@ -76,51 +76,51 @@ private: DECLARE_DEVICE_TYPE(UPD71071, upd71071_device) #define MCFG_UPD71071_CPU(tag) \ - upd71071_device::static_set_cpu_tag(*device, ("^" tag)); + downcast<upd71071_device &>(*device).set_cpu_tag(("^" tag)); #define MCFG_UPD71071_CLOCK(clk) \ - upd71071_device::set_clock(*device, (clk)); + downcast<upd71071_device &>(*device).set_clock((clk)); #define MCFG_UPD71071_OUT_HREQ_CB(cb) \ - devcb = &upd71071_device::set_out_hreq_callback(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_out_hreq_callback((DEVCB_##cb)); #define MCFG_UPD71071_OUT_EOP_CB(cb) \ - devcb = &upd71071_device::set_out_eop_callback(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_out_eop_callback((DEVCB_##cb)); #define MCFG_UPD71071_DMA_READ_0_CB(cb) \ - devcb = &upd71071_device::set_dma_read_callback<0>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_dma_read_callback<0>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_READ_1_CB(cb) \ - devcb = &upd71071_device::set_dma_read_callback<1>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_dma_read_callback<1>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_READ_2_CB(cb) \ - devcb = &upd71071_device::set_dma_read_callback<2>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_dma_read_callback<2>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_READ_3_CB(cb) \ - devcb = &upd71071_device::set_dma_read_callback<3>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_dma_read_callback<3>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_WRITE_0_CB(cb) \ - devcb = &upd71071_device::set_dma_write_callback<0>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_dma_write_callback<0>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_WRITE_1_CB(cb) \ - devcb = &upd71071_device::set_dma_write_callback<1>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_dma_write_callback<1>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_WRITE_2_CB(cb) \ - devcb = &upd71071_device::set_dma_write_callback<2>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_dma_write_callback<2>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_WRITE_3_CB(cb) \ - devcb = &upd71071_device::set_dma_write_callback<3>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_dma_write_callback<3>((DEVCB_##cb)); #define MCFG_UPD71071_OUT_DACK_0_CB(cb) \ - devcb = &upd71071_device::set_out_dack_callback<0>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_out_dack_callback<0>((DEVCB_##cb)); #define MCFG_UPD71071_OUT_DACK_1_CB(cb) \ - devcb = &upd71071_device::set_out_dack_callback<1>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_out_dack_callback<1>((DEVCB_##cb)); #define MCFG_UPD71071_OUT_DACK_2_CB(cb) \ - devcb = &upd71071_device::set_out_dack_callback<2>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_out_dack_callback<2>((DEVCB_##cb)); #define MCFG_UPD71071_OUT_DACK_3_CB(cb) \ - devcb = &upd71071_device::set_out_dack_callback<3>(*device, (DEVCB_##cb)); + devcb = &downcast<upd71071_device &>(*device).set_out_dack_callback<3>((DEVCB_##cb)); #endif // MAME_MACHINE_UPD71071_H diff --git a/src/devices/machine/upd765.h b/src/devices/machine/upd765.h index 9fc16fdc5a8..422295e6616 100644 --- a/src/devices/machine/upd765.h +++ b/src/devices/machine/upd765.h @@ -63,16 +63,16 @@ MCFG_DEVICE_ADD(_tag, TC8566AF, 0) #define MCFG_MCS3201_INPUT_HANDLER(_devcb) \ - devcb = &mcs3201_device::set_input_handler(*device, DEVCB_##_devcb); + devcb = &downcast<mcs3201_device &>(*device).set_input_handler(DEVCB_##_devcb); #define MCFG_UPD765_INTRQ_CALLBACK(_write) \ - devcb = &upd765_family_device::set_intrq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<upd765_family_device &>(*device).set_intrq_wr_callback(DEVCB_##_write); #define MCFG_UPD765_DRQ_CALLBACK(_write) \ - devcb = &upd765_family_device::set_drq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<upd765_family_device &>(*device).set_drq_wr_callback(DEVCB_##_write); #define MCFG_UPD765_HDL_CALLBACK(_write) \ - devcb = &upd765_family_device::set_hdl_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<upd765_family_device &>(*device).set_hdl_wr_callback(DEVCB_##_write); /* Interface required for PC ISA wrapping */ class pc_fdc_interface : public device_t { @@ -101,9 +101,9 @@ class upd765_family_device : public pc_fdc_interface { public: enum { MODE_AT, MODE_PS2, MODE_M30 }; - template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<upd765_family_device &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<upd765_family_device &>(device).drq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_hdl_wr_callback(device_t &device, Object &&cb) { return downcast<upd765_family_device &>(device).hdl_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq_wr_callback(Object &&cb) { return drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_hdl_wr_callback(Object &&cb) { return hdl_cb.set_callback(std::forward<Object>(cb)); } virtual void map(address_map &map) override = 0; @@ -534,8 +534,8 @@ class mcs3201_device : public upd765_family_device { public: mcs3201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_input_handler(device_t &device, Object &&cb) { return downcast<mcs3201_device &>(device).m_input_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_input_handler(Object &&cb) { return m_input_handler.set_callback(std::forward<Object>(cb)); } virtual void map(address_map &map) override; DECLARE_READ8_MEMBER( input_r ); diff --git a/src/devices/machine/vrc4373.cpp b/src/devices/machine/vrc4373.cpp index aaf2ff937d7..a2d448998f7 100644 --- a/src/devices/machine/vrc4373.cpp +++ b/src/devices/machine/vrc4373.cpp @@ -285,11 +285,6 @@ void vrc4373_device::reset_all_mappings() pci_device::reset_all_mappings(); } -void vrc4373_device::set_cpu_tag(const char *_cpu_tag) -{ - LOGNILE("set_cpu_tag\n"); - cpu_tag = _cpu_tag; -} // PCI bus control READ32_MEMBER (vrc4373_device::pcictrl_r) { diff --git a/src/devices/machine/vrc4373.h b/src/devices/machine/vrc4373.h index 184e8ca6ac2..48d49c764ea 100644 --- a/src/devices/machine/vrc4373.h +++ b/src/devices/machine/vrc4373.h @@ -33,8 +33,8 @@ public: uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) override; void postload(void); - template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&cb) { return downcast<vrc4373_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); } - void set_cpu_tag(const char *tag); + template <class Object> devcb_base &set_irq_cb(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } + void set_cpu_tag(const char *tag) { cpu_tag = tag; } void set_ram_size(const int size) { m_ram_size = size; }; void set_simm0_size(const int size) { m_simm0_size = size; }; diff --git a/src/devices/machine/vt82c496.h b/src/devices/machine/vt82c496.h index 60a89060db0..60fa191c3f6 100644 --- a/src/devices/machine/vt82c496.h +++ b/src/devices/machine/vt82c496.h @@ -17,10 +17,10 @@ MCFG_DEVICE_ADD(_tag, VT82C496, 0) #define MCFG_VT82C496_CPU( _tag ) \ - vt82c496_device::static_set_cpu(*device, _tag); + downcast<vt82c496_device &>(*device).set_cpu(_tag); #define MCFG_VT82C496_REGION( _tag ) \ - vt82c496_device::static_set_region(*device, _tag); + downcast<vt82c496_device &>(*device).set_region(_tag); class vt82c496_device : public device_t { @@ -28,8 +28,8 @@ public: // construction/destruction vt82c496_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_cpu(device_t &device, const char *tag) { dynamic_cast<vt82c496_device &>(device).m_cpu_tag = tag; } - static void static_set_region(device_t &device, const char *tag) { dynamic_cast<vt82c496_device &>(device).m_region_tag = tag; } + void set_cpu(const char *tag) { m_cpu_tag = tag; } + void set_region(const char *tag) { m_region_tag = tag; } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/watchdog.cpp b/src/devices/machine/watchdog.cpp index 0eb841369cb..cfd6bfeb7df 100644 --- a/src/devices/machine/watchdog.cpp +++ b/src/devices/machine/watchdog.cpp @@ -35,31 +35,6 @@ watchdog_timer_device::watchdog_timer_device(const machine_config &mconfig, cons //------------------------------------------------- -// static_set_vblank_count - configuration helper -// to set the number of VBLANKs -//------------------------------------------------- - -void watchdog_timer_device::static_set_vblank_count(device_t &device, const char *screen_tag, int32_t count) -{ - watchdog_timer_device &watchdog = downcast<watchdog_timer_device &>(device); - watchdog.m_screen_tag = screen_tag; - watchdog.m_vblank_count = count; -} - - -//------------------------------------------------- -// static_set_time - configuration helper to set -// the time until reset -//------------------------------------------------- - -void watchdog_timer_device::static_set_time(device_t &device, attotime time) -{ - watchdog_timer_device &watchdog = downcast<watchdog_timer_device &>(device); - watchdog.m_time = time; -} - - -//------------------------------------------------- // device_validity_check - validate the device // configuration //------------------------------------------------- diff --git a/src/devices/machine/watchdog.h b/src/devices/machine/watchdog.h index 2e17fcdea98..e0f937bf440 100644 --- a/src/devices/machine/watchdog.h +++ b/src/devices/machine/watchdog.h @@ -16,9 +16,9 @@ #define MCFG_WATCHDOG_MODIFY(_tag) \ MCFG_DEVICE_MODIFY(_tag) #define MCFG_WATCHDOG_VBLANK_INIT(_screen, _count) \ - watchdog_timer_device::static_set_vblank_count(*device, _screen, _count); + downcast<watchdog_timer_device &>(*device).set_vblank_count(_screen, _count); #define MCFG_WATCHDOG_TIME_INIT(_time) \ - watchdog_timer_device::static_set_time(*device, _time); + downcast<watchdog_timer_device &>(*device).set_time(_time); //************************************************************************** @@ -34,8 +34,8 @@ public: watchdog_timer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - static void static_set_vblank_count(device_t &device, const char *screen_tag, int32_t count); - static void static_set_time(device_t &device, attotime time); + void set_vblank_count(const char *screen_tag, int32_t count) { m_screen_tag = screen_tag; m_vblank_count = count; } + void set_time(attotime time) { m_time = time; } // watchdog control void watchdog_reset(); diff --git a/src/devices/machine/wd11c00_17.h b/src/devices/machine/wd11c00_17.h index 15c712425f9..8f644aba758 100644 --- a/src/devices/machine/wd11c00_17.h +++ b/src/devices/machine/wd11c00_17.h @@ -18,37 +18,37 @@ //************************************************************************** #define MCFG_WD11C00_17_OUT_IRQ5_CB(_devcb) \ - devcb = &wd11c00_17_device::set_out_irq5_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd11c00_17_device &>(*device).set_out_irq5_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_DRQ3_CB(_devcb) \ - devcb = &wd11c00_17_device::set_out_drq3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd11c00_17_device &>(*device).set_out_drq3_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_MR_CB(_devcb) \ - devcb = &wd11c00_17_device::set_out_mr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd11c00_17_device &>(*device).set_out_mr_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_BUSY_CB(_devcb) \ - devcb = &wd11c00_17_device::set_out_busy_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd11c00_17_device &>(*device).set_out_busy_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_REQ_CB(_devcb) \ - devcb = &wd11c00_17_device::set_out_req_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd11c00_17_device &>(*device).set_out_req_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_RA3_CB(_devcb) \ - devcb = &wd11c00_17_device::set_out_ra3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd11c00_17_device &>(*device).set_out_ra3_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_IN_RD322_CB(_devcb) \ - devcb = &wd11c00_17_device::set_in_rd322_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd11c00_17_device &>(*device).set_in_rd322_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_IN_RAMCS_CB(_devcb) \ - devcb = &wd11c00_17_device::set_in_ramcs_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd11c00_17_device &>(*device).set_in_ramcs_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_RAMWR_CB(_devcb) \ - devcb = &wd11c00_17_device::set_out_ramwr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd11c00_17_device &>(*device).set_out_ramwr_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_IN_CS1010_CB(_devcb) \ - devcb = &wd11c00_17_device::set_in_cs1010_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd11c00_17_device &>(*device).set_in_cs1010_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_CS1010_CB(_devcb) \ - devcb = &wd11c00_17_device::set_out_cs1010_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd11c00_17_device &>(*device).set_out_cs1010_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -62,17 +62,17 @@ public: // construction/destruction wd11c00_17_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_irq5_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_irq5_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_drq3_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_drq3_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_mr_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_mr_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_busy_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_busy_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_req_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_req_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_ra3_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_ra3_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_rd322_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_in_rd322_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_ramcs_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_in_ramcs_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_ramwr_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_ramwr_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_cs1010_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_in_cs1010_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_cs1010_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_cs1010_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq5_callback(Object &&cb) { return m_out_irq5_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_drq3_callback(Object &&cb) { return m_out_drq3_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_mr_callback(Object &&cb) { return m_out_mr_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_busy_callback(Object &&cb) { return m_out_busy_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_req_callback(Object &&cb) { return m_out_req_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_ra3_callback(Object &&cb) { return m_out_ra3_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_rd322_callback(Object &&cb) { return m_in_rd322_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_ramcs_callback(Object &&cb) { return m_in_ramcs_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_ramwr_callback(Object &&cb) { return m_out_ramwr_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_cs1010_callback(Object &&cb) { return m_in_cs1010_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_cs1010_callback(Object &&cb) { return m_out_cs1010_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( io_r ); DECLARE_WRITE8_MEMBER( io_w ); diff --git a/src/devices/machine/wd2010.h b/src/devices/machine/wd2010.h index da76fa0af9d..47e928d20cf 100644 --- a/src/devices/machine/wd2010.h +++ b/src/devices/machine/wd2010.h @@ -19,49 +19,49 @@ //************************************************************************** #define MCFG_WD2010_OUT_INTRQ_CB(_devcb) \ - devcb = &wd2010_device::set_out_intrq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_out_intrq_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_BDRQ_CB(_devcb) \ - devcb = &wd2010_device::set_out_bdrq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_out_bdrq_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_BCR_CB(_devcb) \ - devcb = &wd2010_device::set_out_bcr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_out_bcr_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_BRDY_CB(_devcb) \ - devcb = &wd2010_device::set_in_brdy_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_in_brdy_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_BCS_CB(_devcb) \ - devcb = &wd2010_device::set_in_bcs_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_in_bcs_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_BCS_CB(_devcb) \ - devcb = &wd2010_device::set_out_bcs_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_out_bcs_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_DIRIN_CB(_devcb) \ - devcb = &wd2010_device::set_out_dirin_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_out_dirin_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_STEP_CB(_devcb) \ - devcb = &wd2010_device::set_out_step_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_out_step_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_RWC_CB(_devcb) \ - devcb = &wd2010_device::set_out_rwc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_out_rwc_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_WG_CB(_devcb) \ - devcb = &wd2010_device::set_out_wg_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_out_wg_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_DRDY_CB(_devcb) \ - devcb = &wd2010_device::set_in_drdy_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_in_drdy_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_INDEX_CB(_devcb) \ - devcb = &wd2010_device::set_in_index_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_in_index_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_WF_CB(_devcb) \ - devcb = &wd2010_device::set_in_wf_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_in_wf_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_TK000_CB(_devcb) \ - devcb = &wd2010_device::set_in_tk000_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_in_tk000_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_SC_CB(_devcb) \ - devcb = &wd2010_device::set_in_sc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<wd2010_device &>(*device).set_in_sc_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -75,21 +75,21 @@ public: // construction/destruction wd2010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_intrq_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_intrq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_bdrq_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_bdrq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_bcr_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_bcr_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_brdy_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_brdy_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_bcs_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_bcs_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_bcs_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_bcs_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_dirin_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_dirin_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_step_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_step_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rwc_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_rwc_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_wg_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_wg_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_drdy_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_drdy_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_index_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_index_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_wf_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_wf_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_tk000_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_tk000_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_sc_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_sc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_intrq_callback(Object &&cb) { return m_out_intrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_bdrq_callback(Object &&cb) { return m_out_bdrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_bcr_callback(Object &&cb) { return m_out_bcr_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_brdy_callback(Object &&cb) { return m_in_brdy_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_bcs_callback(Object &&cb) { return m_in_bcs_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_bcs_callback(Object &&cb) { return m_out_bcs_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_dirin_callback(Object &&cb) { return m_out_dirin_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_step_callback(Object &&cb) { return m_out_step_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rwc_callback(Object &&cb) { return m_out_rwc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_wg_callback(Object &&cb) { return m_out_wg_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_drdy_callback(Object &&cb) { return m_in_drdy_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_index_callback(Object &&cb) { return m_in_index_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_wf_callback(Object &&cb) { return m_in_wf_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_tk000_callback(Object &&cb) { return m_in_tk000_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_sc_callback(Object &&cb) { return m_in_sc_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/wd33c93.h b/src/devices/machine/wd33c93.h index 5559f16b1c8..a0dd224b1db 100644 --- a/src/devices/machine/wd33c93.h +++ b/src/devices/machine/wd33c93.h @@ -13,7 +13,7 @@ #include "legscsi.h" #define MCFG_WD33C93_IRQ_CB(cb) \ - devcb = &wd33c93_device::set_irq_callback(*device, (DEVCB_##cb)); + devcb = &downcast<wd33c93_device &>(*device).set_irq_callback((DEVCB_##cb)); class wd33c93_device : public legacy_scsi_host_adapter { @@ -21,7 +21,7 @@ public: // construction/destruction wd33c93_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<wd33c93_device &>(device).m_irq_cb.set_callback(object); } + template<class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/wd7600.cpp b/src/devices/machine/wd7600.cpp index f73086d700d..39077438bd1 100644 --- a/src/devices/machine/wd7600.cpp +++ b/src/devices/machine/wd7600.cpp @@ -77,30 +77,6 @@ MACHINE_CONFIG_START(wd7600_device::device_add_mconfig) MACHINE_CONFIG_END -void wd7600_device::static_set_cputag(device_t &device, const char *tag) -{ - wd7600_device &chip = downcast<wd7600_device &>(device); - chip.m_cputag = tag; -} - -void wd7600_device::static_set_isatag(device_t &device, const char *tag) -{ - wd7600_device &chip = downcast<wd7600_device &>(device); - chip.m_isatag = tag; -} - -void wd7600_device::static_set_biostag(device_t &device, const char *tag) -{ - wd7600_device &chip = downcast<wd7600_device &>(device); - chip.m_biostag = tag; -} - -void wd7600_device::static_set_keybctag(device_t &device, const char *tag) -{ - wd7600_device &chip = downcast<wd7600_device &>(device); - chip.m_keybctag = tag; -} - wd7600_device::wd7600_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, WD7600, tag, owner, clock), m_read_ior(*this), diff --git a/src/devices/machine/wd7600.h b/src/devices/machine/wd7600.h index bf2c4f70d88..e16bcbf71b2 100644 --- a/src/devices/machine/wd7600.h +++ b/src/devices/machine/wd7600.h @@ -21,10 +21,10 @@ #define MCFG_WD7600_ADD(_tag, _clock, _cputag, _isatag, _biostag, _keybctag) \ MCFG_DEVICE_ADD(_tag, WD7600, _clock) \ - wd7600_device::static_set_cputag(*device, _cputag); \ - wd7600_device::static_set_isatag(*device, _isatag); \ - wd7600_device::static_set_biostag(*device, _biostag); \ - wd7600_device::static_set_keybctag(*device, _keybctag); + downcast<wd7600_device &>(*device).set_cputag(_cputag); \ + downcast<wd7600_device &>(*device).set_isatag(_isatag); \ + downcast<wd7600_device &>(*device).set_biostag(_biostag); \ + downcast<wd7600_device &>(*device).set_keybctag(_keybctag); #define MCFG_WD7600_IOR(_ior) \ devcb = &downcast<wd7600_device *>(device)->set_ior_callback(DEVCB_##_ior); @@ -78,10 +78,10 @@ public: template <class Object> devcb_base &set_spkr_callback(Object &&spkr) { return m_write_spkr.set_callback(std::forward<Object>(spkr)); } // inline configuration - static void static_set_cputag(device_t &device, const char *tag); - static void static_set_isatag(device_t &device, const char *tag); - static void static_set_biostag(device_t &device, const char *tag); - static void static_set_keybctag(device_t &device, const char *tag); + void set_cputag(const char *tag) { m_cputag = tag; } + void set_isatag(const char *tag) { m_isatag = tag; } + void set_biostag(const char *tag) { m_biostag = tag; } + void set_keybctag(const char *tag) { m_keybctag = tag; } // input lines DECLARE_WRITE_LINE_MEMBER( irq01_w ) { m_pic1->ir1_w(state); } diff --git a/src/devices/machine/wd_fdc.h b/src/devices/machine/wd_fdc.h index a5d3006e3b1..39094490fc3 100644 --- a/src/devices/machine/wd_fdc.h +++ b/src/devices/machine/wd_fdc.h @@ -121,27 +121,27 @@ downcast<wd_fdc_device_base *>(device)->set_disable_motor_control(true); #define MCFG_WD_FDC_INTRQ_CALLBACK(_write) \ - devcb = &wd_fdc_device_base::set_intrq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wd_fdc_device_base &>(*device).set_intrq_wr_callback(DEVCB_##_write); #define MCFG_WD_FDC_DRQ_CALLBACK(_write) \ - devcb = &wd_fdc_device_base::set_drq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wd_fdc_device_base &>(*device).set_drq_wr_callback(DEVCB_##_write); #define MCFG_WD_FDC_HLD_CALLBACK(_write) \ - devcb = &wd_fdc_device_base::set_hld_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wd_fdc_device_base &>(*device).set_hld_wr_callback(DEVCB_##_write); #define MCFG_WD_FDC_ENP_CALLBACK(_write) \ - devcb = &wd_fdc_device_base::set_enp_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<wd_fdc_device_base &>(*device).set_enp_wr_callback(DEVCB_##_write); #define MCFG_WD_FDC_ENMF_CALLBACK(_read) \ - devcb = &wd_fdc_device_base::set_enmf_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<wd_fdc_device_base &>(*device).set_enmf_rd_callback(DEVCB_##_read); class wd_fdc_device_base : public device_t { public: - template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<wd_fdc_device_base &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<wd_fdc_device_base &>(device).drq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_hld_wr_callback(device_t &device, Object &&cb) { return downcast<wd_fdc_device_base &>(device).hld_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_enp_wr_callback(device_t &device, Object &&cb) { return downcast<wd_fdc_device_base &>(device).enp_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_enmf_rd_callback(device_t &device, Object &&cb) { return downcast<wd_fdc_device_base &>(device).enmf_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq_wr_callback(Object &&cb) { return drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_hld_wr_callback(Object &&cb) { return hld_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_enp_wr_callback(Object &&cb) { return enp_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_enmf_rd_callback(Object &&cb) { return enmf_cb.set_callback(std::forward<Object>(cb)); } void soft_reset(); diff --git a/src/devices/machine/x2212.cpp b/src/devices/machine/x2212.cpp index c170a7597ed..4d3327827ff 100644 --- a/src/devices/machine/x2212.cpp +++ b/src/devices/machine/x2212.cpp @@ -58,17 +58,6 @@ x2212_device::x2212_device(const machine_config &mconfig, device_type type, cons } //------------------------------------------------- -// static_set_auto_save - configuration helper -// to set the auto-save flag -//------------------------------------------------- - -void x2212_device::static_set_auto_save(device_t &device) -{ - downcast<x2212_device &>(device).m_auto_save = true; -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/machine/x2212.h b/src/devices/machine/x2212.h index fae3118ed65..b443f03c870 100644 --- a/src/devices/machine/x2212.h +++ b/src/devices/machine/x2212.h @@ -25,14 +25,14 @@ // to fire on power-down, effectively creating an "auto-save" functionality #define MCFG_X2212_ADD_AUTOSAVE(_tag) \ MCFG_DEVICE_ADD(_tag, X2212, 0) \ - x2212_device::static_set_auto_save(*device); + downcast<x2212_device &>(*device).set_auto_save(true); #define MCFG_X2210_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, X2210, 0) #define MCFG_X2210_ADD_AUTOSAVE(_tag) \ MCFG_DEVICE_ADD(_tag, X2210, 0) \ - x2212_device::static_set_auto_save(*device); + downcast<x2212_device &>(*device).set_auto_save(true); //************************************************************************** @@ -51,7 +51,7 @@ public: x2212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - static void static_set_auto_save(device_t &device); + void set_auto_save(bool auto_save) { m_auto_save = auto_save; } // I/O operations DECLARE_READ8_MEMBER( read ); diff --git a/src/devices/machine/ym2148.h b/src/devices/machine/ym2148.h index 61fe8d01214..3286ef0ad6c 100644 --- a/src/devices/machine/ym2148.h +++ b/src/devices/machine/ym2148.h @@ -19,16 +19,16 @@ //************************************************************************** #define MCFG_YM2148_TXD_HANDLER(_devcb) \ - devcb = &ym2148_device::set_txd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ym2148_device &>(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_YM2148_PORT_WRITE_HANDLER(_devcb) \ - devcb = &ym2148_device::set_port_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ym2148_device &>(*device).set_port_write_handler(DEVCB_##_devcb); #define MCFG_YM2148_PORT_READ_HANDLER(_devcb) \ - devcb = &ym2148_device::set_port_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ym2148_device &>(*device).set_port_read_handler(DEVCB_##_devcb); #define MCFG_YM2148_IRQ_HANDLER(_devcb) \ - devcb = &ym2148_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ym2148_device &>(*device).set_irq_handler(DEVCB_##_devcb); class ym2148_device : public device_t, public device_serial_interface @@ -37,11 +37,11 @@ public: // construction/destruction ym2148_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<ym2148_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port_write_handler(device_t &device, Object &&cb) { return downcast<ym2148_device &>(device).m_port_write_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port_read_handler(device_t &device, Object &&cb) { return downcast<ym2148_device &>(device).m_port_read_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2148_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port_write_handler(Object &&cb) { return m_port_write_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port_read_handler(Object &&cb) { return m_port_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/ym3802.h b/src/devices/machine/ym3802.h index 30c9bde478b..4f58b19ac7a 100644 --- a/src/devices/machine/ym3802.h +++ b/src/devices/machine/ym3802.h @@ -23,10 +23,10 @@ #include <queue> #define MCFG_YM3802_IRQ_HANDLER(_devcb) \ - devcb = &ym3802_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ym3802_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_YM3802_TXD_HANDLER(_devcb) \ - devcb = &ym3802_device::set_txd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<ym3802_device &>(*device).set_txd_handler(DEVCB_##_devcb); class ym3802_device : public device_t, public device_serial_interface { @@ -34,9 +34,9 @@ public: // construction/destruction ym3802_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym3802_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<ym3802_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + 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_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/z80ctc.h b/src/devices/machine/z80ctc.h index 61c937d930c..7da3f480bf7 100644 --- a/src/devices/machine/z80ctc.h +++ b/src/devices/machine/z80ctc.h @@ -36,16 +36,16 @@ //************************************************************************** #define MCFG_Z80CTC_INTR_CB(_devcb) \ - devcb = &z80ctc_device::set_intr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80ctc_device &>(*device).set_intr_callback(DEVCB_##_devcb); #define MCFG_Z80CTC_ZC0_CB(_devcb) \ - devcb = &z80ctc_device::set_zc0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80ctc_device &>(*device).set_zc0_callback(DEVCB_##_devcb); #define MCFG_Z80CTC_ZC1_CB(_devcb) \ - devcb = &z80ctc_device::set_zc1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80ctc_device &>(*device).set_zc1_callback(DEVCB_##_devcb); #define MCFG_Z80CTC_ZC2_CB(_devcb) \ - devcb = &z80ctc_device::set_zc2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80ctc_device &>(*device).set_zc2_callback(DEVCB_##_devcb); //************************************************************************** @@ -62,10 +62,10 @@ public: // construction/destruction z80ctc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_intr_callback(device_t &device, Object &&cb) { return downcast<z80ctc_device &>(device).m_intr_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_zc0_callback(device_t &device, Object &&cb) { return downcast<z80ctc_device &>(device).m_zc0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_zc1_callback(device_t &device, Object &&cb) { return downcast<z80ctc_device &>(device).m_zc1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_zc2_callback(device_t &device, Object &&cb) { return downcast<z80ctc_device &>(device).m_zc2_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intr_callback(Object &&cb) { return m_intr_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_zc0_callback(Object &&cb) { return m_zc0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_zc1_callback(Object &&cb) { return m_zc1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_zc2_callback(Object &&cb) { return m_zc2_cb.set_callback(std::forward<Object>(cb)); } // read/write handlers DECLARE_READ8_MEMBER( read ); diff --git a/src/devices/machine/z80dart.h b/src/devices/machine/z80dart.h index 90768898ae0..04806d3f957 100644 --- a/src/devices/machine/z80dart.h +++ b/src/devices/machine/z80dart.h @@ -155,52 +155,52 @@ //************************************************************************** #define MCFG_Z80DART_OFFSETS(_rxa, _txa, _rxb, _txb) \ - z80dart_device::configure_channels(*device, _rxa, _txa, _rxb, _txb); + downcast<z80dart_device &>(*device).configure_channels(_rxa, _txa, _rxb, _txb); #define MCFG_Z80DART_OUT_TXDA_CB(_devcb) \ - devcb = &z80dart_device::set_out_txda_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_txda_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_DTRA_CB(_devcb) \ - devcb = &z80dart_device::set_out_dtra_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_RTSA_CB(_devcb) \ - devcb = &z80dart_device::set_out_rtsa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_WRDYA_CB(_devcb) \ - devcb = &z80dart_device::set_out_wrdya_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_wrdya_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_SYNCA_CB(_devcb) \ - devcb = &z80dart_device::set_out_synca_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_synca_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_TXDB_CB(_devcb) \ - devcb = &z80dart_device::set_out_txdb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_DTRB_CB(_devcb) \ - devcb = &z80dart_device::set_out_dtrb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_RTSB_CB(_devcb) \ - devcb = &z80dart_device::set_out_rtsb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_WRDYB_CB(_devcb) \ - devcb = &z80dart_device::set_out_wrdyb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_wrdyb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_SYNCB_CB(_devcb) \ - devcb = &z80dart_device::set_out_syncb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_INT_CB(_devcb) \ - devcb = &z80dart_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_RXDRQA_CB(_devcb) \ - devcb = &z80dart_device::set_out_rxdrqa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_rxdrqa_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_TXDRQA_CB(_devcb) \ - devcb = &z80dart_device::set_out_txdrqa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_txdrqa_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_RXDRQB_CB(_devcb) \ - devcb = &z80dart_device::set_out_rxdrqb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_rxdrqb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_TXDRQB_CB(_devcb) \ - devcb = &z80dart_device::set_out_txdrqb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dart_device &>(*device).set_out_txdrqb_callback(DEVCB_##_devcb); //************************************************************************** @@ -446,29 +446,28 @@ public: // construction/destruction z80dart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_txda_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_txda_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_dtra_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_dtra_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rtsa_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_wrdya_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_wrdya_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_synca_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_synca_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_txdb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_txdb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_dtrb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rtsb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_wrdyb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_wrdyb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_syncb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_syncb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_rxdrqa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_txdrqa_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_txdrqa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_rxdrqb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_txdrqb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_txdrqb_cb.set_callback(std::forward<Object>(cb)); } - - static void configure_channels(device_t &device, int rxa, int txa, int rxb, int txb) + template <class Object> devcb_base &set_out_txda_callback(Object &&cb) { return m_out_txda_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_dtra_callback(Object &&cb) { return m_out_dtra_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rtsa_callback(Object &&cb) { return m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_wrdya_callback(Object &&cb) { return m_out_wrdya_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_synca_callback(Object &&cb) { return m_out_synca_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_txdb_callback(Object &&cb) { return m_out_txdb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_dtrb_callback(Object &&cb) { return m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rtsb_callback(Object &&cb) { return m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_wrdyb_callback(Object &&cb) { return m_out_wrdyb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_syncb_callback(Object &&cb) { return m_out_syncb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rxdrqa_callback(Object &&cb) { return m_out_rxdrqa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_txdrqa_callback(Object &&cb) { return m_out_txdrqa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_rxdrqb_callback(Object &&cb) { return m_out_rxdrqb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_txdrqb_callback(Object &&cb) { return m_out_txdrqb_cb.set_callback(std::forward<Object>(cb)); } + + void configure_channels(int rxa, int txa, int rxb, int txb) { - z80dart_device &dev = downcast<z80dart_device &>(device); - dev.m_rxca = rxa; - dev.m_txca = txa; - dev.m_rxcb = rxb; - dev.m_txcb = txb; + m_rxca = rxa; + m_txca = txa; + m_rxcb = rxb; + m_txcb = txb; } DECLARE_READ8_MEMBER( cd_ba_r ); diff --git a/src/devices/machine/z80dma.h b/src/devices/machine/z80dma.h index 48d0983e88e..0cdc020e9ef 100644 --- a/src/devices/machine/z80dma.h +++ b/src/devices/machine/z80dma.h @@ -42,25 +42,25 @@ //************************************************************************** #define MCFG_Z80DMA_OUT_BUSREQ_CB(_devcb) \ - devcb = &z80dma_device::set_out_busreq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dma_device &>(*device).set_out_busreq_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_OUT_INT_CB(_devcb) \ - devcb = &z80dma_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dma_device &>(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_OUT_BAO_CB(_devcb) \ - devcb = &z80dma_device::set_out_bao_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dma_device &>(*device).set_out_bao_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_IN_MREQ_CB(_devcb) \ - devcb = &z80dma_device::set_in_mreq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dma_device &>(*device).set_in_mreq_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_OUT_MREQ_CB(_devcb) \ - devcb = &z80dma_device::set_out_mreq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dma_device &>(*device).set_out_mreq_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_IN_IORQ_CB(_devcb) \ - devcb = &z80dma_device::set_in_iorq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dma_device &>(*device).set_in_iorq_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_OUT_IORQ_CB(_devcb) \ - devcb = &z80dma_device::set_out_iorq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80dma_device &>(*device).set_out_iorq_callback(DEVCB_##_devcb); //************************************************************************** @@ -77,13 +77,13 @@ public: // construction/destruction z80dma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_busreq_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_out_busreq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_bao_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_out_bao_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_mreq_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_in_mreq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_mreq_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_out_mreq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_iorq_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_in_iorq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_iorq_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_out_iorq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_busreq_callback(Object &&cb) { return m_out_busreq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_bao_callback(Object &&cb) { return m_out_bao_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_mreq_callback(Object &&cb) { return m_in_mreq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_mreq_callback(Object &&cb) { return m_out_mreq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_iorq_callback(Object &&cb) { return m_in_iorq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_iorq_callback(Object &&cb) { return m_out_iorq_cb.set_callback(std::forward<Object>(cb)); } uint8_t read(); void write(uint8_t data); diff --git a/src/devices/machine/z80pio.h b/src/devices/machine/z80pio.h index 7ac9f3a2f3a..f5fde912f21 100644 --- a/src/devices/machine/z80pio.h +++ b/src/devices/machine/z80pio.h @@ -42,25 +42,25 @@ //************************************************************************** #define MCFG_Z80PIO_OUT_INT_CB(_devcb) \ - devcb = &z80pio_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80pio_device &>(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_IN_PA_CB(_devcb) \ - devcb = &z80pio_device::set_in_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80pio_device &>(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_OUT_PA_CB(_devcb) \ - devcb = &z80pio_device::set_out_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80pio_device &>(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_OUT_ARDY_CB(_devcb) \ - devcb = &z80pio_device::set_out_ardy_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80pio_device &>(*device).set_out_ardy_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_IN_PB_CB(_devcb) \ - devcb = &z80pio_device::set_in_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80pio_device &>(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_OUT_PB_CB(_devcb) \ - devcb = &z80pio_device::set_out_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80pio_device &>(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_OUT_BRDY_CB(_devcb) \ - devcb = &z80pio_device::set_out_brdy_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80pio_device &>(*device).set_out_brdy_callback(DEVCB_##_devcb); //************************************************************************** @@ -84,13 +84,13 @@ public: // construction/destruction z80pio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_ardy_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_out_ardy_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_brdy_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_out_brdy_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_ardy_callback(Object &&cb) { return m_out_ardy_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_brdy_callback(Object &&cb) { return m_out_brdy_cb.set_callback(std::forward<Object>(cb)); } // I/O line access int rdy(int which) { return m_port[which].rdy(); } diff --git a/src/devices/machine/z80scc.h b/src/devices/machine/z80scc.h index cfec10bbb3a..d98df7da3f9 100644 --- a/src/devices/machine/z80scc.h +++ b/src/devices/machine/z80scc.h @@ -83,54 +83,54 @@ /* Generic macros */ #define MCFG_Z80SCC_OFFSETS(_rxa, _txa, _rxb, _txb) \ - z80scc_device::configure_channels(*device, _rxa, _txa, _rxb, _txb); + downcast<z80scc_device &>(*device).configure_channels(_rxa, _txa, _rxb, _txb); #define MCFG_Z80SCC_OUT_INT_CB(_devcb) \ - devcb = &z80scc_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_int_callback(DEVCB_##_devcb); // Port A callbacks #define MCFG_Z80SCC_OUT_TXDA_CB(_devcb) \ - devcb = &z80scc_device::set_out_txd_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_txd_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_DTRA_CB(_devcb) \ - devcb = &z80scc_device::set_out_dtr_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_dtr_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_RTSA_CB(_devcb) \ - devcb = &z80scc_device::set_out_rts_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_rts_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_WREQA_CB(_devcb) \ - devcb = &z80scc_device::set_out_wreq_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_wreq_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_SYNCA_CB(_devcb) \ - devcb = &z80scc_device::set_out_sync_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_sync_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_RXDRQA_CB(_devcb) \ - devcb = &z80scc_device::set_out_rxdrq_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_rxdrq_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_TXDRQA_CB(_devcb) \ - devcb = &z80scc_device::set_out_txdrq_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_txdrq_callback<0>(DEVCB_##_devcb); // Port B callbacks #define MCFG_Z80SCC_OUT_TXDB_CB(_devcb) \ - devcb = &z80scc_device::set_out_txd_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_txd_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_DTRB_CB(_devcb) \ - devcb = &z80scc_device::set_out_dtr_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_dtr_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_RTSB_CB(_devcb) \ - devcb = &z80scc_device::set_out_rts_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_rts_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_WREQB_CB(_devcb) \ - devcb = &z80scc_device::set_out_wreq_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_wreq_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_SYNCB_CB(_devcb) \ - devcb = &z80scc_device::set_out_sync_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_sync_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_RXDRQB_CB(_devcb) \ - devcb = &z80scc_device::set_out_rxdrq_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_rxdrq_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_TXDRQB_CB(_devcb) \ - devcb = &z80scc_device::set_out_txdrq_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80scc_device &>(*device).set_out_txdrq_callback<1>(DEVCB_##_devcb); //************************************************************************** @@ -420,28 +420,23 @@ public: // construction/destruction z80scc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <unsigned N, class Object> static devcb_base &set_out_txd_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_txd_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_dtr_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_dtr_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_rts_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_rts_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_wreq_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_wreq_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_sync_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_sync_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_rxdrq_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_rxdrq_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_txdrq_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_txdrq_cb[N].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_txd_callback(Object &&cb) { return m_out_txd_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_dtr_callback(Object &&cb) { return m_out_dtr_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_rts_callback(Object &&cb) { return m_out_rts_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_wreq_callback(Object &&cb) { return m_out_wreq_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_sync_callback(Object &&cb) { return m_out_sync_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_rxdrq_callback(Object &&cb) { return m_out_rxdrq_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_txdrq_callback(Object &&cb) { return m_out_txdrq_cb[N].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } - static void static_set_cputag(device_t &device, const char *tag) - { - z80scc_device &dev = downcast<z80scc_device &>(device); - dev.m_cputag = tag; - } + void set_cputag(const char *tag) { m_cputag = tag; } - static void configure_channels(device_t &device, int rxa, int txa, int rxb, int txb) + void configure_channels(int rxa, int txa, int rxb, int txb) { - z80scc_device &dev = downcast<z80scc_device &>(device); - dev.m_rxca = rxa; - dev.m_txca = txa; - dev.m_rxcb = rxb; - dev.m_txcb = txb; + m_rxca = rxa; + m_txca = txa; + m_rxcb = rxb; + m_txcb = txb; } DECLARE_READ8_MEMBER( cd_ab_r ); diff --git a/src/devices/machine/z80sio.h b/src/devices/machine/z80sio.h index f4363d23ce6..bbabea203a9 100644 --- a/src/devices/machine/z80sio.h +++ b/src/devices/machine/z80sio.h @@ -68,54 +68,54 @@ /* Generic macros */ #define MCFG_Z80SIO_OUT_INT_CB(_devcb) \ - devcb = &z80sio_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_Z80SIO_CPU(_cputag) \ - z80sio_device::static_set_cputag(*device, _cputag); + downcast<z80sio_device &>(*device).set_cputag(_cputag); // Port A callbacks #define MCFG_Z80SIO_OUT_TXDA_CB(_devcb) \ - devcb = &z80sio_device::set_out_txd_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_txd_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_DTRA_CB(_devcb) \ - devcb = &z80sio_device::set_out_dtr_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_dtr_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_RTSA_CB(_devcb) \ - devcb = &z80sio_device::set_out_rts_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_rts_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_WRDYA_CB(_devcb) \ - devcb = &z80sio_device::set_out_wrdy_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_wrdy_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_SYNCA_CB(_devcb) \ - devcb = &z80sio_device::set_out_sync_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_sync_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_RXDRQA_CB(_devcb) \ - devcb = &z80sio_device::set_out_rxdrq_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_rxdrq_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_TXDRQA_CB(_devcb) \ - devcb = &z80sio_device::set_out_txdrq_callback<0>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_txdrq_callback<0>(DEVCB_##_devcb); // Port B callbacks #define MCFG_Z80SIO_OUT_TXDB_CB(_devcb) \ - devcb = &z80sio_device::set_out_txd_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_txd_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_DTRB_CB(_devcb) \ - devcb = &z80sio_device::set_out_dtr_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_dtr_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_RTSB_CB(_devcb) \ - devcb = &z80sio_device::set_out_rts_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_rts_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_WRDYB_CB(_devcb) \ - devcb = &z80sio_device::set_out_wrdy_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_wrdy_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_SYNCB_CB(_devcb) \ - devcb = &z80sio_device::set_out_sync_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_sync_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_RXDRQB_CB(_devcb) \ - devcb = &z80sio_device::set_out_rxdrq_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_rxdrq_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_TXDRQB_CB(_devcb) \ - devcb = &z80sio_device::set_out_txdrq_callback<1>(*device, DEVCB_##_devcb); + devcb = &downcast<z80sio_device &>(*device).set_out_txdrq_callback<1>(DEVCB_##_devcb); //************************************************************************** @@ -338,20 +338,16 @@ public: // construction/destruction z80sio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <unsigned N, class Object> static devcb_base &set_out_txd_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_txd_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_dtr_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_dtr_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_rts_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_rts_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_wrdy_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_wrdy_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_sync_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_sync_cb[N].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_rxdrq_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_rxdrq_cb[N].set_callback(std::forward<Object>(cb)); } - template <unsigned N, class Object> static devcb_base &set_out_txdrq_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_txdrq_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_txd_callback(Object &&cb) { return m_out_txd_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_dtr_callback(Object &&cb) { return m_out_dtr_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_rts_callback(Object &&cb) { return m_out_rts_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_wrdy_callback(Object &&cb) { return m_out_wrdy_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_sync_callback(Object &&cb) { return m_out_sync_cb[N].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_rxdrq_callback(Object &&cb) { return m_out_rxdrq_cb[N].set_callback(std::forward<Object>(cb)); } + template <unsigned N, class Object> devcb_base &set_out_txdrq_callback(Object &&cb) { return m_out_txdrq_cb[N].set_callback(std::forward<Object>(cb)); } - static void static_set_cputag(device_t &device, const char *tag) - { - z80sio_device &dev = downcast<z80sio_device &>(device); - dev.m_cputag = tag; - } + void set_cputag(const char *tag) { m_cputag = tag; } DECLARE_READ8_MEMBER( cd_ba_r ); DECLARE_WRITE8_MEMBER( cd_ba_w ); diff --git a/src/devices/machine/z80sti.h b/src/devices/machine/z80sti.h index 9661c9b9052..8a1afae831a 100644 --- a/src/devices/machine/z80sti.h +++ b/src/devices/machine/z80sti.h @@ -42,34 +42,34 @@ //************************************************************************** #define MCFG_Z80STI_RXCLOCK(_clock) \ - z80sti_device::set_rx_clock(*device, _clock); + downcast<z80sti_device &>(*device).set_rx_clock(_clock); #define MCFG_Z80STI_TXCLOCK(_clock) \ - z80sti_device::set_tx_clock(*device, _clock); + downcast<z80sti_device &>(*device).set_tx_clock(_clock); #define MCFG_Z80STI_OUT_INT_CB(_devcb) \ - devcb = &z80sti_device::set_out_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80sti_device &>(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_Z80STI_IN_GPIO_CB(_devcb) \ - devcb = &z80sti_device::set_in_gpio_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80sti_device &>(*device).set_in_gpio_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_GPIO_CB(_devcb) \ - devcb = &z80sti_device::set_out_gpio_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80sti_device &>(*device).set_out_gpio_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_SO_CB(_devcb) \ - devcb = &z80sti_device::set_out_so_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80sti_device &>(*device).set_out_so_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_TAO_CB(_devcb) \ - devcb = &z80sti_device::set_out_tao_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80sti_device &>(*device).set_out_tao_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_TBO_CB(_devcb) \ - devcb = &z80sti_device::set_out_tbo_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80sti_device &>(*device).set_out_tbo_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_TCO_CB(_devcb) \ - devcb = &z80sti_device::set_out_tco_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80sti_device &>(*device).set_out_tco_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_TDO_CB(_devcb) \ - devcb = &z80sti_device::set_out_tdo_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z80sti_device &>(*device).set_out_tdo_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -85,17 +85,17 @@ public: // construction/destruction z80sti_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_gpio_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_in_gpio_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_gpio_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_gpio_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_so_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_so_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_tao_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_tao_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_tbo_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_tbo_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_tco_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_tco_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_tdo_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_tdo_cb.set_callback(std::forward<Object>(cb)); } - - static void set_rx_clock(device_t &device, int clock) { downcast<z80sti_device &>(device).m_rx_clock = clock; } - static void set_tx_clock(device_t &device, int clock) { downcast<z80sti_device &>(device).m_tx_clock = clock; } + template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_gpio_callback(Object &&cb) { return m_in_gpio_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_gpio_callback(Object &&cb) { return m_out_gpio_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_so_callback(Object &&cb) { return m_out_so_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_tao_callback(Object &&cb) { return m_out_tao_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_tbo_callback(Object &&cb) { return m_out_tbo_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_tco_callback(Object &&cb) { return m_out_tco_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_tdo_callback(Object &&cb) { return m_out_tdo_cb.set_callback(std::forward<Object>(cb)); } + + void set_rx_clock(int clock) { m_rx_clock = clock; } + void set_tx_clock(int clock) { m_tx_clock = clock; } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/z8536.h b/src/devices/machine/z8536.h index ccecde18849..f1d742065f0 100644 --- a/src/devices/machine/z8536.h +++ b/src/devices/machine/z8536.h @@ -65,25 +65,25 @@ //************************************************************************** #define MCFG_Z8536_IRQ_CALLBACK(_write) \ - devcb = &z8536_device::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<z8536_device &>(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_Z8536_PA_IN_CALLBACK(_read) \ - devcb = &z8536_device::set_pa_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<z8536_device &>(*device).set_pa_rd_callback(DEVCB_##_read); #define MCFG_Z8536_PA_OUT_CALLBACK(_write) \ - devcb = &z8536_device::set_pa_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<z8536_device &>(*device).set_pa_wr_callback(DEVCB_##_write); #define MCFG_Z8536_PB_IN_CALLBACK(_read) \ - devcb = &z8536_device::set_pb_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<z8536_device &>(*device).set_pb_rd_callback(DEVCB_##_read); #define MCFG_Z8536_PB_OUT_CALLBACK(_write) \ - devcb = &z8536_device::set_pb_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<z8536_device &>(*device).set_pb_wr_callback(DEVCB_##_write); #define MCFG_Z8536_PC_IN_CALLBACK(_read) \ - devcb = &z8536_device::set_pc_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<z8536_device &>(*device).set_pc_rd_callback(DEVCB_##_read); #define MCFG_Z8536_PC_OUT_CALLBACK(_write) \ - devcb = &z8536_device::set_pc_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<z8536_device &>(*device).set_pc_wr_callback(DEVCB_##_write); @@ -97,13 +97,13 @@ class cio_base_device : public device_t { public: - template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<cio_base_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pa_rd_callback(device_t &device, Object &&cb) { return downcast<cio_base_device &>(device).m_read_pa.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pa_wr_callback(device_t &device, Object &&cb) { return downcast<cio_base_device &>(device).m_write_pa.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_rd_callback(device_t &device, Object &&cb) { return downcast<cio_base_device &>(device).m_read_pb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_wr_callback(device_t &device, Object &&cb) { return downcast<cio_base_device &>(device).m_write_pb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pc_rd_callback(device_t &device, Object &&cb) { return downcast<cio_base_device &>(device).m_read_pc.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pc_wr_callback(device_t &device, Object &&cb) { return downcast<cio_base_device &>(device).m_write_pc.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_rd_callback(Object &&cb) { return m_read_pa.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_wr_callback(Object &&cb) { return m_write_pa.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_rd_callback(Object &&cb) { return m_read_pb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_wr_callback(Object &&cb) { return m_write_pb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pc_rd_callback(Object &&cb) { return m_read_pc.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pc_wr_callback(Object &&cb) { return m_write_pc.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER( pa0_w ) { external_port_w(PORT_A, 0, state); } DECLARE_WRITE_LINE_MEMBER( pa1_w ) { external_port_w(PORT_A, 1, state); } diff --git a/src/emu/devcpu.cpp b/src/emu/devcpu.cpp index dccde97c14c..e75b621c6f0 100644 --- a/src/emu/devcpu.cpp +++ b/src/emu/devcpu.cpp @@ -42,17 +42,6 @@ cpu_device::~cpu_device() //------------------------------------------------- -// static_set_force_no_drc - configuration helper -// to disable DRC -//------------------------------------------------- - -void cpu_device::static_set_force_no_drc(device_t &device, bool value) -{ - downcast<cpu_device &>(device).m_force_no_drc = value; -} - - -//------------------------------------------------- // allow_drc - return true if DRC is allowed //------------------------------------------------- diff --git a/src/emu/devcpu.h b/src/emu/devcpu.h index 1e392003730..c50f0b03f6a 100644 --- a/src/emu/devcpu.h +++ b/src/emu/devcpu.h @@ -45,7 +45,7 @@ // recompilation parameters #define MCFG_CPU_FORCE_NO_DRC() \ - cpu_device::static_set_force_no_drc(*device, true); + dynamic_cast<cpu_device &>(*device).set_force_no_drc(true); @@ -63,7 +63,7 @@ class cpu_device : public device_t, { public: // configuration helpers - static void static_set_force_no_drc(device_t &device, bool value); + void set_force_no_drc(bool value) { m_force_no_drc = value; } bool allow_drc() const; protected: diff --git a/src/emu/device.cpp b/src/emu/device.cpp index 4a2dd9c9081..56369026e76 100644 --- a/src/emu/device.cpp +++ b/src/emu/device.cpp @@ -108,7 +108,7 @@ device_t::device_t(const machine_config &mconfig, device_type type, const char * m_tag.assign((owner->owner() == nullptr) ? "" : owner->tag()).append(":").append(tag); else m_tag.assign(":"); - static_set_clock(*this, clock); + set_clock(clock); } @@ -208,19 +208,19 @@ std::string device_t::parameter(const char *tag) const //------------------------------------------------- -// static_set_clock - set/change the clock on +// set_clock - set/change the clock on // a device //------------------------------------------------- -void device_t::static_set_clock(device_t &device, u32 clock) +void device_t::set_clock(u32 clock) { - device.m_configured_clock = clock; + m_configured_clock = clock; // derive the clock from our owner if requested if ((clock & 0xff000000) == 0xff000000) - device.calculate_derived_clock(); + calculate_derived_clock(); else - device.set_unscaled_clock(clock); + set_unscaled_clock(clock); } diff --git a/src/emu/device.h b/src/emu/device.h index dfa8fbc64fa..376d94b9e98 100644 --- a/src/emu/device.h +++ b/src/emu/device.h @@ -42,9 +42,9 @@ // configure devices #define MCFG_DEVICE_CLOCK(_clock) \ - device_t::static_set_clock(*device, _clock); + device->set_clock(_clock); #define MCFG_DEVICE_INPUT_DEFAULTS(_config) \ - device_t::static_set_input_default(*device, DEVICE_INPUT_DEFAULTS_NAME(_config)); + device->set_input_default(DEVICE_INPUT_DEFAULTS_NAME(_config)); #define DECLARE_READ_LINE_MEMBER(name) int name() #define READ_LINE_MEMBER(name) int name() @@ -462,8 +462,8 @@ public: // interface helpers interface_list &interfaces() { return m_interfaces; } const interface_list &interfaces() const { return m_interfaces; } - template<class _DeviceClass> bool interface(_DeviceClass *&intf) { intf = dynamic_cast<_DeviceClass *>(this); return (intf != nullptr); } - template<class _DeviceClass> bool interface(_DeviceClass *&intf) const { intf = dynamic_cast<const _DeviceClass *>(this); return (intf != nullptr); } + template<class DeviceClass> bool interface(DeviceClass *&intf) { intf = dynamic_cast<DeviceClass *>(this); return (intf != nullptr); } + template<class DeviceClass> bool interface(DeviceClass *&intf) const { intf = dynamic_cast<const DeviceClass *>(this); return (intf != nullptr); } // specialized helpers for common core interfaces bool interface(device_execute_interface *&intf) { intf = m_interfaces.m_execute; return (intf != nullptr); } @@ -491,16 +491,16 @@ public: ioport_port *ioport(const char *tag) const; device_t *subdevice(const char *tag) const; device_t *siblingdevice(const char *tag) const; - template<class _DeviceClass> inline _DeviceClass *subdevice(const char *tag) const { return downcast<_DeviceClass *>(subdevice(tag)); } - template<class _DeviceClass> inline _DeviceClass *siblingdevice(const char *tag) const { return downcast<_DeviceClass *>(siblingdevice(tag)); } + template<class DeviceClass> inline DeviceClass *subdevice(const char *tag) const { return downcast<DeviceClass *>(subdevice(tag)); } + template<class DeviceClass> inline DeviceClass *siblingdevice(const char *tag) const { return downcast<DeviceClass *>(siblingdevice(tag)); } std::string parameter(const char *tag) const; // configuration helpers void add_machine_configuration(machine_config &config) { device_add_mconfig(config); } - static void static_set_clock(device_t &device, u32 clock); - static void static_set_clock(device_t &device, const XTAL &xtal) { static_set_clock(device, xtal.value()); } - static void static_set_input_default(device_t &device, const input_device_default *config) { device.m_input_defaults = config; } - static void static_set_default_bios_tag(device_t &device, const char *tag) { device.m_default_bios_tag = tag; } + void set_clock(u32 clock); + void set_clock(const XTAL &xtal) { set_clock(xtal.value()); } + void set_input_default(const input_device_default *config) { m_input_defaults = config; } + void set_default_bios_tag(const char *tag) { m_default_bios_tag = tag; } // state helpers void config_complete(); @@ -526,10 +526,10 @@ public: void timer_expired(emu_timer &timer, device_timer_id id, int param, void *ptr) { device_timer(timer, id, param, ptr); } // state saving interfaces - template<typename _ItemType> - void ATTR_COLD save_item(_ItemType &value, const char *valname, int index = 0) { assert(m_save != nullptr); m_save->save_item(this, name(), tag(), index, value, valname); } - template<typename _ItemType> - void ATTR_COLD save_pointer(_ItemType *value, const char *valname, u32 count, int index = 0) { assert(m_save != nullptr); m_save->save_pointer(this, name(), tag(), index, value, valname, count); } + template<typename ItemType> + void ATTR_COLD save_item(ItemType &value, const char *valname, int index = 0) { assert(m_save != nullptr); m_save->save_item(this, name(), tag(), index, value, valname); } + template<typename ItemType> + void ATTR_COLD save_pointer(ItemType *value, const char *valname, u32 count, int index = 0) { assert(m_save != nullptr); m_save->save_pointer(this, name(), tag(), index, value, valname, count); } // debugging device_debug *debug() const { return m_debug.get(); } @@ -903,7 +903,7 @@ private: // helper class to find devices with a given interface in the device hierarchy // also works for finding devices derived from a given subclass -template<class _InterfaceClass> +template<class InterfaceClass> class device_interface_iterator { public: @@ -919,8 +919,8 @@ public: } // getters returning specified interface type - _InterfaceClass *current() const { return m_interface; } - _InterfaceClass &operator*() const { assert(m_interface != nullptr); return *m_interface; } + InterfaceClass *current() const { return m_interface; } + InterfaceClass &operator*() const { assert(m_interface != nullptr); return *m_interface; } // search for devices with the specified interface const auto_iterator &operator++() { advance(); find_interface(); return *this; } @@ -939,7 +939,7 @@ private: } // private state - _InterfaceClass *m_interface; + InterfaceClass *m_interface; }; public: @@ -952,13 +952,13 @@ public: auto_iterator end() const { return auto_iterator(nullptr, 0, m_maxdepth); } // return first item - _InterfaceClass *first() const { return begin().current(); } + InterfaceClass *first() const { return begin().current(); } // return the number of items available int count() const { int result = 0; - for (_InterfaceClass &item : *this) + for (InterfaceClass &item : *this) { (void)&item; result++; @@ -967,10 +967,10 @@ public: } // return the index of a given item in the virtual list - int indexof(_InterfaceClass &intrf) const + int indexof(InterfaceClass &intrf) const { int index = 0; - for (_InterfaceClass &item : *this) + for (InterfaceClass &item : *this) { if (&item == &intrf) return index; @@ -981,9 +981,9 @@ public: } // return the indexed item in the list - _InterfaceClass *byindex(int index) const + InterfaceClass *byindex(int index) const { - for (_InterfaceClass &item : *this) + for (InterfaceClass &item : *this) if (index-- == 0) return &item; return nullptr; diff --git a/src/emu/diexec.cpp b/src/emu/diexec.cpp index 0958108fe42..8770349cf5f 100644 --- a/src/emu/diexec.cpp +++ b/src/emu/diexec.cpp @@ -82,64 +82,6 @@ device_execute_interface::~device_execute_interface() //------------------------------------------------- -// static_set_disable - configuration helper to -// set the disabled state of a device -//------------------------------------------------- - -void device_execute_interface::static_set_disable(device_t &device) -{ - device_execute_interface *exec; - if (!device.interface(exec)) - throw emu_fatalerror("MCFG_DEVICE_DISABLE called on device '%s' with no execute interface", device.tag()); - exec->m_disabled = true; -} - - -//------------------------------------------------- -// static_set_vblank_int - configuration helper -// to set up VBLANK interrupts on the device -//------------------------------------------------- - -void device_execute_interface::static_set_vblank_int(device_t &device, device_interrupt_delegate function, const char *tag, int rate) -{ - device_execute_interface *exec; - if (!device.interface(exec)) - throw emu_fatalerror("MCFG_DEVICE_VBLANK_INT called on device '%s' with no execute interface", device.tag()); - exec->m_vblank_interrupt = function; - exec->m_vblank_interrupt_screen = tag; -} - - -//------------------------------------------------- -// static_set_periodic_int - configuration helper -// to set up periodic interrupts on the device -//------------------------------------------------- - -void device_execute_interface::static_set_periodic_int(device_t &device, device_interrupt_delegate function, const attotime &rate) -{ - device_execute_interface *exec; - if (!device.interface(exec)) - throw emu_fatalerror("MCFG_DEVICE_PERIODIC_INT called on device '%s' with no execute interface", device.tag()); - exec->m_timed_interrupt = function; - exec->m_timed_interrupt_period = rate; -} - - -//------------------------------------------------- -// set_irq_acknowledge_callback - configuration helper -// to setup callback for IRQ acknowledge -//------------------------------------------------- - -void device_execute_interface::static_set_irq_acknowledge_callback(device_t &device, device_irq_acknowledge_delegate callback) -{ - device_execute_interface *exec; - if (!device.interface(exec)) - throw emu_fatalerror("MCFG_DEVICE_IRQ_ACKNOWLEDGE called on device '%s' with no execute interface", device.tag()); - exec->m_driver_irq = callback; -} - - -//------------------------------------------------- // executing - return true if this device is // within its execute function //------------------------------------------------- diff --git a/src/emu/diexec.h b/src/emu/diexec.h index c307400dd69..ded5a024d06 100644 --- a/src/emu/diexec.h +++ b/src/emu/diexec.h @@ -86,25 +86,25 @@ enum //************************************************************************** #define MCFG_DEVICE_DISABLE() \ - device_execute_interface::static_set_disable(*device); + dynamic_cast<device_execute_interface &>(*device).set_disable(); #define MCFG_DEVICE_VBLANK_INT_DRIVER(_tag, _class, _func) \ - device_execute_interface::static_set_vblank_int(*device, device_interrupt_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr), _tag); + dynamic_cast<device_execute_interface &>(*device).set_vblank_int(device_interrupt_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr), _tag); #define MCFG_DEVICE_VBLANK_INT_DEVICE(_tag, _devtag, _class, _func) \ - device_execute_interface::static_set_vblank_int(*device, device_interrupt_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr), _tag); + dynamic_cast<device_execute_interface &>(*device).set_vblank_int(device_interrupt_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr), _tag); #define MCFG_DEVICE_VBLANK_INT_REMOVE() \ - device_execute_interface::static_set_vblank_int(*device, device_interrupt_delegate(), nullptr); + dynamic_cast<device_execute_interface &>(*device).set_vblank_int(device_interrupt_delegate(), nullptr); #define MCFG_DEVICE_PERIODIC_INT_DRIVER(_class, _func, _rate) \ - device_execute_interface::static_set_periodic_int(*device, device_interrupt_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr), attotime::from_hz(_rate)); + dynamic_cast<device_execute_interface &>(*device).set_periodic_int(device_interrupt_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr), attotime::from_hz(_rate)); #define MCFG_DEVICE_PERIODIC_INT_DEVICE(_devtag, _class, _func, _rate) \ - device_execute_interface::static_set_periodic_int(*device, device_interrupt_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr), attotime::from_hz(_rate)); + dynamic_cast<device_execute_interface &>(*device).set_periodic_int(device_interrupt_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr), attotime::from_hz(_rate)); #define MCFG_DEVICE_PERIODIC_INT_REMOVE() \ - device_execute_interface::static_set_periodic_int(*device, device_interrupt_delegate(), attotime()); + dynamic_cast<device_execute_interface &>(*device).set_periodic_int(device_interrupt_delegate(), attotime()); #define MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(_class, _func) \ - device_execute_interface::static_set_irq_acknowledge_callback(*device, device_irq_acknowledge_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr)); + dynamic_cast<device_execute_interface &>(*device).set_irq_acknowledge_callback(device_irq_acknowledge_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr)); #define MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(_devtag, _class, _func) \ - device_execute_interface::static_set_irq_acknowledge_callback(*device, device_irq_acknowledge_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr)); + dynamic_cast<device_execute_interface &>(*device).set_irq_acknowledge_callback(device_irq_acknowledge_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr)); #define MCFG_DEVICE_IRQ_ACKNOWLEDGE_REMOVE() \ - device_execute_interface::static_set_irq_acknowledge_callback(*device, device_irq_acknowledge_delegate()); + dynamic_cast<device_execute_interface &>(*device).set_irq_acknowledge_callback(device_irq_acknowledge_delegate()); //************************************************************************** @@ -143,11 +143,19 @@ public: u32 input_lines() const { return execute_input_lines(); } u32 default_irq_vector() const { return execute_default_irq_vector(); } - // static inline configuration helpers - static void static_set_disable(device_t &device); - static void static_set_vblank_int(device_t &device, device_interrupt_delegate function, const char *tag, int rate = 0); - static void static_set_periodic_int(device_t &device, device_interrupt_delegate function, const attotime &rate); - static void static_set_irq_acknowledge_callback(device_t &device, device_irq_acknowledge_delegate callback); + // inline configuration helpers + void set_disable() { m_disabled = true; } + template <typename Object> void set_vblank_int(Object &&cb, const char *tag, int rate = 0) + { + m_vblank_interrupt = std::forward<Object>(cb); + m_vblank_interrupt_screen = tag; + } + template <typename Object> void set_periodic_int(Object &&cb, const attotime &rate) + { + m_timed_interrupt = std::forward<Object>(cb); + m_timed_interrupt_period = rate; + } + template <typename Object> void set_irq_acknowledge_callback(Object &&cb) { m_driver_irq = std::forward<Object>(cb); } // execution management device_scheduler &scheduler() const { assert(m_scheduler != nullptr); return *m_scheduler; } diff --git a/src/emu/digfx.cpp b/src/emu/digfx.cpp index 3dfb1a29458..3f6ed1b4804 100644 --- a/src/emu/digfx.cpp +++ b/src/emu/digfx.cpp @@ -42,37 +42,6 @@ device_gfx_interface::~device_gfx_interface() //------------------------------------------------- -// static_set_info: configuration helper to set -// the gfxdecode info used by the device -//------------------------------------------------- - -void device_gfx_interface::static_set_info(device_t &device, const gfx_decode_entry *gfxinfo) -{ - device_gfx_interface *gfx; - if (!device.interface(gfx)) - throw emu_fatalerror("MCFG_GFX_INFO called on device '%s' with no gfx interface\n", device.tag()); - - gfx->m_gfxdecodeinfo = gfxinfo; -} - - -//------------------------------------------------- -// static_set_palette: configuration helper to -// set the palette used by the device -//------------------------------------------------- - -void device_gfx_interface::static_set_palette(device_t &device, const char *tag) -{ - device_gfx_interface *gfx; - if (!device.interface(gfx)) - throw emu_fatalerror("MCFG_GFX_PALETTE called on device '%s' with no gfx interface\n", device.tag()); - - gfx->m_palette_tag = tag; - gfx->m_palette_is_sibling = true; -} - - -//------------------------------------------------- // set_palette_disable: configuration helper to // disable the use of a palette by the device //------------------------------------------------- diff --git a/src/emu/digfx.h b/src/emu/digfx.h index a9a3d060fc5..8c4ebdb5fbe 100644 --- a/src/emu/digfx.h +++ b/src/emu/digfx.h @@ -128,10 +128,10 @@ const gfx_layout name = { width, height, RGN_FRAC(1,1), 8, { GFX_RAW }, { 0 }, { //************************************************************************** #define MCFG_GFX_PALETTE(_palette_tag) \ - device_gfx_interface::static_set_palette(*device, _palette_tag); + dynamic_cast<device_gfx_interface &>(*device).set_palette(_palette_tag); #define MCFG_GFX_INFO(_info) \ - device_gfx_interface::static_set_info(*device, GFXDECODE_NAME(_info)); + dynamic_cast<device_gfx_interface &>(*device).set_info(GFXDECODE_NAME(_info)); @@ -191,9 +191,9 @@ public: const gfx_decode_entry *gfxinfo = nullptr, const char *palette_tag = nullptr); virtual ~device_gfx_interface(); - // static configuration - static void static_set_info(device_t &device, const gfx_decode_entry *gfxinfo); - static void static_set_palette(device_t &device, const char *tag); + // configuration + void set_info(const gfx_decode_entry *gfxinfo) { m_gfxdecodeinfo = gfxinfo; } + void set_palette(const char *tag) { m_palette_tag = tag; m_palette_is_sibling = true; } void set_palette_disable(bool disable); diff --git a/src/emu/diimage.h b/src/emu/diimage.h index 68b6c8a96ae..e58256a4d65 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -115,7 +115,7 @@ typedef delegate<void (device_image_interface &)> device_image_func_delegate; #define DEVICE_IMAGE_UNLOAD_DELEGATE(_class,_name) device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_name), downcast<_class *>(device->owner())) #define MCFG_SET_IMAGE_LOADABLE(_usrload) \ - device_image_interface::static_set_user_loadable(*device, _usrload); + dynamic_cast<device_image_interface &>(*device).set_user_loadable(_usrload); // ======================> device_image_interface @@ -230,13 +230,7 @@ public: bool load_software(software_list_device &swlist, const char *swname, const rom_entry *entry); int reopen_for_write(const std::string &path); - static void static_set_user_loadable(device_t &device, bool user_loadable) { - device_image_interface *img; - if (!device.interface(img)) - throw emu_fatalerror("MCFG_SET_IMAGE_LOADABLE called on device '%s' with no image interface\n", device.tag()); - - img->m_user_loadable = user_loadable; - } + void set_user_loadable(bool user_loadable) { m_user_loadable = user_loadable; } bool user_loadable() const { return m_user_loadable; } bool is_reset_and_loading() const { return m_is_reset_and_loading; } diff --git a/src/emu/dioutput.h b/src/emu/dioutput.h index 8e952a7dcd9..840ae9add23 100644 --- a/src/emu/dioutput.h +++ b/src/emu/dioutput.h @@ -19,10 +19,10 @@ //************************************************************************** #define MCFG_OUTPUT_INDEX(_index) \ - device_output_interface::set_output_index(*device, _index); + dynamic_cast<device_output_interface &>(*device).set_output_index(_index); #define MCFG_OUTPUT_NAME(_name) \ - device_output_interface::set_output_name(*device, _name); + dynamic_cast<device_output_interface &>(*device).set_output_name(_name); @@ -39,8 +39,8 @@ public: device_output_interface(const machine_config &mconfig, device_t &device); virtual ~device_output_interface(); - static void set_output_index(device_t &device, int index) { dynamic_cast<device_output_interface &>(device).m_output_index = index; } - static void set_output_name(device_t &device, const char *name) { dynamic_cast<device_output_interface &>(device).m_output_name = name; } + void set_output_index(int index) { m_output_index = index; } + void set_output_name(const char *name) { m_output_name = name; } void set_output_value(int value) const; void set_led_value(int value) const; diff --git a/src/emu/dirom.cpp b/src/emu/dirom.cpp index 87461926cf6..00d74222b61 100644 --- a/src/emu/dirom.cpp +++ b/src/emu/dirom.cpp @@ -14,15 +14,6 @@ device_rom_interface::~device_rom_interface() { } -void device_rom_interface::static_set_device_rom_tag(device_t &device, const char *tag) -{ - device_rom_interface *romintf; - if (!device.interface(romintf)) - throw emu_fatalerror("MCFG_DEVICE_ROM called on device '%s' with no ROM interface\n", device.tag()); - - romintf->m_rom_tag = tag; -} - device_memory_interface::space_config_vector device_rom_interface::memory_space_config() const { return space_config_vector { diff --git a/src/emu/dirom.h b/src/emu/dirom.h index aae6a7f5097..911f2f98065 100644 --- a/src/emu/dirom.h +++ b/src/emu/dirom.h @@ -18,7 +18,7 @@ #define MAME_EMU_DIROM_H #define MCFG_DEVICE_ROM(_rom_tag) \ - device_rom_interface::static_set_device_rom_tag(*device, _rom_tag); + dynamic_cast<device_rom_interface &>(*device).set_device_rom_tag(_rom_tag); class device_rom_interface : public device_memory_interface { @@ -26,7 +26,7 @@ public: device_rom_interface(const machine_config &mconfig, device_t &device, u8 addrwidth, endianness_t endian = ENDIANNESS_LITTLE, u8 datawidth = 8); virtual ~device_rom_interface(); - static void static_set_device_rom_tag(device_t &device, const char *tag); + void set_device_rom_tag(const char *tag) { m_rom_tag = tag; } inline u8 read_byte(offs_t byteaddress) { return m_rom_direct->read_byte(byteaddress); } inline u16 read_word(offs_t byteaddress) { return m_rom_direct->read_word(byteaddress); } diff --git a/src/emu/dislot.cpp b/src/emu/dislot.cpp index ea80b1857bb..e89fd8b77bd 100644 --- a/src/emu/dislot.cpp +++ b/src/emu/dislot.cpp @@ -50,46 +50,32 @@ device_slot_option::device_slot_option(const char *name, const device_type &devt // ------------------------------------------------- -// static_option_reset +// option_add // ------------------------------------------------- -void device_slot_interface::static_option_reset(device_t &device) +void device_slot_interface::option_add(const char *name, const device_type &devtype) { - device_slot_interface &intf = dynamic_cast<device_slot_interface &>(device); + device_slot_option *slot_option = option(name); - intf.m_options.clear(); + if (slot_option != nullptr) + throw emu_fatalerror("slot '%s' duplicate option '%s'\n", device().tag(), name); + if (m_options.count(name) != 0) throw tag_add_exception(name); + m_options.emplace(std::make_pair(name, std::make_unique<device_slot_option>(name, devtype))); } // ------------------------------------------------- -// static_option_add -// ------------------------------------------------- - -void device_slot_interface::static_option_add(device_t &device, const char *name, const device_type &devtype) -{ - device_slot_interface &intf = dynamic_cast<device_slot_interface &>(device); - device_slot_option *option = intf.option(name); - - if (option != nullptr) - throw emu_fatalerror("slot '%s' duplicate option '%s'\n", device.tag(), name); - if (intf.m_options.count(name) != 0) throw tag_add_exception(name); - intf.m_options.emplace(std::make_pair(name, std::make_unique<device_slot_option>(name, devtype))); -} - - -// ------------------------------------------------- -// static_option +// option // ------------------------------------------------- -device_slot_option *device_slot_interface::static_option(device_t &device, const char *name) +device_slot_option *device_slot_interface::config_option(const char *name) { - device_slot_interface &intf = dynamic_cast<device_slot_interface &>(device); - device_slot_option *option = intf.option(name); + device_slot_option *slot_option = option(name); - if (option == nullptr) - throw emu_fatalerror("slot '%s' has no option '%s'\n", device.tag(), name); + if (slot_option == nullptr) + throw emu_fatalerror("slot '%s' has no option '%s'\n", device().tag(), name); - return option; + return slot_option; } diff --git a/src/emu/dislot.h b/src/emu/dislot.h index 764962a3ee0..f8f1d5a8a70 100644 --- a/src/emu/dislot.h +++ b/src/emu/dislot.h @@ -31,31 +31,31 @@ //************************************************************************** #define MCFG_SLOT_FIXED(_fixed) \ - device_slot_interface::static_set_fixed(*device, _fixed); + dynamic_cast<device_slot_interface &>(*device).set_fixed(_fixed); #define MCFG_SLOT_DEFAULT_OPTION(_option) \ - device_slot_interface::static_set_default_option(*device, _option); + dynamic_cast<device_slot_interface &>(*device).set_default_option(_option); #define MCFG_SLOT_OPTION_RESET \ - device_slot_interface::static_option_reset(*device); + dynamic_cast<device_slot_interface &>(*device).option_reset(); #define MCFG_SLOT_OPTION_ADD(_option, _devtype) \ - device_slot_interface::static_option_add(*device, _option, _devtype); + dynamic_cast<device_slot_interface &>(*device).option_add(_option, _devtype); #define MCFG_SLOT_OPTION_SELECTABLE(_option, _selectable) \ - device_slot_interface::static_set_option_selectable(*device, _option, _selectable); + dynamic_cast<device_slot_interface &>(*device).set_option_selectable(_option, _selectable); #define MCFG_SLOT_OPTION_DEFAULT_BIOS(_option, _default_bios) \ - device_slot_interface::static_set_option_default_bios(*device, _option, _default_bios); + dynamic_cast<device_slot_interface &>(*device).set_option_default_bios(_option, _default_bios); #define MCFG_SLOT_OPTION_MACHINE_CONFIG(_option, _machine_config_name) \ - device_slot_interface::static_set_option_machine_config(*device, _option, _machine_config_name); + dynamic_cast<device_slot_interface &>(*device).set_option_machine_config(_option, _machine_config_name); #define MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS(_option, _dev_inp_def) \ - device_slot_interface::static_set_option_device_input_defaults(*device, _option, DEVICE_INPUT_DEFAULTS_NAME(_dev_inp_def)); + dynamic_cast<device_slot_interface &>(*device).set_option_device_input_defaults(_option, DEVICE_INPUT_DEFAULTS_NAME(_dev_inp_def)); #define MCFG_SLOT_OPTION_CLOCK(_option, _clock) \ - device_slot_interface::static_set_option_clock(*device, _option, _clock); + dynamic_cast<device_slot_interface &>(*device).set_option_clock(_option, _clock); //************************************************************************** @@ -128,15 +128,15 @@ public: device_slot_interface(const machine_config &mconfig, device_t &device); virtual ~device_slot_interface(); - static void static_set_fixed(device_t &device, bool fixed) { dynamic_cast<device_slot_interface &>(device).m_fixed = fixed; } - static void static_set_default_option(device_t &device, const char *option) { dynamic_cast<device_slot_interface &>(device).m_default_option = option; } - static void static_option_reset(device_t &device); - static void static_option_add(device_t &device, const char *option, const device_type &devtype); - static void static_set_option_selectable(device_t &device, const char *option, bool selectable){ static_option(device, option)->m_selectable = selectable; } - static void static_set_option_default_bios(device_t &device, const char *option, const char *default_bios) { static_option(device, option)->m_default_bios = default_bios; } - static void static_set_option_machine_config(device_t &device, const char *option, std::function<void (device_t *)> machine_config) { static_option(device, option)->m_machine_config = machine_config; } - static void static_set_option_device_input_defaults(device_t &device, const char *option, const input_device_default *default_input) { static_option(device, option)->m_input_device_defaults = default_input; } - static void static_set_option_clock(device_t &device, const char *option, u32 default_clock) { static_option(device, option)->m_clock = default_clock; } + void set_fixed(bool fixed) { m_fixed = fixed; } + void set_default_option(const char *option) { m_default_option = option; } + void option_reset() { m_options.clear(); } + void option_add(const char *option, const device_type &devtype); + void set_option_selectable(const char *option, bool selectable){ config_option(option)->m_selectable = selectable; } + void set_option_default_bios(const char *option, const char *default_bios) { config_option(option)->m_default_bios = default_bios; } + void set_option_machine_config(const char *option, std::function<void (device_t *)> machine_config) { config_option(option)->m_machine_config = machine_config; } + void set_option_device_input_defaults(const char *option, const input_device_default *default_input) { config_option(option)->m_input_device_defaults = default_input; } + void set_option_clock(const char *option, u32 default_clock) { config_option(option)->m_clock = default_clock; } bool fixed() const { return m_fixed; } bool has_selectable_options() const; const char *default_option() const { return m_default_option; } @@ -154,7 +154,7 @@ private: bool m_fixed; device_t *m_card_device; - static device_slot_option *static_option(device_t &device, const char *option); + device_slot_option *config_option(const char *option); }; // iterator diff --git a/src/emu/disound.cpp b/src/emu/disound.cpp index 9d0b93f70bc..3d84a24db71 100644 --- a/src/emu/disound.cpp +++ b/src/emu/disound.cpp @@ -39,40 +39,6 @@ device_sound_interface::~device_sound_interface() //------------------------------------------------- -// static_add_route - configuration helper to add -// a new route to the device -//------------------------------------------------- - -void device_sound_interface::static_add_route(device_t &device, u32 output, const char *target, double gain, u32 input, u32 mixoutput) -{ - // find our sound interface - device_sound_interface *sound; - if (!device.interface(sound)) - throw emu_fatalerror("MCFG_SOUND_ROUTE called on device '%s' with no sound interface", device.tag()); - - // append a new route to the list - sound->m_route_list.push_back(std::make_unique<sound_route>(output, input, gain, target, mixoutput)); -} - - -//------------------------------------------------- -// static_reset_routes - configuration helper to -// reset all existing routes to the device -//------------------------------------------------- - -void device_sound_interface::static_reset_routes(device_t &device) -{ - // find our sound interface - device_sound_interface *sound; - if (!device.interface(sound)) - throw emu_fatalerror("MCFG_SOUND_ROUTES_RESET called on device '%s' with no sound interface", device.tag()); - - // reset the routine list - sound->m_route_list.clear(); -} - - -//------------------------------------------------- // stream_alloc - allocate a stream implicitly // associated with this device //------------------------------------------------- diff --git a/src/emu/disound.h b/src/emu/disound.h index ee1f12b8f04..7c57b12b9bc 100644 --- a/src/emu/disound.h +++ b/src/emu/disound.h @@ -43,14 +43,14 @@ constexpr int AUTO_ALLOC_INPUT = 65535; MCFG_DEVICE_REPLACE(_tag, _type, _clock) #define MCFG_SOUND_ROUTE(_output, _target, _gain) \ - device_sound_interface::static_add_route(*device, _output, _target, _gain); + dynamic_cast<device_sound_interface &>(*device).add_route(_output, _target, _gain); #define MCFG_SOUND_ROUTE_EX(_output, _target, _gain, _input) \ - device_sound_interface::static_add_route(*device, _output, _target, _gain, _input); + dynamic_cast<device_sound_interface &>(*device).add_route(_output, _target, _gain, _input); #define MCFG_SOUND_ROUTES_RESET() \ - device_sound_interface::static_reset_routes(*device); + dynamic_cast<device_sound_interface &>(*device).reset_routes(); #define MCFG_MIXER_ROUTE(_output, _target, _gain, _mixoutput) \ - device_sound_interface::static_add_route(*device, _output, _target, _gain, AUTO_ALLOC_INPUT, _mixoutput); + dynamic_cast<device_sound_interface &>(*device).add_route(_output, _target, _gain, AUTO_ALLOC_INPUT, _mixoutput); //************************************************************************** @@ -84,9 +84,12 @@ public: // configuration access const std::vector<std::unique_ptr<sound_route>> &routes() const { return m_route_list; } - // static inline configuration helpers - static void static_add_route(device_t &device, u32 output, const char *target, double gain, u32 input = AUTO_ALLOC_INPUT, u32 mixoutput = 0); - static void static_reset_routes(device_t &device); + // inline configuration helpers + void add_route(u32 output, const char *target, double gain, u32 input = AUTO_ALLOC_INPUT, u32 mixoutput = 0) + { + m_route_list.push_back(std::make_unique<sound_route>(output, input, gain, target, mixoutput)); + } + void reset_routes() { m_route_list.clear(); } // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) = 0; diff --git a/src/emu/divideo.cpp b/src/emu/divideo.cpp index 7007487ef32..6a06aa3e857 100644 --- a/src/emu/divideo.cpp +++ b/src/emu/divideo.cpp @@ -43,21 +43,6 @@ device_video_interface::~device_video_interface() //------------------------------------------------- -// static_add_route - configuration helper to add -// a new route to the device -//------------------------------------------------- - -void device_video_interface::static_set_screen(device_t &device, const char *tag) -{ - // find our video interface - device_video_interface *video; - if (!device.interface(video)) - throw emu_fatalerror("MCFG_VIDEO_SET_SCREEN called on device '%s' with no video interface", device.tag()); - video->m_screen_tag = tag; -} - - -//------------------------------------------------- // interface_validity_check - validation for a // device after the configuration has been // constructed diff --git a/src/emu/divideo.h b/src/emu/divideo.h index e92000f4835..5e2c5d1798d 100644 --- a/src/emu/divideo.h +++ b/src/emu/divideo.h @@ -23,7 +23,7 @@ //************************************************************************** #define MCFG_VIDEO_SET_SCREEN(_tag) \ - device_video_interface::static_set_screen(*device, _tag); + dynamic_cast<device_video_interface &>(*device).set_screen(_tag); @@ -42,8 +42,8 @@ public: device_video_interface(const machine_config &mconfig, device_t &device, bool screen_required = true); virtual ~device_video_interface(); - // static configuration - static void static_set_screen(device_t &device, const char *tag); + // configuration + void set_screen(const char *tag) { m_screen_tag = tag; } // getters screen_device &screen() const { return *m_screen; } diff --git a/src/emu/emupal.cpp b/src/emu/emupal.cpp index 25b0f634180..0c20c2fca3d 100644 --- a/src/emu/emupal.cpp +++ b/src/emu/emupal.cpp @@ -36,69 +36,6 @@ palette_device::palette_device(const machine_config &mconfig, const char *tag, d //************************************************************************** -// INITIALIZATION AND CONFIGURATION -//************************************************************************** - -void palette_device::static_set_init(device_t &device, palette_init_delegate init) -{ - downcast<palette_device &>(device).m_init = init; -} - - -void palette_device::static_set_format(device_t &device, raw_to_rgb_converter raw_to_rgb) -{ - downcast<palette_device &>(device).m_raw_to_rgb = raw_to_rgb; -} - - -void palette_device::static_set_membits(device_t &device, int membits) -{ - palette_device &palette = downcast<palette_device &>(device); - palette.m_membits = membits; - palette.m_membits_supplied = true; -} - - -void palette_device::static_set_endianness(device_t &device, endianness_t endianness) -{ - palette_device &palette = downcast<palette_device &>(device); - palette.m_endianness = endianness; - palette.m_endianness_supplied = true; -} - - -void palette_device::static_set_entries(device_t &device, u32 entries) -{ - downcast<palette_device &>(device).m_entries = entries; -} - - -void palette_device::static_set_indirect_entries(device_t &device, u32 entries) -{ - downcast<palette_device &>(device).m_indirect_entries = entries; -} - - -void palette_device::static_enable_shadows(device_t &device) -{ - downcast<palette_device &>(device).m_enable_shadows = true; -} - - -void palette_device::static_enable_hilights(device_t &device) -{ - downcast<palette_device &>(device).m_enable_hilights = true; -} - - -void palette_device::static_set_prom_region(device_t &device, const char *region) -{ - downcast<palette_device &>(device).m_prom_region.set_tag(region); -} - - - -//************************************************************************** // GENERIC WRITE HANDLERS //************************************************************************** diff --git a/src/emu/emupal.h b/src/emu/emupal.h index 0dd33e3c79c..a447516cb21 100644 --- a/src/emu/emupal.h +++ b/src/emu/emupal.h @@ -178,105 +178,105 @@ MCFG_PALETTE_ENTRIES(_entries) #define MCFG_PALETTE_ADD_INIT_BLACK(_tag, _entries) \ MCFG_PALETTE_ADD(_tag, _entries) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_all_black), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_all_black), downcast<palette_device *>(device))); #define MCFG_PALETTE_MODIFY MCFG_DEVICE_MODIFY #define MCFG_PALETTE_INIT_OWNER(_class, _method) \ - palette_device::static_set_init(*device, palette_init_delegate(&_class::PALETTE_INIT_NAME(_method), #_class "::palette_init_" #_method, this)); + downcast<palette_device &>(*device).set_init(palette_init_delegate(&_class::PALETTE_INIT_NAME(_method), #_class "::palette_init_" #_method, this)); #define MCFG_PALETTE_INIT_DEVICE(_tag, _class, _method) \ - palette_device::static_set_init(*device, palette_init_delegate(&_class::PALETTE_INIT_NAME(_method), #_class "::palette_init_" #_method, _tag)); + downcast<palette_device &>(*device).set_init(palette_init_delegate(&_class::PALETTE_INIT_NAME(_method), #_class "::palette_init_" #_method, _tag)); #define MCFG_PALETTE_FORMAT(_format) \ - palette_device::static_set_format(*device, PALETTE_FORMAT_##_format); + downcast<palette_device &>(*device).set_format(PALETTE_FORMAT_##_format); #define MCFG_PALETTE_FORMAT_CLASS(_bytes_per_entry, _class, _method) \ - palette_device::static_set_format(*device, raw_to_rgb_converter(_bytes_per_entry, &_class::PALETTE_DECODER_NAME(_method))); + downcast<palette_device &>(*device).set_format(raw_to_rgb_converter(_bytes_per_entry, &_class::PALETTE_DECODER_NAME(_method))); #define MCFG_PALETTE_MEMBITS(_width) \ - palette_device::static_set_membits(*device, _width); + downcast<palette_device &>(*device).set_membits(_width); #define MCFG_PALETTE_ENDIANNESS(_endianness) \ - palette_device::static_set_endianness(*device, _endianness); + downcast<palette_device &>(*device).set_endianness(_endianness); #define MCFG_PALETTE_ENTRIES(_entries) \ - palette_device::static_set_entries(*device, _entries); + downcast<palette_device &>(*device).set_entries(_entries); #define MCFG_PALETTE_INDIRECT_ENTRIES(_entries) \ - palette_device::static_set_indirect_entries(*device, _entries); + downcast<palette_device &>(*device).set_indirect_entries(_entries); #define MCFG_PALETTE_ENABLE_SHADOWS() \ - palette_device::static_enable_shadows(*device); + downcast<palette_device &>(*device).enable_shadows(); #define MCFG_PALETTE_ENABLE_HILIGHTS() \ - palette_device::static_enable_hilights(*device); + downcast<palette_device &>(*device).enable_hilights(); // monochrome palettes #define MCFG_PALETTE_ADD_MONOCHROME(_tag) \ MCFG_PALETTE_ADD(_tag, 2) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_monochrome), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_monochrome), downcast<palette_device *>(device))); #define MCFG_PALETTE_ADD_MONOCHROME_INVERTED(_tag) \ MCFG_PALETTE_ADD(_tag, 2) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_monochrome_inverted), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_monochrome_inverted), downcast<palette_device *>(device))); #define MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT(_tag) \ MCFG_PALETTE_ADD(_tag, 3) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_monochrome_highlight), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_monochrome_highlight), downcast<palette_device *>(device))); // 8-bit palettes #define MCFG_PALETTE_ADD_3BIT_RGB(_tag) \ MCFG_PALETTE_ADD(_tag, 8) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_rgb), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_rgb), downcast<palette_device *>(device))); #define MCFG_PALETTE_ADD_3BIT_RBG(_tag) \ MCFG_PALETTE_ADD(_tag, 8) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_rbg), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_rbg), downcast<palette_device *>(device))); #define MCFG_PALETTE_ADD_3BIT_BRG(_tag) \ MCFG_PALETTE_ADD(_tag, 8) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_brg), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_brg), downcast<palette_device *>(device))); #define MCFG_PALETTE_ADD_3BIT_GRB(_tag) \ MCFG_PALETTE_ADD(_tag, 8) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_grb), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_grb), downcast<palette_device *>(device))); #define MCFG_PALETTE_ADD_3BIT_GBR(_tag) \ MCFG_PALETTE_ADD(_tag, 8) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_gbr), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_gbr), downcast<palette_device *>(device))); #define MCFG_PALETTE_ADD_3BIT_BGR(_tag) \ MCFG_PALETTE_ADD(_tag, 8) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_bgr), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_bgr), downcast<palette_device *>(device))); // 15-bit palettes #define MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB(_tag) \ MCFG_PALETTE_ADD(_tag, 32768) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRRGGGGGBBBBB), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_RRRRRGGGGGBBBBB), downcast<palette_device *>(device))); // 16-bit palettes #define MCFG_PALETTE_ADD_BBBBBGGGGGRRRRR(_tag) \ MCFG_PALETTE_ADD(_tag, 32768) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_BBBBBGGGGGRRRRR), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_BBBBBGGGGGRRRRR), downcast<palette_device *>(device))); #define MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB(_tag) \ MCFG_PALETTE_ADD(_tag, 65536) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRRGGGGGGBBBBB), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_RRRRRGGGGGGBBBBB), downcast<palette_device *>(device))); // other standard palettes #define MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS(_tag, _region, _entries) \ MCFG_PALETTE_ADD(_tag, _entries) \ - palette_device::static_set_prom_region(*device, "^" _region); \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_prom_region("^" _region); \ + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms), downcast<palette_device *>(device))); // not implemented yet #if 0 #define MCFG_PALETTE_ADD_HARDCODED(_tag, _array) \ MCFG_PALETTE_ADD(_tag, sizeof(_array) / 3) \ - palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms), downcast<palette_device *>(device))); + downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms), downcast<palette_device *>(device))); #endif @@ -362,16 +362,16 @@ public: // construction/destruction palette_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration - static void static_set_init(device_t &device, palette_init_delegate init); - static void static_set_format(device_t &device, raw_to_rgb_converter raw_to_rgb); - static void static_set_membits(device_t &device, int membits); - static void static_set_endianness(device_t &device, endianness_t endianness); - static void static_set_entries(device_t &device, u32 entries); - static void static_set_indirect_entries(device_t &device, u32 entries); - static void static_enable_shadows(device_t &device); - static void static_enable_hilights(device_t &device); - static void static_set_prom_region(device_t &device, const char *region); + // configuration + template <typename Object> void set_init(Object &&init) { m_init = std::forward<Object>(init); } + void set_format(raw_to_rgb_converter raw_to_rgb) { m_raw_to_rgb = raw_to_rgb; } + void set_membits(int membits) { m_membits = membits; m_membits_supplied = true; } + void set_endianness(endianness_t endianness) { m_endianness = endianness; m_endianness_supplied = true; } + void set_entries(u32 entries) { m_entries = entries; } + void set_indirect_entries(u32 entries) { m_entries = entries; } + void enable_shadows() { m_enable_shadows = true; } + void enable_hilights() { m_enable_hilights = true; } + void set_prom_region(const char *region) { m_prom_region.set_tag(region); } // palette RAM accessors memory_array &basemem() { return m_paletteram; } diff --git a/src/emu/mconfig.cpp b/src/emu/mconfig.cpp index d15c4e759b2..192300ccaa1 100644 --- a/src/emu/mconfig.cpp +++ b/src/emu/mconfig.cpp @@ -68,7 +68,7 @@ machine_config::machine_config(const game_driver &gamedrv, emu_options &options) char const *const default_bios = option->default_bios(); if (default_bios != nullptr) - device_t::static_set_default_bios_tag(*new_dev, default_bios); + new_dev->set_default_bios_tag(default_bios); auto additions = option->machine_config(); if (additions) @@ -76,7 +76,7 @@ machine_config::machine_config(const game_driver &gamedrv, emu_options &options) input_device_default const *const input_device_defaults = option->input_device_defaults(); if (input_device_defaults) - device_t::static_set_input_default(*new_dev, input_device_defaults); + new_dev->set_input_default(input_device_defaults); } else throw emu_fatalerror("Unknown slot option '%s' in slot '%s'", selval, owner.tag()+1); diff --git a/src/emu/screen.cpp b/src/emu/screen.cpp index 94a520c3e5d..849a353ddb2 100644 --- a/src/emu/screen.cpp +++ b/src/emu/screen.cpp @@ -601,159 +601,6 @@ screen_device::~screen_device() //------------------------------------------------- -// static_set_type - configuration helper -// to set the screen type -//------------------------------------------------- - -void screen_device::static_set_type(device_t &device, screen_type_enum type) -{ - downcast<screen_device &>(device).m_type = type; -} - - -void screen_device::static_set_svg_region(device_t &device, const char *region) -{ - downcast<screen_device &>(device).m_svg_region = region; -} - - -//------------------------------------------------- -// static_set_raw - configuration helper -// to set the raw screen parameters -//------------------------------------------------- - -void screen_device::static_set_raw(device_t &device, u32 pixclock, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart) -{ - screen_device &screen = downcast<screen_device &>(device); - screen.m_clock = pixclock; - screen.m_refresh = HZ_TO_ATTOSECONDS(pixclock) * htotal * vtotal; - screen.m_vblank = screen.m_refresh / vtotal * (vtotal - (vbstart - vbend)); - screen.m_width = htotal; - screen.m_height = vtotal; - screen.m_visarea.set(hbend, hbstart - 1, vbend, vbstart - 1); -} - - -//------------------------------------------------- -// static_set_refresh - configuration helper -// to set the refresh rate -//------------------------------------------------- - -void screen_device::static_set_refresh(device_t &device, attoseconds_t rate) -{ - downcast<screen_device &>(device).m_refresh = rate; -} - - -//------------------------------------------------- -// static_set_vblank_time - configuration helper -// to set the VBLANK duration -//------------------------------------------------- - -void screen_device::static_set_vblank_time(device_t &device, attoseconds_t time) -{ - screen_device &screen = downcast<screen_device &>(device); - screen.m_vblank = time; - screen.m_oldstyle_vblank_supplied = true; -} - - -//------------------------------------------------- -// static_set_size - configuration helper to set -// the width/height of the screen -//------------------------------------------------- - -void screen_device::static_set_size(device_t &device, u16 width, u16 height) -{ - screen_device &screen = downcast<screen_device &>(device); - screen.m_width = width; - screen.m_height = height; -} - - -//------------------------------------------------- -// static_set_visarea - configuration helper to -// set the visible area of the screen -//------------------------------------------------- - -void screen_device::static_set_visarea(device_t &device, s16 minx, s16 maxx, s16 miny, s16 maxy) -{ - downcast<screen_device &>(device).m_visarea.set(minx, maxx, miny, maxy); -} - - -//------------------------------------------------- -// static_set_default_position - configuration -// helper to set the default position and scale -// factors for the screen -//------------------------------------------------- - -void screen_device::static_set_default_position(device_t &device, double xscale, double xoffs, double yscale, double yoffs) -{ - screen_device &screen = downcast<screen_device &>(device); - screen.m_xscale = xscale; - screen.m_xoffset = xoffs; - screen.m_yscale = yscale; - screen.m_yoffset = yoffs; -} - - -//------------------------------------------------- -// static_set_screen_update - set the legacy(?) -// screen update callback in the device -// configuration -//------------------------------------------------- - -void screen_device::static_set_screen_update(device_t &device, screen_update_ind16_delegate callback) -{ - screen_device &screen = downcast<screen_device &>(device); - screen.m_screen_update_ind16 = callback; - screen.m_screen_update_rgb32 = screen_update_rgb32_delegate(); -} - -void screen_device::static_set_screen_update(device_t &device, screen_update_rgb32_delegate callback) -{ - screen_device &screen = downcast<screen_device &>(device); - screen.m_screen_update_ind16 = screen_update_ind16_delegate(); - screen.m_screen_update_rgb32 = callback; -} - - -//------------------------------------------------- -// static_set_palette - set the screen palette -// configuration -//------------------------------------------------- - -void screen_device::static_set_palette(device_t &device, const char *tag) -{ - downcast<screen_device &>(device).m_palette_tag = tag; -} - - -//------------------------------------------------- -// static_set_video_attributes - set the screen -// video attributes -//------------------------------------------------- - -void screen_device::static_set_video_attributes(device_t &device, u32 flags) -{ - screen_device &screen = downcast<screen_device &>(device); - screen.m_video_attributes = flags; -} - - -//------------------------------------------------- -// static_set_color - set the screen global color -//------------------------------------------------- - -void screen_device::static_set_color(device_t &device, rgb_t color) -{ - screen_device &screen = downcast<screen_device &>(device); - screen.m_color = color; -} - - -//------------------------------------------------- // device_validity_check - verify device // configuration //------------------------------------------------- diff --git a/src/emu/screen.h b/src/emu/screen.h index 2297a8514e2..a66a2f90f53 100644 --- a/src/emu/screen.h +++ b/src/emu/screen.h @@ -187,21 +187,42 @@ public: bool have_screen_update() const { return !m_screen_update_ind16.isnull() && !m_screen_update_rgb32.isnull(); } // inline configuration helpers - static void static_set_type(device_t &device, screen_type_enum type); - static void static_set_raw(device_t &device, u32 pixclock, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart); - static void static_set_raw(device_t &device, const XTAL &xtal, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart) { static_set_raw(device, xtal.value(), htotal, hbend, hbstart, vtotal, vbend, vbstart); } - static void static_set_refresh(device_t &device, attoseconds_t rate); - static void static_set_vblank_time(device_t &device, attoseconds_t time); - static void static_set_size(device_t &device, u16 width, u16 height); - static void static_set_visarea(device_t &device, s16 minx, s16 maxx, s16 miny, s16 maxy); - static void static_set_default_position(device_t &device, double xscale, double xoffs, double yscale, double yoffs); - static void static_set_screen_update(device_t &device, screen_update_ind16_delegate callback); - static void static_set_screen_update(device_t &device, screen_update_rgb32_delegate callback); - template<class Object> static devcb_base &static_set_screen_vblank(device_t &device, Object &&object) { return downcast<screen_device &>(device).m_screen_vblank.set_callback(std::forward<Object>(object)); } - static void static_set_palette(device_t &device, const char *tag); - static void static_set_video_attributes(device_t &device, u32 flags); - static void static_set_color(device_t &device, rgb_t color); - static void static_set_svg_region(device_t &device, const char *region); + void set_type(screen_type_enum type) { m_type = type; } + void set_raw(u32 pixclock, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart) + { + m_clock = pixclock; + m_refresh = HZ_TO_ATTOSECONDS(pixclock) * htotal * vtotal; + m_vblank = m_refresh / vtotal * (vtotal - (vbstart - vbend)); + m_width = htotal; + m_height = vtotal; + m_visarea.set(hbend, hbstart - 1, vbend, vbstart - 1); + } + void set_raw(const XTAL &xtal, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart) { set_raw(xtal.value(), htotal, hbend, hbstart, vtotal, vbend, vbstart); } + void set_refresh(attoseconds_t rate) { m_refresh = rate; } + void set_vblank_time(attoseconds_t time) { m_vblank = time; m_oldstyle_vblank_supplied = true; } + void set_size(u16 width, u16 height) { m_width = width; m_height = height; } + void set_visarea(s16 minx, s16 maxx, s16 miny, s16 maxy) { m_visarea.set(minx, maxx, miny, maxy); } + void set_default_position(double xscale, double xoffs, double yscale, double yoffs) { + m_xscale = xscale; + m_xoffset = xoffs; + m_yscale = yscale; + m_yoffset = yoffs; + } + void set_screen_update(screen_update_ind16_delegate callback) + { + m_screen_update_ind16 = callback; + m_screen_update_rgb32 = screen_update_rgb32_delegate(); + } + void set_screen_update(screen_update_rgb32_delegate callback) + { + m_screen_update_ind16 = screen_update_ind16_delegate(); + m_screen_update_rgb32 = callback; + } + template<class Object> devcb_base &set_screen_vblank(Object &&object) { return m_screen_vblank.set_callback(std::forward<Object>(object)); } + void set_palette(const char *tag) { m_palette_tag = tag; } + void set_video_attributes(u32 flags) { m_video_attributes = flags; } + void set_color(rgb_t color) { m_color = color; } + void set_svg_region(const char *region) { m_svg_region = region; } // information getters render_container &container() const { assert(m_container != nullptr); return *m_container; } @@ -460,43 +481,43 @@ typedef device_type_iterator<screen_device> screen_device_iterator; MCFG_DEVICE_MODIFY(_tag) #define MCFG_SCREEN_TYPE(_type) \ - screen_device::static_set_type(*device, SCREEN_TYPE_##_type); + downcast<screen_device &>(*device).set_type(SCREEN_TYPE_##_type); #define MCFG_SCREEN_SVG_ADD(_tag, _region) \ MCFG_DEVICE_ADD(_tag, SCREEN, 0) \ MCFG_SCREEN_TYPE(SVG) \ - screen_device::static_set_svg_region(*device, _region); + downcast<screen_device &>(*device).set_svg_region(_region); #define MCFG_SCREEN_RAW_PARAMS(_pixclock, _htotal, _hbend, _hbstart, _vtotal, _vbend, _vbstart) \ - screen_device::static_set_raw(*device, _pixclock, _htotal, _hbend, _hbstart, _vtotal, _vbend, _vbstart); + downcast<screen_device &>(*device).set_raw(_pixclock, _htotal, _hbend, _hbstart, _vtotal, _vbend, _vbstart); #define MCFG_SCREEN_REFRESH_RATE(_rate) \ - screen_device::static_set_refresh(*device, HZ_TO_ATTOSECONDS(_rate)); + downcast<screen_device &>(*device).set_refresh(HZ_TO_ATTOSECONDS(_rate)); #define MCFG_SCREEN_VBLANK_TIME(_time) \ - screen_device::static_set_vblank_time(*device, _time); + downcast<screen_device &>(*device).set_vblank_time(_time); #define MCFG_SCREEN_SIZE(_width, _height) \ - screen_device::static_set_size(*device, _width, _height); + downcast<screen_device &>(*device).set_size(_width, _height); #define MCFG_SCREEN_VISIBLE_AREA(_minx, _maxx, _miny, _maxy) \ - screen_device::static_set_visarea(*device, _minx, _maxx, _miny, _maxy); + downcast<screen_device &>(*device).set_visarea(_minx, _maxx, _miny, _maxy); #define MCFG_SCREEN_DEFAULT_POSITION(_xscale, _xoffs, _yscale, _yoffs) \ - screen_device::static_set_default_position(*device, _xscale, _xoffs, _yscale, _yoffs); + downcast<screen_device &>(*device).set_default_position(_xscale, _xoffs, _yscale, _yoffs); #define MCFG_SCREEN_UPDATE_DRIVER(_class, _method) \ - screen_device::static_set_screen_update(*device, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, nullptr)); + downcast<screen_device &>(*device).set_screen_update(screen_update_delegate_smart(&_class::_method, #_class "::" #_method, nullptr)); #define MCFG_SCREEN_UPDATE_DEVICE(_device, _class, _method) \ - screen_device::static_set_screen_update(*device, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, _device)); + downcast<screen_device &>(*device).set_screen_update(screen_update_delegate_smart(&_class::_method, #_class "::" #_method, _device)); #define MCFG_SCREEN_VBLANK_CALLBACK(_devcb) \ - devcb = &screen_device::static_set_screen_vblank(*device, DEVCB_##_devcb); + devcb = &downcast<screen_device &>(*device).set_screen_vblank(DEVCB_##_devcb); #define MCFG_SCREEN_PALETTE(_palette_tag) \ - screen_device::static_set_palette(*device, _palette_tag); + downcast<screen_device &>(*device).set_palette(_palette_tag); #define MCFG_SCREEN_NO_PALETTE \ - screen_device::static_set_palette(*device, nullptr); + downcast<screen_device &>(*device).set_palette(nullptr); #define MCFG_SCREEN_VIDEO_ATTRIBUTES(_flags) \ - screen_device::static_set_video_attributes(*device, _flags); + downcast<screen_device &>(*device).set_video_attributes(_flags); #define MCFG_SCREEN_COLOR(_color) \ - screen_device::static_set_color(*device, _color); + downcast<screen_device &>(*device).set_color(_color); //************************************************************************** diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp index d9dc013a26f..43eb72427c1 100644 --- a/src/emu/softlist_dev.cpp +++ b/src/emu/softlist_dev.cpp @@ -91,30 +91,6 @@ software_list_device::software_list_device(const machine_config &mconfig, const //------------------------------------------------- -// static_set_type - configuration helper -// to set the list type -//------------------------------------------------- - -void software_list_device::static_set_type(device_t &device, const char *list, softlist_type list_type) -{ - software_list_device &swlistdev = downcast<software_list_device &>(device); - swlistdev.m_list_name.assign(list); - swlistdev.m_list_type = list_type; -} - - -//------------------------------------------------- -// static_set_custom_handler - configuration -// helper to set a custom callback -//------------------------------------------------- - -void software_list_device::static_set_filter(device_t &device, const char *filter) -{ - downcast<software_list_device &>(device).m_filter = filter; -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/emu/softlist_dev.h b/src/emu/softlist_dev.h index e5c893cd60a..7f6649e1fb7 100644 --- a/src/emu/softlist_dev.h +++ b/src/emu/softlist_dev.h @@ -44,7 +44,7 @@ enum software_compatibility //************************************************************************** #define MCFG_SOFTWARE_LIST_CONFIG(_list,_list_type) \ - software_list_device::static_set_type(*device, _list, _list_type); + downcast<software_list_device &>(*device).set_type(_list, _list_type); #define MCFG_SOFTWARE_LIST_ADD( _tag, _list ) \ MCFG_DEVICE_ADD( _tag, SOFTWARE_LIST, 0 ) \ @@ -64,7 +64,7 @@ enum software_compatibility #define MCFG_SOFTWARE_LIST_FILTER( _tag, _filter ) \ MCFG_DEVICE_MODIFY( _tag ) \ - software_list_device::static_set_filter(*device, _filter); + downcast<software_list_device &>(*device).set_filter(_filter); #define MCFG_SOFTWARE_LIST_REMOVE( _tag ) \ MCFG_DEVICE_REMOVE( _tag ) @@ -135,8 +135,8 @@ public: software_list_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // inline configuration helpers - static void static_set_type(device_t &device, const char *list, softlist_type list_type); - static void static_set_filter(device_t &device, const char *filter); + void set_type(const char *list, softlist_type list_type) { m_list_name.assign(list); m_list_type = list_type; } + void set_filter(const char *filter) { m_filter = filter; } // getters const std::string &list_name() const { return m_list_name; } diff --git a/src/emu/speaker.cpp b/src/emu/speaker.cpp index 53ac40004c8..177bfa0c590 100644 --- a/src/emu/speaker.cpp +++ b/src/emu/speaker.cpp @@ -70,20 +70,6 @@ speaker_device::~speaker_device() //------------------------------------------------- -// static_set_position - configuration helper to -// set the speaker position -//------------------------------------------------- - -void speaker_device::static_set_position(device_t &device, double x, double y, double z) -{ - speaker_device &speaker = downcast<speaker_device &>(device); - speaker.m_x = x; - speaker.m_y = y; - speaker.m_z = z; -} - - -//------------------------------------------------- // mix - mix in samples from the speaker's stream //------------------------------------------------- diff --git a/src/emu/speaker.h b/src/emu/speaker.h index dd0c46479be..4665dbdf2e8 100644 --- a/src/emu/speaker.h +++ b/src/emu/speaker.h @@ -29,7 +29,7 @@ DECLARE_DEVICE_TYPE(SPEAKER, speaker_device) // add/remove speakers #define MCFG_SPEAKER_ADD(_tag, _x, _y, _z) \ MCFG_DEVICE_ADD(_tag, SPEAKER, 0) \ - speaker_device::static_set_position(*device, _x, _y, _z); + downcast<speaker_device &>(*device).set_position(_x, _y, _z); #define MCFG_SPEAKER_STANDARD_MONO(_tag) \ MCFG_SPEAKER_ADD(_tag, 0.0, 0.0, 1.0) @@ -53,7 +53,7 @@ public: virtual ~speaker_device(); // inline configuration helpers - static void static_set_position(device_t &device, double x, double y, double z); + void set_position(double x, double y, double z) { m_x = x; m_y = y; m_z = z; } // internally for use by the sound system void mix(s32 *leftmix, s32 *rightmix, int &samples_this_update, bool suppress); diff --git a/src/emu/tilemap.cpp b/src/emu/tilemap.cpp index 3329b98acbe..0b7b748a494 100644 --- a/src/emu/tilemap.cpp +++ b/src/emu/tilemap.cpp @@ -1626,87 +1626,6 @@ tilemap_device::tilemap_device(const machine_config &mconfig, const char *tag, d //------------------------------------------------- -// static_set_gfxdecode_tag: Set the tag of the -// gfx decoder -//------------------------------------------------- - -void tilemap_device::static_set_gfxdecode_tag(device_t &device, const char *tag) -{ - downcast<tilemap_device &>(device).m_gfxdecode.set_tag(tag); -} - - -//------------------------------------------------- -// static_set_bytes_per_entry: Set the -// transparent pen -//------------------------------------------------- - -void tilemap_device::static_set_bytes_per_entry(device_t &device, int bpe) -{ - downcast<tilemap_device &>(device).m_bytes_per_entry = bpe; -} - - -//------------------------------------------------- -// static_set_info_callback: Set the get info -// callback delegate -//------------------------------------------------- - -void tilemap_device::static_set_info_callback(device_t &device, tilemap_get_info_delegate get_info) -{ - downcast<tilemap_device &>(device).m_get_info = get_info; -} - - -//------------------------------------------------- -// static_set_layout: Set the tilemap size and -// layout -//------------------------------------------------- - -void tilemap_device::static_set_layout(device_t &device, tilemap_standard_mapper mapper, u32 columns, u32 rows) -{ - tilemap_device &target = downcast<tilemap_device &>(device); - target.m_standard_mapper = mapper; - target.m_num_columns = columns; - target.m_num_rows = rows; -} - -void tilemap_device::static_set_layout(device_t &device, tilemap_mapper_delegate mapper, u32 columns, u32 rows) -{ - tilemap_device &target = downcast<tilemap_device &>(device); - target.m_standard_mapper = TILEMAP_STANDARD_COUNT; - target.m_mapper = mapper; - target.m_num_columns = columns; - target.m_num_rows = rows; -} - - -//------------------------------------------------- -// static_set_tile_size: Set the tile size -//------------------------------------------------- - -void tilemap_device::static_set_tile_size(device_t &device, u16 width, u16 height) -{ - tilemap_device &target = downcast<tilemap_device &>(device); - target.m_tile_width = width; - target.m_tile_height = height; -} - - -//------------------------------------------------- -// static_set_transparent_pen: Set the -// transparent pen -//------------------------------------------------- - -void tilemap_device::static_set_transparent_pen(device_t &device, pen_t pen) -{ - tilemap_device &target = downcast<tilemap_device &>(device); - target.m_transparent_pen_set = true; - target.m_transparent_pen = pen; -} - - -//------------------------------------------------- // write: Main memory writes //------------------------------------------------- diff --git a/src/emu/tilemap.h b/src/emu/tilemap.h index 3fd24f21a78..10a6bdfba06 100644 --- a/src/emu/tilemap.h +++ b/src/emu/tilemap.h @@ -370,23 +370,23 @@ enum tilemap_standard_mapper #define MCFG_TILEMAP_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, TILEMAP, 0) #define MCFG_TILEMAP_GFXDECODE(_gfxtag) \ - tilemap_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); + downcast<tilemap_device &>(*device).set_gfxdecode_tag("^" _gfxtag); #define MCFG_TILEMAP_BYTES_PER_ENTRY(_bpe) \ - tilemap_device::static_set_bytes_per_entry(*device, _bpe); + downcast<tilemap_device &>(*device).set_bytes_per_entry(_bpe); #define MCFG_TILEMAP_INFO_CB_DRIVER(_class, _method) \ - tilemap_device::static_set_info_callback(*device, tilemap_get_info_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); + downcast<tilemap_device &>(*device).set_info_callback(tilemap_get_info_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); #define MCFG_TILEMAP_INFO_CB_DEVICE(_device, _class, _method) \ - tilemap_device::static_set_info_callback(*device, tilemap_get_info_delegate(&_class::_method, #_class "::" #_method, _device, (_class *)nullptr)); + downcast<tilemap_device &>(*device).set_info_callback(tilemap_get_info_delegate(&_class::_method, #_class "::" #_method, _device, (_class *)nullptr)); #define MCFG_TILEMAP_LAYOUT_STANDARD(_standard, _columns, _rows) \ - tilemap_device::static_set_layout(*device, TILEMAP_##_standard, _columns, _rows); + downcast<tilemap_device &>(*device).set_layout(TILEMAP_##_standard, _columns, _rows); #define MCFG_TILEMAP_LAYOUT_CB_DRIVER(_class, _method, _columns, _rows) \ - tilemap_device::static_set_layout(*device, tilemap_mapper_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr), _columns, _rows); + downcast<tilemap_device &>(*device).set_layout(tilemap_mapper_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr), _columns, _rows); #define MCFG_TILEMAP_LAYOUT_CB_DEVICE(_device, _class, _method, _columns, _rows) \ - tilemap_device::static_set_layout(*device, tilemap_mapper_delegate(&_class::_method, #_class "::" #_method, _device, (_class *)nullptr), _columns, _rows); + downcast<tilemap_device &>(*device).set_layout(tilemap_mapper_delegate(&_class::_method, #_class "::" #_method, _device, (_class *)nullptr), _columns, _rows); #define MCFG_TILEMAP_TILE_SIZE(_width, _height) \ - tilemap_device::static_set_tile_size(*device, _width, _height); + downcast<tilemap_device &>(*device).set_tile_size(_width, _height); #define MCFG_TILEMAP_TRANSPARENT_PEN(_pen) \ - tilemap_device::static_set_transparent_pen(*device, _pen); + downcast<tilemap_device &>(*device).set_transparent_pen(_pen); // common cases #define MCFG_TILEMAP_ADD_STANDARD(_tag, _gfxtag, _bytes_per_entry, _class, _method, _tilewidth, _tileheight, _mapper, _columns, _rows) \ @@ -720,14 +720,23 @@ public: // construction/destruction tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration - static void static_set_gfxdecode_tag(device_t &device, const char *tag); - static void static_set_bytes_per_entry(device_t &device, int bpe); - static void static_set_info_callback(device_t &device, tilemap_get_info_delegate tile_get_info); - static void static_set_layout(device_t &device, tilemap_standard_mapper mapper, u32 columns, u32 rows); - static void static_set_layout(device_t &device, tilemap_mapper_delegate mapper, u32 columns, u32 rows); - static void static_set_tile_size(device_t &device, u16 width, u16 height); - static void static_set_transparent_pen(device_t &device, pen_t pen); + // configuration + void set_gfxdecode_tag(const char *tag) { m_gfxdecode.set_tag(tag); } + void set_bytes_per_entry(int bpe) { m_bytes_per_entry = bpe; } + void set_info_callback(tilemap_get_info_delegate tile_get_info) { m_get_info = tile_get_info; } + void set_layout(tilemap_standard_mapper mapper, u32 columns, u32 rows) { + m_standard_mapper = mapper; + m_num_columns = columns; + m_num_rows = rows; + } + void set_layout(tilemap_mapper_delegate mapper, u32 columns, u32 rows) { + m_standard_mapper = TILEMAP_STANDARD_COUNT; + m_mapper = mapper; + m_num_columns = columns; + m_num_rows = rows; + } + void set_tile_size(u16 width, u16 height) { m_tile_width = width; m_tile_height = height; } + void set_transparent_pen(pen_t pen) { m_transparent_pen_set = true; m_transparent_pen = pen; } // getters memory_array &basemem() { return m_basemem; } diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp index 0943282bb18..bf94da8cdce 100644 --- a/src/emu/validity.cpp +++ b/src/emu/validity.cpp @@ -1956,7 +1956,7 @@ void validity_checker::validate_devices() const char *const def_bios = option.second->default_bios(); if (def_bios) - device_t::static_set_default_bios_tag(*card, def_bios); + card->set_default_bios_tag(def_bios); auto additions = option.second->machine_config(); if (additions) additions(card); @@ -1971,7 +1971,7 @@ void validity_checker::validate_devices() device_t *const sub_card = m_current_config->device_add(&subslot.device(), suboption->name(), suboption->devtype(), suboption->clock()); const char *const sub_bios = suboption->default_bios(); if (sub_bios) - device_t::static_set_default_bios_tag(*sub_card, sub_bios); + sub_card->set_default_bios_tag(sub_bios); auto sub_additions = suboption->machine_config(); if (sub_additions) sub_additions(sub_card); diff --git a/src/mame/drivers/asst128.cpp b/src/mame/drivers/asst128.cpp index 27d12505463..6273c3e69b3 100644 --- a/src/mame/drivers/asst128.cpp +++ b/src/mame/drivers/asst128.cpp @@ -102,7 +102,7 @@ MACHINE_CONFIG_START(asst128_state::asst128) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb) MCFG_DEVICE_ADD("mb", ASST128_MOTHERBOARD, 0) - asst128_mb_device::static_set_cputag(*device, "^maincpu"); + downcast<asst128_mb_device &>(*device).set_cputag("^maincpu"); MCFG_DEVICE_INPUT_DEFAULTS(asst128) MCFG_DEVICE_MODIFY("mb:cassette") diff --git a/src/mame/drivers/at.cpp b/src/mame/drivers/at.cpp index f19fec5d715..c918083fd8f 100644 --- a/src/mame/drivers/at.cpp +++ b/src/mame/drivers/at.cpp @@ -392,14 +392,14 @@ MACHINE_START_MEMBER(at_state,vrom_fix) void at_state::cfg_single_1200K(device_t *device) { - device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "525hd"); - device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), ""); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("525hd"); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option(""); } void at_state::cfg_single_360K(device_t *device) { - device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "525dd"); - device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), ""); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("525dd"); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option(""); } static SLOT_INTERFACE_START( pci_devices ) diff --git a/src/mame/drivers/europc.cpp b/src/mame/drivers/europc.cpp index ee390c6ff53..7fa2d3cab2e 100644 --- a/src/mame/drivers/europc.cpp +++ b/src/mame/drivers/europc.cpp @@ -512,9 +512,9 @@ ADDRESS_MAP_END /* single built-in 3.5" 720K drive, connector for optional external 3.5" or 5.25" drive */ void europc_pc_state::cfg_builtin_720K(device_t *device) { - device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "35dd"); - device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true); - device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), ""); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("35dd"); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option(""); } //Euro PC diff --git a/src/mame/drivers/ksys573.cpp b/src/mame/drivers/ksys573.cpp index 6498134920f..82943174abf 100644 --- a/src/mame/drivers/ksys573.cpp +++ b/src/mame/drivers/ksys573.cpp @@ -1770,7 +1770,7 @@ void ksys573_state::punchmania_cassette_install(device_t *device) { auto game = downcast<konami573_cassette_xi_device *>(device); auto adc0838 = device->subdevice<adc083x_device>("adc0838"); - adc083x_device::set_input_callback(*adc0838, adc083x_device::input_delegate(FUNC(konami573_cassette_xi_device::punchmania_inputs_callback), game)); + adc0838->set_input_callback(adc083x_device::input_delegate(FUNC(konami573_cassette_xi_device::punchmania_inputs_callback), game)); } int pad_light[ 6 ]; diff --git a/src/mame/drivers/m24.cpp b/src/mame/drivers/m24.cpp index dd573ff22b9..4f7ce27b05d 100644 --- a/src/mame/drivers/m24.cpp +++ b/src/mame/drivers/m24.cpp @@ -290,7 +290,7 @@ MACHINE_CONFIG_START(m24_state::olivetti) MCFG_DEVICE_MODIFY("mb:dma8237") MCFG_I8237_OUT_HREQ_CB(DEVWRITELINE(":", m24_state, dma_hrq_w)) MCFG_DEVICE_MODIFY("mb:pic8259") - devcb = &pic8259_device::static_set_out_int_callback(*device, DEVCB_DEVWRITELINE(":", m24_state, int_w)); + devcb = &downcast<pic8259_device &>(*device).set_out_int_callback(DEVCB_DEVWRITELINE(":", m24_state, int_w)); /* software lists */ MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150") diff --git a/src/mame/drivers/microvsn.cpp b/src/mame/drivers/microvsn.cpp index 2a03f0a5793..8a0023422cd 100644 --- a/src/mame/drivers/microvsn.cpp +++ b/src/mame/drivers/microvsn.cpp @@ -94,7 +94,7 @@ public: protected: required_device<dac_byte_interface> m_dac; required_device<cpu_device> m_i8021; - required_device<cpu_device> m_tms1100; + required_device<tms1100_cpu_device> m_tms1100; required_device<generic_slot_device> m_cart; // Timers @@ -165,14 +165,14 @@ MACHINE_START_MEMBER(microvision_state, microvision) MACHINE_RESET_MEMBER(microvision_state, microvision) { - for(auto & elem : m_lcd_latch) + for (auto & elem : m_lcd_latch) { elem = 0; } - for(auto & elem : m_lcd) + for (auto & elem : m_lcd) { - for ( int j = 0; j < 16; j++ ) + for (int j = 0; j < 16; j++) { elem[j] = 0; } @@ -184,32 +184,32 @@ MACHINE_RESET_MEMBER(microvision_state, microvision) m_p2 = 0; m_t1 = 0; - m_paddle_timer->adjust( attotime::never ); + m_paddle_timer->adjust(attotime::never); - switch ( m_cpu_type ) + switch (m_cpu_type) { case CPU_TYPE_I8021: - m_i8021->resume( SUSPEND_REASON_DISABLE ); - m_tms1100->suspend( SUSPEND_REASON_DISABLE, 0 ); + m_i8021->resume(SUSPEND_REASON_DISABLE); + m_tms1100->suspend(SUSPEND_REASON_DISABLE, 0); break; case CPU_TYPE_TMS1100: - m_i8021->suspend( SUSPEND_REASON_DISABLE, 0 ); - m_tms1100->resume( SUSPEND_REASON_DISABLE ); + m_i8021->suspend(SUSPEND_REASON_DISABLE, 0); + m_tms1100->resume(SUSPEND_REASON_DISABLE); - switch ( m_rc_type ) + switch (m_rc_type) { case RC_TYPE_100PF_21_0K: - static_set_clock( *m_tms1100, 550000 ); + m_tms1100->set_clock(550000); break; case RC_TYPE_100PF_23_2K: case RC_TYPE_UNKNOWN: // Default to most occurring setting - static_set_clock( *m_tms1100, 500000 ); + m_tms1100->set_clock(500000); break; case RC_TYPE_100PF_39_4K: - static_set_clock( *m_tms1100, 300000 ); + m_tms1100->set_clock(300000); break; } break; @@ -538,7 +538,7 @@ DEVICE_IMAGE_LOAD_MEMBER(microvision_state, microvsn_cart) if (pla) m_pla = 1; - tms1100_cpu_device::set_output_pla(*m_tms1100, m_pla ? microvision_output_pla_1 : microvision_output_pla_0); + m_tms1100->set_output_pla(m_pla ? microvision_output_pla_1 : microvision_output_pla_0); // Set default setting for PCB type and RC type m_pcb_type = microvision_state::PCB_TYPE_UNKNOWN; diff --git a/src/mame/drivers/milton6805.cpp b/src/mame/drivers/milton6805.cpp index 00cf81a793d..e025a1bc7f4 100644 --- a/src/mame/drivers/milton6805.cpp +++ b/src/mame/drivers/milton6805.cpp @@ -126,10 +126,10 @@ MACHINE_CONFIG_START(milton_state::milton) MCFG_CPU_IO_MAP(io_map) MCFG_DEVICE_ADD("grom3", TMC0430, 3120000 / 8) - tmc0430_device::set_region_and_ident(*device, "groms", 0x0000, 0); + downcast<tmc0430_device &>(*device).set_region_and_ident("groms", 0x0000, 0); MCFG_DEVICE_ADD("grom4", TMC0430, 3120000 / 8) - tmc0430_device::set_region_and_ident(*device, "groms", 0x2000, 1); + downcast<tmc0430_device &>(*device).set_region_and_ident("groms", 0x2000, 1); MCFG_SPEAKER_STANDARD_MONO("speaker") MCFG_SOUND_ADD("sp0250", SP0250, 3120000) diff --git a/src/mame/drivers/mtouchxl.cpp b/src/mame/drivers/mtouchxl.cpp index 0819e03a088..ae158d3e808 100644 --- a/src/mame/drivers/mtouchxl.cpp +++ b/src/mame/drivers/mtouchxl.cpp @@ -192,15 +192,15 @@ SLOT_INTERFACE_END void mtxl_state::cdrom(device_t *device) { - auto ide0 = device->subdevice("ide:0"); - device_slot_interface::static_option_reset(*ide0); - SLOT_INTERFACE_NAME(mt6k_ata_devices)(ide0); - device_slot_interface::static_set_default_option(*ide0, "cdrom"); - device_slot_interface::static_set_fixed(*ide0, true); - - auto ide1 = device->subdevice("ide:1"); - device_slot_interface::static_set_default_option(*ide1, ""); - device_slot_interface::static_set_fixed(*ide1, true); + auto ide0 = dynamic_cast<device_slot_interface *>(device->subdevice("ide:0")); + ide0->option_reset(); + SLOT_INTERFACE_NAME(mt6k_ata_devices)(device->subdevice("ide:0")); + ide0->set_default_option("cdrom"); + ide0->set_fixed(true); + + auto ide1 = dynamic_cast<device_slot_interface *>(device->subdevice("ide:1")); + ide1->set_default_option(""); + ide1->set_fixed(true); MACHINE_CONFIG_END #endif diff --git a/src/mame/drivers/next.cpp b/src/mame/drivers/next.cpp index 65bad1adf83..d6730d13c0f 100644 --- a/src/mame/drivers/next.cpp +++ b/src/mame/drivers/next.cpp @@ -572,7 +572,7 @@ WRITE32_MEMBER( next_state::scsictrl_w ) scsictrl = data >> 24; if(scsictrl & 0x02) scsi->reset(); - device_t::static_set_clock(*scsi, scsi_clocks[scsictrl >> 6]); + scsi->set_clock(scsi_clocks[scsictrl >> 6]); logerror("SCSIctrl %dMHz int=%s dma=%s dmadir=%s%s%s dest=%s (%08x)\n", scsi_clocks[scsictrl >> 6]/1000000, diff --git a/src/mame/drivers/pc.cpp b/src/mame/drivers/pc.cpp index d3d7f161b19..a927759a2a6 100644 --- a/src/mame/drivers/pc.cpp +++ b/src/mame/drivers/pc.cpp @@ -536,22 +536,22 @@ MACHINE_CONFIG_END void pc_state::cfg_dual_720K(device_t *device) { - device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "35dd"); - device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), "35dd"); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("35dd"); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("35dd"); } void pc_state::cfg_single_360K(device_t *device) { - device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "525dd"); - device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true); - device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), ""); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("525dd"); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option(""); } void pc_state::cfg_single_720K(device_t *device) { - device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "35dd"); - device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true); - device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), ""); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("35dd"); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option(""); } //Data General One diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp index 18929fd893e..19ff393fb15 100644 --- a/src/mame/drivers/rainbow.cpp +++ b/src/mame/drivers/rainbow.cpp @@ -877,7 +877,7 @@ void rainbow_state::machine_start() m_SCREEN_BLANK = false; cpu_device *maincpu = machine().device<cpu_device>("maincpu"); - device_execute_interface::static_set_irq_acknowledge_callback(*maincpu, device_irq_acknowledge_delegate(FUNC(rainbow_state::irq_callback), this)); + maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(rainbow_state::irq_callback), this)); save_item(NAME(m_z80_private)); save_item(NAME(m_z80_mailbox)); diff --git a/src/mame/drivers/saturn.cpp b/src/mame/drivers/saturn.cpp index 7d1ee0c6f75..2e6c064ec53 100644 --- a/src/mame/drivers/saturn.cpp +++ b/src/mame/drivers/saturn.cpp @@ -799,13 +799,13 @@ MACHINE_CONFIG_START(sat_console_state::saturn) MCFG_CPU_PROGRAM_MAP(sound_mem) MCFG_SEGA_SCU_ADD("scu") - sega_scu_device::static_set_hostcpu(*device, "maincpu"); + downcast<sega_scu_device &>(*device).set_hostcpu("maincpu"); // SH-1 // SMPC MCU, running at 4 MHz (+ custom RTC device that runs at 32.768 KHz) MCFG_SMPC_HLE_ADD("smpc", XTAL(4'000'000)) - smpc_hle_device::static_set_control_port_tags(*device, "ctrl1", "ctrl2"); + downcast<smpc_hle_device &>(*device).set_control_port_tags("ctrl1", "ctrl2"); MCFG_SMPC_HLE_PDR1_IN_CB(READ8(sat_console_state, saturn_pdr1_direct_r)) MCFG_SMPC_HLE_PDR2_IN_CB(READ8(sat_console_state, saturn_pdr2_direct_r)) MCFG_SMPC_HLE_PDR1_OUT_CB(WRITE8(sat_console_state, saturn_pdr1_direct_w)) @@ -873,7 +873,7 @@ MACHINE_CONFIG_START(sat_console_state::saturnus) MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart") MCFG_DEVICE_MODIFY("smpc") - smpc_hle_device::static_set_region_code(*device, 4); + downcast<smpc_hle_device &>(*device).set_region_code(4); MACHINE_CONFIG_END @@ -888,7 +888,7 @@ MACHINE_CONFIG_START(sat_console_state::saturneu) MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart") MCFG_DEVICE_MODIFY("smpc") - smpc_hle_device::static_set_region_code(*device, 12); + downcast<smpc_hle_device &>(*device).set_region_code(12); MACHINE_CONFIG_END MACHINE_CONFIG_START(sat_console_state::saturnjp) @@ -902,7 +902,7 @@ MACHINE_CONFIG_START(sat_console_state::saturnjp) MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart") MCFG_DEVICE_MODIFY("smpc") - smpc_hle_device::static_set_region_code(*device, 1); + downcast<smpc_hle_device &>(*device).set_region_code(1); MACHINE_CONFIG_END diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp index 6bf758c8ad9..d0a12ad2e42 100644 --- a/src/mame/drivers/stv.cpp +++ b/src/mame/drivers/stv.cpp @@ -1077,10 +1077,10 @@ MACHINE_CONFIG_START(stv_state::stv) MCFG_CPU_PROGRAM_MAP(sound_mem) MCFG_SEGA_SCU_ADD("scu") - sega_scu_device::static_set_hostcpu(*device, "maincpu"); + downcast<sega_scu_device &>(*device).set_hostcpu("maincpu"); MCFG_SMPC_HLE_ADD("smpc", XTAL(4'000'000)) - smpc_hle_device::static_set_region_code(*device, 0); + downcast<smpc_hle_device &>(*device).set_region_code(0); MCFG_SMPC_HLE_PDR1_IN_CB(READ8(stv_state, pdr1_input_r)) MCFG_SMPC_HLE_PDR2_IN_CB(READ8(stv_state, pdr2_input_r)) MCFG_SMPC_HLE_PDR1_OUT_CB(WRITE8(stv_state, pdr1_output_w)) diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp index 4e965c29ab6..b401b24ef22 100644 --- a/src/mame/drivers/tandy1t.cpp +++ b/src/mame/drivers/tandy1t.cpp @@ -623,15 +623,15 @@ static const gfx_layout t1000_charlayout = void tandy1000_state::cfg_fdc_35(device_t *device) { - device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "35dd"); - device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true); - device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), ""); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("35dd"); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option(""); } void tandy1000_state::cfg_fdc_525(device_t *device) { - device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true); - device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), ""); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option(""); } static GFXDECODE_START( t1000 ) @@ -640,7 +640,7 @@ GFXDECODE_END MACHINE_CONFIG_START(tandy1000_state::tandy1000_common) MCFG_DEVICE_ADD("mb", T1000_MOTHERBOARD, 0) - t1000_mb_device::static_set_cputag(*device, "^maincpu"); + downcast<t1000_mb_device &>(*device).set_cputag("^maincpu"); /* video hardware */ MCFG_PCVIDEO_T1000_ADD("pcvideo_t1000") diff --git a/src/mame/drivers/tosh1000.cpp b/src/mame/drivers/tosh1000.cpp index 0589cef9f1f..d93bb180ba9 100644 --- a/src/mame/drivers/tosh1000.cpp +++ b/src/mame/drivers/tosh1000.cpp @@ -244,9 +244,9 @@ ADDRESS_MAP_END void tosh1000_state::cfg_fdc_35(device_t *device) { - device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "35dd"); - device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true); - device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), ""); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("35dd"); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true); + dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option(""); } MACHINE_CONFIG_START(tosh1000_state::tosh1000) diff --git a/src/mame/drivers/tv990.cpp b/src/mame/drivers/tv990.cpp index d3ea90bd866..edda41f49aa 100644 --- a/src/mame/drivers/tv990.cpp +++ b/src/mame/drivers/tv990.cpp @@ -351,7 +351,7 @@ INPUT_CHANGED_MEMBER(tv990_state::color) color = rgb_t::white(); break; } - m_screen->static_set_color(*m_screen, color); + m_screen->set_color(color); } void tv990_state::machine_reset() diff --git a/src/mame/includes/apollo.h b/src/mame/includes/apollo.h index ab4a2dd3174..4ad12ecd6b7 100644 --- a/src/mame/includes/apollo.h +++ b/src/mame/includes/apollo.h @@ -338,16 +338,16 @@ void apollo_csr_set_status_register(uint16_t mask, uint16_t data); MCFG_DEVICE_ADD(_tag, APOLLO_SIO, _clock) #define MCFG_APOLLO_SIO_IRQ_CALLBACK(_cb) \ - devcb = &apollo_sio::set_irq_cb(*device, DEVCB_##_cb); + devcb = &downcast<apollo_sio &>(*device).set_irq_cb(DEVCB_##_cb); #define MCFG_APOLLO_SIO_A_TX_CALLBACK(_cb) \ - devcb = &apollo_sio::set_a_tx_cb(*device, DEVCB_##_cb); + devcb = &downcast<apollo_sio &>(*device).set_a_tx_cb(DEVCB_##_cb); #define MCFG_APOLLO_SIO_B_TX_CALLBACK(_cb) \ - devcb = &apollo_sio::set_b_tx_cb(*device, DEVCB_##_cb); + devcb = &downcast<apollo_sio &>(*device).set_b_tx_cb(DEVCB_##_cb); #define MCFG_APOLLO_SIO_OUTPORT_CALLBACK(_cb) \ - devcb = &apollo_sio::set_outport_cb(*device, DEVCB_##_cb); + devcb = &downcast<apollo_sio &>(*device).set_outport_cb(DEVCB_##_cb); class apollo_sio: public duart_base_device { diff --git a/src/mame/machine/at.cpp b/src/mame/machine/at.cpp index 773d8494d88..9502d532fce 100644 --- a/src/mame/machine/at.cpp +++ b/src/mame/machine/at.cpp @@ -43,7 +43,7 @@ void at_mb_device::device_reset() void at_mb_device::device_start() { if(!strncmp(m_maincpu->shortname(), "i80286", 6)) - i80286_cpu_device::static_set_a20_callback(*m_maincpu, i80286_cpu_device::a20_cb(&at_mb_device::a20_286, this)); + downcast<i80286_cpu_device *>(m_maincpu.target())->set_a20_callback(i80286_cpu_device::a20_cb(&at_mb_device::a20_286, this)); } MACHINE_CONFIG_START(at_mb_device::at_softlists) diff --git a/src/mame/machine/fd1094.cpp b/src/mame/machine/fd1094.cpp index 590e582caf4..1692c2f969c 100644 --- a/src/mame/machine/fd1094.cpp +++ b/src/mame/machine/fd1094.cpp @@ -655,7 +655,7 @@ void fd1094_device::device_start() // register for the state changing callbacks we need in the m68000 set_cmpild_callback(write32_delegate(FUNC(fd1094_device::cmp_callback),this)); set_rte_callback(write_line_delegate(FUNC(fd1094_device::rte_callback),this)); - static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(fd1094_device::irq_callback), this)); + set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fd1094_device::irq_callback), this)); // save state save_item(NAME(m_state)); diff --git a/src/mame/machine/iteagle_fpga.cpp b/src/mame/machine/iteagle_fpga.cpp index 54595db3a3f..81aeec15293 100644 --- a/src/mame/machine/iteagle_fpga.cpp +++ b/src/mame/machine/iteagle_fpga.cpp @@ -689,7 +689,7 @@ void iteagle_eeprom_device::device_start() } m_iteagle_default_eeprom[0x3f] = checkSum; - eeprom_base_device::static_set_default_data(*m_eeprom, m_iteagle_default_eeprom.data(), 0x80); + m_eeprom->set_default_data(m_iteagle_default_eeprom.data(), 0x80); pci_device::device_start(); skip_map_regs(1); diff --git a/src/mame/machine/psxcd.cpp b/src/mame/machine/psxcd.cpp index b26bc7a9e5c..f8acf75be68 100644 --- a/src/mame/machine/psxcd.cpp +++ b/src/mame/machine/psxcd.cpp @@ -89,7 +89,7 @@ psxcd_device::psxcd_device(const machine_config &mconfig, const char *tag, devic cdrom_image_device(mconfig, PSXCD, tag, owner, clock), m_irq_handler(*this) { - static_set_interface(*this, "psx_cdrom"); + set_interface("psx_cdrom"); } diff --git a/src/mame/machine/teleprinter.h b/src/mame/machine/teleprinter.h index 9ad5d73aabb..2c6948de5e7 100644 --- a/src/mame/machine/teleprinter.h +++ b/src/mame/machine/teleprinter.h @@ -15,7 +15,7 @@ #define TELEPRINTER_SCREEN_TAG "tty_screen" #define MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(cb) \ - generic_terminal_device::set_keyboard_callback(*device, KEYBOARDCB_##cb); + downcast<generic_terminal_device &>(*device).set_keyboard_callback(KEYBOARDCB_##cb); /*************************************************************************** FUNCTION PROTOTYPES diff --git a/src/mame/video/k051316.cpp b/src/mame/video/k051316.cpp index 0c2d8514af0..528a7e6cbb8 100644 --- a/src/mame/video/k051316.cpp +++ b/src/mame/video/k051316.cpp @@ -121,19 +121,19 @@ void k051316_device::set_bpp(int bpp) switch(bpp) { case 4: - device_gfx_interface::static_set_info(*this, gfxinfo); + set_info(gfxinfo); m_pixels_per_byte = 2; break; case 7: - device_gfx_interface::static_set_info(*this, gfxinfo7); + set_info(gfxinfo7); m_pixels_per_byte = 1; break; case 8: - device_gfx_interface::static_set_info(*this, gfxinfo8); + set_info(gfxinfo8); m_pixels_per_byte = 1; break; case -4: - device_gfx_interface::static_set_info(*this, gfxinfo4_ram); + set_info(gfxinfo4_ram); m_pixels_per_byte = 2; break; default: diff --git a/src/mame/video/k051960.cpp b/src/mame/video/k051960.cpp index bf78ecdfceb..9a922bde19b 100644 --- a/src/mame/video/k051960.cpp +++ b/src/mame/video/k051960.cpp @@ -150,15 +150,15 @@ void k051960_device::set_plane_order(int order) switch (order) { case K051960_PLANEORDER_BASE: - device_gfx_interface::static_set_info(*this, gfxinfo); + set_info(gfxinfo); break; case K051960_PLANEORDER_MIA: - device_gfx_interface::static_set_info(*this, gfxinfo_reverse); + set_info(gfxinfo_reverse); break; case K051960_PLANEORDER_GRADIUS3: - device_gfx_interface::static_set_info(*this, gfxinfo_gradius3); + set_info(gfxinfo_gradius3); break; default: diff --git a/src/mame/video/k052109.cpp b/src/mame/video/k052109.cpp index bdb6d4fb6c1..de9c8fcd5b8 100644 --- a/src/mame/video/k052109.cpp +++ b/src/mame/video/k052109.cpp @@ -191,9 +191,9 @@ k052109_device::k052109_device(const machine_config &mconfig, const char *tag, d void k052109_device::set_ram(bool ram) { if (ram) - device_gfx_interface::static_set_info(*this, gfxinfo_ram); + set_info(gfxinfo_ram); else - device_gfx_interface::static_set_info(*this, gfxinfo); + set_info(gfxinfo); } diff --git a/src/mame/video/k053244_k053245.cpp b/src/mame/video/k053244_k053245.cpp index e1c422d18b7..6c3d8f3ed34 100644 --- a/src/mame/video/k053244_k053245.cpp +++ b/src/mame/video/k053244_k053245.cpp @@ -101,10 +101,10 @@ void k05324x_device::set_bpp(int bpp) switch(bpp) { case 4: - device_gfx_interface::static_set_info(*this, gfxinfo); + set_info(gfxinfo); break; case 6: - device_gfx_interface::static_set_info(*this, gfxinfo_6bpp); + set_info(gfxinfo_6bpp); break; default: fatalerror("Unsupported bpp\n"); |