summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine')
-rw-r--r--src/devices/machine/1mb5.h16
-rw-r--r--src/devices/machine/53c7xx.h12
-rw-r--r--src/devices/machine/53c810.h12
-rw-r--r--src/devices/machine/64h156.h12
-rw-r--r--src/devices/machine/6522via.h32
-rw-r--r--src/devices/machine/6525tpi.h36
-rw-r--r--src/devices/machine/6532riot.h20
-rw-r--r--src/devices/machine/68153bim.h28
-rw-r--r--src/devices/machine/6821pia.h44
-rw-r--r--src/devices/machine/68230pit.h48
-rw-r--r--src/devices/machine/68307.h18
-rw-r--r--src/devices/machine/68340.h51
-rw-r--r--src/devices/machine/6840ptm.h18
-rw-r--r--src/devices/machine/6850acia.h12
-rw-r--r--src/devices/machine/68561mpcc.h33
-rw-r--r--src/devices/machine/7200fifo.h16
-rw-r--r--src/devices/machine/7400.h16
-rw-r--r--src/devices/machine/7404.h24
-rw-r--r--src/devices/machine/74123.h28
-rw-r--r--src/devices/machine/74145.h40
-rw-r--r--src/devices/machine/74148.h4
-rw-r--r--src/devices/machine/74153.h11
-rw-r--r--src/devices/machine/74157.h12
-rw-r--r--src/devices/machine/74161.h24
-rw-r--r--src/devices/machine/74165.h12
-rw-r--r--src/devices/machine/74166.h11
-rw-r--r--src/devices/machine/74175.h48
-rw-r--r--src/devices/machine/74259.h22
-rw-r--r--src/devices/machine/7474.h8
-rw-r--r--src/devices/machine/8042kbdc.h24
-rw-r--r--src/devices/machine/82s129.h30
-rw-r--r--src/devices/machine/8364_paula.h11
-rw-r--r--src/devices/machine/8530scc.h4
-rw-r--r--src/devices/machine/aakart.h8
-rw-r--r--src/devices/machine/adc0808.h44
-rw-r--r--src/devices/machine/adc083x.h6
-rw-r--r--src/devices/machine/adc0844.h52
-rw-r--r--src/devices/machine/adc1038.h8
-rw-r--r--src/devices/machine/adc1213x.h4
-rw-r--r--src/devices/machine/akiko.h35
-rw-r--r--src/devices/machine/am53cf96.h4
-rw-r--r--src/devices/machine/am9513.h18
-rw-r--r--src/devices/machine/am9517a.h46
-rw-r--r--src/devices/machine/am9519.h4
-rw-r--r--src/devices/machine/amigafdc.h20
-rw-r--r--src/devices/machine/applefdc.h4
-rw-r--r--src/devices/machine/at45dbxx.h4
-rw-r--r--src/devices/machine/at_keybc.h24
-rw-r--r--src/devices/machine/ataintf.h12
-rw-r--r--src/devices/machine/atmel_arm_aic.h4
-rw-r--r--src/devices/machine/ay31015.h64
-rw-r--r--src/devices/machine/bankdev.h18
-rw-r--r--src/devices/machine/cdp1852.h16
-rw-r--r--src/devices/machine/cdp1871.h52
-rw-r--r--src/devices/machine/cdp1879.h4
-rw-r--r--src/devices/machine/clock.h4
-rw-r--r--src/devices/machine/com8116.h12
-rw-r--r--src/devices/machine/cr511b.h35
-rw-r--r--src/devices/machine/cs4031.cpp24
-rw-r--r--src/devices/machine/cs4031.h16
-rw-r--r--src/devices/machine/cs8221.cpp18
-rw-r--r--src/devices/machine/cs8221.h12
-rw-r--r--src/devices/machine/cxd1095.h36
-rw-r--r--src/devices/machine/dmac.h41
-rw-r--r--src/devices/machine/dp8390.h24
-rw-r--r--src/devices/machine/ds1315.h5
-rw-r--r--src/devices/machine/ds1386.h12
-rw-r--r--src/devices/machine/ds2404.cpp36
-rw-r--r--src/devices/machine/ds2404.h12
-rw-r--r--src/devices/machine/ds75161a.h64
-rw-r--r--src/devices/machine/e05a03.h20
-rw-r--r--src/devices/machine/e05a30.h36
-rw-r--r--src/devices/machine/eeprom.cpp57
-rw-r--r--src/devices/machine/eeprom.h24
-rw-r--r--src/devices/machine/eeprompar.cpp14
-rw-r--r--src/devices/machine/eeprompar.h6
-rw-r--r--src/devices/machine/eepromser.cpp38
-rw-r--r--src/devices/machine/eepromser.h17
-rw-r--r--src/devices/machine/f3853.h4
-rw-r--r--src/devices/machine/fga002.h20
-rw-r--r--src/devices/machine/gayle.cpp10
-rw-r--r--src/devices/machine/gayle.h33
-rw-r--r--src/devices/machine/gen_latch.h11
-rw-r--r--src/devices/machine/genpc.cpp6
-rw-r--r--src/devices/machine/genpc.h18
-rw-r--r--src/devices/machine/hd63450.h72
-rw-r--r--src/devices/machine/hd64610.h8
-rw-r--r--src/devices/machine/hdc92x4.h24
-rw-r--r--src/devices/machine/hp_taco.h14
-rw-r--r--src/devices/machine/i2cmem.h28
-rw-r--r--src/devices/machine/i7220.h12
-rw-r--r--src/devices/machine/i80130.h24
-rw-r--r--src/devices/machine/i8087.h12
-rw-r--r--src/devices/machine/i8155.h28
-rw-r--r--src/devices/machine/i8212.h16
-rw-r--r--src/devices/machine/i8214.h8
-rw-r--r--src/devices/machine/i82371sb.h4
-rw-r--r--src/devices/machine/i8243.h10
-rw-r--r--src/devices/machine/i8251.h30
-rw-r--r--src/devices/machine/i8255.h32
-rw-r--r--src/devices/machine/i82586.h4
-rw-r--r--src/devices/machine/i8271.h16
-rw-r--r--src/devices/machine/i8279.h28
-rw-r--r--src/devices/machine/i8355.h16
-rw-r--r--src/devices/machine/idectrl.h40
-rw-r--r--src/devices/machine/ie15_kbd.h4
-rw-r--r--src/devices/machine/im6402.h24
-rw-r--r--src/devices/machine/input_merger.h5
-rw-r--r--src/devices/machine/ins8154.h20
-rw-r--r--src/devices/machine/ins8250.h24
-rw-r--r--src/devices/machine/jvsdev.cpp6
-rw-r--r--src/devices/machine/jvsdev.h4
-rw-r--r--src/devices/machine/k033906.h4
-rw-r--r--src/devices/machine/k053252.cpp7
-rw-r--r--src/devices/machine/k053252.h28
-rw-r--r--src/devices/machine/k056230.h8
-rw-r--r--src/devices/machine/kb3600.h52
-rw-r--r--src/devices/machine/keyboard.h4
-rw-r--r--src/devices/machine/kr2376.h4
-rw-r--r--src/devices/machine/laserdsc.cpp94
-rw-r--r--src/devices/machine/laserdsc.h64
-rw-r--r--src/devices/machine/latch.h19
-rw-r--r--src/devices/machine/latch8.h48
-rw-r--r--src/devices/machine/legscsi.h4
-rw-r--r--src/devices/machine/lh5810.h24
-rw-r--r--src/devices/machine/mb8421.h10
-rw-r--r--src/devices/machine/mb87078.h4
-rw-r--r--src/devices/machine/mb8795.h16
-rw-r--r--src/devices/machine/mb89352.h8
-rw-r--r--src/devices/machine/mb89363b.h50
-rw-r--r--src/devices/machine/mc14411.h34
-rw-r--r--src/devices/machine/mc146818.h4
-rw-r--r--src/devices/machine/mc2661.h42
-rw-r--r--src/devices/machine/mc68328.h100
-rw-r--r--src/devices/machine/mc6843.h4
-rw-r--r--src/devices/machine/mc6846.h24
-rw-r--r--src/devices/machine/mc6852.h24
-rw-r--r--src/devices/machine/mc6854.h20
-rw-r--r--src/devices/machine/mc68681.cpp13
-rw-r--r--src/devices/machine/mc68681.h36
-rw-r--r--src/devices/machine/mc68901.h54
-rw-r--r--src/devices/machine/mccs1850.h12
-rw-r--r--src/devices/machine/meters.h4
-rw-r--r--src/devices/machine/microtch.h8
-rw-r--r--src/devices/machine/mm5740.h40
-rw-r--r--src/devices/machine/mm58167.h4
-rw-r--r--src/devices/machine/mm58274c.h8
-rw-r--r--src/devices/machine/mm74c922.h32
-rw-r--r--src/devices/machine/mos6526.h36
-rw-r--r--src/devices/machine/mos6529.h32
-rw-r--r--src/devices/machine/mos6530.h16
-rw-r--r--src/devices/machine/mos6530n.h92
-rw-r--r--src/devices/machine/mos6551.h24
-rw-r--r--src/devices/machine/mos8722.h20
-rw-r--r--src/devices/machine/msm58321.h30
-rw-r--r--src/devices/machine/msm6242.h4
-rw-r--r--src/devices/machine/msm6253.h30
-rw-r--r--src/devices/machine/myb3k_kbd.h6
-rw-r--r--src/devices/machine/ncr5380.h4
-rw-r--r--src/devices/machine/ncr5380n.h10
-rw-r--r--src/devices/machine/ncr5390.h10
-rw-r--r--src/devices/machine/ncr539x.h8
-rw-r--r--src/devices/machine/netlist.cpp75
-rw-r--r--src/devices/machine/netlist.h40
-rw-r--r--src/devices/machine/nsc810.h32
-rw-r--r--src/devices/machine/nvram.cpp25
-rw-r--r--src/devices/machine/nvram.h26
-rw-r--r--src/devices/machine/pc_fdc.h8
-rw-r--r--src/devices/machine/pc_lpt.h6
-rw-r--r--src/devices/machine/pci-ide.h4
-rw-r--r--src/devices/machine/pci9050.h8
-rw-r--r--src/devices/machine/pckeybrd.h16
-rw-r--r--src/devices/machine/pdc.h8
-rw-r--r--src/devices/machine/phi.h43
-rw-r--r--src/devices/machine/pic8259.h12
-rw-r--r--src/devices/machine/pit8253.h32
-rw-r--r--src/devices/machine/pla.h28
-rw-r--r--src/devices/machine/r10696.h8
-rw-r--r--src/devices/machine/r10788.h4
-rw-r--r--src/devices/machine/ra17xx.h12
-rw-r--r--src/devices/machine/ram.h14
-rw-r--r--src/devices/machine/rf5c296.h6
-rw-r--r--src/devices/machine/ripple_counter.cpp13
-rw-r--r--src/devices/machine/ripple_counter.h16
-rw-r--r--src/devices/machine/rp5c01.h8
-rw-r--r--src/devices/machine/rp5c15.h8
-rw-r--r--src/devices/machine/rstbuf.h10
-rw-r--r--src/devices/machine/rtc4543.h4
-rw-r--r--src/devices/machine/rtc65271.h4
-rw-r--r--src/devices/machine/s2636.h25
-rw-r--r--src/devices/machine/s3c2400.cpp10
-rw-r--r--src/devices/machine/s3c2400.h46
-rw-r--r--src/devices/machine/s3c2410.cpp10
-rw-r--r--src/devices/machine/s3c2410.h62
-rw-r--r--src/devices/machine/s3c2440.cpp11
-rw-r--r--src/devices/machine/s3c2440.h62
-rw-r--r--src/devices/machine/s3c44b0.h28
-rw-r--r--src/devices/machine/scnxx562.h69
-rw-r--r--src/devices/machine/sega_scu.cpp7
-rw-r--r--src/devices/machine/sega_scu.h2
-rw-r--r--src/devices/machine/smartmed.h117
-rw-r--r--src/devices/machine/smc91c9x.h8
-rw-r--r--src/devices/machine/smpc.cpp16
-rw-r--r--src/devices/machine/smpc.h97
-rw-r--r--src/devices/machine/steppers.h43
-rw-r--r--src/devices/machine/tc009xlvc.cpp11
-rw-r--r--src/devices/machine/tc009xlvc.h6
-rw-r--r--src/devices/machine/te7750.h55
-rw-r--r--src/devices/machine/terminal.h5
-rw-r--r--src/devices/machine/ticket.cpp30
-rw-r--r--src/devices/machine/ticket.h17
-rw-r--r--src/devices/machine/timekpr.h8
-rw-r--r--src/devices/machine/timer.cpp91
-rw-r--r--src/devices/machine/timer.h51
-rw-r--r--src/devices/machine/tmc0430.h16
-rw-r--r--src/devices/machine/tmp68301.h12
-rw-r--r--src/devices/machine/tms1024.h16
-rw-r--r--src/devices/machine/tms5501.h16
-rw-r--r--src/devices/machine/tms6100.h4
-rw-r--r--src/devices/machine/tms9901.h42
-rw-r--r--src/devices/machine/tms9902.h16
-rw-r--r--src/devices/machine/tube.h16
-rw-r--r--src/devices/machine/upd4701.h20
-rw-r--r--src/devices/machine/upd7002.h8
-rw-r--r--src/devices/machine/upd71071.h46
-rw-r--r--src/devices/machine/upd765.h18
-rw-r--r--src/devices/machine/vrc4373.cpp5
-rw-r--r--src/devices/machine/vrc4373.h4
-rw-r--r--src/devices/machine/vt82c496.h8
-rw-r--r--src/devices/machine/watchdog.cpp25
-rw-r--r--src/devices/machine/watchdog.h8
-rw-r--r--src/devices/machine/wd11c00_17.h44
-rw-r--r--src/devices/machine/wd2010.h60
-rw-r--r--src/devices/machine/wd33c93.h4
-rw-r--r--src/devices/machine/wd7600.cpp24
-rw-r--r--src/devices/machine/wd7600.h16
-rw-r--r--src/devices/machine/wd_fdc.h20
-rw-r--r--src/devices/machine/x2212.cpp11
-rw-r--r--src/devices/machine/x2212.h6
-rw-r--r--src/devices/machine/ym2148.h18
-rw-r--r--src/devices/machine/ym3802.h10
-rw-r--r--src/devices/machine/z80ctc.h16
-rw-r--r--src/devices/machine/z80dart.h75
-rw-r--r--src/devices/machine/z80dma.h28
-rw-r--r--src/devices/machine/z80pio.h28
-rw-r--r--src/devices/machine/z80scc.h65
-rw-r--r--src/devices/machine/z80sio.h54
-rw-r--r--src/devices/machine/z80sti.h42
-rw-r--r--src/devices/machine/z8536.h28
249 files changed, 2570 insertions, 3215 deletions
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 = &microtouch_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); }