summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author wilbertpol <wilbertpol@users.noreply.github.com>2018-03-03 18:18:08 +0100
committer Vas Crabb <cuavas@users.noreply.github.com>2018-03-04 04:18:08 +1100
commit3b923d59ccb8d2d8e386392518450006f8e644fe (patch)
tree73c48568e76d69edbde9f96a3f57d173dd05a747
parent25472091b626bd01ef47f11389a4b2ebe0fc0008 (diff)
destaticify initializations (nw) (#3289)
* destaticify initializations (nw) * fix this->set_screen (nw)
-rw-r--r--src/devices/bus/a1bus/a1bus.cpp21
-rw-r--r--src/devices/bus/a1bus/a1bus.h20
-rw-r--r--src/devices/bus/a2bus/a2bus.cpp22
-rw-r--r--src/devices/bus/a2bus/a2bus.h24
-rw-r--r--src/devices/bus/a2bus/a2eauxslot.cpp22
-rw-r--r--src/devices/bus/a2bus/a2eauxslot.h18
-rw-r--r--src/devices/bus/a2bus/a2mcms.cpp2
-rw-r--r--src/devices/bus/a2bus/a2mcms.h2
-rw-r--r--src/devices/bus/a800/a8sio.cpp16
-rw-r--r--src/devices/bus/a800/a8sio.h14
-rw-r--r--src/devices/bus/abckb/abckb.h12
-rw-r--r--src/devices/bus/adam/exp.h4
-rw-r--r--src/devices/bus/amiga/keyboard/keyboard.h17
-rw-r--r--src/devices/bus/amiga/zorro/zorro.cpp17
-rw-r--r--src/devices/bus/amiga/zorro/zorro.h58
-rw-r--r--src/devices/bus/apricot/expansion/expansion.cpp20
-rw-r--r--src/devices/bus/apricot/expansion/expansion.h43
-rw-r--r--src/devices/bus/apricot/keyboard/keyboard.h5
-rw-r--r--src/devices/bus/bbc/1mhzbus/1mhzbus.h11
-rw-r--r--src/devices/bus/bbc/fdc/fdc.h10
-rw-r--r--src/devices/bus/bbc/tube/tube.h5
-rw-r--r--src/devices/bus/bbc/userport/userport.h10
-rw-r--r--src/devices/bus/bml3/bml3bus.cpp22
-rw-r--r--src/devices/bus/bml3/bml3bus.h24
-rw-r--r--src/devices/bus/c64/exp.h24
-rw-r--r--src/devices/bus/cbm2/user.h16
-rw-r--r--src/devices/bus/centronics/ctronics.h68
-rw-r--r--src/devices/bus/cgenie/expansion/expansion.h17
-rw-r--r--src/devices/bus/coco/cococart.h12
-rw-r--r--src/devices/bus/coleco/ctrl.h4
-rw-r--r--src/devices/bus/comx35/exp.h4
-rw-r--r--src/devices/bus/cpc/cpcexp.h20
-rw-r--r--src/devices/bus/dmv/dmvbus.h20
-rw-r--r--src/devices/bus/ecbbus/ecbbus.cpp12
-rw-r--r--src/devices/bus/ecbbus/ecbbus.h12
-rw-r--r--src/devices/bus/econet/econet.cpp11
-rw-r--r--src/devices/bus/econet/econet.h12
-rw-r--r--src/devices/bus/einstein/pipe/pipe.h17
-rw-r--r--src/devices/bus/einstein/userport/userport.h5
-rw-r--r--src/devices/bus/electron/cart/slot.h11
-rw-r--r--src/devices/bus/electron/exp.h11
-rw-r--r--src/devices/bus/ep64/exp.h16
-rw-r--r--src/devices/bus/gamegear/ggext.h8
-rw-r--r--src/devices/bus/generic/slot.h8
-rw-r--r--src/devices/bus/hp80_io/hp80_io.h14
-rw-r--r--src/devices/bus/hp9845_io/hp9845_io.h12
-rw-r--r--src/devices/bus/hp_dio/hp_dio.cpp30
-rw-r--r--src/devices/bus/hp_dio/hp_dio.h32
-rw-r--r--src/devices/bus/hp_hil/hp_hil.cpp16
-rw-r--r--src/devices/bus/hp_hil/hp_hil.h14
-rw-r--r--src/devices/bus/ieee488/c2040fdc.h12
-rw-r--r--src/devices/bus/ieee488/c8050fdc.h16
-rw-r--r--src/devices/bus/intellec4/intellec4.cpp50
-rw-r--r--src/devices/bus/intellec4/intellec4.h50
-rw-r--r--src/devices/bus/interpro/keyboard/keyboard.h4
-rw-r--r--src/devices/bus/interpro/sr/sr.cpp10
-rw-r--r--src/devices/bus/interpro/sr/sr.h14
-rw-r--r--src/devices/bus/iq151/iq151.h24
-rw-r--r--src/devices/bus/isa/gus.h44
-rw-r--r--src/devices/bus/isa/hdc.h8
-rw-r--r--src/devices/bus/isa/isa.cpp37
-rw-r--r--src/devices/bus/isa/isa.h94
-rw-r--r--src/devices/bus/kc/kc.cpp7
-rw-r--r--src/devices/bus/kc/kc.h24
-rw-r--r--src/devices/bus/lpci/i82371sb.h4
-rw-r--r--src/devices/bus/lpci/i82439tx.h8
-rw-r--r--src/devices/bus/lpci/mpc105.h8
-rw-r--r--src/devices/bus/macpds/macpds.cpp22
-rw-r--r--src/devices/bus/macpds/macpds.h12
-rw-r--r--src/devices/bus/macpds/pds_tpdfpd.cpp2
-rw-r--r--src/devices/bus/midi/midi.h4
-rw-r--r--src/devices/bus/msx_cart/yamaha.cpp2
-rw-r--r--src/devices/bus/msx_slot/bunsetsu.h8
-rw-r--r--src/devices/bus/msx_slot/cartridge.h6
-rw-r--r--src/devices/bus/msx_slot/disk.h64
-rw-r--r--src/devices/bus/msx_slot/fs4600.cpp9
-rw-r--r--src/devices/bus/msx_slot/fs4600.h6
-rw-r--r--src/devices/bus/msx_slot/music.h8
-rw-r--r--src/devices/bus/msx_slot/panasonic08.cpp9
-rw-r--r--src/devices/bus/msx_slot/panasonic08.h6
-rw-r--r--src/devices/bus/msx_slot/ram.h4
-rw-r--r--src/devices/bus/msx_slot/ram_mm.h8
-rw-r--r--src/devices/bus/msx_slot/rom.cpp9
-rw-r--r--src/devices/bus/msx_slot/rom.h6
-rw-r--r--src/devices/bus/msx_slot/slot.cpp15
-rw-r--r--src/devices/bus/msx_slot/slot.h10
-rw-r--r--src/devices/bus/msx_slot/sony08.cpp9
-rw-r--r--src/devices/bus/msx_slot/sony08.h6
-rw-r--r--src/devices/bus/nasbus/nasbus.cpp7
-rw-r--r--src/devices/bus/nasbus/nasbus.h9
-rw-r--r--src/devices/bus/nes_ctrl/ctrl.h4
-rw-r--r--src/devices/bus/nubus/nubus.cpp22
-rw-r--r--src/devices/bus/nubus/nubus.h36
-rw-r--r--src/devices/bus/nubus/nubus_48gc.cpp2
-rw-r--r--src/devices/bus/nubus/nubus_m2hires.cpp2
-rw-r--r--src/devices/bus/nubus/nubus_m2video.cpp2
-rw-r--r--src/devices/bus/nubus/nubus_radiustpd.cpp2
-rw-r--r--src/devices/bus/nubus/nubus_spec8.cpp2
-rw-r--r--src/devices/bus/nubus/nubus_specpdq.cpp2
-rw-r--r--src/devices/bus/nubus/nubus_wsportrait.cpp2
-rw-r--r--src/devices/bus/nubus/pds30_30hr.cpp2
-rw-r--r--src/devices/bus/nubus/pds30_cb264.cpp2
-rw-r--r--src/devices/bus/nubus/pds30_mc30.cpp2
-rw-r--r--src/devices/bus/nubus/pds30_procolor816.cpp2
-rw-r--r--src/devices/bus/nubus/pds30_sigmalview.cpp2
-rw-r--r--src/devices/bus/oricext/oricext.h4
-rw-r--r--src/devices/bus/pc1512/mouse.h16
-rw-r--r--src/devices/bus/pc_kbd/pc_kbdc.cpp15
-rw-r--r--src/devices/bus/pc_kbd/pc_kbdc.h14
-rw-r--r--src/devices/bus/pet/cass.h4
-rw-r--r--src/devices/bus/pet/user.h76
-rw-r--r--src/devices/bus/plus4/exp.h16
-rw-r--r--src/devices/bus/pofo/exp.h12
-rw-r--r--src/devices/bus/psi_kbd/psi_kbd.h11
-rw-r--r--src/devices/bus/psx/ctlrport.h8
-rw-r--r--src/devices/bus/ql/exp.h16
-rw-r--r--src/devices/bus/rs232/rs232.h28
-rw-r--r--src/devices/bus/s100/s100.h68
-rw-r--r--src/devices/bus/scsi/scsi.h68
-rw-r--r--src/devices/bus/sms_ctrl/lphaser.cpp2
-rw-r--r--src/devices/bus/sms_ctrl/smsctrl.h8
-rw-r--r--src/devices/bus/snes_ctrl/ctrl.h8
-rw-r--r--src/devices/bus/spectrum/exp.h11
-rw-r--r--src/devices/bus/ss50/interface.h8
-rw-r--r--src/devices/bus/sunkbd/sunkbd.h4
-rw-r--r--src/devices/bus/svi3x8/expander/expander.h41
-rw-r--r--src/devices/bus/svi3x8/slot/slot.cpp11
-rw-r--r--src/devices/bus/svi3x8/slot/slot.h21
-rw-r--r--src/devices/bus/ti8x/ti8x.h10
-rw-r--r--src/devices/bus/ti99/gromport/gromport.h14
-rw-r--r--src/devices/bus/ti99/internal/998board.h25
-rw-r--r--src/devices/bus/ti99/internal/datamux.h7
-rw-r--r--src/devices/bus/ti99/internal/evpcconn.h7
-rw-r--r--src/devices/bus/ti99/internal/genboard.h8
-rw-r--r--src/devices/bus/ti99/internal/ioport.h8
-rw-r--r--src/devices/bus/ti99/joyport/joyport.h4
-rw-r--r--src/devices/bus/ti99/peb/peribox.h16
-rw-r--r--src/devices/bus/ti99x/990_dk.h7
-rw-r--r--src/devices/bus/ti99x/990_hd.h4
-rw-r--r--src/devices/bus/ti99x/990_tap.h7
-rw-r--r--src/devices/bus/tiki100/exp.h20
-rw-r--r--src/devices/bus/tvc/tvc.h8
-rw-r--r--src/devices/bus/vcs_ctrl/ctrl.h4
-rw-r--r--src/devices/bus/vic10/exp.h16
-rw-r--r--src/devices/bus/vic20/exp.h12
-rw-r--r--src/devices/bus/vidbrain/exp.h4
-rw-r--r--src/devices/bus/vip/exp.h12
-rw-r--r--src/devices/bus/vme/vme.cpp40
-rw-r--r--src/devices/bus/vme/vme.h22
-rw-r--r--src/devices/bus/vtech/memexp/memexp.h17
-rw-r--r--src/devices/bus/wangpc/wangpc.cpp7
-rw-r--r--src/devices/bus/wangpc/wangpc.h44
-rw-r--r--src/devices/bus/x68k/x68kexp.h16
-rw-r--r--src/devices/bus/z88/z88.h4
-rw-r--r--src/devices/cpu/adsp2100/adsp2100.h16
-rw-r--r--src/devices/cpu/amis2000/amis2000.h30
-rw-r--r--src/devices/cpu/apexc/apexc.h18
-rw-r--r--src/devices/cpu/arm/arm.h4
-rw-r--r--src/devices/cpu/arm7/arm7.h8
-rw-r--r--src/devices/cpu/arm7/lpc210x.h3
-rw-r--r--src/devices/cpu/avr8/avr8.h4
-rw-r--r--src/devices/cpu/ccpu/ccpu.h10
-rw-r--r--src/devices/cpu/cop400/cop400.h60
-rw-r--r--src/devices/cpu/cosmac/cosmac.h40
-rw-r--r--src/devices/cpu/cubeqcpu/cubeqcpu.h22
-rw-r--r--src/devices/cpu/dsp32/dsp32.h4
-rw-r--r--src/devices/cpu/e0c6200/e0c6s46.h42
-rw-r--r--src/devices/cpu/esrip/esrip.h20
-rw-r--r--src/devices/cpu/h8/h83002.h8
-rw-r--r--src/devices/cpu/h8/h8_sci.h8
-rw-r--r--src/devices/cpu/hcd62121/hcd62121.h24
-rw-r--r--src/devices/cpu/hd61700/hd61700.h28
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.h50
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.h8
-rw-r--r--src/devices/cpu/i386/i386.h10
-rw-r--r--src/devices/cpu/i8085/i8085.h24
-rw-r--r--src/devices/cpu/i8089/i8089.h6
-rw-r--r--src/devices/cpu/i86/i186.cpp4
-rw-r--r--src/devices/cpu/i86/i186.h16
-rw-r--r--src/devices/cpu/i86/i286.h8
-rw-r--r--src/devices/cpu/i86/i86.h22
-rw-r--r--src/devices/cpu/jaguar/jaguar.h6
-rw-r--r--src/devices/cpu/lc8670/lc8670.h20
-rw-r--r--src/devices/cpu/lh5801/lh5801.h6
-rw-r--r--src/devices/cpu/lr35902/lr35902.h14
-rw-r--r--src/devices/cpu/m6502/m5074x.h32
-rw-r--r--src/devices/cpu/m6502/m6502.h4
-rw-r--r--src/devices/cpu/m6502/xavix.h4
-rw-r--r--src/devices/cpu/m6800/m6801.h10
-rw-r--r--src/devices/cpu/m6805/m68705.h22
-rw-r--r--src/devices/cpu/m6805/m68hc05.h29
-rw-r--r--src/devices/cpu/m6809/konami.h4
-rw-r--r--src/devices/cpu/m6809/m6809.h6
-rw-r--r--src/devices/cpu/mb86233/mb86233.h18
-rw-r--r--src/devices/cpu/mb88xx/mb88xx.h46
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.h12
-rw-r--r--src/devices/cpu/mcs40/mcs40.h90
-rw-r--r--src/devices/cpu/mcs48/mcs48.h38
-rw-r--r--src/devices/cpu/mcs51/mcs51.h42
-rw-r--r--src/devices/cpu/melps4/melps4.h44
-rw-r--r--src/devices/cpu/mips/mips3.h12
-rw-r--r--src/devices/cpu/mips/r3000.h38
-rw-r--r--src/devices/cpu/mn10200/mn10200.h28
-rw-r--r--src/devices/cpu/nanoprocessor/nanoprocessor.h8
-rw-r--r--src/devices/cpu/nec/v25.h34
-rw-r--r--src/devices/cpu/nec/v53.cpp2
-rw-r--r--src/devices/cpu/nec/v53.h116
-rw-r--r--src/devices/cpu/patinhofeio/patinhofeio_cpu.h18
-rw-r--r--src/devices/cpu/pdp1/pdp1.h4
-rw-r--r--src/devices/cpu/pdp1/tx0.h42
-rw-r--r--src/devices/cpu/pic16c5x/pic16c5x.h39
-rw-r--r--src/devices/cpu/powerpc/ppc.h6
-rw-r--r--src/devices/cpu/pps4/pps4.h14
-rw-r--r--src/devices/cpu/psx/dma.h6
-rw-r--r--src/devices/cpu/psx/irq.h6
-rw-r--r--src/devices/cpu/psx/psx.cpp5
-rw-r--r--src/devices/cpu/psx/psx.h28
-rw-r--r--src/devices/cpu/psx/rcnt.h14
-rw-r--r--src/devices/cpu/psx/sio.h22
-rw-r--r--src/devices/cpu/rsp/rsp.h20
-rw-r--r--src/devices/cpu/s2650/s2650.h14
-rw-r--r--src/devices/cpu/saturn/saturn.h34
-rw-r--r--src/devices/cpu/sc61860/sc61860.h34
-rw-r--r--src/devices/cpu/scmp/scmp.h26
-rw-r--r--src/devices/cpu/scudsp/scudsp.h12
-rw-r--r--src/devices/cpu/sh/sh2.h16
-rw-r--r--src/devices/cpu/sh/sh4.h48
-rw-r--r--src/devices/cpu/sharc/sharc.h6
-rw-r--r--src/devices/cpu/sm510/sm500.h6
-rw-r--r--src/devices/cpu/sm510/sm510.h44
-rw-r--r--src/devices/cpu/sm8500/sm8500.h10
-rw-r--r--src/devices/cpu/sparc/sparc.h4
-rw-r--r--src/devices/cpu/superfx/superfx.h6
-rw-r--r--src/devices/cpu/t11/t11.h10
-rw-r--r--src/devices/cpu/tlcs90/tlcs90.h46
-rw-r--r--src/devices/cpu/tlcs900/900tbl.hxx2796
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.h962
-rw-r--r--src/devices/cpu/tms1000/tms0270.h14
-rw-r--r--src/devices/cpu/tms1000/tms1k_base.h22
-rw-r--r--src/devices/cpu/tms32010/tms32010.h6
-rw-r--r--src/devices/cpu/tms32025/tms32025.h26
-rw-r--r--src/devices/cpu/tms32031/tms32031.h16
-rw-r--r--src/devices/cpu/tms34010/tms34010.h34
-rw-r--r--src/devices/cpu/tms7000/tms7000.h26
-rw-r--r--src/devices/cpu/tms9900/tms9900.h14
-rw-r--r--src/devices/cpu/tms9900/tms9995.h20
-rw-r--r--src/devices/cpu/tms9900/tms99com.h14
-rw-r--r--src/devices/cpu/ucom4/ucom4.h48
-rw-r--r--src/devices/cpu/upd7725/upd7725.h44
-rw-r--r--src/devices/cpu/upd7810/upd7810.h102
-rw-r--r--src/devices/cpu/z8/z8.h28
-rw-r--r--src/devices/cpu/z80/kl5c80a12.h2
-rw-r--r--src/devices/cpu/z80/tmpz84c011.h58
-rw-r--r--src/devices/cpu/z80/tmpz84c015.h104
-rw-r--r--src/devices/cpu/z80/z80.h12
-rw-r--r--src/devices/cpu/z80/z80daisy.cpp13
-rw-r--r--src/devices/cpu/z80/z80daisy.h4
-rw-r--r--src/devices/cpu/z80/z80daisy_generic.cpp10
-rw-r--r--src/devices/cpu/z80/z80daisy_generic.h9
-rw-r--r--src/devices/cpu/z8000/z8000.h4
-rw-r--r--src/devices/imagedev/bitbngr.h8
-rw-r--r--src/devices/imagedev/cassette.h16
-rw-r--r--src/devices/imagedev/chd_cd.h4
-rw-r--r--src/devices/imagedev/diablo.h12
-rw-r--r--src/devices/imagedev/flopdrv.h8
-rw-r--r--src/devices/imagedev/harddriv.h12
-rw-r--r--src/devices/imagedev/midiin.h4
-rw-r--r--src/devices/imagedev/printer.h4
-rw-r--r--src/devices/imagedev/snapquik.h6
-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
-rw-r--r--src/emu/devcpu.cpp11
-rw-r--r--src/emu/devcpu.h4
-rw-r--r--src/emu/device.cpp12
-rw-r--r--src/emu/device.h48
-rw-r--r--src/emu/diexec.cpp58
-rw-r--r--src/emu/diexec.h38
-rw-r--r--src/emu/digfx.cpp31
-rw-r--r--src/emu/digfx.h10
-rw-r--r--src/emu/diimage.h10
-rw-r--r--src/emu/dioutput.h8
-rw-r--r--src/emu/dirom.cpp9
-rw-r--r--src/emu/dirom.h4
-rw-r--r--src/emu/dislot.cpp40
-rw-r--r--src/emu/dislot.h38
-rw-r--r--src/emu/disound.cpp34
-rw-r--r--src/emu/disound.h17
-rw-r--r--src/emu/divideo.cpp15
-rw-r--r--src/emu/divideo.h6
-rw-r--r--src/emu/emupal.cpp63
-rw-r--r--src/emu/emupal.h72
-rw-r--r--src/emu/mconfig.cpp4
-rw-r--r--src/emu/screen.cpp153
-rw-r--r--src/emu/screen.h81
-rw-r--r--src/emu/softlist_dev.cpp24
-rw-r--r--src/emu/softlist_dev.h8
-rw-r--r--src/emu/speaker.cpp14
-rw-r--r--src/emu/speaker.h4
-rw-r--r--src/emu/tilemap.cpp81
-rw-r--r--src/emu/tilemap.h43
-rw-r--r--src/emu/validity.cpp4
-rw-r--r--src/mame/drivers/asst128.cpp2
-rw-r--r--src/mame/drivers/at.cpp8
-rw-r--r--src/mame/drivers/europc.cpp6
-rw-r--r--src/mame/drivers/ksys573.cpp2
-rw-r--r--src/mame/drivers/m24.cpp2
-rw-r--r--src/mame/drivers/microvsn.cpp30
-rw-r--r--src/mame/drivers/milton6805.cpp4
-rw-r--r--src/mame/drivers/mtouchxl.cpp18
-rw-r--r--src/mame/drivers/next.cpp2
-rw-r--r--src/mame/drivers/pc.cpp16
-rw-r--r--src/mame/drivers/rainbow.cpp2
-rw-r--r--src/mame/drivers/saturn.cpp10
-rw-r--r--src/mame/drivers/stv.cpp4
-rw-r--r--src/mame/drivers/tandy1t.cpp12
-rw-r--r--src/mame/drivers/tosh1000.cpp6
-rw-r--r--src/mame/drivers/tv990.cpp2
-rw-r--r--src/mame/includes/apollo.h8
-rw-r--r--src/mame/machine/at.cpp2
-rw-r--r--src/mame/machine/fd1094.cpp2
-rw-r--r--src/mame/machine/iteagle_fpga.cpp2
-rw-r--r--src/mame/machine/psxcd.cpp2
-rw-r--r--src/mame/machine/teleprinter.h2
-rw-r--r--src/mame/video/k051316.cpp8
-rw-r--r--src/mame/video/k051960.cpp6
-rw-r--r--src/mame/video/k052109.cpp4
-rw-r--r--src/mame/video/k053244_k053245.cpp4
574 files changed, 6862 insertions, 8616 deletions
diff --git a/src/devices/bus/a1bus/a1bus.cpp b/src/devices/bus/a1bus/a1bus.cpp
index d1f0bbd7fe0..0b90ed0b000 100644
--- a/src/devices/bus/a1bus/a1bus.cpp
+++ b/src/devices/bus/a1bus/a1bus.cpp
@@ -36,13 +36,6 @@ a1bus_slot_device::a1bus_slot_device(const machine_config &mconfig, device_type
{
}
-void a1bus_slot_device::static_set_a1bus_slot(device_t &device, const char *tag, const char *slottag)
-{
- a1bus_slot_device &a1bus_card = dynamic_cast<a1bus_slot_device &>(device);
- a1bus_card.m_a1bus_tag = tag;
- a1bus_card.m_a1bus_slottag = slottag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -51,7 +44,7 @@ void a1bus_slot_device::device_start()
{
device_a1bus_card_interface *dev = dynamic_cast<device_a1bus_card_interface *>(get_card_device());
- if (dev) device_a1bus_card_interface::static_set_a1bus_tag(*dev, m_a1bus_tag, m_a1bus_slottag);
+ if (dev) dev->set_a1bus_tag(m_a1bus_tag, m_a1bus_slottag);
}
//**************************************************************************
@@ -60,12 +53,6 @@ void a1bus_slot_device::device_start()
DEFINE_DEVICE_TYPE(A1BUS, a1bus_device, "a1bus", "Apple I Bus")
-void a1bus_device::static_set_cputag(device_t &device, const char *tag)
-{
- a1bus_device &a1bus = downcast<a1bus_device &>(device);
- a1bus.m_cputag = tag;
-}
-
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
@@ -181,12 +168,6 @@ device_a1bus_card_interface::~device_a1bus_card_interface()
{
}
-void device_a1bus_card_interface::static_set_a1bus_tag(device_t &device, const char *tag, const char *slottag)
-{
- device_a1bus_card_interface &a1bus_card = dynamic_cast<device_a1bus_card_interface &>(device);
- a1bus_card.m_a1bus_tag = tag;
- a1bus_card.m_a1bus_slottag = slottag;
-}
void device_a1bus_card_interface::set_a1bus_device()
{
diff --git a/src/devices/bus/a1bus/a1bus.h b/src/devices/bus/a1bus/a1bus.h
index 320a2d9bc80..c380a5fe46d 100644
--- a/src/devices/bus/a1bus/a1bus.h
+++ b/src/devices/bus/a1bus/a1bus.h
@@ -17,25 +17,25 @@
//**************************************************************************
#define MCFG_A1BUS_CPU(_cputag) \
- a1bus_device::static_set_cputag(*device, _cputag);
+ downcast<a1bus_device &>(*device).set_cputag(_cputag);
#define MCFG_A1BUS_OUT_IRQ_CB(_devcb) \
- devcb = &a1bus_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<a1bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_A1BUS_OUT_NMI_CB(_devcb) \
- devcb = &a1bus_device::set_out_nmi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<a1bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_A1BUS_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, A1BUS_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- a1bus_slot_device::static_set_a1bus_slot(*device, _nbtag, _tag);
+ downcast<a1bus_slot_device &>(*device).set_a1bus_slot(_nbtag, _tag);
#define MCFG_A1BUS_SLOT_REMOVE(_tag) \
MCFG_DEVICE_REMOVE(_tag)
#define MCFG_A1BUS_ONBOARD_ADD(_nbtag, _tag, _dev_type, _def_inp) \
MCFG_DEVICE_ADD(_tag, _dev_type, 0) \
MCFG_DEVICE_INPUT_DEFAULTS(_def_inp) \
- device_a1bus_card_interface::static_set_a1bus_tag(*device, _nbtag, _tag);
+ downcast<device_a1bus_card_interface &>(*device).set_a1bus_tag(_nbtag, _tag);
//**************************************************************************
// TYPE DEFINITIONS
@@ -51,7 +51,7 @@ public:
a1bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_a1bus_slot(device_t &device, const char *tag, const char *slottag);
+ void set_a1bus_slot(const char *tag, const char *slottag) { m_a1bus_tag = tag; m_a1bus_slottag = slottag; }
protected:
a1bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -76,9 +76,9 @@ public:
a1bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<a1bus_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<a1bus_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ void set_cputag(const char *tag) { m_cputag = tag; }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
void add_a1bus_card(device_a1bus_card_interface *card);
device_a1bus_card_interface *get_a1bus_card();
@@ -136,7 +136,7 @@ public:
void install_bank(offs_t start, offs_t end, char *tag, uint8_t *data);
// inline configuration
- static void static_set_a1bus_tag(device_t &device, const char *tag, const char *slottag);
+ void set_a1bus_tag(const char *tag, const char *slottag) { m_a1bus_tag = tag; m_a1bus_slottag = slottag; }
protected:
device_a1bus_card_interface(const machine_config &mconfig, device_t &device);
diff --git a/src/devices/bus/a2bus/a2bus.cpp b/src/devices/bus/a2bus/a2bus.cpp
index bd1f1fdfe3a..a279ce3a9d6 100644
--- a/src/devices/bus/a2bus/a2bus.cpp
+++ b/src/devices/bus/a2bus/a2bus.cpp
@@ -100,13 +100,6 @@ a2bus_slot_device::a2bus_slot_device(const machine_config &mconfig, device_type
{
}
-void a2bus_slot_device::static_set_a2bus_slot(device_t &device, const char *tag, const char *slottag)
-{
- a2bus_slot_device &a2bus_card = dynamic_cast<a2bus_slot_device &>(device);
- a2bus_card.m_a2bus_tag = tag;
- a2bus_card.m_a2bus_slottag = slottag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -115,7 +108,7 @@ void a2bus_slot_device::device_start()
{
device_a2bus_card_interface *dev = dynamic_cast<device_a2bus_card_interface *>(get_card_device());
- if (dev) device_a2bus_card_interface::static_set_a2bus_tag(*dev, m_a2bus_tag, m_a2bus_slottag);
+ if (dev) dev->set_a2bus_tag(m_a2bus_tag, m_a2bus_slottag);
}
//**************************************************************************
@@ -124,12 +117,6 @@ void a2bus_slot_device::device_start()
DEFINE_DEVICE_TYPE(A2BUS, a2bus_device, "a2bus", "Apple II Bus")
-void a2bus_device::static_set_cputag(device_t &device, const char *tag)
-{
- a2bus_device &a2bus = downcast<a2bus_device &>(device);
- a2bus.m_cputag = tag;
-}
-
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
@@ -304,13 +291,6 @@ device_a2bus_card_interface::~device_a2bus_card_interface()
{
}
-void device_a2bus_card_interface::static_set_a2bus_tag(device_t &device, const char *tag, const char *slottag)
-{
- device_a2bus_card_interface &a2bus_card = dynamic_cast<device_a2bus_card_interface &>(device);
- a2bus_card.m_a2bus_tag = tag;
- a2bus_card.m_a2bus_slottag = slottag;
-}
-
void device_a2bus_card_interface::interface_pre_start()
{
if (!m_a2bus)
diff --git a/src/devices/bus/a2bus/a2bus.h b/src/devices/bus/a2bus/a2bus.h
index cf02e2099f9..e008bfcb15c 100644
--- a/src/devices/bus/a2bus/a2bus.h
+++ b/src/devices/bus/a2bus/a2bus.h
@@ -28,28 +28,28 @@
//**************************************************************************
#define MCFG_A2BUS_CPU(_cputag) \
- a2bus_device::static_set_cputag(*device, _cputag);
+ downcast<a2bus_device &>(*device).set_cputag(_cputag);
#define MCFG_A2BUS_OUT_IRQ_CB(_devcb) \
- devcb = &a2bus_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<a2bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_A2BUS_OUT_NMI_CB(_devcb) \
- devcb = &a2bus_device::set_out_nmi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<a2bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_A2BUS_OUT_INH_CB(_devcb) \
- devcb = &a2bus_device::set_out_inh_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<a2bus_device &>(*device).set_out_inh_callback(DEVCB_##_devcb);
#define MCFG_A2BUS_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, A2BUS_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- a2bus_slot_device::static_set_a2bus_slot(*device, _nbtag, _tag);
+ downcast<a2bus_slot_device &>(*device).set_a2bus_slot(_nbtag, _tag);
#define MCFG_A2BUS_SLOT_REMOVE(_tag) \
MCFG_DEVICE_REMOVE(_tag)
#define MCFG_A2BUS_ONBOARD_ADD(_nbtag, _tag, _dev_type, _def_inp) \
MCFG_DEVICE_ADD(_tag, _dev_type, 0) \
MCFG_DEVICE_INPUT_DEFAULTS(_def_inp) \
- device_a2bus_card_interface::static_set_a2bus_tag(*device, _nbtag, _tag);
+ dynamic_cast<device_a2bus_card_interface &>(*device).set_a2bus_tag(_nbtag, _tag);
// 7M = XTAL(14'318'181) / 2 or XTAL(28'636'363) / 4 (for IIgs)
static constexpr uint32_t A2BUS_7M_CLOCK = 7159090;
@@ -68,7 +68,7 @@ public:
a2bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_a2bus_slot(device_t &device, const char *tag, const char *slottag);
+ void set_a2bus_slot(const char *tag, const char *slottag) { m_a2bus_tag = tag; m_a2bus_slottag = slottag; }
protected:
a2bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -95,10 +95,10 @@ public:
a2bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<a2bus_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<a2bus_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_inh_callback(device_t &device, Object &&cb) { return downcast<a2bus_device &>(device).m_out_inh_cb.set_callback(std::forward<Object>(cb)); }
+ void set_cputag(const char *tag) { m_cputag = tag; }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_inh_callback(Object &&cb) { return m_out_inh_cb.set_callback(std::forward<Object>(cb)); }
void add_a2bus_card(int slot, device_a2bus_card_interface *card);
device_a2bus_card_interface *get_a2bus_card(int slot);
@@ -188,7 +188,7 @@ public:
void slot_dma_write_no_space(uint16_t offset, uint8_t data) { m_a2bus->dma_nospace_w(offset, data); }
// inline configuration
- static void static_set_a2bus_tag(device_t &device, const char *tag, const char *slottag);
+ void set_a2bus_tag(const char *tag, const char *slottag) { m_a2bus_tag = tag; m_a2bus_slottag = slottag; }
protected:
device_a2bus_card_interface(const machine_config &mconfig, device_t &device);
diff --git a/src/devices/bus/a2bus/a2eauxslot.cpp b/src/devices/bus/a2bus/a2eauxslot.cpp
index 7e3ba7ca8e3..6885d528128 100644
--- a/src/devices/bus/a2bus/a2eauxslot.cpp
+++ b/src/devices/bus/a2bus/a2eauxslot.cpp
@@ -38,13 +38,6 @@ a2eauxslot_slot_device::a2eauxslot_slot_device(const machine_config &mconfig, de
{
}
-void a2eauxslot_slot_device::static_set_a2eauxslot_slot(device_t &device, const char *tag, const char *slottag)
-{
- a2eauxslot_slot_device &a2eauxslot_card = dynamic_cast<a2eauxslot_slot_device &>(device);
- a2eauxslot_card.m_a2eauxslot_tag = tag;
- a2eauxslot_card.m_a2eauxslot_slottag = slottag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -53,7 +46,7 @@ void a2eauxslot_slot_device::device_start()
{
device_a2eauxslot_card_interface *dev = dynamic_cast<device_a2eauxslot_card_interface *>(get_card_device());
- if (dev) device_a2eauxslot_card_interface::static_set_a2eauxslot_tag(*dev, m_a2eauxslot_tag, m_a2eauxslot_slottag);
+ if (dev) dev->set_a2eauxslot_tag(m_a2eauxslot_tag, m_a2eauxslot_slottag);
}
//**************************************************************************
@@ -62,12 +55,6 @@ void a2eauxslot_slot_device::device_start()
DEFINE_DEVICE_TYPE(A2EAUXSLOT, a2eauxslot_device, "a2eauxslot", "Apple IIe AUX Bus")
-void a2eauxslot_device::static_set_cputag(device_t &device, const char *tag)
-{
- a2eauxslot_device &a2eauxslot = downcast<a2eauxslot_device &>(device);
- a2eauxslot.m_cputag = tag;
-}
-
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
@@ -167,13 +154,6 @@ device_a2eauxslot_card_interface::~device_a2eauxslot_card_interface()
{
}
-void device_a2eauxslot_card_interface::static_set_a2eauxslot_tag(device_t &device, const char *tag, const char *slottag)
-{
- device_a2eauxslot_card_interface &a2eauxslot_card = dynamic_cast<device_a2eauxslot_card_interface &>(device);
- a2eauxslot_card.m_a2eauxslot_tag = tag;
- a2eauxslot_card.m_a2eauxslot_slottag = slottag;
-}
-
void device_a2eauxslot_card_interface::set_a2eauxslot_device()
{
m_a2eauxslot = dynamic_cast<a2eauxslot_device *>(device().machine().device(m_a2eauxslot_tag));
diff --git a/src/devices/bus/a2bus/a2eauxslot.h b/src/devices/bus/a2bus/a2eauxslot.h
index efc7917221d..2101f5cfc6b 100644
--- a/src/devices/bus/a2bus/a2eauxslot.h
+++ b/src/devices/bus/a2bus/a2eauxslot.h
@@ -20,18 +20,18 @@
//**************************************************************************
#define MCFG_A2EAUXSLOT_CPU(_cputag) \
- a2eauxslot_device::static_set_cputag(*device, _cputag);
+ downcast<a2eauxslot_device &>(*device).set_cputag(_cputag);
#define MCFG_A2EAUXSLOT_OUT_IRQ_CB(_devcb) \
- devcb = &a2eauxslot_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<a2eauxslot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_A2EAUXSLOT_OUT_NMI_CB(_devcb) \
- devcb = &a2eauxslot_device::set_out_nmi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<a2eauxslot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_A2EAUXSLOT_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, A2EAUXSLOT_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- a2eauxslot_slot_device::static_set_a2eauxslot_slot(*device, _nbtag, _tag);
+ downcast<a2eauxslot_slot_device &>(*device).set_a2eauxslot_slot(_nbtag, _tag);
#define MCFG_A2EAUXSLOT_SLOT_REMOVE(_tag) \
MCFG_DEVICE_REMOVE(_tag)
@@ -52,7 +52,7 @@ public:
virtual void device_start() override;
// inline configuration
- static void static_set_a2eauxslot_slot(device_t &device, const char *tag, const char *slottag);
+ void set_a2eauxslot_slot(const char *tag, const char *slottag) { m_a2eauxslot_tag = tag; m_a2eauxslot_slottag = slottag; }
protected:
a2eauxslot_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -75,9 +75,9 @@ public:
a2eauxslot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<a2eauxslot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<a2eauxslot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ void set_cputag(const char *tag) { m_cputag = tag; }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
void add_a2eauxslot_card(device_a2eauxslot_card_interface *card);
device_a2eauxslot_card_interface *get_a2eauxslot_card();
@@ -136,7 +136,7 @@ public:
void lower_slot_nmi() { m_a2eauxslot->set_nmi_line(CLEAR_LINE); }
// inline configuration
- static void static_set_a2eauxslot_tag(device_t &device, const char *tag, const char *slottag);
+ void set_a2eauxslot_tag(const char *tag, const char *slottag) { m_a2eauxslot_tag = tag; m_a2eauxslot_slottag = slottag; }
protected:
device_a2eauxslot_card_interface(const machine_config &mconfig, device_t &device);
diff --git a/src/devices/bus/a2bus/a2mcms.cpp b/src/devices/bus/a2bus/a2mcms.cpp
index e3e8260a98c..2a7912a6a84 100644
--- a/src/devices/bus/a2bus/a2mcms.cpp
+++ b/src/devices/bus/a2bus/a2mcms.cpp
@@ -39,7 +39,7 @@ DEFINE_DEVICE_TYPE(A2BUS_MCMS2, a2bus_mcms2_device, "a2mcms2", "Mountain Compute
#define ENGINE_TAG "engine"
#define MCFG_MCMS_IRQ_CALLBACK(_cb) \
- devcb = &mcms_device::set_irq_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<mcms_device &>(*device).set_irq_cb(DEVCB_##_cb);
/***************************************************************************
FUNCTION PROTOTYPES
diff --git a/src/devices/bus/a2bus/a2mcms.h b/src/devices/bus/a2bus/a2mcms.h
index 2a2a469049d..f1026d97afd 100644
--- a/src/devices/bus/a2bus/a2mcms.h
+++ b/src/devices/bus/a2bus/a2mcms.h
@@ -33,7 +33,7 @@ public:
void set_bus_device(a2bus_mcms1_device *pDev) { m_pBusDevice = pDev; }
- template<class _Object> static devcb_base &set_irq_cb(device_t &device, _Object wr) { return downcast<mcms_device &>(device).m_write_irq.set_callback(wr); }
+ template<class Object> devcb_base &set_irq_cb(Object &&wr) { return m_write_irq.set_callback(std::forward<Object>(wr)); }
devcb_write_line m_write_irq;
protected:
diff --git a/src/devices/bus/a800/a8sio.cpp b/src/devices/bus/a800/a8sio.cpp
index cfbef3b47e4..0d5d248c11e 100644
--- a/src/devices/bus/a800/a8sio.cpp
+++ b/src/devices/bus/a800/a8sio.cpp
@@ -59,13 +59,6 @@ a8sio_slot_device::a8sio_slot_device(const machine_config &mconfig, device_type
{
}
-void a8sio_slot_device::static_set_a8sio_slot(device_t &device, const char *tag, const char *slottag)
-{
- a8sio_slot_device &a8sio_ext = dynamic_cast<a8sio_slot_device &>(device);
- a8sio_ext.m_a8sio_tag = tag;
- a8sio_ext.m_a8sio_slottag = slottag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -76,7 +69,7 @@ void a8sio_slot_device::device_start()
if (dev)
{
- device_a8sio_card_interface::static_set_a8sio_tag(*dev, m_a8sio_tag, m_a8sio_slottag);
+ dev->set_a8sio_tag(m_a8sio_tag, m_a8sio_slottag);
}
}
@@ -191,13 +184,6 @@ device_a8sio_card_interface::~device_a8sio_card_interface()
{
}
-void device_a8sio_card_interface::static_set_a8sio_tag(device_t &device, const char *tag, const char *slottag)
-{
- device_a8sio_card_interface &a8sio_card = dynamic_cast<device_a8sio_card_interface &>(device);
- a8sio_card.m_a8sio_tag = tag;
- a8sio_card.m_a8sio_slottag = slottag;
-}
-
void device_a8sio_card_interface::set_a8sio_device()
{
m_a8sio = dynamic_cast<a8sio_device *>(device().machine().device(m_a8sio_tag));
diff --git a/src/devices/bus/a800/a8sio.h b/src/devices/bus/a800/a8sio.h
index 31d853ec633..a9a1b4eec8b 100644
--- a/src/devices/bus/a800/a8sio.h
+++ b/src/devices/bus/a800/a8sio.h
@@ -43,10 +43,10 @@
#define MCFG_A8SIO_SLOT_ADD(_nbtag, _tag, _def_slot) \
MCFG_DEVICE_ADD(_tag, A8SIO_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(a8sio_cards, _def_slot, false) \
- a8sio_slot_device::static_set_a8sio_slot(*device, _nbtag, _tag);
+ downcast<a8sio_slot_device &>(*device).set_a8sio_slot(_nbtag, _tag);
#define MCFG_A8SIO_DATA_IN_CB(_devcb) \
- devcb = &a8sio_device::set_data_in_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<a8sio_device &>(*device).set_data_in_callback(DEVCB_##_devcb);
class a8sio_slot_device : public device_t,
@@ -57,7 +57,7 @@ public:
a8sio_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_a8sio_slot(device_t &device, const char *tag, const char *slottag);
+ void set_a8sio_slot(const char *tag, const char *slottag) { m_a8sio_tag = tag; m_a8sio_slottag = slottag; }
protected:
a8sio_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -84,9 +84,9 @@ public:
a8sio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- template <class Object> static devcb_base &set_clock_in_callback(device_t &device, Object &&cb) { return downcast<a8sio_device &>(device).m_out_clock_in_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data_in_callback(device_t &device, Object &&cb) { return downcast<a8sio_device &>(device).m_out_data_in_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_audio_in_callback(device_t &device, Object &&cb) { return downcast<a8sio_device &>(device).m_out_audio_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_clock_in_callback(Object &&cb) { return m_out_clock_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data_in_callback(Object &&cb) { return m_out_data_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_audio_in_callback(Object &&cb) { return m_out_audio_in_cb.set_callback(std::forward<Object>(cb)); }
void add_a8sio_card(device_a8sio_card_interface *card);
device_a8sio_card_interface *get_a8sio_card();
@@ -129,7 +129,7 @@ public:
void set_a8sio_device();
// inline configuration
- static void static_set_a8sio_tag(device_t &device, const char *tag, const char *slottag);
+ void set_a8sio_tag(const char *tag, const char *slottag) { m_a8sio_tag = tag; m_a8sio_slottag = slottag; }
virtual DECLARE_WRITE_LINE_MEMBER( motor_w );
diff --git a/src/devices/bus/abckb/abckb.h b/src/devices/bus/abckb/abckb.h
index c876e261a2f..73c62ac6a0e 100644
--- a/src/devices/bus/abckb/abckb.h
+++ b/src/devices/bus/abckb/abckb.h
@@ -23,13 +23,13 @@
MCFG_DEVICE_SLOT_INTERFACE(abc_keyboard_devices, _def_slot, false)
#define MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(_devcb) \
- devcb = &abc_keyboard_port_device::set_out_rx_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<abc_keyboard_port_device &>(*device).set_out_rx_handler(DEVCB_##_devcb);
#define MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(_devcb) \
- devcb = &abc_keyboard_port_device::set_out_trxc_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<abc_keyboard_port_device &>(*device).set_out_trxc_handler(DEVCB_##_devcb);
#define MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(_devcb) \
- devcb = &abc_keyboard_port_device::set_out_keydown_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<abc_keyboard_port_device &>(*device).set_out_keydown_handler(DEVCB_##_devcb);
@@ -45,9 +45,9 @@ public:
// construction/destruction
abc_keyboard_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_rx_handler(device_t &device, Object &&cb) { return downcast<abc_keyboard_port_device &>(device).m_out_rx_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_trxc_handler(device_t &device, Object &&cb) { return downcast<abc_keyboard_port_device &>(device).m_out_trxc_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_keydown_handler(device_t &device, Object &&cb) { return downcast<abc_keyboard_port_device &>(device).m_out_keydown_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_rx_handler(Object &&cb) { return m_out_rx_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_trxc_handler(Object &&cb) { return m_out_trxc_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_keydown_handler(Object &&cb) { return m_out_keydown_handler.set_callback(std::forward<Object>(cb)); }
// computer interface
DECLARE_WRITE_LINE_MEMBER( txd_w );
diff --git a/src/devices/bus/adam/exp.h b/src/devices/bus/adam/exp.h
index 6a856faa826..e59ea191ab4 100644
--- a/src/devices/bus/adam/exp.h
+++ b/src/devices/bus/adam/exp.h
@@ -34,7 +34,7 @@
#define MCFG_ADAM_EXPANSION_SLOT_IRQ_CALLBACK(_write) \
- devcb = &adam_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<adam_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
@@ -55,7 +55,7 @@ public:
adam_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~adam_expansion_slot_device() { }
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<adam_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t bd_r(address_space &space, offs_t offset, uint8_t data, int bmreq, int biorq, int aux_rom_cs, int cas1, int cas2);
diff --git a/src/devices/bus/amiga/keyboard/keyboard.h b/src/devices/bus/amiga/keyboard/keyboard.h
index 4066ebd9d53..d78d1bcc6cd 100644
--- a/src/devices/bus/amiga/keyboard/keyboard.h
+++ b/src/devices/bus/amiga/keyboard/keyboard.h
@@ -28,13 +28,13 @@
MCFG_DEVICE_SLOT_INTERFACE(amiga_keyboard_devices, _def_slot, false)
#define MCFG_AMIGA_KEYBOARD_KCLK_HANDLER(_devcb) \
- devcb = &amiga_keyboard_bus_device::set_kclk_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<amiga_keyboard_bus_device &>(*device).set_kclk_handler(DEVCB_##_devcb);
#define MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(_devcb) \
- devcb = &amiga_keyboard_bus_device::set_kdat_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<amiga_keyboard_bus_device &>(*device).set_kdat_handler(DEVCB_##_devcb);
#define MCFG_AMIGA_KEYBOARD_KRST_HANDLER(_devcb) \
- devcb = &amiga_keyboard_bus_device::set_krst_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<amiga_keyboard_bus_device &>(*device).set_krst_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -53,14 +53,9 @@ public:
virtual ~amiga_keyboard_bus_device();
// callbacks
- template <class Object> static devcb_base &set_kclk_handler(device_t &device, Object &&cb)
- { return downcast<amiga_keyboard_bus_device &>(device).m_kclk_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_kdat_handler(device_t &device, Object &&cb)
- { return downcast<amiga_keyboard_bus_device &>(device).m_kdat_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_krst_handler(device_t &device, Object &&cb)
- { return downcast<amiga_keyboard_bus_device &>(device).m_krst_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_kclk_handler(Object &&cb) { return m_kclk_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_kdat_handler(Object &&cb) { return m_kdat_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_krst_handler(Object &&cb) { return m_krst_handler.set_callback(std::forward<Object>(cb)); }
// called from keyboard
DECLARE_WRITE_LINE_MEMBER(kclk_w) { m_kclk_handler(state); }
diff --git a/src/devices/bus/amiga/zorro/zorro.cpp b/src/devices/bus/amiga/zorro/zorro.cpp
index 0e29f13893f..fec5d745015 100644
--- a/src/devices/bus/amiga/zorro/zorro.cpp
+++ b/src/devices/bus/amiga/zorro/zorro.cpp
@@ -34,13 +34,6 @@ zorro_slot_device::zorro_slot_device(const machine_config &mconfig, device_type
{
}
-void zorro_slot_device::set_zorro_slot(device_t &device, device_t *owner, const char *zorro_tag)
-{
- zorro_slot_device &zorro_card = dynamic_cast<zorro_slot_device &>(device);
- zorro_card.m_owner = owner;
- zorro_card.m_zorro_tag = zorro_tag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -76,16 +69,6 @@ zorro_device::zorro_device(const machine_config &mconfig, device_type type, cons
}
//-------------------------------------------------
-// set_cputag - set cpu we are attached to
-//-------------------------------------------------
-
-void zorro_device::set_cputag(device_t &device, const char *tag)
-{
- zorro_device &zorro = downcast<zorro_device &>(device);
- zorro.m_cputag = tag;
-}
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/bus/amiga/zorro/zorro.h b/src/devices/bus/amiga/zorro/zorro.h
index 38c172ead49..02ece4b59a4 100644
--- a/src/devices/bus/amiga/zorro/zorro.h
+++ b/src/devices/bus/amiga/zorro/zorro.h
@@ -159,59 +159,59 @@
#define MCFG_ZORRO_SLOT_ADD(_zorrotag, _tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, ZORRO_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- zorro_slot_device::set_zorro_slot(*device, this, _zorrotag);
+ downcast<zorro_slot_device &>(*device).set_zorro_slot(this, _zorrotag);
// ======================> expansion slot
#define MCFG_EXPANSION_SLOT_ADD(_cputag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(EXP_SLOT_TAG, EXP_SLOT, 0) \
device_t *temp = device; \
- zorro_device::set_cputag(*device, _cputag); \
+ downcast<zorro_device &>(*device).set_cputag(_cputag); \
MCFG_ZORRO_SLOT_ADD(EXP_SLOT_TAG, "slot", _slot_intf, _def_slot) \
device = temp;
// callbacks
#define MCFG_EXPANSION_SLOT_OVR_HANDLER(_devcb) \
- devcb = &zorro_device::set_ovr_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<zorro_device &>(*device).set_ovr_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_SLOT_INT2_HANDLER(_devcb) \
- devcb = &zorro_device::set_int2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<zorro_device &>(*device).set_int2_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_SLOT_INT6_HANDLER(_devcb) \
- devcb = &zorro_device::set_int6_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<zorro_device &>(*device).set_int6_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_SLOT_IPL_HANDLER(_devcb) \
- devcb = &exp_slot_device::set_ipl_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<exp_slot_device &>(*device).set_ipl_handler(DEVCB_##_devcb);
// ======================> zorro 2 bus
#define MCFG_ZORRO2_ADD(_cputag) \
MCFG_DEVICE_ADD(ZORROBUS_TAG, ZORRO2, 0) \
- zorro_device::set_cputag(*device, _cputag);
+ downcast<zorro_device &>(*device).set_cputag(_cputag);
#define MCFG_ZORRO2_SLOT_ADD(_tag, _slot_intf, _def_slot) \
MCFG_ZORRO_SLOT_ADD(ZORROBUS_TAG, _tag, _slot_intf, _def_slot)
#define MCFG_ZORRO2_OVR_HANDLER(_devcb) \
- devcb = &zorro_device::set_ovr_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<zorro_device &>(*device).set_ovr_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_INT2_HANDLER(_devcb) \
- devcb = &zorro_device::set_int2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<zorro_device &>(*device).set_int2_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_INT6_HANDLER(_devcb) \
- devcb = &zorro_device::set_int6_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<zorro_device &>(*device).set_int6_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_EINT1_HANDLER(_devcb) \
- devcb = &zorro2_device::set_eint1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<zorro2_device &>(*device).set_eint1_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_EINT4_HANDLER(_devcb) \
- devcb = &zorro2_device::set_eint4_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<zorro2_device &>(*device).set_eint4_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_EINT5_HANDLER(_devcb) \
- devcb = &zorro2_device::set_eint5_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<zorro2_device &>(*device).set_eint5_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_EINT7_HANDLER(_devcb) \
- devcb = &zorro2_device::set_eint7_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<zorro2_device &>(*device).set_eint7_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -235,7 +235,7 @@ public:
virtual void device_start() override;
// inline configuration
- static void set_zorro_slot(device_t &device, device_t *owner, const char *zorro_tag);
+ void set_zorro_slot(device_t *owner, const char *zorro_tag) { m_owner = owner; m_zorro_tag = zorro_tag; }
protected:
zorro_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -252,15 +252,12 @@ DECLARE_DEVICE_TYPE(ZORRO_SLOT, zorro_slot_device)
class zorro_device : public device_t
{
public:
- // static configuration helpers
- static void set_cputag(device_t &device, const char *tag);
+ // configuration helpers
+ void set_cputag(const char *tag) { m_cputag = tag; }
- template <class Object> static devcb_base &set_int2_handler(device_t &device, Object &&cb)
- { return downcast<zorro_device &>(device).m_int2_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_int6_handler(device_t &device, Object &&cb)
- { return downcast<zorro_device &>(device).m_int6_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ovr_handler(device_t &device, Object &&cb)
- { return downcast<zorro_device &>(device).m_ovr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int2_handler(Object &&cb) { return m_int2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int6_handler(Object &&cb) { return m_int6_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ovr_handler(Object &&cb) { return m_ovr_handler.set_callback(std::forward<Object>(cb)); }
virtual void add_card(device_zorro_card_interface *card) = 0;
@@ -300,8 +297,7 @@ public:
// construction/destruction
exp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_ipl_handler(device_t &device, Object &&cb)
- { return downcast<exp_slot_device &>(device).m_ipl_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ipl_handler(Object &&cb) { return m_ipl_handler.set_callback(std::forward<Object>(cb)); }
// the expansion slot can only have a single card
virtual void add_card(device_zorro_card_interface *card) override;
@@ -337,14 +333,10 @@ public:
zorro2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~zorro2_device();
- template <class Object> static devcb_base &set_eint1_handler(device_t &device, Object &&cb)
- { return downcast<zorro2_device &>(device).m_eint1_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_eint4_handler(device_t &device, Object &&cb)
- { return downcast<zorro2_device &>(device).m_eint4_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_eint5_handler(device_t &device, Object &&cb)
- { return downcast<zorro2_device &>(device).m_eint5_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_eint7_handler(device_t &device, Object &&cb)
- { return downcast<zorro2_device &>(device).m_eint7_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_eint1_handler(Object &&cb) { return m_eint1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_eint4_handler(Object &&cb) { return m_eint4_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_eint5_handler(Object &&cb) { return m_eint5_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_eint7_handler(Object &&cb) { return m_eint7_handler.set_callback(std::forward<Object>(cb)); }
// the zorro2 bus supports multiple cards
virtual void add_card(device_zorro_card_interface *card) override;
diff --git a/src/devices/bus/apricot/expansion/expansion.cpp b/src/devices/bus/apricot/expansion/expansion.cpp
index b5717d320a5..a7b04ca3cb7 100644
--- a/src/devices/bus/apricot/expansion/expansion.cpp
+++ b/src/devices/bus/apricot/expansion/expansion.cpp
@@ -121,26 +121,6 @@ void apricot_expansion_bus_device::add_card(device_apricot_expansion_card_interf
m_dev.append(*card);
}
-//-------------------------------------------------
-// set_cpu_tag - set cpu we are attached to
-//-------------------------------------------------
-
-void apricot_expansion_bus_device::set_cpu_tag(device_t &device, device_t *owner, const char *tag)
-{
- apricot_expansion_bus_device &bus = dynamic_cast<apricot_expansion_bus_device &>(device);
- bus.m_cpu_tag = tag;
-}
-
-//-------------------------------------------------
-// set_iop_tag - set iop we are attached to
-//-------------------------------------------------
-
-void apricot_expansion_bus_device::set_iop_tag(device_t &device, device_t *owner, const char *tag)
-{
- apricot_expansion_bus_device &bus = dynamic_cast<apricot_expansion_bus_device &>(device);
- bus.m_iop_tag = tag;
-}
-
// callbacks from slot device to the host
WRITE_LINE_MEMBER( apricot_expansion_bus_device::dma1_w ) { m_dma1_handler(state); }
WRITE_LINE_MEMBER( apricot_expansion_bus_device::dma2_w ) { m_dma2_handler(state); }
diff --git a/src/devices/bus/apricot/expansion/expansion.h b/src/devices/bus/apricot/expansion/expansion.h
index 72746b7160e..21b991ed810 100644
--- a/src/devices/bus/apricot/expansion/expansion.h
+++ b/src/devices/bus/apricot/expansion/expansion.h
@@ -54,32 +54,32 @@
#define MCFG_EXPANSION_ADD(_tag, _cpu_tag) \
MCFG_DEVICE_ADD(_tag, APRICOT_EXPANSION_BUS, 0) \
- apricot_expansion_bus_device::set_cpu_tag(*device, this, _cpu_tag);
+ downcast<apricot_expansion_bus_device &>(*device).set_cpu_tag(this, _cpu_tag);
#define MCFG_EXPANSION_IOP_ADD(_tag) \
- apricot_expansion_bus_device::set_iop_tag(*device, this, _tag);
+ downcast<apricot_expansion_bus_device &>(*device).set_iop_tag(this, _tag);
#define MCFG_EXPANSION_SLOT_ADD(_tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, APRICOT_EXPANSION_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_EXPANSION_DMA1_HANDLER(_devcb) \
- devcb = &apricot_expansion_bus_device::set_dma1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<apricot_expansion_bus_device &>(*device).set_dma1_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_DMA2_HANDLER(_devcb) \
- devcb = &apricot_expansion_bus_device::set_dma2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<apricot_expansion_bus_device &>(*device).set_dma2_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_EXT1_HANDLER(_devcb) \
- devcb = &apricot_expansion_bus_device::set_ext1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<apricot_expansion_bus_device &>(*device).set_ext1_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_EXT2_HANDLER(_devcb) \
- devcb = &apricot_expansion_bus_device::set_ext2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<apricot_expansion_bus_device &>(*device).set_ext2_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_INT2_HANDLER(_devcb) \
- devcb = &apricot_expansion_bus_device::set_int2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<apricot_expansion_bus_device &>(*device).set_int2_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_INT3_HANDLER(_devcb) \
- devcb = &apricot_expansion_bus_device::set_int3_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<apricot_expansion_bus_device &>(*device).set_int3_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -118,27 +118,16 @@ public:
apricot_expansion_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~apricot_expansion_bus_device();
- template <class Object> static devcb_base &set_dma1_handler(device_t &device, Object &&cb)
- { return downcast<apricot_expansion_bus_device &>(device).m_dma1_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_dma2_handler(device_t &device, Object &&cb)
- { return downcast<apricot_expansion_bus_device &>(device).m_dma2_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ext1_handler(device_t &device, Object &&cb)
- { return downcast<apricot_expansion_bus_device &>(device).m_ext1_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ext2_handler(device_t &device, Object &&cb)
- { return downcast<apricot_expansion_bus_device &>(device).m_ext2_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_int2_handler(device_t &device, Object &&cb)
- { return downcast<apricot_expansion_bus_device &>(device).m_int2_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_int3_handler(device_t &device, Object &&cb)
- { return downcast<apricot_expansion_bus_device &>(device).m_int3_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma1_handler(Object &&cb) { return m_dma1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma2_handler(Object &&cb) { return m_dma2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ext1_handler(Object &&cb) { return m_ext1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ext2_handler(Object &&cb) { return m_ext2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int2_handler(Object &&cb) { return m_int2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int3_handler(Object &&cb) { return m_int3_handler.set_callback(std::forward<Object>(cb)); }
// inline configuration
- static void set_cpu_tag(device_t &device, device_t *owner, const char *tag);
- static void set_iop_tag(device_t &device, device_t *owner, const char *tag);
+ void set_cpu_tag(device_t *owner, const char *tag) { m_cpu_tag = tag; }
+ void set_iop_tag(device_t *owner, const char *tag) { m_iop_tag = tag; }
void add_card(device_apricot_expansion_card_interface *card);
diff --git a/src/devices/bus/apricot/keyboard/keyboard.h b/src/devices/bus/apricot/keyboard/keyboard.h
index e7cc28ef584..97896e87a33 100644
--- a/src/devices/bus/apricot/keyboard/keyboard.h
+++ b/src/devices/bus/apricot/keyboard/keyboard.h
@@ -43,7 +43,7 @@
MCFG_DEVICE_SLOT_INTERFACE(apricot_keyboard_devices, _def_slot, false)
#define MCFG_APRICOT_KEYBOARD_IN_HANDLER(_devcb) \
- devcb = &apricot_keyboard_bus_device::set_in_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<apricot_keyboard_bus_device &>(*device).set_in_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -62,8 +62,7 @@ public:
virtual ~apricot_keyboard_bus_device();
// callbacks
- template <class Object> static devcb_base &set_in_handler(device_t &device, Object &&cb)
- { return downcast<apricot_keyboard_bus_device &>(device).m_in_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_handler(Object &&cb) { return m_in_handler.set_callback(std::forward<Object>(cb)); }
// called from keyboard
DECLARE_WRITE_LINE_MEMBER( in_w ) { m_in_handler(state); }
diff --git a/src/devices/bus/bbc/1mhzbus/1mhzbus.h b/src/devices/bus/bbc/1mhzbus/1mhzbus.h
index d2d3a3c6765..de83f89632c 100644
--- a/src/devices/bus/bbc/1mhzbus/1mhzbus.h
+++ b/src/devices/bus/bbc/1mhzbus/1mhzbus.h
@@ -100,10 +100,10 @@
MCFG_BBC_1MHZBUS_SLOT_NMI_HANDLER(DEVWRITELINE(DEVICE_SELF_OWNER, bbc_1mhzbus_slot_device, nmi_w))
#define MCFG_BBC_1MHZBUS_SLOT_IRQ_HANDLER(_devcb) \
- devcb = &bbc_1mhzbus_slot_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<bbc_1mhzbus_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_BBC_1MHZBUS_SLOT_NMI_HANDLER(_devcb) \
- devcb = &bbc_1mhzbus_slot_device::set_nmi_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<bbc_1mhzbus_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -122,11 +122,8 @@ public:
virtual ~bbc_1mhzbus_slot_device();
// callbacks
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb)
- { return downcast<bbc_1mhzbus_slot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
- { return downcast<bbc_1mhzbus_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( rst_w );
DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_irq_handler(state); }
diff --git a/src/devices/bus/bbc/fdc/fdc.h b/src/devices/bus/bbc/fdc/fdc.h
index 81f515000b1..2472b5582be 100644
--- a/src/devices/bus/bbc/fdc/fdc.h
+++ b/src/devices/bus/bbc/fdc/fdc.h
@@ -22,10 +22,10 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed)
#define MCFG_BBC_FDC_SLOT_INTRQ_HANDLER(_devcb) \
- devcb = &bbc_fdc_slot_device::set_intrq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<bbc_fdc_slot_device &>(*device).set_intrq_handler(DEVCB_##_devcb);
#define MCFG_BBC_FDC_SLOT_DRQ_HANDLER(_devcb) \
- devcb = &bbc_fdc_slot_device::set_drq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<bbc_fdc_slot_device &>(*device).set_drq_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -44,10 +44,8 @@ public:
virtual ~bbc_fdc_slot_device();
// callbacks
- template <class Object> static devcb_base &set_intrq_handler(device_t &device, Object &&cb)
- { return downcast<bbc_fdc_slot_device &>(device).m_intrq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb)
- { return downcast<bbc_fdc_slot_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_intrq_handler(Object &&cb) { return m_intrq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_drq_handler(Object &&cb) { return m_drq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( intrq_w ) { m_intrq_handler(state); }
DECLARE_WRITE_LINE_MEMBER( drq_w) { m_drq_handler(state); }
diff --git a/src/devices/bus/bbc/tube/tube.h b/src/devices/bus/bbc/tube/tube.h
index 34137594026..7a7d4351e1c 100644
--- a/src/devices/bus/bbc/tube/tube.h
+++ b/src/devices/bus/bbc/tube/tube.h
@@ -54,7 +54,7 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_BBC_TUBE_SLOT_IRQ_HANDLER(_devcb) \
- devcb = &bbc_tube_slot_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<bbc_tube_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -74,8 +74,7 @@ public:
virtual ~bbc_tube_slot_device();
// callbacks
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb)
- { return downcast<bbc_tube_slot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( host_r );
DECLARE_WRITE8_MEMBER( host_w );
diff --git a/src/devices/bus/bbc/userport/userport.h b/src/devices/bus/bbc/userport/userport.h
index 632ad412f63..de2f8c4c8ff 100644
--- a/src/devices/bus/bbc/userport/userport.h
+++ b/src/devices/bus/bbc/userport/userport.h
@@ -41,10 +41,10 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_BBC_USERPORT_CB1_HANDLER(_devcb) \
- devcb = &bbc_userport_slot_device::set_cb1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<bbc_userport_slot_device &>(*device).set_cb1_handler(DEVCB_##_devcb);
#define MCFG_BBC_USERPORT_CB2_HANDLER(_devcb) \
- devcb = &bbc_userport_slot_device::set_cb2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<bbc_userport_slot_device &>(*device).set_cb2_handler(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -62,10 +62,8 @@ public:
bbc_userport_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template <class Object> static devcb_base &set_cb1_handler(device_t &device, Object &&cb)
- { return downcast<bbc_userport_slot_device &>(device).m_cb1_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cb2_handler(device_t &device, Object &&cb)
- { return downcast<bbc_userport_slot_device &>(device).m_cb2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cb1_handler(Object &&cb) { return m_cb1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cb2_handler(Object &&cb) { return m_cb2_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(cb1_w) { m_cb1_handler(state); }
DECLARE_WRITE_LINE_MEMBER(cb2_w) { m_cb2_handler(state); }
diff --git a/src/devices/bus/bml3/bml3bus.cpp b/src/devices/bus/bml3/bml3bus.cpp
index 5eed3140a52..e1ff1ad39ab 100644
--- a/src/devices/bus/bml3/bml3bus.cpp
+++ b/src/devices/bus/bml3/bml3bus.cpp
@@ -70,13 +70,6 @@ bml3bus_slot_device::bml3bus_slot_device(const machine_config &mconfig, device_t
{
}
-void bml3bus_slot_device::static_set_bml3bus_slot(device_t &device, const char *tag, const char *slottag)
-{
- bml3bus_slot_device &bml3bus_card = dynamic_cast<bml3bus_slot_device &>(device);
- bml3bus_card.m_bml3bus_tag = tag;
- bml3bus_card.m_bml3bus_slottag = slottag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -85,7 +78,7 @@ void bml3bus_slot_device::device_start()
{
device_bml3bus_card_interface *dev = dynamic_cast<device_bml3bus_card_interface *>(get_card_device());
- if (dev) device_bml3bus_card_interface::static_set_bml3bus_tag(*dev, m_bml3bus_tag, m_bml3bus_slottag);
+ if (dev) dev->set_bml3bus_tag(m_bml3bus_tag, m_bml3bus_slottag);
}
//**************************************************************************
@@ -94,12 +87,6 @@ void bml3bus_slot_device::device_start()
DEFINE_DEVICE_TYPE(BML3BUS, bml3bus_device, "bml3bus", "Hitachi MB-6890 Bus")
-void bml3bus_device::static_set_cputag(device_t &device, const char *tag)
-{
- bml3bus_device &bml3bus = downcast<bml3bus_device &>(device);
- bml3bus.m_maincpu.set_tag(tag);
-}
-
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
@@ -212,13 +199,6 @@ device_bml3bus_card_interface::~device_bml3bus_card_interface()
{
}
-void device_bml3bus_card_interface::static_set_bml3bus_tag(device_t &device, const char *tag, const char *slottag)
-{
- device_bml3bus_card_interface &bml3bus_card = dynamic_cast<device_bml3bus_card_interface &>(device);
- bml3bus_card.m_bml3bus_tag = tag;
- bml3bus_card.m_bml3bus_slottag = slottag;
-}
-
void device_bml3bus_card_interface::set_bml3bus_device()
{
// extract the slot number from the last digit of the slot tag
diff --git a/src/devices/bus/bml3/bml3bus.h b/src/devices/bus/bml3/bml3bus.h
index bd1de270af2..b18642b44ac 100644
--- a/src/devices/bus/bml3/bml3bus.h
+++ b/src/devices/bus/bml3/bml3bus.h
@@ -21,27 +21,27 @@
//**************************************************************************
#define MCFG_BML3BUS_CPU(_cputag) \
- bml3bus_device::static_set_cputag(*device, "^" _cputag);
+ downcast<bml3bus_device &>(*device).set_cputag("^" _cputag);
#define MCFG_BML3BUS_OUT_NMI_CB(_devcb) \
- devcb = &bml3bus_device::set_out_nmi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<bml3bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_BML3BUS_OUT_IRQ_CB(_devcb) \
- devcb = &bml3bus_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<bml3bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_BML3BUS_OUT_FIRQ_CB(_devcb) \
- devcb = &bml3bus_device::set_out_firq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<bml3bus_device &>(*device).set_out_firq_callback(DEVCB_##_devcb);
#define MCFG_BML3BUS_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, BML3BUS_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- bml3bus_slot_device::static_set_bml3bus_slot(*device, _nbtag, _tag);
+ downcast<bml3bus_slot_device &>(*device).set_bml3bus_slot(_nbtag, _tag);
#define MCFG_BML3BUS_SLOT_REMOVE(_tag) \
MCFG_DEVICE_REMOVE(_tag)
#define MCFG_BML3BUS_ONBOARD_ADD(_nbtag, _tag, _dev_type) \
MCFG_DEVICE_ADD(_tag, _dev_type, 0) \
- device_bml3bus_card_interface::static_set_bml3bus_tag(*device, _nbtag, _tag);
+ downcast<device_bml3bus_card_interface &>(*device).set_bml3bus_tag(_nbtag, _tag);
//**************************************************************************
@@ -61,7 +61,7 @@ public:
virtual void device_start() override;
// inline configuration
- static void static_set_bml3bus_slot(device_t &device, const char *tag, const char *slottag);
+ void set_bml3bus_slot(const char *tag, const char *slottag) { m_bml3bus_tag = tag; m_bml3bus_slottag = slottag; }
protected:
bml3bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -83,10 +83,10 @@ public:
bml3bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
- template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<bml3bus_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<bml3bus_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_firq_callback(device_t &device, Object &&cb) { return downcast<bml3bus_device &>(device).m_out_firq_cb.set_callback(std::forward<Object>(cb)); }
+ void set_cputag(const char *tag) { m_maincpu.set_tag(tag); }
+ template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_firq_callback(Object &&cb) { return m_out_firq_cb.set_callback(std::forward<Object>(cb)); }
void add_bml3bus_card(int slot, device_bml3bus_card_interface *card);
device_bml3bus_card_interface *get_bml3bus_card(int slot);
@@ -145,7 +145,7 @@ public:
void lower_slot_firq() { m_bml3bus->set_firq_line(CLEAR_LINE); }
// inline configuration
- static void static_set_bml3bus_tag(device_t &device, const char *tag, const char *slottag);
+ void set_bml3bus_tag(const char *tag, const char *slottag) { m_bml3bus_tag = tag; m_bml3bus_slottag = slottag; }
protected:
device_bml3bus_card_interface(const machine_config &mconfig, device_t &device);
diff --git a/src/devices/bus/c64/exp.h b/src/devices/bus/c64/exp.h
index 655c619c139..46c4101aabf 100644
--- a/src/devices/bus/c64/exp.h
+++ b/src/devices/bus/c64/exp.h
@@ -68,22 +68,22 @@
#define MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACK(_write) \
- devcb = &c64_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c64_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_C64_EXPANSION_SLOT_NMI_CALLBACK(_write) \
- devcb = &c64_expansion_slot_device::set_nmi_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c64_expansion_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
#define MCFG_C64_EXPANSION_SLOT_RESET_CALLBACK(_write) \
- devcb = &c64_expansion_slot_device::set_reset_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c64_expansion_slot_device &>(*device).set_reset_wr_callback(DEVCB_##_write);
#define MCFG_C64_EXPANSION_SLOT_CD_INPUT_CALLBACK(_read) \
- devcb = &c64_expansion_slot_device::set_cd_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<c64_expansion_slot_device &>(*device).set_cd_rd_callback(DEVCB_##_read);
#define MCFG_C64_EXPANSION_SLOT_CD_OUTPUT_CALLBACK(_write) \
- devcb = &c64_expansion_slot_device::set_cd_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c64_expansion_slot_device &>(*device).set_cd_wr_callback(DEVCB_##_write);
#define MCFG_C64_EXPANSION_SLOT_DMA_CALLBACK(_write) \
- devcb = &c64_expansion_slot_device::set_dma_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c64_expansion_slot_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
@@ -103,12 +103,12 @@ public:
// construction/destruction
c64_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_reset_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_reset.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cd_rd_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_read_dma_cd.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cd_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_dma_cd.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_dma.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_reset_wr_callback(Object &&cb) { return m_write_reset.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cd_rd_callback(Object &&cb) { return m_read_dma_cd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cd_wr_callback(Object &&cb) { return m_write_dma_cd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_wr_callback(Object &&cb) { return m_write_dma.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2);
diff --git a/src/devices/bus/cbm2/user.h b/src/devices/bus/cbm2/user.h
index 9c764d7315b..3802879e822 100644
--- a/src/devices/bus/cbm2/user.h
+++ b/src/devices/bus/cbm2/user.h
@@ -48,16 +48,16 @@
#define MCFG_CBM2_USER_PORT_IRQ_CALLBACK(_write) \
- devcb = &cbm2_user_port_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<cbm2_user_port_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_CBM2_USER_PORT_SP_CALLBACK(_write) \
- devcb = &cbm2_user_port_device::set_sp_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<cbm2_user_port_device &>(*device).set_sp_wr_callback(DEVCB_##_write);
#define MCFG_CBM2_USER_PORT_CNT_CALLBACK(_write) \
- devcb = &cbm2_user_port_device::set_cnt_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<cbm2_user_port_device &>(*device).set_cnt_wr_callback(DEVCB_##_write);
#define MCFG_CBM2_USER_PORT_FLAG_CALLBACK(_write) \
- devcb = &cbm2_user_port_device::set_flag_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<cbm2_user_port_device &>(*device).set_flag_wr_callback(DEVCB_##_write);
@@ -105,10 +105,10 @@ public:
// construction/destruction
cbm2_user_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sp_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_sp.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cnt_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_cnt.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_flag_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_flag.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sp_wr_callback(Object &&cb) { return m_write_sp.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cnt_wr_callback(Object &&cb) { return m_write_cnt.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_flag_wr_callback(Object &&cb) { return m_write_flag.set_callback(std::forward<Object>(cb)); }
// computer interface
DECLARE_READ8_MEMBER( d1_r ) { uint8_t data = 0xff; if (m_card != nullptr) data = m_card->cbm2_d1_r(space, offset); return data; }
diff --git a/src/devices/bus/centronics/ctronics.h b/src/devices/bus/centronics/ctronics.h
index 62c1cf5a94e..5d8a24d5793 100644
--- a/src/devices/bus/centronics/ctronics.h
+++ b/src/devices/bus/centronics/ctronics.h
@@ -19,55 +19,55 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_CENTRONICS_STROBE_HANDLER(_devcb) \
- devcb = &centronics_device::set_strobe_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_strobe_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA0_HANDLER(_devcb) \
- devcb = &centronics_device::set_data0_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_data0_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA1_HANDLER(_devcb) \
- devcb = &centronics_device::set_data1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_data1_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA2_HANDLER(_devcb) \
- devcb = &centronics_device::set_data2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_data2_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA3_HANDLER(_devcb) \
- devcb = &centronics_device::set_data3_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_data3_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA4_HANDLER(_devcb) \
- devcb = &centronics_device::set_data4_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_data4_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA5_HANDLER(_devcb) \
- devcb = &centronics_device::set_data5_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_data5_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA6_HANDLER(_devcb) \
- devcb = &centronics_device::set_data6_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_data6_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA7_HANDLER(_devcb) \
- devcb = &centronics_device::set_data7_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_data7_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_ACK_HANDLER(_devcb) \
- devcb = &centronics_device::set_ack_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_ack_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_BUSY_HANDLER(_devcb) \
- devcb = &centronics_device::set_busy_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_busy_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_PERROR_HANDLER(_devcb) \
- devcb = &centronics_device::set_perror_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_perror_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_SELECT_HANDLER(_devcb) \
- devcb = &centronics_device::set_select_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_select_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_AUTOFD_HANDLER(_devcb) \
- devcb = &centronics_device::set_autofd_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_autofd_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_FAULT_HANDLER(_devcb) \
- devcb = &centronics_device::set_fault_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_fault_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_INIT_HANDLER(_devcb) \
- devcb = &centronics_device::set_init_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_init_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_SELECT_IN_HANDLER(_devcb) \
- devcb = &centronics_device::set_select_in_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<centronics_device &>(*device).set_select_in_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_OUTPUT_LATCH_ADD(_tag, _centronics_tag) \
MCFG_DEVICE_ADD(_tag, OUTPUT_LATCH, 0) \
@@ -102,23 +102,23 @@ class centronics_device : public device_t,
public:
centronics_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_strobe_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_strobe_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data0_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data0_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data1_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data1_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data2_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data2_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data3_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data3_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data4_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data4_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data5_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data5_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data6_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data6_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data7_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data7_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ack_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_ack_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_busy_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_busy_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_perror_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_perror_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_select_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_select_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_autofd_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_autofd_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_fault_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_fault_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_init_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_init_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_select_in_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_select_in_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_strobe_handler(Object &&cb) { return m_strobe_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data0_handler(Object &&cb) { return m_data0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data1_handler(Object &&cb) { return m_data1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data2_handler(Object &&cb) { return m_data2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data3_handler(Object &&cb) { return m_data3_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data4_handler(Object &&cb) { return m_data4_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data5_handler(Object &&cb) { return m_data5_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data6_handler(Object &&cb) { return m_data6_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data7_handler(Object &&cb) { return m_data7_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ack_handler(Object &&cb) { return m_ack_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_busy_handler(Object &&cb) { return m_busy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_perror_handler(Object &&cb) { return m_perror_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_select_handler(Object &&cb) { return m_select_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_autofd_handler(Object &&cb) { return m_autofd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_fault_handler(Object &&cb) { return m_fault_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_init_handler(Object &&cb) { return m_init_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_select_in_handler(Object &&cb) { return m_select_in_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_strobe );
DECLARE_WRITE_LINE_MEMBER( write_data0 );
diff --git a/src/devices/bus/cgenie/expansion/expansion.h b/src/devices/bus/cgenie/expansion/expansion.h
index 6c752efb331..cc7a6b04828 100644
--- a/src/devices/bus/cgenie/expansion/expansion.h
+++ b/src/devices/bus/cgenie/expansion/expansion.h
@@ -50,13 +50,13 @@
MCFG_DEVICE_SLOT_INTERFACE(cg_exp_slot_carts, nullptr, false)
#define MCFG_CG_EXP_SLOT_INT_HANDLER(_devcb) \
- devcb = &cg_exp_slot_device::set_int_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<cg_exp_slot_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_CG_EXP_SLOT_NMI_HANDLER(_devcb) \
- devcb = &cg_exp_slot_device::set_nmi_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<cg_exp_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
#define MCFG_CG_EXP_SLOT_RESET_HANDLER(_devcb) \
- devcb = &cg_exp_slot_device::set_reset_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<cg_exp_slot_device &>(*device).set_reset_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -76,14 +76,9 @@ public:
void set_io_space(address_space *io);
// callbacks
- template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
- { return downcast<cg_exp_slot_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
- { return downcast<cg_exp_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb)
- { return downcast<cg_exp_slot_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_reset_handler(Object &&cb) { return m_reset_handler.set_callback(std::forward<Object>(cb)); }
// called from cart device
DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); }
diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h
index 395ea2471dd..440630e05a3 100644
--- a/src/devices/bus/coco/cococart.h
+++ b/src/devices/bus/coco/cococart.h
@@ -26,13 +26,13 @@
typedef delegate<void (uint8_t *)> cococart_base_update_delegate;
#define MCFG_COCO_CARTRIDGE_CART_CB(_devcb) \
- devcb = &cococart_slot_device::static_set_cart_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cococart_slot_device &>(*device).set_cart_callback(DEVCB_##_devcb);
#define MCFG_COCO_CARTRIDGE_NMI_CB(_devcb) \
- devcb = &cococart_slot_device::static_set_nmi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cococart_slot_device &>(*device).set_nmi_callback(DEVCB_##_devcb);
#define MCFG_COCO_CARTRIDGE_HALT_CB(_devcb) \
- devcb = &cococart_slot_device::static_set_halt_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cococart_slot_device &>(*device).set_halt_callback(DEVCB_##_devcb);
// ======================> cococart_slot_device
@@ -63,9 +63,9 @@ public:
// construction/destruction
cococart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &static_set_cart_callback(device_t &device, Object &&cb) { return downcast<cococart_slot_device &>(device).m_cart_callback.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_nmi_callback(device_t &device, Object &&cb) { return downcast<cococart_slot_device &>(device).m_nmi_callback.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_halt_callback(device_t &device, Object &&cb) { return downcast<cococart_slot_device &>(device).m_halt_callback.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cart_callback(Object &&cb) { return m_cart_callback.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_callback(Object &&cb) { return m_nmi_callback.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_halt_callback(Object &&cb) { return m_halt_callback.set_callback(std::forward<Object>(cb)); }
// device-level overrides
virtual void device_start() override;
diff --git a/src/devices/bus/coleco/ctrl.h b/src/devices/bus/coleco/ctrl.h
index df39b41944c..75d1610e698 100644
--- a/src/devices/bus/coleco/ctrl.h
+++ b/src/devices/bus/coleco/ctrl.h
@@ -27,7 +27,7 @@
#define MCFG_COLECOVISION_CONTROL_PORT_IRQ_CALLBACK(_write) \
- devcb = &colecovision_control_port_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<colecovision_control_port_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
@@ -68,7 +68,7 @@ public:
colecovision_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<colecovision_control_port_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t read() { uint8_t data = 0xff; if (exists()) data = m_device->joy_r(); return data; }
diff --git a/src/devices/bus/comx35/exp.h b/src/devices/bus/comx35/exp.h
index c52b7eee849..fb5831e31fe 100644
--- a/src/devices/bus/comx35/exp.h
+++ b/src/devices/bus/comx35/exp.h
@@ -57,7 +57,7 @@
#define MCFG_COMX_EXPANSION_SLOT_IRQ_CALLBACK(_write) \
- devcb = &comx_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<comx_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
@@ -76,7 +76,7 @@ public:
// construction/destruction
comx_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<comx_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
uint8_t mrd_r(address_space &space, offs_t offset, int *extrom);
void mwr_w(address_space &space, offs_t offset, uint8_t data);
diff --git a/src/devices/bus/cpc/cpcexp.h b/src/devices/bus/cpc/cpcexp.h
index 0f99ea051aa..0633ffd4c6b 100644
--- a/src/devices/bus/cpc/cpcexp.h
+++ b/src/devices/bus/cpc/cpcexp.h
@@ -60,19 +60,19 @@
//**************************************************************************
#define MCFG_CPC_EXPANSION_SLOT_OUT_IRQ_CB(_devcb) \
- devcb = &cpc_expansion_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_CPC_EXPANSION_SLOT_OUT_NMI_CB(_devcb) \
- devcb = &cpc_expansion_slot_device::set_out_nmi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_CPC_EXPANSION_SLOT_OUT_RESET_CB(_devcb) \
- devcb = &cpc_expansion_slot_device::set_out_reset_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_reset_callback(DEVCB_##_devcb);
#define MCFG_CPC_EXPANSION_SLOT_OUT_ROMDIS_CB(_devcb) \
- devcb = &cpc_expansion_slot_device::set_out_romdis_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_romdis_callback(DEVCB_##_devcb);
#define MCFG_CPC_EXPANSION_SLOT_ROM_SELECT(_devcb) \
- devcb = &cpc_expansion_slot_device::set_out_rom_select_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_rom_select_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -121,11 +121,11 @@ public:
cpc_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~cpc_expansion_slot_device();
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_reset_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_reset_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_romdis_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_romdis_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_rom_select_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_rom_select.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_reset_callback(Object &&cb) { return m_out_reset_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_romdis_callback(Object &&cb) { return m_out_romdis_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_rom_select_callback(Object &&cb) { return m_out_rom_select.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( irq_w );
DECLARE_WRITE_LINE_MEMBER( nmi_w );
diff --git a/src/devices/bus/dmv/dmvbus.h b/src/devices/bus/dmv/dmvbus.h
index 62a1d7254b9..2c683ef7a31 100644
--- a/src/devices/bus/dmv/dmvbus.h
+++ b/src/devices/bus/dmv/dmvbus.h
@@ -62,11 +62,11 @@ public:
dmvcart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~dmvcart_slot_device();
- template <class Object> static devcb_base &set_prog_read_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_prog_read_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_prog_write_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_prog_write_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_thold_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_out_thold_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_prog_read_callback(Object &&cb) { return m_prog_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_prog_write_callback(Object &&cb) { return m_prog_write_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_thold_callback(Object &&cb) { return m_out_thold_cb.set_callback(std::forward<Object>(cb)); }
// device-level overrides
virtual void device_start() override;
@@ -111,16 +111,16 @@ DECLARE_DEVICE_TYPE(DMVCART_SLOT, dmvcart_slot_device)
***************************************************************************/
#define MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(_read_devcb, _write_devcb) \
- devcb = &dmvcart_slot_device::set_prog_read_callback(*device, DEVCB_##_read_devcb); \
- devcb = &dmvcart_slot_device::set_prog_write_callback(*device, DEVCB_##_write_devcb);
+ devcb = &downcast<dmvcart_slot_device &>(*device).set_prog_read_callback(DEVCB_##_read_devcb); \
+ devcb = &downcast<dmvcart_slot_device &>(*device).set_prog_write_callback(DEVCB_##_write_devcb);
#define MCFG_DMVCART_SLOT_OUT_INT_CB(_devcb) \
- devcb = &dmvcart_slot_device::set_out_int_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<dmvcart_slot_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
#define MCFG_DMVCART_SLOT_OUT_IRQ_CB(_devcb) \
- devcb = &dmvcart_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<dmvcart_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_DMVCART_SLOT_OUT_THOLD_CB(_devcb) \
- devcb = &dmvcart_slot_device::set_out_thold_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<dmvcart_slot_device &>(*device).set_out_thold_callback(DEVCB_##_devcb);
#endif // MAME_BUS_DMV_DMVBUS_H
diff --git a/src/devices/bus/ecbbus/ecbbus.cpp b/src/devices/bus/ecbbus/ecbbus.cpp
index 7649dea491a..625f2e46086 100644
--- a/src/devices/bus/ecbbus/ecbbus.cpp
+++ b/src/devices/bus/ecbbus/ecbbus.cpp
@@ -36,18 +36,6 @@ ecbbus_slot_device::ecbbus_slot_device(const machine_config &mconfig, const char
//-------------------------------------------------
-// static_set_ecbbus_slot -
-//-------------------------------------------------
-
-void ecbbus_slot_device::static_set_ecbbus_slot(device_t &device, const char *tag, int num)
-{
- ecbbus_slot_device &ecbbus_card = dynamic_cast<ecbbus_slot_device &>(device);
- ecbbus_card.m_bus_tag = tag;
- ecbbus_card.m_bus_num = num;
-}
-
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/bus/ecbbus/ecbbus.h b/src/devices/bus/ecbbus/ecbbus.h
index 9a4943e0a19..442486c052c 100644
--- a/src/devices/bus/ecbbus/ecbbus.h
+++ b/src/devices/bus/ecbbus/ecbbus.h
@@ -66,14 +66,14 @@
#define MCFG_ECBBUS_SLOT_ADD(_num, _tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, ECBBUS_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- ecbbus_slot_device::static_set_ecbbus_slot(*device, ECBBUS_TAG, _num);
+ downcast<ecbbus_slot_device &>(*device).set_ecbbus_slot(ECBBUS_TAG, _num);
#define MCFG_ECBBUS_IRQ_CALLBACK(_write) \
- devcb = &ecbbus_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<ecbbus_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_ECBBUS_NMI_CALLBACK(_write) \
- devcb = &ecbbus_device::set_nmi_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<ecbbus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
@@ -96,7 +96,7 @@ public:
virtual void device_start() override;
// inline configuration
- static void static_set_ecbbus_slot(device_t &device, const char *tag, int num);
+ void set_ecbbus_slot(const char *tag, int num) { m_bus_tag = tag; m_bus_num = num; }
private:
// configuration
@@ -123,8 +123,8 @@ public:
// construction/destruction
ecbbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<ecbbus_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<ecbbus_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); }
void add_card(device_ecbbus_card_interface *card, int pos);
diff --git a/src/devices/bus/econet/econet.cpp b/src/devices/bus/econet/econet.cpp
index e4acfe3c3d6..2b9b961af88 100644
--- a/src/devices/bus/econet/econet.cpp
+++ b/src/devices/bus/econet/econet.cpp
@@ -63,17 +63,6 @@ econet_slot_device::econet_slot_device(const machine_config &mconfig, const char
//-------------------------------------------------
-// static_set_slot -
-//-------------------------------------------------
-
-void econet_slot_device::static_set_slot(device_t &device, int address)
-{
- econet_slot_device &econet_card = dynamic_cast<econet_slot_device &>(device);
- econet_card.m_address = address;
-}
-
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/bus/econet/econet.h b/src/devices/bus/econet/econet.h
index e02a5b74e4a..9bed6727da0 100644
--- a/src/devices/bus/econet/econet.h
+++ b/src/devices/bus/econet/econet.h
@@ -32,14 +32,14 @@
#define MCFG_ECONET_SLOT_ADD(_tag, _num, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, ECONET_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- econet_slot_device::static_set_slot(*device, _num);
+ downcast<econet_slot_device &>(*device).set_slot(_num);
#define MCFG_ECONET_CLK_CALLBACK(_write) \
- devcb = &econet_device::set_clk_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<econet_device &>(*device).set_clk_wr_callback(DEVCB_##_write);
#define MCFG_ECONET_DATA_CALLBACK(_write) \
- devcb = &econet_device::set_data_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<econet_device &>(*device).set_data_wr_callback(DEVCB_##_write);
@@ -57,8 +57,8 @@ public:
// construction/destruction
econet_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_clk_wr_callback(device_t &device, Object &&cb) { return downcast<econet_device &>(device).m_write_clk.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data_wr_callback(device_t &device, Object &&cb) { return downcast<econet_device &>(device).m_write_data.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_clk_wr_callback(Object &&cb) { return m_write_clk.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data_wr_callback(Object &&cb) { return m_write_data.set_callback(std::forward<Object>(cb)); }
void add_device(device_t *target, int address);
@@ -121,7 +121,7 @@ public:
virtual void device_start() override;
// inline configuration
- static void static_set_slot(device_t &device, int address);
+ void set_slot(int address) { m_address = address; }
private:
// configuration
diff --git a/src/devices/bus/einstein/pipe/pipe.h b/src/devices/bus/einstein/pipe/pipe.h
index 02be494cb2e..222ebe18e0c 100644
--- a/src/devices/bus/einstein/pipe/pipe.h
+++ b/src/devices/bus/einstein/pipe/pipe.h
@@ -54,13 +54,13 @@
MCFG_DEVICE_SLOT_INTERFACE(tatung_pipe_cards, nullptr, false)
#define MCFG_TATUNG_PIPE_INT_HANDLER(_devcb) \
- devcb = &tatung_pipe_device::set_int_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<tatung_pipe_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_TATUNG_PIPE_NMI_HANDLER(_devcb) \
- devcb = &tatung_pipe_device::set_nmi_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<tatung_pipe_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
#define MCFG_TATUNG_PIPE_RESET_HANDLER(_devcb) \
- devcb = &tatung_pipe_device::set_reset_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<tatung_pipe_device &>(*device).set_reset_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -81,14 +81,9 @@ public:
void set_io_space(address_space *io);
// callbacks
- template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
- { return downcast<tatung_pipe_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
- { return downcast<tatung_pipe_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb)
- { return downcast<tatung_pipe_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_reset_handler(Object &&cb) { return m_reset_handler.set_callback(std::forward<Object>(cb)); }
// called from host
DECLARE_WRITE_LINE_MEMBER( host_int_w );
diff --git a/src/devices/bus/einstein/userport/userport.h b/src/devices/bus/einstein/userport/userport.h
index 59301644aa3..ea00d229b08 100644
--- a/src/devices/bus/einstein/userport/userport.h
+++ b/src/devices/bus/einstein/userport/userport.h
@@ -32,7 +32,7 @@
MCFG_DEVICE_SLOT_INTERFACE(einstein_userport_cards, nullptr, false)
#define MCFG_EINSTEIN_USERPORT_BSTB_HANDLER(_devcb) \
- devcb = &einstein_userport_device::set_bstb_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<einstein_userport_device &>(*device).set_bstb_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -49,8 +49,7 @@ public:
virtual ~einstein_userport_device();
// callbacks
- template <class Object> static devcb_base &set_bstb_handler(device_t &device, Object &&cb)
- { return downcast<einstein_userport_device &>(device).m_bstb_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_bstb_handler(Object &&cb) { return m_bstb_handler.set_callback(std::forward<Object>(cb)); }
// called from card device
DECLARE_WRITE_LINE_MEMBER( bstb_w ) { m_bstb_handler(state); }
diff --git a/src/devices/bus/electron/cart/slot.h b/src/devices/bus/electron/cart/slot.h
index 06d573ccbd1..533c4bb4555 100644
--- a/src/devices/bus/electron/cart/slot.h
+++ b/src/devices/bus/electron/cart/slot.h
@@ -110,10 +110,10 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_ELECTRON_CARTSLOT_IRQ_HANDLER(_devcb) \
- devcb = &electron_cartslot_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<electron_cartslot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_ELECTRON_CARTSLOT_NMI_HANDLER(_devcb) \
- devcb = &electron_cartslot_device::set_nmi_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<electron_cartslot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -134,11 +134,8 @@ public:
virtual ~electron_cartslot_device();
// callbacks
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb)
- { return downcast<electron_cartslot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
- { return downcast<electron_cartslot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); }
// device-level overrides
virtual void device_start() override;
diff --git a/src/devices/bus/electron/exp.h b/src/devices/bus/electron/exp.h
index f03ced0bd16..db6d7c46248 100644
--- a/src/devices/bus/electron/exp.h
+++ b/src/devices/bus/electron/exp.h
@@ -111,10 +111,10 @@ AC RETURNS (pins 3,4) - adaptor. A total of 6W may be drawn from these lines as
MCFG_ELECTRON_EXPANSION_SLOT_NMI_HANDLER(DEVWRITELINE(DEVICE_SELF_OWNER, electron_expansion_slot_device, nmi_w))
#define MCFG_ELECTRON_EXPANSION_SLOT_IRQ_HANDLER(_devcb) \
- devcb = &electron_expansion_slot_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<electron_expansion_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_ELECTRON_EXPANSION_SLOT_NMI_HANDLER(_devcb) \
- devcb = &electron_expansion_slot_device::set_nmi_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<electron_expansion_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -133,11 +133,8 @@ public:
virtual ~electron_expansion_slot_device();
// callbacks
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb)
- { return downcast<electron_expansion_slot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
- { return downcast<electron_expansion_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); }
uint8_t expbus_r(address_space &space, offs_t offset, uint8_t data);
void expbus_w(address_space &space, offs_t offset, uint8_t data);
diff --git a/src/devices/bus/ep64/exp.h b/src/devices/bus/ep64/exp.h
index 5655e6c0e64..f870455996c 100644
--- a/src/devices/bus/ep64/exp.h
+++ b/src/devices/bus/ep64/exp.h
@@ -68,16 +68,16 @@
MCFG_DEVICE_SLOT_INTERFACE(ep64_expansion_bus_cards, _def_slot, false)
#define MCFG_EP64_EXPANSION_BUS_SLOT_DAVE(_tag) \
- ep64_expansion_bus_slot_device::static_set_dave_tag(*device, "^" _tag);
+ downcast<ep64_expansion_bus_slot_device &>(*device).set_dave_tag("^" _tag);
#define MCFG_EP64_EXPANSION_BUS_SLOT_IRQ_CALLBACK(_write) \
- devcb = &ep64_expansion_bus_slot_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<ep64_expansion_bus_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(_write) \
- devcb = &ep64_expansion_bus_slot_device::set_nmi_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<ep64_expansion_bus_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
#define MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(_write) \
- devcb = &ep64_expansion_bus_slot_device::set_wait_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<ep64_expansion_bus_slot_device &>(*device).set_wait_wr_callback(DEVCB_##_write);
@@ -98,10 +98,10 @@ public:
// construction/destruction
ep64_expansion_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_dave_tag(device_t &device, const char* tag) { downcast<ep64_expansion_bus_slot_device &>(device).m_dave.set_tag(tag); }
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_wait_wr_callback(device_t &device, Object &&cb) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_wait.set_callback(std::forward<Object>(cb)); }
+ void set_dave_tag(const char* tag) { m_dave.set_tag(tag); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_wait_wr_callback(Object &&cb) { return m_write_wait.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_write_irq(state); }
DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_write_nmi(state); }
diff --git a/src/devices/bus/gamegear/ggext.h b/src/devices/bus/gamegear/ggext.h
index 64ac953b3f4..d89323000b6 100644
--- a/src/devices/bus/gamegear/ggext.h
+++ b/src/devices/bus/gamegear/ggext.h
@@ -30,11 +30,11 @@
#define MCFG_GG_EXT_PORT_TH_INPUT_HANDLER(_devcb) \
- devcb = &gg_ext_port_device::set_th_input_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gg_ext_port_device &>(*device).set_th_input_handler(DEVCB_##_devcb);
#define MCFG_GG_EXT_PORT_PIXEL_HANDLER(_devcb) \
- devcb = &gg_ext_port_device::set_pixel_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gg_ext_port_device &>(*device).set_pixel_handler(DEVCB_##_devcb);
@@ -55,9 +55,9 @@ public:
virtual ~gg_ext_port_device();
// static configuration helpers
- template <class Object> static devcb_base &set_th_input_handler(device_t &device, Object &&cb) { return downcast<gg_ext_port_device &>(device).m_th_pin_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_th_input_handler(Object &&cb) { return m_th_pin_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pixel_handler(device_t &device, Object &&cb) { return downcast<gg_ext_port_device &>(device).m_pixel_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pixel_handler(Object &&cb) { return m_pixel_handler.set_callback(std::forward<Object>(cb)); }
// Currently, only the support for SMS Controller Adaptor is emulated,
// for when SMS Compatibility mode is enabled. In that mode, the 10 pins
diff --git a/src/devices/bus/generic/slot.h b/src/devices/bus/generic/slot.h
index fada3158273..154be4db5ae 100644
--- a/src/devices/bus/generic/slot.h
+++ b/src/devices/bus/generic/slot.h
@@ -86,10 +86,10 @@ enum
static_cast<generic_slot_device *>(device)->set_extensions(_ext);
#define MCFG_GENERIC_LOAD(_class, _method) \
- generic_slot_device::static_set_device_load(*device, device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this));
+ downcast<generic_slot_device &>(*device).set_device_load(device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this));
#define MCFG_GENERIC_UNLOAD(_class, _method) \
- generic_slot_device::static_set_device_unload(*device, device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this));
+ downcast<generic_slot_device &>(*device).set_device_unload(device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this));
@@ -104,8 +104,8 @@ public:
generic_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual ~generic_slot_device();
- static void static_set_device_load(device_t &device, device_image_load_delegate callback) { downcast<generic_slot_device &>(device).m_device_image_load = callback; }
- static void static_set_device_unload(device_t &device, device_image_func_delegate callback) { downcast<generic_slot_device &>(device).m_device_image_unload = callback; }
+ template <typename Object> void set_device_load(Object &&cb) { m_device_image_load = std::forward<Object>(cb); }
+ template <typename Object> void set_device_unload(Object &&cb) { m_device_image_unload = std::forward<Object>(cb); }
void set_interface(const char * interface) { m_interface = interface; }
void set_default_card(const char * def) { m_default_card = def; }
diff --git a/src/devices/bus/hp80_io/hp80_io.h b/src/devices/bus/hp80_io/hp80_io.h
index 64430f8b6b4..96cc40f562e 100644
--- a/src/devices/bus/hp80_io/hp80_io.h
+++ b/src/devices/bus/hp80_io/hp80_io.h
@@ -16,13 +16,13 @@
#define MCFG_HP80_IO_SLOT_ADD(_tag , _idx) \
MCFG_DEVICE_ADD(_tag, HP80_IO_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(hp80_io_slot_devices, nullptr, false) \
- hp80_io_slot_device::set_slot_no(*device , _idx);
+ downcast<hp80_io_slot_device &>(*device).set_slot_no(_idx);
#define MCFG_HP80_IO_IRL_CB(_devcb) \
- devcb = &hp80_io_slot_device::set_irl_cb_func(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp80_io_slot_device &>(*device).set_irl_cb_func(DEVCB_##_devcb);
#define MCFG_HP80_IO_HALT_CB(_devcb) \
- devcb = &hp80_io_slot_device::set_halt_cb_func(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp80_io_slot_device &>(*device).set_halt_cb_func(DEVCB_##_devcb);
#define HP80_IO_FIRST_SC 3 // Lowest SC used by I/O cards
@@ -46,15 +46,15 @@ public:
hp80_io_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~hp80_io_slot_device();
- // static configuration helpers
- static void set_slot_no(device_t &device, unsigned slot_no) { downcast<hp80_io_slot_device &>(device).m_slot_no = slot_no; }
+ // configuration helpers
+ void set_slot_no(unsigned slot_no) { m_slot_no = slot_no; }
// device-level overrides
virtual void device_start() override;
// Callback setups
- template <class Object> static devcb_base &set_irl_cb_func(device_t &device, Object &&cb) { return downcast<hp80_io_slot_device &>(device).m_irl_cb_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_halt_cb_func(device_t &device, Object &&cb) { return downcast<hp80_io_slot_device &>(device).m_halt_cb_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irl_cb_func(Object &&cb) { return m_irl_cb_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_halt_cb_func(Object &&cb) { return m_halt_cb_func.set_callback(std::forward<Object>(cb)); }
// SC getter
uint8_t get_sc() const;
diff --git a/src/devices/bus/hp9845_io/hp9845_io.h b/src/devices/bus/hp9845_io/hp9845_io.h
index 2c960a405de..d2ee55b6d39 100644
--- a/src/devices/bus/hp9845_io/hp9845_io.h
+++ b/src/devices/bus/hp9845_io/hp9845_io.h
@@ -19,13 +19,13 @@
MCFG_DEVICE_SLOT_INTERFACE(hp9845_io_slot_devices, nullptr, false)
#define MCFG_HP9845_IO_IRQ_CB(_devcb) \
- devcb = &hp9845_io_slot_device::set_irq_cb_func(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp9845_io_slot_device &>(*device).set_irq_cb_func(DEVCB_##_devcb);
#define MCFG_HP9845_IO_STS_CB(_devcb) \
- devcb = &hp9845_io_slot_device::set_sts_cb_func(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp9845_io_slot_device &>(*device).set_sts_cb_func(DEVCB_##_devcb);
#define MCFG_HP9845_IO_FLG_CB(_devcb) \
- devcb = &hp9845_io_slot_device::set_flg_cb_func(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp9845_io_slot_device &>(*device).set_flg_cb_func(DEVCB_##_devcb);
#define HP9845_IO_FIRST_SC 1 // Lowest SC used by I/O cards
@@ -57,9 +57,9 @@ public:
virtual void device_start() override;
// Callback setups
- template <class Object> static devcb_base &set_irq_cb_func(device_t &device, Object &&cb) { return downcast<hp9845_io_slot_device &>(device).m_irq_cb_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sts_cb_func(device_t &device, Object &&cb) { return downcast<hp9845_io_slot_device &>(device).m_sts_cb_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_flg_cb_func(device_t &device, Object &&cb) { return downcast<hp9845_io_slot_device &>(device).m_flg_cb_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_cb_func(Object &&cb) { return m_irq_cb_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sts_cb_func(Object &&cb) { return m_sts_cb_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_flg_cb_func(Object &&cb) { return m_flg_cb_func.set_callback(std::forward<Object>(cb)); }
// irq/sts/flg signal handlers
void irq_w(uint8_t sc , int state);
diff --git a/src/devices/bus/hp_dio/hp_dio.cpp b/src/devices/bus/hp_dio/hp_dio.cpp
index 6948beed7e9..76e7f58b545 100644
--- a/src/devices/bus/hp_dio/hp_dio.cpp
+++ b/src/devices/bus/hp_dio/hp_dio.cpp
@@ -34,13 +34,6 @@ dio16_slot_device::dio16_slot_device(const machine_config &mconfig, device_type
{
}
-void dio16_slot_device::static_set_dio16_slot(device_t &device, device_t *owner, const char *dio_tag)
-{
- dio16_slot_device &dio_card = dynamic_cast<dio16_slot_device &>(device);
- dio_card.m_owner = owner;
- dio_card.m_dio_tag = dio_tag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -55,7 +48,7 @@ void dio16_slot_device::device_start()
fatalerror("DIO32 device in DIO16 slot\n");
}
- if (dev) device_dio16_card_interface::static_set_diobus(*dev,m_owner->subdevice(m_dio_tag));
+ if (dev) dev->set_diobus(m_owner->subdevice(m_dio_tag));
}
@@ -78,13 +71,6 @@ dio32_slot_device::dio32_slot_device(const machine_config &mconfig, const char *
{
}
-void dio32_slot_device::static_set_dio32_slot(device_t &device, device_t *owner, const char *dio_tag)
-{
- dio32_slot_device &dio_card = dynamic_cast<dio32_slot_device &>(device);
- dio_card.m_owner = owner;
- dio_card.m_dio_tag = dio_tag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -92,7 +78,7 @@ void dio32_slot_device::static_set_dio32_slot(device_t &device, device_t *owner,
void dio32_slot_device::device_start()
{
device_dio16_card_interface *dev = dynamic_cast<device_dio16_card_interface *>(get_card_device());
- if (dev) device_dio16_card_interface::static_set_diobus(*dev,m_owner->subdevice(m_dio_tag));
+ if (dev) dev->set_diobus(m_owner->subdevice(m_dio_tag));
}
@@ -102,12 +88,6 @@ void dio32_slot_device::device_start()
DEFINE_DEVICE_TYPE(DIO16, dio16_device, "dio16", "16-bit DIO bus")
-void dio16_device::static_set_cputag(device_t &device, const char *tag)
-{
- dio16_device &dio = downcast<dio16_device &>(device);
- dio.m_cputag = tag;
-}
-
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
@@ -230,12 +210,6 @@ device_dio16_card_interface::~device_dio16_card_interface()
{
}
-void device_dio16_card_interface::static_set_diobus(device_t &device, device_t *dio_device)
-{
- device_dio16_card_interface &dio_card = dynamic_cast<device_dio16_card_interface &>(device);
- dio_card.m_dio_dev = dio_device;
-}
-
void device_dio16_card_interface::set_dio_device()
{
m_dio = dynamic_cast<dio16_device *>(m_dio_dev);
diff --git a/src/devices/bus/hp_dio/hp_dio.h b/src/devices/bus/hp_dio/hp_dio.h
index 5e048b7360d..dd8efada7ba 100644
--- a/src/devices/bus/hp_dio/hp_dio.h
+++ b/src/devices/bus/hp_dio/hp_dio.h
@@ -22,29 +22,29 @@
//**************************************************************************
#define MCFG_DIO16_CPU(_cputag) \
- dio16_device::static_set_cputag(*device, _cputag);
+ downcast<dio16_device &>(*device).set_cputag(_cputag);
#define MCFG_DIO16_SLOT_ADD(_diotag, _tag, _slot_intf, _def_slot, _fixed) \
MCFG_DEVICE_ADD(_tag, DIO16_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed) \
- dio16_slot_device::static_set_dio16_slot(*device, this, _diotag);
+ downcast<dio16_slot_device &>(*device).set_dio16_slot(this, _diotag);
#define MCFG_DIO32_CPU(_cputag) \
- dio32_device::static_set_cputag(*device, _cputag);
+ downcast<dio32_device &>(*device).set_cputag(_cputag);
#define MCFG_DIO32_SLOT_ADD(_diotag, _tag, _slot_intf, _def_slot, _fixed) \
MCFG_DEVICE_ADD(_tag, DIO32_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed) \
- dio32_slot_device::static_set_dio32_slot(*device, this, _diotag);
+ downcast<dio32_slot_device &>(*device).set_dio32_slot(this, _diotag);
#define MCFG_ISA_OUT_IRQ3_CB(_devcb) \
- devcb = &dio16_device::set_out_irq3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<dio16_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ4_CB(_devcb) \
- devcb = &dio16_device::set_out_irq4_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<dio16_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ5_CB(_devcb) \
- devcb = &dio16_device::set_out_irq5_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<dio16_device &>(*device).set_out_irq5_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ6_CB(_devcb) \
- devcb = &dio16_device::set_out_irq6_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<dio16_device &>(*device).set_out_irq6_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -63,7 +63,7 @@ public:
virtual void device_start() override;
// inline configuration
- static void static_set_dio16_slot(device_t &device, device_t *owner, const char *dio_tag);
+ void set_dio16_slot(device_t *owner, const char *dio_tag) { m_owner = owner; m_dio_tag = dio_tag; }
protected:
dio16_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -84,11 +84,11 @@ public:
// construction/destruction
dio16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
- template <class Object> static devcb_base &set_out_irq3_callback(device_t &device, Object &&cb) { return downcast<dio16_device &>(device).m_out_irq3_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq4_callback(device_t &device, Object &&cb) { return downcast<dio16_device &>(device).m_out_irq4_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq5_callback(device_t &device, Object &&cb) { return downcast<dio16_device &>(device).m_out_irq5_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq6_callback(device_t &device, Object &&cb) { return downcast<dio16_device &>(device).m_out_irq6_cb.set_callback(std::forward<Object>(cb)); }
+ void set_cputag(const char *tag) { m_cputag = tag; }
+ template <class Object> devcb_base &set_out_irq3_callback(Object &&cb) { return m_out_irq3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq4_callback(Object &&cb) { return m_out_irq4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq5_callback(Object &&cb) { return m_out_irq5_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq6_callback(Object &&cb) { return m_out_irq6_cb.set_callback(std::forward<Object>(cb)); }
void install_memory(offs_t start, offs_t end, read16_delegate rhandler, write16_delegate whandler);
@@ -155,7 +155,7 @@ public:
void set_dio_device();
// inline configuration
- static void static_set_diobus(device_t &device, device_t *dio_device);
+ void set_diobus(device_t *dio_device) { m_dio_dev = dio_device; }
public:
device_dio16_card_interface(const machine_config &mconfig, device_t &device);
@@ -178,7 +178,7 @@ public:
virtual void device_start() override;
// inline configuration
- static void static_set_dio32_slot(device_t &device, device_t *owner, const char *dio_tag);
+ void set_dio32_slot(device_t *owner, const char *dio_tag) { m_owner = owner; m_dio_tag = dio_tag; }
};
diff --git a/src/devices/bus/hp_hil/hp_hil.cpp b/src/devices/bus/hp_hil/hp_hil.cpp
index 1e6d343f17a..d1e20ec163e 100644
--- a/src/devices/bus/hp_hil/hp_hil.cpp
+++ b/src/devices/bus/hp_hil/hp_hil.cpp
@@ -44,13 +44,6 @@ hp_hil_slot_device::hp_hil_slot_device(const machine_config &mconfig, const char
}
-void hp_hil_slot_device::static_set_hp_hil_slot(device_t &device, device_t *owner, const char *mlc_tag)
-{
- hp_hil_slot_device &hp_hil = dynamic_cast<hp_hil_slot_device &>(device);
- hp_hil.m_owner = owner;
- hp_hil.m_mlc_tag = mlc_tag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -59,7 +52,7 @@ void hp_hil_slot_device::device_start()
{
device_hp_hil_interface *dev = dynamic_cast<device_hp_hil_interface *>(get_card_device());
- if (dev) device_hp_hil_interface::static_set_hp_hil_mlc(*dev,m_owner->subdevice(m_mlc_tag));
+ if (dev) dev->set_hp_hil_mlc(m_owner->subdevice(m_mlc_tag));
}
@@ -265,13 +258,6 @@ device_hp_hil_interface::~device_hp_hil_interface()
}
-void device_hp_hil_interface::static_set_hp_hil_mlc(device_t &device, device_t *mlc_device)
-{
- device_hp_hil_interface &hp_hil = dynamic_cast<device_hp_hil_interface &>(device);
- hp_hil.m_hp_hil_mlc_dev = mlc_device;
-}
-
-
void device_hp_hil_interface::set_hp_hil_mlc_device()
{
m_hp_hil_mlc = dynamic_cast<hp_hil_mlc_device *>(m_hp_hil_mlc_dev);
diff --git a/src/devices/bus/hp_hil/hp_hil.h b/src/devices/bus/hp_hil/hp_hil.h
index fe4e8bf9e27..f4cdbb5a771 100644
--- a/src/devices/bus/hp_hil/hp_hil.h
+++ b/src/devices/bus/hp_hil/hp_hil.h
@@ -82,15 +82,15 @@
//**************************************************************************
#define MCFG_HP_HIL_INT_CALLBACK(_devcb) \
- devcb = &hp_hil_mlc_device::set_int_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hp_hil_mlc_device &>(*device).set_int_callback(DEVCB_##_devcb);
#define MCFG_HP_HIL_NMI_CALLBACK(_devcb) \
- devcb = &hp_hil_mlc_device::set_nmi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hp_hil_mlc_device &>(*device).set_nmi_callback(DEVCB_##_devcb);
#define MCFG_HP_HIL_SLOT_ADD(_mlc_tag, _tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, HP_HIL_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- hp_hil_slot_device::static_set_hp_hil_slot(*device, this, _mlc_tag);
+ downcast<hp_hil_slot_device &>(*device).set_hp_hil_slot(this, _mlc_tag);
//**************************************************************************
// TYPE DEFINITIONS
@@ -107,7 +107,7 @@ public:
virtual void device_start() override;
// inline configuration
- static void static_set_hp_hil_slot(device_t &device, device_t *owner, const char *mlc_tag);
+ void set_hp_hil_slot(device_t *owner, const char *mlc_tag) { m_owner = owner; m_mlc_tag = mlc_tag; }
protected:
// configuration
@@ -129,8 +129,8 @@ public:
hp_hil_mlc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~hp_hil_mlc_device() { m_device_list.detach_all(); }
- template <class Object> static devcb_base &set_int_callback(device_t &device, Object &&cb) { return downcast<hp_hil_mlc_device &>(device).int_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_nmi_callback(device_t &device, Object &&cb) { return downcast<hp_hil_mlc_device &>(device).nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_callback(Object &&cb) { return int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_callback(Object &&cb) { return nmi_cb.set_callback(std::forward<Object>(cb)); }
void add_hp_hil_device(device_hp_hil_interface *device);
bool get_int(void) { return m_r3 & 1; }
@@ -176,7 +176,7 @@ public:
void set_hp_hil_mlc_device();
// inline configuration
- static void static_set_hp_hil_mlc(device_t &device, device_t *mlc_device);
+ void set_hp_hil_mlc(device_t *mlc_device) { m_hp_hil_mlc_dev = mlc_device; }
virtual bool hil_write(uint16_t *data) { return true; };
int device_id() { return m_device_id; };
diff --git a/src/devices/bus/ieee488/c2040fdc.h b/src/devices/bus/ieee488/c2040fdc.h
index bbbd799182c..1c552c1c508 100644
--- a/src/devices/bus/ieee488/c2040fdc.h
+++ b/src/devices/bus/ieee488/c2040fdc.h
@@ -24,13 +24,13 @@
//**************************************************************************
#define MCFG_C2040_SYNC_CALLBACK(_write) \
- devcb = &c2040_fdc_device::set_sync_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c2040_fdc_device &>(*device).set_sync_wr_callback(DEVCB_##_write);
#define MCFG_C2040_READY_CALLBACK(_write) \
- devcb = &c2040_fdc_device::set_ready_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c2040_fdc_device &>(*device).set_ready_wr_callback(DEVCB_##_write);
#define MCFG_C2040_ERROR_CALLBACK(_write) \
- devcb = &c2040_fdc_device::set_error_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c2040_fdc_device &>(*device).set_error_wr_callback(DEVCB_##_write);
@@ -46,9 +46,9 @@ public:
// construction/destruction
c2040_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_sync_wr_callback(device_t &device, Object &&cb) { return downcast<c2040_fdc_device &>(device).m_write_sync.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ready_wr_callback(device_t &device, Object &&cb) { return downcast<c2040_fdc_device &>(device).m_write_ready.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_error_wr_callback(device_t &device, Object &&cb) { return downcast<c2040_fdc_device &>(device).m_write_error.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sync_wr_callback(Object &&cb) { return m_write_sync.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ready_wr_callback(Object &&cb) { return m_write_ready.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_error_wr_callback(Object &&cb) { return m_write_error.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/bus/ieee488/c8050fdc.h b/src/devices/bus/ieee488/c8050fdc.h
index 733100327ba..9bae3891284 100644
--- a/src/devices/bus/ieee488/c8050fdc.h
+++ b/src/devices/bus/ieee488/c8050fdc.h
@@ -23,16 +23,16 @@
//**************************************************************************
#define MCFG_C8050_SYNC_CALLBACK(_write) \
- devcb = &c8050_fdc_device::set_sync_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c8050_fdc_device &>(*device).set_sync_wr_callback(DEVCB_##_write);
#define MCFG_C8050_READY_CALLBACK(_write) \
- devcb = &c8050_fdc_device::set_ready_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c8050_fdc_device &>(*device).set_ready_wr_callback(DEVCB_##_write);
#define MCFG_C8050_BRDY_CALLBACK(_write) \
- devcb = &c8050_fdc_device::set_brdy_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c8050_fdc_device &>(*device).set_brdy_wr_callback(DEVCB_##_write);
#define MCFG_C8050_ERROR_CALLBACK(_write) \
- devcb = &c8050_fdc_device::set_error_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c8050_fdc_device &>(*device).set_error_wr_callback(DEVCB_##_write);
@@ -48,10 +48,10 @@ public:
// construction/destruction
c8050_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_sync_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_sync.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ready_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_ready.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_brdy_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_brdy.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_error_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_error.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sync_wr_callback(Object &&cb) { return m_write_sync.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ready_wr_callback(Object &&cb) { return m_write_ready.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_brdy_wr_callback(Object &&cb) { return m_write_brdy.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_error_wr_callback(Object &&cb) { return m_write_error.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/bus/intellec4/intellec4.cpp b/src/devices/bus/intellec4/intellec4.cpp
index 7034d4c7b27..17b2df413e0 100644
--- a/src/devices/bus/intellec4/intellec4.cpp
+++ b/src/devices/bus/intellec4/intellec4.cpp
@@ -26,16 +26,6 @@ univ_slot_device::univ_slot_device(machine_config const &mconfig, char const *ta
/*----------------------------------
- configuration helpers
-----------------------------------*/
-
-void univ_slot_device::set_bus_tag(device_t &device, char const *tag)
-{
- downcast<univ_slot_device &>(device).m_bus.set_tag(tag);
-}
-
-
-/*----------------------------------
device_t implementation
----------------------------------*/
@@ -88,46 +78,6 @@ univ_bus_device::univ_bus_device(machine_config const &mconfig, char const *tag,
/*----------------------------------
- address space configuration
-----------------------------------*/
-
-void univ_bus_device::set_rom_space(device_t &device, char const *tag, int space)
-{
- univ_bus_device &bus(downcast<univ_bus_device &>(device));
- bus.m_rom_device.set_tag(tag);
- bus.m_rom_space = space;
-}
-
-void univ_bus_device::set_rom_ports_space(device_t &device, char const *tag, int space)
-{
- univ_bus_device &bus(downcast<univ_bus_device &>(device));
- bus.m_rom_ports_device.set_tag(tag);
- bus.m_rom_ports_space = space;
-}
-
-void univ_bus_device::set_memory_space(device_t &device, char const *tag, int space)
-{
- univ_bus_device &bus(downcast<univ_bus_device &>(device));
- bus.m_memory_device.set_tag(tag);
- bus.m_memory_space = space;
-}
-
-void univ_bus_device::set_status_space(device_t &device, char const *tag, int space)
-{
- univ_bus_device &bus(downcast<univ_bus_device &>(device));
- bus.m_status_device.set_tag(tag);
- bus.m_status_space = space;
-}
-
-void univ_bus_device::set_ram_ports_space(device_t &device, char const *tag, int space)
-{
- univ_bus_device &bus(downcast<univ_bus_device &>(device));
- bus.m_ram_ports_device.set_tag(tag);
- bus.m_ram_ports_space = space;
-}
-
-
-/*----------------------------------
input lines
----------------------------------*/
diff --git a/src/devices/bus/intellec4/intellec4.h b/src/devices/bus/intellec4/intellec4.h
index c5e323ccb77..b88cc3d57ed 100644
--- a/src/devices/bus/intellec4/intellec4.h
+++ b/src/devices/bus/intellec4/intellec4.h
@@ -115,40 +115,40 @@ to implement the card in both systems.
#define MCFG_INTELLEC4_UNIV_SLOT_ADD(bus_tag, slot_tag, clock, slot_intf, def_slot) \
- MCFG_DEVICE_ADD(slot_tag, INTELLEC4_UNIV_SLOT, clock) \
- MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false) \
- bus::intellec4::univ_slot_device::set_bus_tag(*device, "^" bus_tag);
+ MCFG_DEVICE_ADD(slot_tag, INTELLEC4_UNIV_SLOT, clock) \
+ MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false) \
+ downcast<bus::intellec4::univ_slot_device &>(*device).set_bus_tag("^" bus_tag);
#define MCFG_INTELLEC4_UNIV_SLOT_REMOVE(slot_tag) \
- MCFG_DEVICE_REMOVE(slot_tag)
+ MCFG_DEVICE_REMOVE(slot_tag)
#define MCFG_INTELLEC4_UNIV_BUS_ROM_SPACE(tag, space) \
- bus::intellec4::univ_bus_device::set_rom_space(*device, "^" tag, space);
+ downcast<bus::intellec4::univ_bus_device &>(*device).set_rom_space("^" tag, space);
#define MCFG_INTELLEC4_UNIV_BUS_ROM_PORTS_SPACE(tag, space) \
- bus::intellec4::univ_bus_device::set_rom_ports_space(*device, "^" tag, space);
+ downcast<bus::intellec4::univ_bus_device &>(*device).set_rom_ports_space("^" tag, space);
#define MCFG_INTELLEC4_UNIV_BUS_MEMORY_SPACE(tag, space) \
- bus::intellec4::univ_bus_device::set_memory_space(*device, "^" tag, space);
+ downcast<bus::intellec4::univ_bus_device &>(*device).set_memory_space("^" tag, space);
#define MCFG_INTELLEC4_UNIV_BUS_STATUS_SPACE(tag, space) \
- bus::intellec4::univ_bus_device::set_status_space(*device, "^" tag, space);
+ downcast<bus::intellec4::univ_bus_device &>(*device).set_status_space("^" tag, space);
#define MCFG_INTELLEC4_UNIV_BUS_RAM_PORTS_SPACE(tag, space) \
- bus::intellec4::univ_bus_device::set_ram_ports_space(*device, "^" tag, space);
+ downcast<bus::intellec4::univ_bus_device &>(*device).set_ram_ports_space("^" tag, space);
#define MCFG_INTELLEC4_UNIV_BUS_TEST_CB(obj) \
- bus::intellec4::univ_bus_device::set_test_out_cb(*device, DEVCB_##obj);
+ downcast<bus::intellec4::univ_bus_device &>(*device).set_test_out_cb(DEVCB_##obj);
#define MCFG_INTELLEC4_UNIV_BUS_STOP_CB(obj) \
- bus::intellec4::univ_bus_device::set_stop_out_cb(*device, DEVCB_##obj);
+ downcast<bus::intellec4::univ_bus_device &>(*device).set_stop_out_cb(DEVCB_##obj);
#define MCFG_INTELLEC4_UNIV_BUS_RESET_4002_CB(obj) \
- bus::intellec4::univ_bus_device::set_reset_4002_out_cb(*device, DEVCB_##obj);
+ downcast<bus::intellec4::univ_bus_device &>(*device).set_reset_4002_out_cb(DEVCB_##obj);
#define MCFG_INTELLEC4_UNIV_BUS_USER_RESET_CB(obj) \
- bus::intellec4::univ_bus_device::set_user_reset_out_cb(*device, DEVCB_##obj);
+ downcast<bus::intellec4::univ_bus_device &>(*device).set_user_reset_out_cb(DEVCB_##obj);
namespace bus { namespace intellec4 {
@@ -162,7 +162,7 @@ class univ_slot_device : public device_t, public device_slot_interface
{
public:
// configuration helpers
- static void set_bus_tag(device_t &device, char const *bus_tag);
+ void set_bus_tag(char const *bus_tag) { m_bus.set_tag(bus_tag); }
univ_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
@@ -182,21 +182,17 @@ public:
friend class device_univ_card_interface;
// address space configuration
- static void set_rom_space(device_t &device, char const *tag, int space);
- static void set_rom_ports_space(device_t &device, char const *tag, int space);
- static void set_memory_space(device_t &device, char const *tag, int space);
- static void set_status_space(device_t &device, char const *tag, int space);
- static void set_ram_ports_space(device_t &device, char const *tag, int space);
+ void set_rom_space(char const *tag, int space) { m_rom_device.set_tag(tag); m_rom_space = space; }
+ void set_rom_ports_space(char const *tag, int space) { m_rom_ports_device.set_tag(tag); m_rom_ports_space = space; }
+ void set_memory_space(char const *tag, int space) { m_memory_device.set_tag(tag); m_memory_space = space; }
+ void set_status_space(char const *tag, int space) { m_status_device.set_tag(tag); m_status_space = space; }
+ void set_ram_ports_space(char const *tag, int space) { m_ram_ports_device.set_tag(tag); m_ram_ports_space = space; }
// callback configuration
- template <typename Obj> static devcb_base &set_stop_out_cb(device_t &device, Obj &&cb)
- { return downcast<univ_bus_device &>(device).m_stop_out_cb.set_callback(std::forward<Obj>(cb)); }
- template <typename Obj> static devcb_base &set_test_out_cb(device_t &device, Obj &&cb)
- { return downcast<univ_bus_device &>(device).m_test_out_cb.set_callback(std::forward<Obj>(cb)); }
- template <typename Obj> static devcb_base &set_reset_4002_out_cb(device_t &device, Obj &&cb)
- { return downcast<univ_bus_device &>(device).m_reset_4002_out_cb.set_callback(std::forward<Obj>(cb)); }
- template <typename Obj> static devcb_base &set_user_reset_out_cb(device_t &device, Obj &&cb)
- { return downcast<univ_bus_device &>(device).m_user_reset_out_cb.set_callback(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_stop_out_cb(Obj &&cb) { return m_stop_out_cb.set_callback(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_test_out_cb(Obj &&cb) { return m_test_out_cb.set_callback(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_reset_4002_out_cb(Obj &&cb) { return m_reset_4002_out_cb.set_callback(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_user_reset_out_cb(Obj &&cb) { return m_user_reset_out_cb.set_callback(std::forward<Obj>(cb)); }
univ_bus_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
diff --git a/src/devices/bus/interpro/keyboard/keyboard.h b/src/devices/bus/interpro/keyboard/keyboard.h
index ca3b1a2eb82..c9def1e6a42 100644
--- a/src/devices/bus/interpro/keyboard/keyboard.h
+++ b/src/devices/bus/interpro/keyboard/keyboard.h
@@ -10,7 +10,7 @@
MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false)
#define MCFG_INTERPRO_KEYBOARD_RXD_HANDLER(cb) \
- devcb = &interpro_keyboard_port_device::set_rxd_handler(*device, DEVCB_##cb);
+ devcb = &downcast<interpro_keyboard_port_device &>(*device).set_rxd_handler(DEVCB_##cb);
class device_interpro_keyboard_port_interface;
@@ -23,7 +23,7 @@ public:
virtual ~interpro_keyboard_port_device();
// static configuration helpers
- template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<interpro_keyboard_port_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rxd_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(write_txd);
diff --git a/src/devices/bus/interpro/sr/sr.cpp b/src/devices/bus/interpro/sr/sr.cpp
index 29fc59c8294..dda3c7f13b8 100644
--- a/src/devices/bus/interpro/sr/sr.cpp
+++ b/src/devices/bus/interpro/sr/sr.cpp
@@ -280,7 +280,7 @@ void sr_slot_device::device_start()
device_sr_card_interface *dev = dynamic_cast<device_sr_card_interface *>(get_card_device());
if (dev)
- device_sr_card_interface::static_set_sr_tag(*dev, m_sr_tag, m_sr_slot_tag);
+ dev->set_sr_tag(m_sr_tag, m_sr_slot_tag);
}
DEFINE_DEVICE_TYPE(SR, sr_device, "sr", "InterPro SR bus")
@@ -338,14 +338,6 @@ device_sr_card_interface::~device_sr_card_interface()
{
}
-void device_sr_card_interface::static_set_sr_tag(device_t &device, const char *tag, const char *slot_tag)
-{
- device_sr_card_interface &sr_card = dynamic_cast<device_sr_card_interface &>(device);
-
- sr_card.m_sr_tag = tag;
- sr_card.m_sr_slot_tag = slot_tag;
-}
-
void device_sr_card_interface::set_sr_device()
{
// get a reference to the bus
diff --git a/src/devices/bus/interpro/sr/sr.h b/src/devices/bus/interpro/sr/sr.h
index 02b2734d05d..c4a03c42aa5 100644
--- a/src/devices/bus/interpro/sr/sr.h
+++ b/src/devices/bus/interpro/sr/sr.h
@@ -7,13 +7,13 @@
#pragma once
#define MCFG_SR_OUT_IRQ0_CB(_devcb) \
- devcb = &sr_device::set_out_irq0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sr_device &>(*device).set_out_irq0_callback(DEVCB_##_devcb);
#define MCFG_SR_OUT_IRQ1_CB(_devcb) \
- devcb = &sr_device::set_out_irq1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sr_device &>(*device).set_out_irq1_callback(DEVCB_##_devcb);
#define MCFG_SR_OUT_IRQ2_CB(_devcb) \
- devcb = &sr_device::set_out_irq2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sr_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
#define MCFG_SR_SLOT_ADD(_srtag, _tag, _slot_intf, _def_slot, _fixed) \
MCFG_DEVICE_ADD(_tag, SR_SLOT, 0) \
@@ -56,9 +56,9 @@ public:
sr_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// inline configuration
- template <class Object> static devcb_base &set_out_irq0_callback(device_t &device, Object &&cb) { return downcast<sr_device &>(device).m_out_irq0_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq1_callback(device_t &device, Object &&cb) { return downcast<sr_device &>(device).m_out_irq1_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq2_callback(device_t &device, Object &&cb) { return downcast<sr_device &>(device).m_out_irq2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq0_callback(Object &&cb) { return m_out_irq0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq1_callback(Object &&cb) { return m_out_irq1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq2_callback(Object &&cb) { return m_out_irq2_cb.set_callback(std::forward<Object>(cb)); }
void set_memory(const char *const tag, const int main_spacenum, const int io_spacenum);
@@ -121,7 +121,7 @@ public:
void irq(int status);
// inline configuration
- static void static_set_sr_tag(device_t &device, const char *tag, const char *slot_tag);
+ void set_sr_tag(const char *tag, const char *slot_tag) { m_sr_tag = tag; m_sr_slot_tag = slot_tag; }
protected:
device_sr_card_interface(const machine_config &mconfig, device_t &device);
diff --git a/src/devices/bus/iq151/iq151.h b/src/devices/bus/iq151/iq151.h
index 649f397d2b9..67dff9df198 100644
--- a/src/devices/bus/iq151/iq151.h
+++ b/src/devices/bus/iq151/iq151.h
@@ -86,12 +86,12 @@ public:
iq151cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~iq151cart_slot_device();
- template <class Object> static devcb_base &set_out_irq0_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq0_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq1_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq1_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq2_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq2_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq3_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq3_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq4_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq4_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_drq_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_drq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq0_callback(Object &&cb) { return m_out_irq0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq1_callback(Object &&cb) { return m_out_irq1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq2_callback(Object &&cb) { return m_out_irq2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq3_callback(Object &&cb) { return m_out_irq3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq4_callback(Object &&cb) { return m_out_irq4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_drq_callback(Object &&cb) { return m_out_drq_cb.set_callback(std::forward<Object>(cb)); }
// device-level overrides
virtual void device_start() override;
@@ -139,21 +139,21 @@ DECLARE_DEVICE_TYPE(IQ151CART_SLOT, iq151cart_slot_device)
***************************************************************************/
#define MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(_devcb) \
- devcb = &iq151cart_slot_device::set_out_irq0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq0_callback(DEVCB_##_devcb);
#define MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(_devcb) \
- devcb = &iq151cart_slot_device::set_out_irq1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq1_callback(DEVCB_##_devcb);
#define MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(_devcb) \
- devcb = &iq151cart_slot_device::set_out_irq2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
#define MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(_devcb) \
- devcb = &iq151cart_slot_device::set_out_irq3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb);
#define MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(_devcb) \
- devcb = &iq151cart_slot_device::set_out_irq4_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
#define MCFG_IQ151CART_SLOT_OUT_DRQ_CB(_devcb) \
- devcb = &iq151cart_slot_device::set_out_drq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<iq151cart_slot_device &>(*device).set_out_drq_callback(DEVCB_##_devcb);
#endif // MAME_BUS_IQ151_IQ151_H
diff --git a/src/devices/bus/isa/gus.h b/src/devices/bus/isa/gus.h
index 7c3bdcea91a..09f86e0b091 100644
--- a/src/devices/bus/isa/gus.h
+++ b/src/devices/bus/isa/gus.h
@@ -46,37 +46,37 @@
#include "machine/6850acia.h"
#define MCFG_GF1_TXIRQ_HANDLER(_devcb) \
- devcb = &gf1_device::set_txirq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gf1_device &>(*device).set_txirq_handler(DEVCB_##_devcb);
#define MCFG_GF1_RXIRQ_HANDLER(_devcb) \
- devcb = &gf1_device::set_rxirq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gf1_device &>(*device).set_rxirq_handler(DEVCB_##_devcb);
#define MCFG_GF1_WAVE_IRQ_HANDLER(_devcb) \
- devcb = &gf1_device::set_wave_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gf1_device &>(*device).set_wave_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_RAMP_IRQ_HANDLER(_devcb) \
- devcb = &gf1_device::set_ramp_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gf1_device &>(*device).set_ramp_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_TIMER1_IRQ_HANDLER(_devcb) \
- devcb = &gf1_device::set_timer1_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gf1_device &>(*device).set_timer1_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_TIMER2_IRQ_HANDLER(_devcb) \
- devcb = &gf1_device::set_timer2_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gf1_device &>(*device).set_timer2_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_SB_IRQ_HANDLER(_devcb) \
- devcb = &gf1_device::set_sb_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gf1_device &>(*device).set_sb_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_DMA_IRQ_HANDLER(_devcb) \
- devcb = &gf1_device::set_dma_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gf1_device &>(*device).set_dma_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_DRQ1_HANDLER(_devcb) \
- devcb = &gf1_device::set_drq1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gf1_device &>(*device).set_drq1_handler(DEVCB_##_devcb);
#define MCFG_GF1_DRQ2_HANDLER(_devcb) \
- devcb = &gf1_device::set_drq2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gf1_device &>(*device).set_drq2_handler(DEVCB_##_devcb);
#define MCFG_GF1_NMI_HANDLER(_devcb) \
- devcb = &gf1_device::set_nmi_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gf1_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -112,17 +112,17 @@ public:
// construction/destruction
gf1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_txirq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_txirq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rxirq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_rxirq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_wave_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_wave_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ramp_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_ramp_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_timer1_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_timer1_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_timer2_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_timer2_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sb_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_sb_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_dma_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_drq1_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_drq1_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_drq2_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_drq2_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txirq_handler(Object &&cb) { return m_txirq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rxirq_handler(Object &&cb) { return m_rxirq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_wave_irq_handler(Object &&cb) { return m_wave_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ramp_irq_handler(Object &&cb) { return m_ramp_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_timer1_irq_handler(Object &&cb) { return m_timer1_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_timer2_irq_handler(Object &&cb) { return m_timer2_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sb_irq_handler(Object &&cb) { return m_sb_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_irq_handler(Object &&cb) { return m_dma_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_drq1_handler(Object &&cb) { return m_drq1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_drq2_handler(Object &&cb) { return m_drq2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); }
// current IRQ/DMA channel getters
uint8_t gf1_irq() { if(m_gf1_irq != 0) return m_gf1_irq; else return m_midi_irq; } // workaround for win95 loading dumb values
diff --git a/src/devices/bus/isa/hdc.h b/src/devices/bus/isa/hdc.h
index b8b325f1c6d..a935fe9288d 100644
--- a/src/devices/bus/isa/hdc.h
+++ b/src/devices/bus/isa/hdc.h
@@ -20,10 +20,10 @@
// XT HD controller device
#define MCFG_XTHDC_IRQ_HANDLER(_devcb) \
- devcb = &xt_hdc_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<xt_hdc_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_XTHDC_DRQ_HANDLER(_devcb) \
- devcb = &xt_hdc_device::set_drq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<xt_hdc_device &>(*device).set_drq_handler(DEVCB_##_devcb);
class xt_hdc_device :
public device_t
@@ -32,8 +32,8 @@ public:
// construction/destruction
xt_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<xt_hdc_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb) { return downcast<xt_hdc_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_drq_handler(Object &&cb) { return m_drq_handler.set_callback(std::forward<Object>(cb)); }
int dack_r();
int dack_rs();
diff --git a/src/devices/bus/isa/isa.cpp b/src/devices/bus/isa/isa.cpp
index 68d0ce971d8..91907e4a9f8 100644
--- a/src/devices/bus/isa/isa.cpp
+++ b/src/devices/bus/isa/isa.cpp
@@ -35,13 +35,6 @@ isa8_slot_device::isa8_slot_device(const machine_config &mconfig, device_type ty
{
}
-void isa8_slot_device::static_set_isa8_slot(device_t &device, device_t *owner, const char *isa_tag)
-{
- isa8_slot_device &isa_card = dynamic_cast<isa8_slot_device &>(device);
- isa_card.m_owner = owner;
- isa_card.m_isa_tag = isa_tag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -53,7 +46,7 @@ void isa8_slot_device::device_start()
if (get_card_device() && get_card_device()->interface(intf))
fatalerror("ISA16 device in ISA8 slot\n");
- if (dev) device_isa8_card_interface::static_set_isabus(*dev,m_owner->subdevice(m_isa_tag));
+ if (dev) dev->set_isabus(m_owner->subdevice(m_isa_tag));
}
@@ -76,13 +69,6 @@ isa16_slot_device::isa16_slot_device(const machine_config &mconfig, const char *
{
}
-void isa16_slot_device::static_set_isa16_slot(device_t &device, device_t *owner, const char *isa_tag)
-{
- isa16_slot_device &isa_card = dynamic_cast<isa16_slot_device &>(device);
- isa_card.m_owner = owner;
- isa_card.m_isa_tag = isa_tag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -90,7 +76,7 @@ void isa16_slot_device::static_set_isa16_slot(device_t &device, device_t *owner,
void isa16_slot_device::device_start()
{
device_isa8_card_interface *dev = dynamic_cast<device_isa8_card_interface *>(get_card_device());
- if (dev) device_isa8_card_interface::static_set_isabus(*dev,m_owner->subdevice(m_isa_tag));
+ if (dev) dev->set_isabus(m_owner->subdevice(m_isa_tag));
}
@@ -100,19 +86,6 @@ void isa16_slot_device::device_start()
DEFINE_DEVICE_TYPE(ISA8, isa8_device, "isa8", "8-bit ISA bus")
-void isa8_device::static_set_cputag(device_t &device, const char *tag)
-{
- isa8_device &isa = downcast<isa8_device &>(device);
- isa.m_maincpu.set_tag(tag);
-}
-
-void isa8_device::static_set_custom_spaces(device_t &device)
-{
- isa8_device &isa = downcast<isa8_device &>(device);
-
- isa.m_allocspaces = true;
-}
-
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
@@ -427,12 +400,6 @@ void device_isa8_card_interface::eop_w(int state)
{
}
-void device_isa8_card_interface::static_set_isabus(device_t &device, device_t *isa_device)
-{
- device_isa8_card_interface &isa_card = dynamic_cast<device_isa8_card_interface &>(device);
- isa_card.m_isa_dev = isa_device;
-}
-
void device_isa8_card_interface::set_isa_device()
{
m_isa = dynamic_cast<isa8_device *>(m_isa_dev);
diff --git a/src/devices/bus/isa/isa.h b/src/devices/bus/isa/isa.h
index 1cbf755e4a4..a8046423e61 100644
--- a/src/devices/bus/isa/isa.h
+++ b/src/devices/bus/isa/isa.h
@@ -74,80 +74,80 @@
//**************************************************************************
#define MCFG_ISA8_CPU(_cputag) \
- isa8_device::static_set_cputag(*device, _cputag);
+ downcast<isa8_device &>(*device).set_cputag(_cputag);
// include this in a driver to have ISA allocate it's own address spaces (e.g. non-x86)
#define MCFG_ISA8_BUS_CUSTOM_SPACES() \
- isa8_device::static_set_custom_spaces(*device);
+ downcast<isa8_device &>(*device).set_custom_spaces();
#define MCFG_ISA8_SLOT_ADD(_isatag, _tag, _slot_intf, _def_slot, _fixed) \
MCFG_DEVICE_ADD(_tag, ISA8_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed) \
- isa8_slot_device::static_set_isa8_slot(*device, this, _isatag);
+ downcast<isa8_slot_device &>(*device).set_isa8_slot(this, _isatag);
#define MCFG_ISA16_CPU(_cputag) \
- isa8_device::static_set_cputag(*device, _cputag);
+ downcast<isa8_device &>(*device).set_cputag(_cputag);
#define MCFG_ISA16_BUS_CUSTOM_SPACES() \
- isa8_device::static_set_custom_spaces(*device);
+ downcast<isa8_device &>(*device).set_custom_spaces();
#define MCFG_ISA16_SLOT_ADD(_isatag, _tag, _slot_intf, _def_slot, _fixed) \
MCFG_DEVICE_ADD(_tag, ISA16_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed) \
- isa16_slot_device::static_set_isa16_slot(*device, this, _isatag);
+ downcast<isa16_slot_device &>(*device).set_isa16_slot(this, _isatag);
#define MCFG_ISA_BUS_IOCHCK(_iochck) \
devcb = &downcast<isa8_device *>(device)->set_iochck_callback(DEVCB_##_iochck);
#define MCFG_ISA_OUT_IRQ2_CB(_devcb) \
- devcb = &isa8_device::set_out_irq2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa8_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ3_CB(_devcb) \
- devcb = &isa8_device::set_out_irq3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa8_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ4_CB(_devcb) \
- devcb = &isa8_device::set_out_irq4_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa8_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ5_CB(_devcb) \
- devcb = &isa8_device::set_out_irq5_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa8_device &>(*device).set_out_irq5_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ6_CB(_devcb) \
- devcb = &isa8_device::set_out_irq6_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa8_device &>(*device).set_out_irq6_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ7_CB(_devcb) \
- devcb = &isa8_device::set_out_irq7_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa8_device &>(*device).set_out_irq7_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ1_CB(_devcb) \
- devcb = &isa8_device::set_out_drq1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa8_device &>(*device).set_out_drq1_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ2_CB(_devcb) \
- devcb = &isa8_device::set_out_drq2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa8_device &>(*device).set_out_drq2_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ3_CB(_devcb) \
- devcb = &isa8_device::set_out_drq3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa8_device &>(*device).set_out_drq3_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ10_CB(_devcb) \
- devcb = &isa16_device::set_out_irq10_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa16_device &>(*device).set_out_irq10_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ11_CB(_devcb) \
- devcb = &isa16_device::set_out_irq11_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa16_device &>(*device).set_out_irq11_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ12_CB(_devcb) \
- devcb = &isa16_device::set_out_irq12_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa16_device &>(*device).set_out_irq12_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ14_CB(_devcb) \
- devcb = &isa16_device::set_out_irq14_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa16_device &>(*device).set_out_irq14_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ15_CB(_devcb) \
- devcb = &isa16_device::set_out_irq15_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa16_device &>(*device).set_out_irq15_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ0_CB(_devcb) \
- devcb = &isa16_device::set_out_drq0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa16_device &>(*device).set_out_drq0_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ5_CB(_devcb) \
- devcb = &isa16_device::set_out_drq5_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa16_device &>(*device).set_out_drq5_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ6_CB(_devcb) \
- devcb = &isa16_device::set_out_drq6_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa16_device &>(*device).set_out_drq6_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ7_CB(_devcb) \
- devcb = &isa16_device::set_out_drq7_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<isa16_device &>(*device).set_out_drq7_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -167,7 +167,7 @@ public:
virtual void device_start() override;
// inline configuration
- static void static_set_isa8_slot(device_t &device, device_t *owner, const char *isa_tag);
+ void set_isa8_slot(device_t *owner, const char *isa_tag) { m_owner = owner; m_isa_tag = isa_tag; }
protected:
isa8_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -197,18 +197,18 @@ public:
// construction/destruction
isa8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
- static void static_set_custom_spaces(device_t &device);
+ void set_cputag(const char *tag) { m_maincpu.set_tag(tag); }
+ void set_custom_spaces() { m_allocspaces = true; }
template <class Object> devcb_base &set_iochck_callback(Object &&cb) { return m_write_iochck.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq2_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq2_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq3_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq3_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq4_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq4_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq5_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq5_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq6_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq6_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq7_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq7_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_drq1_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_drq1_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_drq2_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_drq2_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_drq3_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_drq3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq2_callback(Object &&cb) { return m_out_irq2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq3_callback(Object &&cb) { return m_out_irq3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq4_callback(Object &&cb) { return m_out_irq4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq5_callback(Object &&cb) { return m_out_irq5_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq6_callback(Object &&cb) { return m_out_irq6_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq7_callback(Object &&cb) { return m_out_irq7_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_drq1_callback(Object &&cb) { return m_out_drq1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_drq2_callback(Object &&cb) { return m_out_drq2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_drq3_callback(Object &&cb) { return m_out_drq3_cb.set_callback(std::forward<Object>(cb)); }
// for ISA8, put the 8-bit configs in the primary slots and the 16-bit configs in the secondary
virtual space_config_vector memory_space_config() const override;
@@ -317,7 +317,7 @@ public:
virtual void eop_w(int state);
// inline configuration
- static void static_set_isabus(device_t &device, device_t *isa_device);
+ void set_isabus(device_t *isa_device) { m_isa_dev = isa_device; }
public:
device_isa8_card_interface(const machine_config &mconfig, device_t &device);
@@ -340,7 +340,7 @@ public:
virtual void device_start() override;
// inline configuration
- static void static_set_isa16_slot(device_t &device, device_t *owner, const char *isa_tag);
+ void set_isa16_slot(device_t *owner, const char *isa_tag) { m_owner = owner; m_isa_tag = isa_tag; }
};
@@ -354,15 +354,15 @@ public:
// construction/destruction
isa16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_irq10_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq10_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq11_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq11_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq12_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq12_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq14_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq14_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq15_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq15_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_drq0_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq0_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_drq5_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq5_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_drq6_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq6_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_drq7_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq7_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq10_callback(Object &&cb) { return m_out_irq10_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq11_callback(Object &&cb) { return m_out_irq11_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq12_callback(Object &&cb) { return m_out_irq12_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq14_callback(Object &&cb) { return m_out_irq14_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq15_callback(Object &&cb) { return m_out_irq15_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_drq0_callback(Object &&cb) { return m_out_drq0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_drq5_callback(Object &&cb) { return m_out_drq5_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_drq6_callback(Object &&cb) { return m_out_drq6_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_drq7_callback(Object &&cb) { return m_out_drq7_cb.set_callback(std::forward<Object>(cb)); }
void install16_device(offs_t start, offs_t end, read16_delegate rhandler, write16_delegate whandler);
diff --git a/src/devices/bus/kc/kc.cpp b/src/devices/bus/kc/kc.cpp
index 99da30bb188..aa9e75e1951 100644
--- a/src/devices/bus/kc/kc.cpp
+++ b/src/devices/bus/kc/kc.cpp
@@ -167,13 +167,6 @@ kcexp_slot_device::kcexp_slot_device(const machine_config &mconfig, device_type
{
}
-void kcexp_slot_device::static_set_next_slot(device_t &device, const char *next_slot_tag)
-{
- kcexp_slot_device &kc_slot = dynamic_cast<kcexp_slot_device &>(device);
-
- kc_slot.m_next_slot_tag = next_slot_tag;
-}
-
//-------------------------------------------------
// kcexp_slot_device - destructor
//-------------------------------------------------
diff --git a/src/devices/bus/kc/kc.h b/src/devices/bus/kc/kc.h
index a058a80c9af..083f60e3a66 100644
--- a/src/devices/bus/kc/kc.h
+++ b/src/devices/bus/kc/kc.h
@@ -51,12 +51,12 @@ public:
kcexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~kcexp_slot_device();
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<kcexp_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<kcexp_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_halt_callback(device_t &device, Object &&cb) { return downcast<kcexp_slot_device &>(device).m_out_halt_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_halt_callback(Object &&cb) { return m_out_halt_cb.set_callback(std::forward<Object>(cb)); }
// inline configuration
- static void static_set_next_slot(device_t &device, const char *next_module_tag);
+ void set_next_slot(const char *next_module_tag) { m_next_slot_tag = next_module_tag; }
// reading and writing
virtual uint8_t module_id_r();
@@ -121,29 +121,29 @@ DECLARE_DEVICE_TYPE(KCCART_SLOT, kccart_slot_device)
***************************************************************************/
#define MCFG_KCEXP_SLOT_OUT_IRQ_CB(_devcb) \
- devcb = &kcexp_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<kcexp_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_KCEXP_SLOT_OUT_NMI_CB(_devcb) \
- devcb = &kcexp_slot_device::set_out_nmi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<kcexp_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_KCEXP_SLOT_OUT_HALT_CB(_devcb) \
- devcb = &kcexp_slot_device::set_out_halt_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<kcexp_slot_device &>(*device).set_out_halt_callback(DEVCB_##_devcb);
#define MCFG_KCEXP_SLOT_NEXT_SLOT(_next_slot_tag) \
- kcexp_slot_device::static_set_next_slot(*device, _next_slot_tag);
+ downcast<kcexp_slot_device &>(*device).set_next_slot(_next_slot_tag);
#define MCFG_KCCART_SLOT_OUT_IRQ_CB(_devcb) \
- devcb = &kccart_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<kccart_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_KCCART_SLOT_OUT_NMI_CB(_devcb) \
- devcb = &kccart_slot_device::set_out_nmi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<kccart_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_KCCART_SLOT_OUT_HALT_CB(_devcb) \
- devcb = &kccart_slot_device::set_out_halt_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<kccart_slot_device &>(*device).set_out_halt_callback(DEVCB_##_devcb);
#define MCFG_KCCART_SLOT_NEXT_SLOT(_next_slot_tag) \
- kccart_slot_device::static_set_next_slot(*device, _next_slot_tag);
+ downcast<kccart_slot_device &>(*device).set_next_slot(_next_slot_tag);
// #define MCFG_KC85_EXPANSION_ADD(_tag,_next_slot_tag,_config,_slot_intf,_def_slot)
// MCFG_DEVICE_ADD(_tag, KCEXP_SLOT, 0)
diff --git a/src/devices/bus/lpci/i82371sb.h b/src/devices/bus/lpci/i82371sb.h
index 325934b2e5c..dfb1f5de498 100644
--- a/src/devices/bus/lpci/i82371sb.h
+++ b/src/devices/bus/lpci/i82371sb.h
@@ -24,7 +24,7 @@ public:
// construction/destruction
i82371sb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_boot_state_hook(device_t &device, Object &&cb) { return downcast<i82371sb_device &>(device).m_boot_state_hook.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_boot_state_hook(Object &&cb) { return m_boot_state_hook.set_callback(std::forward<Object>(cb)); }
virtual uint32_t pci_read(pci_bus_device *pcibus, int function, int offset, uint32_t mem_mask) override;
virtual void pci_write(pci_bus_device *pcibus, int function, int offset, uint32_t data, uint32_t mem_mask) override;
@@ -52,6 +52,6 @@ private:
DECLARE_DEVICE_TYPE(I82371SB, i82371sb_device)
#define MCFG_I82371SB_BOOT_STATE_HOOK(_devcb) \
- devcb = &i82371sb_device::set_boot_state_hook(*device, DEVCB_##_devcb);
+ devcb = &downcast<i82371sb_device &>(*device).set_boot_state_hook(DEVCB_##_devcb);
#endif // MAME_BUS_LPCI_I82371SB_H
diff --git a/src/devices/bus/lpci/i82439tx.h b/src/devices/bus/lpci/i82439tx.h
index 8853b9b96a6..781ff949089 100644
--- a/src/devices/bus/lpci/i82439tx.h
+++ b/src/devices/bus/lpci/i82439tx.h
@@ -17,10 +17,10 @@
#include "northbridge.h"
#define MCFG_I82439TX_CPU( _tag ) \
- i82439tx_device::static_set_cpu(*device, _tag);
+ downcast<i82439tx_device &>(*device).set_cpu(_tag);
#define MCFG_I82439TX_REGION( _tag ) \
- i82439tx_device::static_set_region(*device, _tag);
+ downcast<i82439tx_device &>(*device).set_region(_tag);
// ======================> i82439tx_device
@@ -30,8 +30,8 @@ public:
// construction/destruction
i82439tx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_cpu(device_t &device, const char *tag) { dynamic_cast<i82439tx_device &>(device).m_cpu_tag = tag; }
- static void static_set_region(device_t &device, const char *tag) { dynamic_cast<i82439tx_device &>(device).m_region_tag = tag; }
+ void set_cpu(const char *tag) { m_cpu_tag = tag; }
+ void set_region(const char *tag) { m_region_tag = tag; }
virtual uint32_t pci_read(pci_bus_device *pcibus, int function, int offset, uint32_t mem_mask) override;
virtual void pci_write(pci_bus_device *pcibus, int function, int offset, uint32_t data, uint32_t mem_mask) override;
diff --git a/src/devices/bus/lpci/mpc105.h b/src/devices/bus/lpci/mpc105.h
index 3b3a726c4b1..65ab5a59637 100644
--- a/src/devices/bus/lpci/mpc105.h
+++ b/src/devices/bus/lpci/mpc105.h
@@ -18,10 +18,10 @@
#define MPC105_MEMORYBANK_COUNT 8
#define MCFG_MPC105_CPU( _tag ) \
- mpc105_device::static_set_cpu(*device, _tag);
+ downcast<mpc105_device &>(*device).set_cpu(_tag);
#define MCFG_MPC105_BANK_BASE_DEFAULT( bank_base_default ) \
- mpc105_device::static_set_bank_base_default(*device, bank_base_default);
+ downcast<mpc105_device &>(*device).set_bank_base_default(bank_base_default);
// ======================> mpc105_device
@@ -32,8 +32,8 @@ public:
// construction/destruction
mpc105_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_cpu(device_t &device, const char *tag) { dynamic_cast<mpc105_device &>(device).m_cpu_tag = tag; }
- static void static_set_bank_base_default(device_t &device, int bank_base_default) { dynamic_cast<mpc105_device &>(device).m_bank_base_default = bank_base_default; }
+ void set_cpu(const char *tag) { m_cpu_tag = tag; }
+ void set_bank_base_default(int bank_base_default) { m_bank_base_default = bank_base_default; }
virtual uint32_t pci_read(pci_bus_device *pcibus, int function, int offset, uint32_t mem_mask) override;
virtual void pci_write(pci_bus_device *pcibus, int function, int offset, uint32_t data, uint32_t mem_mask) override;
diff --git a/src/devices/bus/macpds/macpds.cpp b/src/devices/bus/macpds/macpds.cpp
index 36f6cf90219..e411064d551 100644
--- a/src/devices/bus/macpds/macpds.cpp
+++ b/src/devices/bus/macpds/macpds.cpp
@@ -38,13 +38,6 @@ macpds_slot_device::macpds_slot_device(const machine_config &mconfig, device_typ
{
}
-void macpds_slot_device::static_set_macpds_slot(device_t &device, const char *tag, const char *slottag)
-{
- macpds_slot_device &macpds_card = dynamic_cast<macpds_slot_device &>(device);
- macpds_card.m_macpds_tag = tag;
- macpds_card.m_macpds_slottag = slottag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -53,7 +46,7 @@ void macpds_slot_device::device_start()
{
device_macpds_card_interface *dev = dynamic_cast<device_macpds_card_interface *>(get_card_device());
- if (dev) device_macpds_card_interface::static_set_macpds_tag(*dev, m_macpds_tag, m_macpds_slottag);
+ if (dev) dev->set_macpds_tag(m_macpds_tag, m_macpds_slottag);
}
//**************************************************************************
@@ -62,12 +55,6 @@ void macpds_slot_device::device_start()
DEFINE_DEVICE_TYPE(MACPDS, macpds_device, "macpds", "Mac 68000 Processor-Direct Bus")
-void macpds_device::static_set_cputag(device_t &device, const char *tag)
-{
- macpds_device &macpds = downcast<macpds_device &>(device);
- macpds.m_cputag = tag;
-}
-
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
@@ -164,13 +151,6 @@ device_macpds_card_interface::~device_macpds_card_interface()
{
}
-void device_macpds_card_interface::static_set_macpds_tag(device_t &device, const char *tag, const char *slottag)
-{
- device_macpds_card_interface &macpds_card = dynamic_cast<device_macpds_card_interface &>(device);
- macpds_card.m_macpds_tag = tag;
- macpds_card.m_macpds_slottag = slottag;
-}
-
void device_macpds_card_interface::set_macpds_device()
{
m_macpds = dynamic_cast<macpds_device *>(device().machine().device(m_macpds_tag));
diff --git a/src/devices/bus/macpds/macpds.h b/src/devices/bus/macpds/macpds.h
index fdd62404fac..7e92ec71087 100644
--- a/src/devices/bus/macpds/macpds.h
+++ b/src/devices/bus/macpds/macpds.h
@@ -21,12 +21,12 @@
#define MCFG_MACPDS_BUS_ADD(_tag, _cputag) \
MCFG_DEVICE_ADD(_tag, MACPDS, 0) \
- macpds_device::static_set_cputag(*device, _cputag);
+ downcast<macpds_device &>(*device).set_cputag(_cputag);
#define MCFG_MACPDS_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, MACPDS_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- macpds_slot_device::static_set_macpds_slot(*device, _nbtag, _tag);
+ downcast<macpds_slot_device &>(*device).set_macpds_slot(_nbtag, _tag);
#define MCFG_MACPDS_SLOT_REMOVE(_tag) \
MCFG_DEVICE_REMOVE(_tag)
@@ -34,7 +34,7 @@
#define MCFG_MACPDS_ONBOARD_ADD(_nbtag, _tag, _dev_type, _def_inp) \
MCFG_DEVICE_ADD(_tag, _dev_type, 0) \
MCFG_DEVICE_INPUT_DEFAULTS(_def_inp) \
- device_macpds_card_interface::static_set_macpds_tag(*device, _nbtag, _tag);
+ downcast<device_macpds_card_interface &>(*device).set_macpds_tag(_nbtag, _tag);
#define MCFG_MACPDS_BUS_REMOVE(_tag) \
MCFG_DEVICE_REMOVE(_tag)
@@ -53,7 +53,7 @@ public:
macpds_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_macpds_slot(device_t &device, const char *tag, const char *slottag);
+ void set_macpds_slot(const char *tag, const char *slottag) { m_macpds_tag = tag; m_macpds_slottag = slottag; }
protected:
macpds_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -79,7 +79,7 @@ public:
macpds_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~macpds_device() { m_device_list.detach_all(); }
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
+ void set_cputag(const char *tag) { m_cputag = tag; }
void add_macpds_card(device_macpds_card_interface *card);
void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler, uint32_t mask=0xffffffff);
@@ -125,7 +125,7 @@ public:
void install_rom(device_t *dev, const char *romregion, uint32_t addr);
// inline configuration
- static void static_set_macpds_tag(device_t &device, const char *tag, const char *slottag);
+ void set_macpds_tag(const char *tag, const char *slottag) { m_macpds_tag = tag; m_macpds_slottag = slottag; }
protected:
device_macpds_card_interface(const machine_config &mconfig, device_t &device);
diff --git a/src/devices/bus/macpds/pds_tpdfpd.cpp b/src/devices/bus/macpds/pds_tpdfpd.cpp
index cce214a6da1..8fd357afdc1 100644
--- a/src/devices/bus/macpds/pds_tpdfpd.cpp
+++ b/src/devices/bus/macpds/pds_tpdfpd.cpp
@@ -95,7 +95,7 @@ macpds_sedisplay_device::macpds_sedisplay_device(const machine_config &mconfig,
m_vram(nullptr), m_vbl_disable(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
m_assembled_tag(util::string_format("%s:%s", tag, SEDISPLAY_SCREEN_NAME))
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/midi/midi.h b/src/devices/bus/midi/midi.h
index dcae78538f8..52c889efbd7 100644
--- a/src/devices/bus/midi/midi.h
+++ b/src/devices/bus/midi/midi.h
@@ -11,7 +11,7 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_MIDI_RX_HANDLER(_devcb) \
- devcb = &midi_port_device::set_rx_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<midi_port_device &>(*device).set_rx_handler(DEVCB_##_devcb);
class device_midi_port_interface;
@@ -25,7 +25,7 @@ public:
virtual ~midi_port_device();
// static configuration helpers
- template <class Object> static devcb_base &set_rx_handler(device_t &device, Object &&cb) { return downcast<midi_port_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rx_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_txd );
diff --git a/src/devices/bus/msx_cart/yamaha.cpp b/src/devices/bus/msx_cart/yamaha.cpp
index 3bb4f7c63dc..a8c7280fdf9 100644
--- a/src/devices/bus/msx_cart/yamaha.cpp
+++ b/src/devices/bus/msx_cart/yamaha.cpp
@@ -103,7 +103,7 @@ void msx_cart_sfg_device::device_start()
// This should probably moved up in the bus/slot hierarchy for the msx driver
cpu_device *maincpu = machine().device<cpu_device>("maincpu");
- device_execute_interface::static_set_irq_acknowledge_callback(*maincpu, device_irq_acknowledge_delegate(FUNC(msx_cart_sfg_device::irq_callback),this));
+ maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(msx_cart_sfg_device::irq_callback),this));
}
diff --git a/src/devices/bus/msx_slot/bunsetsu.h b/src/devices/bus/msx_slot/bunsetsu.h
index 0e340d98ae1..da26e5350fb 100644
--- a/src/devices/bus/msx_slot/bunsetsu.h
+++ b/src/devices/bus/msx_slot/bunsetsu.h
@@ -14,16 +14,16 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_BUNSETSU, msx_slot_bunsetsu_device)
#define MCFG_MSX_SLOT_BUNSETSU_ADD(_tag, _startpage, _numpages, _region, _offset, _bunsetsu_region_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_BUNSETSU, _startpage, _numpages) \
- msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \
- msx_slot_bunsetsu_device::set_bunsetsu_region_tag(*device, "^" _bunsetsu_region_tag);
+ downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \
+ downcast<msx_slot_bunsetsu_device &>(*device).set_bunsetsu_region_tag("^" _bunsetsu_region_tag);
class msx_slot_bunsetsu_device : public msx_slot_rom_device
{
public:
msx_slot_bunsetsu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- static void set_bunsetsu_region_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_bunsetsu_device &>(device).m_bunsetsu_region.set_tag(tag); }
+ // configuration helpers
+ void set_bunsetsu_region_tag(const char *tag) { m_bunsetsu_region.set_tag(tag); }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
diff --git a/src/devices/bus/msx_slot/cartridge.h b/src/devices/bus/msx_slot/cartridge.h
index 78d6721263d..ff8fbb96fb3 100644
--- a/src/devices/bus/msx_slot/cartridge.h
+++ b/src/devices/bus/msx_slot/cartridge.h
@@ -17,13 +17,13 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_YAMAHA_EXPANSION, msx_slot_yamaha_expansion_device)
#define MCFG_MSX_SLOT_CARTRIDGE_ADD(_tag, _devcb) \
MCFG_DEVICE_ADD(_tag, MSX_SLOT_CARTRIDGE, 0) \
MCFG_DEVICE_SLOT_INTERFACE(msx_cart, nullptr, false) \
- devcb = &msx_slot_cartridge_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<msx_slot_cartridge_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_MSX_SLOT_YAMAHA_EXPANSION_ADD(_tag, _devcb, _default) \
MCFG_DEVICE_ADD(_tag, MSX_SLOT_YAMAHA_EXPANSION, 0) \
MCFG_DEVICE_SLOT_INTERFACE(msx_yamaha_60pin, _default, false) \
- devcb = &msx_slot_cartridge_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<msx_slot_cartridge_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class msx_slot_cartridge_device : public device_t
@@ -36,7 +36,7 @@ public:
msx_slot_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<msx_slot_cartridge_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
// image-level overrides
virtual image_init_result call_load() override;
diff --git a/src/devices/bus/msx_slot/disk.h b/src/devices/bus/msx_slot/disk.h
index 5bb99811c81..698b49b9764 100644
--- a/src/devices/bus/msx_slot/disk.h
+++ b/src/devices/bus/msx_slot/disk.h
@@ -29,58 +29,58 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_DISK6, msx_slot_disk6_device)
#define MCFG_MSX_SLOT_DISK1_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK1, _startpage, _numpages) \
- msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \
- msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \
- msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \
- msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag);
+ downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \
+ downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag);
#define MCFG_MSX_SLOT_DISK2_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK2, _startpage, _numpages) \
- msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \
- msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \
- msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \
- msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag);
+ downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \
+ downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag);
#define MCFG_MSX_SLOT_DISK3_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK3, _startpage, _numpages) \
- msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \
- msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \
- msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \
- msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag);
+ downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \
+ downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag);
#define MCFG_MSX_SLOT_DISK4_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK4, _startpage, _numpages) \
- msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \
- msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \
- msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \
- msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag);
+ downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \
+ downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag);
#define MCFG_MSX_SLOT_DISK5_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag, _floppy2_tag, _floppy3_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK5, _startpage, _numpages) \
- msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \
- msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \
- msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \
- msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag); \
- msx_slot_disk_device::set_floppy2_tag(*device, _floppy2_tag); \
- msx_slot_disk_device::set_floppy3_tag(*device, _floppy3_tag);
+ downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \
+ downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy2_tag(_floppy2_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy3_tag(_floppy3_tag);
#define MCFG_MSX_SLOT_DISK6_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK6, _startpage, _numpages) \
- msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \
- msx_slot_disk_device::set_fdc_tag(*device, _fdc_tag); \
- msx_slot_disk_device::set_floppy0_tag(*device, _floppy0_tag); \
- msx_slot_disk_device::set_floppy1_tag(*device, _floppy1_tag);
+ downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \
+ downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
+ downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag);
class msx_slot_disk_device : public msx_slot_rom_device
{
public:
- // static configuration helpers
- static void set_fdc_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_fdc_tag = tag; }
- static void set_floppy0_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_floppy0_tag = tag; }
- static void set_floppy1_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_floppy1_tag = tag; }
- static void set_floppy2_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_floppy2_tag = tag; }
- static void set_floppy3_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_floppy3_tag = tag; }
+ // configuration helpers
+ void set_fdc_tag(const char *tag) { m_fdc_tag = tag; }
+ void set_floppy0_tag(const char *tag) { m_floppy0_tag = tag; }
+ void set_floppy1_tag(const char *tag) { m_floppy1_tag = tag; }
+ void set_floppy2_tag(const char *tag) { m_floppy2_tag = tag; }
+ void set_floppy3_tag(const char *tag) { m_floppy3_tag = tag; }
protected:
msx_slot_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
diff --git a/src/devices/bus/msx_slot/fs4600.cpp b/src/devices/bus/msx_slot/fs4600.cpp
index 7223744203f..3ec7efc74f7 100644
--- a/src/devices/bus/msx_slot/fs4600.cpp
+++ b/src/devices/bus/msx_slot/fs4600.cpp
@@ -32,15 +32,6 @@ MACHINE_CONFIG_START(msx_slot_fs4600_device::device_add_mconfig)
MACHINE_CONFIG_END
-void msx_slot_fs4600_device::set_rom_start(device_t &device, const char *region, uint32_t offset)
-{
- msx_slot_fs4600_device &dev = downcast<msx_slot_fs4600_device &>(device);
-
- dev.m_rom_region.set_tag(region);
- dev.m_region_offset = offset;
-}
-
-
void msx_slot_fs4600_device::device_start()
{
// Sanity checks
diff --git a/src/devices/bus/msx_slot/fs4600.h b/src/devices/bus/msx_slot/fs4600.h
index 59238d786bb..b342b07f3fb 100644
--- a/src/devices/bus/msx_slot/fs4600.h
+++ b/src/devices/bus/msx_slot/fs4600.h
@@ -14,15 +14,15 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_FS4600, msx_slot_fs4600_device)
#define MCFG_MSX_SLOT_FS4600_ADD(_tag, _startpage, _numpages, _region, _offset) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_FS4600, _startpage, _numpages) \
- msx_slot_fs4600_device::set_rom_start(*device, "^" _region, _offset);
+ downcast<msx_slot_fs4600_device &>(*device).set_rom_start("^" _region, _offset);
class msx_slot_fs4600_device : public device_t, public msx_internal_slot_interface
{
public:
msx_slot_fs4600_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- static void set_rom_start(device_t &device, const char *region, uint32_t offset);
+ // configuration helpers
+ void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
diff --git a/src/devices/bus/msx_slot/music.h b/src/devices/bus/msx_slot/music.h
index c7e2a7bafb9..3e8b54686c9 100644
--- a/src/devices/bus/msx_slot/music.h
+++ b/src/devices/bus/msx_slot/music.h
@@ -15,16 +15,16 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_MUSIC, msx_slot_music_device)
#define MCFG_MSX_SLOT_MUSIC_ADD(_tag, _startpage, _numpages, _region, _offset, _ym2413_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_MUSIC, _startpage, _numpages) \
- msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \
- msx_slot_music_device::set_ym2413_tag(*device, _ym2413_tag);
+ downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset); \
+ downcast<msx_slot_music_device &>(*device).set_ym2413_tag(_ym2413_tag);
class msx_slot_music_device : public msx_slot_rom_device
{
public:
msx_slot_music_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- static void set_ym2413_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_music_device &>(device).m_ym2413_tag = tag; }
+ // configuration helpers
+ void set_ym2413_tag(const char *tag) { m_ym2413_tag = tag; }
virtual DECLARE_READ8_MEMBER(read) override;
diff --git a/src/devices/bus/msx_slot/panasonic08.cpp b/src/devices/bus/msx_slot/panasonic08.cpp
index d16071a08ec..04630982531 100644
--- a/src/devices/bus/msx_slot/panasonic08.cpp
+++ b/src/devices/bus/msx_slot/panasonic08.cpp
@@ -38,15 +38,6 @@ MACHINE_CONFIG_START(msx_slot_panasonic08_device::device_add_mconfig)
MACHINE_CONFIG_END
-void msx_slot_panasonic08_device::set_rom_start(device_t &device, const char *region, uint32_t offset)
-{
- msx_slot_panasonic08_device &dev = downcast<msx_slot_panasonic08_device &>(device);
-
- dev.m_rom_region.set_tag(region);
- dev.m_region_offset = offset;
-}
-
-
void msx_slot_panasonic08_device::device_start()
{
// Sanity checks
diff --git a/src/devices/bus/msx_slot/panasonic08.h b/src/devices/bus/msx_slot/panasonic08.h
index 74e6b3f5575..7b4f62429f5 100644
--- a/src/devices/bus/msx_slot/panasonic08.h
+++ b/src/devices/bus/msx_slot/panasonic08.h
@@ -14,15 +14,15 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_PANASONIC08, msx_slot_panasonic08_device)
#define MCFG_MSX_SLOT_PANASONIC08_ADD(_tag, _startpage, _numpages, _region, _offset) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_PANASONIC08, _startpage, _numpages) \
- msx_slot_panasonic08_device::set_rom_start(*device, "^" _region, _offset);
+ downcast<msx_slot_panasonic08_device &>(*device).set_rom_start("^" _region, _offset);
class msx_slot_panasonic08_device : public device_t, public msx_internal_slot_interface
{
public:
msx_slot_panasonic08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- static void set_rom_start(device_t &device, const char *region, uint32_t offset);
+ // configuration helpers
+ void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
diff --git a/src/devices/bus/msx_slot/ram.h b/src/devices/bus/msx_slot/ram.h
index 6b6ea760e8f..17bff978148 100644
--- a/src/devices/bus/msx_slot/ram.h
+++ b/src/devices/bus/msx_slot/ram.h
@@ -9,7 +9,7 @@
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_RAM, _startpage, _numpages)
#define MCFG_MSX_SLOT_RAM_8KB \
- msx_slot_ram_device::force_start_address(*device, 0xe000);
+ downcast<msx_slot_ram_device &>(*device).force_start_address(0xe000);
class msx_slot_ram_device : public device_t,
@@ -18,7 +18,7 @@ class msx_slot_ram_device : public device_t,
public:
msx_slot_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void force_start_address(device_t &device, uint16_t start) { downcast<msx_slot_ram_device &>(device).m_start_address = start; }
+ void force_start_address(uint16_t start) { m_start_address = start; }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
diff --git a/src/devices/bus/msx_slot/ram_mm.h b/src/devices/bus/msx_slot/ram_mm.h
index 584fc064897..87837909b2d 100644
--- a/src/devices/bus/msx_slot/ram_mm.h
+++ b/src/devices/bus/msx_slot/ram_mm.h
@@ -7,18 +7,18 @@
#define MCFG_MSX_SLOT_RAM_MM_ADD(_tag, _total_size) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_RAM_MM, 0, 4) \
- msx_slot_ram_mm_device::set_total_size(*device, _total_size);
+ downcast<msx_slot_ram_mm_device &>(*device).set_total_size(_total_size);
#define MCFG_MSX_SLOT_RAMM_SET_RAMIO_BITS(_ramio_set_bits) \
- msx_slot_ram_mm_device::set_ramio_set_bits(*device, _ramio_set_bits);
+ downcast<msx_slot_ram_mm_device &>(*device).set_ramio_set_bits(_ramio_set_bits);
class msx_slot_ram_mm_device : public device_t, public msx_internal_slot_interface
{
public:
msx_slot_ram_mm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_total_size(device_t &device, uint32_t total_size) { dynamic_cast<msx_slot_ram_mm_device &>(device).m_total_size = total_size; }
- static void set_ramio_set_bits(device_t &device, uint8_t ramio_set_bits) { dynamic_cast<msx_slot_ram_mm_device &>(device).m_ramio_set_bits = ramio_set_bits; }
+ void set_total_size(uint32_t total_size) { m_total_size = total_size; }
+ void set_ramio_set_bits(uint8_t ramio_set_bits) { m_ramio_set_bits = ramio_set_bits; }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
diff --git a/src/devices/bus/msx_slot/rom.cpp b/src/devices/bus/msx_slot/rom.cpp
index 05805412762..6e80b9551d1 100644
--- a/src/devices/bus/msx_slot/rom.cpp
+++ b/src/devices/bus/msx_slot/rom.cpp
@@ -23,15 +23,6 @@ msx_slot_rom_device::msx_slot_rom_device(const machine_config &mconfig, device_t
}
-void msx_slot_rom_device::set_rom_start(device_t &device, const char *region, uint32_t offset)
-{
- msx_slot_rom_device &dev = downcast<msx_slot_rom_device &>(device);
-
- dev.m_rom_region.set_tag(region);
- dev.m_region_offset = offset;
-}
-
-
void msx_slot_rom_device::device_start()
{
// Sanity checks
diff --git a/src/devices/bus/msx_slot/rom.h b/src/devices/bus/msx_slot/rom.h
index 19081d8d76b..d433cef2c7a 100644
--- a/src/devices/bus/msx_slot/rom.h
+++ b/src/devices/bus/msx_slot/rom.h
@@ -9,7 +9,7 @@
#define MCFG_MSX_SLOT_ROM_ADD(_tag, _startpage, _numpages, _region, _offset) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_ROM, _startpage, _numpages) \
- msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset);
+ downcast<msx_slot_rom_device &>(*device).set_rom_start("^" _region, _offset);
class msx_slot_rom_device : public device_t,
public msx_internal_slot_interface
@@ -17,8 +17,8 @@ class msx_slot_rom_device : public device_t,
public:
msx_slot_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- static void set_rom_start(device_t &device, const char *region, uint32_t offset);
+ // configuration helpers
+ void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; }
virtual DECLARE_READ8_MEMBER(read) override;
diff --git a/src/devices/bus/msx_slot/slot.cpp b/src/devices/bus/msx_slot/slot.cpp
index 165edba37e0..3b826c87fa2 100644
--- a/src/devices/bus/msx_slot/slot.cpp
+++ b/src/devices/bus/msx_slot/slot.cpp
@@ -19,18 +19,3 @@ msx_internal_slot_interface::msx_internal_slot_interface()
, m_end_address(0)
{
}
-
-void msx_internal_slot_interface::set_start_address(device_t &device, uint32_t start_address)
-{
- msx_internal_slot_interface &dev = dynamic_cast<msx_internal_slot_interface &>(device);
- dev.m_start_address = start_address;
- dev.m_end_address = dev.m_start_address + dev.m_size;
-}
-
-void msx_internal_slot_interface::set_size(device_t &device, uint32_t size)
-{
- msx_internal_slot_interface &dev = dynamic_cast<msx_internal_slot_interface &>(device);
-
- dev.m_size = size;
- dev.m_end_address = dev.m_start_address + dev.m_size;
-}
diff --git a/src/devices/bus/msx_slot/slot.h b/src/devices/bus/msx_slot/slot.h
index 6a2c7f093d9..ad51f0c4f9d 100644
--- a/src/devices/bus/msx_slot/slot.h
+++ b/src/devices/bus/msx_slot/slot.h
@@ -17,8 +17,8 @@ pages; and multiple pieces of rom/ram/components can occur in a single slot.
#define MCFG_MSX_INTERNAL_SLOT_ADD(_tag, _type, _startpage, _numpages) \
MCFG_DEVICE_ADD(_tag, _type, 0) \
- msx_internal_slot_interface::set_start_address(*device, _startpage * 0x4000); \
- msx_internal_slot_interface::set_size(*device, _numpages * 0x4000);
+ dynamic_cast<msx_internal_slot_interface &>(*device).set_start_address(_startpage * 0x4000); \
+ dynamic_cast<msx_internal_slot_interface &>(*device).set_size(_numpages * 0x4000);
class msx_internal_slot_interface
{
@@ -26,9 +26,9 @@ public:
msx_internal_slot_interface();
virtual ~msx_internal_slot_interface() { }
- // static configuration helpers
- static void set_start_address(device_t &device, uint32_t start_address);
- static void set_size(device_t &device, uint32_t size);
+ // configuration helpers
+ void set_start_address(uint32_t start_address) { m_start_address = start_address; m_end_address = m_start_address + m_size; }
+ void set_size(uint32_t size) { m_size = size; m_end_address = m_start_address + m_size; }
virtual DECLARE_READ8_MEMBER(read) { return 0xFF; }
virtual DECLARE_WRITE8_MEMBER(write) { }
diff --git a/src/devices/bus/msx_slot/sony08.cpp b/src/devices/bus/msx_slot/sony08.cpp
index 27ce312bab5..825b74bec6c 100644
--- a/src/devices/bus/msx_slot/sony08.cpp
+++ b/src/devices/bus/msx_slot/sony08.cpp
@@ -35,15 +35,6 @@ MACHINE_CONFIG_START(msx_slot_sony08_device::device_add_mconfig)
MACHINE_CONFIG_END
-void msx_slot_sony08_device::set_rom_start(device_t &device, const char *region, uint32_t offset)
-{
- msx_slot_sony08_device &dev = downcast<msx_slot_sony08_device &>(device);
-
- dev.m_rom_region.set_tag(region);
- dev.m_region_offset = offset;
-}
-
-
void msx_slot_sony08_device::device_start()
{
// Sanity checks
diff --git a/src/devices/bus/msx_slot/sony08.h b/src/devices/bus/msx_slot/sony08.h
index ce34b09b842..383c9b9d3a0 100644
--- a/src/devices/bus/msx_slot/sony08.h
+++ b/src/devices/bus/msx_slot/sony08.h
@@ -14,7 +14,7 @@ extern const device_type MSX_SLOT_SONY08;
#define MCFG_MSX_SLOT_SONY08_ADD(_tag, _startpage, _numpages, _region, _offset) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_SONY08, _startpage, _numpages) \
- msx_slot_sony08_device::set_rom_start(*device, "^" _region, _offset);
+ downcast<msx_slot_sony08_device &>(*device).set_rom_start("^" _region, _offset);
class msx_slot_sony08_device : public device_t,
public msx_internal_slot_interface
@@ -22,8 +22,8 @@ class msx_slot_sony08_device : public device_t,
public:
msx_slot_sony08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- static void set_rom_start(device_t &device, const char *region, uint32_t offset);
+ // configuration helpers
+ void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
diff --git a/src/devices/bus/nasbus/nasbus.cpp b/src/devices/bus/nasbus/nasbus.cpp
index dafe56f68ac..585b1043c07 100644
--- a/src/devices/bus/nasbus/nasbus.cpp
+++ b/src/devices/bus/nasbus/nasbus.cpp
@@ -34,13 +34,6 @@ nasbus_slot_device::nasbus_slot_device(const machine_config &mconfig, device_typ
{
}
-void nasbus_slot_device::set_nasbus_slot(device_t &device, device_t *owner, const char *nasbus_tag)
-{
- nasbus_slot_device &nasbus_card = dynamic_cast<nasbus_slot_device &>(device);
- nasbus_card.m_owner = owner;
- nasbus_card.m_nasbus_tag = nasbus_tag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/bus/nasbus/nasbus.h b/src/devices/bus/nasbus/nasbus.h
index 3b553cd66e8..477a737e7f9 100644
--- a/src/devices/bus/nasbus/nasbus.h
+++ b/src/devices/bus/nasbus/nasbus.h
@@ -111,10 +111,10 @@
#define MCFG_NASBUS_SLOT_ADD(_tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, NASBUS_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- nasbus_slot_device::set_nasbus_slot(*device, this, NASBUS_TAG);
+ downcast<nasbus_slot_device &>(*device).set_nasbus_slot(this, NASBUS_TAG);
#define MCFG_NASBUS_RAM_DISABLE_HANDLER(_devcb) \
- devcb = &nasbus_device::set_ram_disable_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<nasbus_device &>(*device).set_ram_disable_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -132,7 +132,7 @@ public:
// construction/destruction
nasbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void set_nasbus_slot(device_t &device, device_t *owner, const char *nasbus_tag);
+ void set_nasbus_slot(device_t *owner, const char *nasbus_tag) { m_owner = owner; m_nasbus_tag = nasbus_tag; }
protected:
nasbus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -157,8 +157,7 @@ public:
nasbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~nasbus_device();
- template <class Object> static devcb_base &set_ram_disable_handler(device_t &device, Object &&cb)
- { return downcast<nasbus_device &>(device).m_ram_disable_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ram_disable_handler(Object &&cb) { return m_ram_disable_handler.set_callback(std::forward<Object>(cb)); }
void add_card(device_nasbus_card_interface *card);
diff --git a/src/devices/bus/nes_ctrl/ctrl.h b/src/devices/bus/nes_ctrl/ctrl.h
index 5b59ebb5f33..a0ca47d4d36 100644
--- a/src/devices/bus/nes_ctrl/ctrl.h
+++ b/src/devices/bus/nes_ctrl/ctrl.h
@@ -56,7 +56,7 @@ public:
nes_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~nes_control_port_device();
- static void set_brightpixel_callback(device_t &device, nesctrl_brightpixel_delegate callback) { downcast<nes_control_port_device &>(device).m_brightpixel_cb = callback; }
+ template <typename Object> void set_brightpixel_callback(Object &&cb) { m_brightpixel_cb = std::forward<Object>(cb); }
uint8_t read_bit0();
uint8_t read_bit34();
@@ -90,7 +90,7 @@ DECLARE_DEVICE_TYPE(NES_CONTROL_PORT, nes_control_port_device)
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_NESCTRL_BRIGHTPIXEL_CB(_class, _method) \
- nes_control_port_device::set_brightpixel_callback(*device, nesctrl_brightpixel_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<nes_control_port_device &>(*device).set_brightpixel_callback(nesctrl_brightpixel_delegate(&_class::_method, #_class "::" #_method, this));
SLOT_INTERFACE_EXTERN( nes_control_port1_devices );
diff --git a/src/devices/bus/nubus/nubus.cpp b/src/devices/bus/nubus/nubus.cpp
index c4934cda302..5eee5ad79a5 100644
--- a/src/devices/bus/nubus/nubus.cpp
+++ b/src/devices/bus/nubus/nubus.cpp
@@ -38,13 +38,6 @@ nubus_slot_device::nubus_slot_device(const machine_config &mconfig, device_type
{
}
-void nubus_slot_device::static_set_nubus_slot(device_t &device, const char *tag, const char *slottag)
-{
- nubus_slot_device &nubus_card = dynamic_cast<nubus_slot_device &>(device);
- nubus_card.m_nubus_tag = tag;
- nubus_card.m_nubus_slottag = slottag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -53,7 +46,7 @@ void nubus_slot_device::device_start()
{
device_nubus_card_interface *dev = dynamic_cast<device_nubus_card_interface *>(get_card_device());
- if (dev) device_nubus_card_interface::static_set_nubus_tag(*dev, m_nubus_tag, m_nubus_slottag);
+ if (dev) dev->set_nubus_tag(m_nubus_tag, m_nubus_slottag);
}
//**************************************************************************
@@ -62,12 +55,6 @@ void nubus_slot_device::device_start()
DEFINE_DEVICE_TYPE(NUBUS, nubus_device, "nubus", "NuBus")
-void nubus_device::static_set_cputag(device_t &device, const char *tag)
-{
- nubus_device &nubus = downcast<nubus_device &>(device);
- nubus.m_cputag = tag;
-}
-
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
@@ -266,13 +253,6 @@ device_nubus_card_interface::~device_nubus_card_interface()
{
}
-void device_nubus_card_interface::static_set_nubus_tag(device_t &device, const char *tag, const char *slottag)
-{
- device_nubus_card_interface &nubus_card = dynamic_cast<device_nubus_card_interface &>(device);
- nubus_card.m_nubus_tag = tag;
- nubus_card.m_nubus_slottag = slottag;
-}
-
void device_nubus_card_interface::interface_pre_start()
{
if (!m_nubus)
diff --git a/src/devices/bus/nubus/nubus.h b/src/devices/bus/nubus/nubus.h
index 2f7fc5c359a..011a87a861d 100644
--- a/src/devices/bus/nubus/nubus.h
+++ b/src/devices/bus/nubus/nubus.h
@@ -20,37 +20,37 @@
//**************************************************************************
#define MCFG_NUBUS_CPU(_cputag) \
- nubus_device::static_set_cputag(*device, _cputag);
+ downcast<nubus_device &>(*device).set_cputag(_cputag);
#define MCFG_NUBUS_OUT_IRQ9_CB(_devcb) \
- devcb = &nubus_device::set_out_irq9_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<nubus_device &>(*device).set_out_irq9_callback(DEVCB_##_devcb);
#define MCFG_NUBUS_OUT_IRQA_CB(_devcb) \
- devcb = &nubus_device::set_out_irqa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<nubus_device &>(*device).set_out_irqa_callback(DEVCB_##_devcb);
#define MCFG_NUBUS_OUT_IRQB_CB(_devcb) \
- devcb = &nubus_device::set_out_irqb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<nubus_device &>(*device).set_out_irqb_callback(DEVCB_##_devcb);
#define MCFG_NUBUS_OUT_IRQC_CB(_devcb) \
- devcb = &nubus_device::set_out_irqc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<nubus_device &>(*device).set_out_irqc_callback(DEVCB_##_devcb);
#define MCFG_NUBUS_OUT_IRQD_CB(_devcb) \
- devcb = &nubus_device::set_out_irqd_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<nubus_device &>(*device).set_out_irqd_callback(DEVCB_##_devcb);
#define MCFG_NUBUS_OUT_IRQE_CB(_devcb) \
- devcb = &nubus_device::set_out_irqe_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<nubus_device &>(*device).set_out_irqe_callback(DEVCB_##_devcb);
#define MCFG_NUBUS_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, NUBUS_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- nubus_slot_device::static_set_nubus_slot(*device, _nbtag, _tag);
+ downcast<nubus_slot_device &>(*device).set_nubus_slot(_nbtag, _tag);
#define MCFG_NUBUS_SLOT_REMOVE(_tag) \
MCFG_DEVICE_REMOVE(_tag)
#define MCFG_NUBUS_ONBOARD_ADD(_nbtag, _tag, _dev_type, _def_inp) \
MCFG_DEVICE_ADD(_tag, _dev_type, 0) \
MCFG_DEVICE_INPUT_DEFAULTS(_def_inp) \
- device_nubus_card_interface::static_set_nubus_tag(*device, _nbtag, _tag);
+ downcast<device_nubus_card_interface &>(*device).set_nubus_tag(_nbtag, _tag);
//**************************************************************************
// TYPE DEFINITIONS
@@ -65,7 +65,7 @@ public:
nubus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_nubus_slot(device_t &device, const char *tag, const char *slottag);
+ void set_nubus_slot(const char *tag, const char *slottag) { m_nubus_tag = tag; m_nubus_slottag = slottag; }
protected:
nubus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -90,13 +90,13 @@ public:
~nubus_device() { m_device_list.detach_all(); }
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
- template <class Object> static devcb_base &set_out_irq9_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irq9_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irqa_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irqb_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irqc_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irqd_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqd_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irqe_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqe_cb.set_callback(std::forward<Object>(cb)); }
+ void set_cputag(const char *tag) { m_cputag = tag; }
+ template <class Object> devcb_base &set_out_irq9_callback(Object &&cb) { return m_out_irq9_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irqa_callback(Object &&cb) { return m_out_irqa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irqb_callback(Object &&cb) { return m_out_irqb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irqc_callback(Object &&cb) { return m_out_irqc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irqd_callback(Object &&cb) { return m_out_irqd_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irqe_callback(Object &&cb) { return m_out_irqe_cb.set_callback(std::forward<Object>(cb)); }
void add_nubus_card(device_nubus_card_interface *card);
void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler, uint32_t mask=0xffffffff);
@@ -165,7 +165,7 @@ public:
void lower_slot_irq() { nubus().set_irq_line(m_slot, CLEAR_LINE); }
// inline configuration
- static void static_set_nubus_tag(device_t &device, const char *tag, const char *slottag);
+ void set_nubus_tag(const char *tag, const char *slottag) { m_nubus_tag = tag; m_nubus_slottag = slottag; }
protected:
device_nubus_card_interface(const machine_config &mconfig, device_t &device);
diff --git a/src/devices/bus/nubus/nubus_48gc.cpp b/src/devices/bus/nubus/nubus_48gc.cpp
index de2d52fb420..a3696a376ea 100644
--- a/src/devices/bus/nubus/nubus_48gc.cpp
+++ b/src/devices/bus/nubus/nubus_48gc.cpp
@@ -79,7 +79,7 @@ jmfb_device::jmfb_device(const machine_config &mconfig, device_type type, const
m_is824(is824),
m_assembled_tag(util::string_format("%s:%s", tag, GC48_SCREEN_NAME))
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
nubus_48gc_device::nubus_48gc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
diff --git a/src/devices/bus/nubus/nubus_m2hires.cpp b/src/devices/bus/nubus/nubus_m2hires.cpp
index b267ec4ef27..f7830f2f47a 100644
--- a/src/devices/bus/nubus/nubus_m2hires.cpp
+++ b/src/devices/bus/nubus/nubus_m2hires.cpp
@@ -73,7 +73,7 @@ nubus_m2hires_device::nubus_m2hires_device(const machine_config &mconfig, device
m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
m_assembled_tag(util::string_format("%s:%s", tag, M2HIRES_SCREEN_NAME))
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/nubus_m2video.cpp b/src/devices/bus/nubus/nubus_m2video.cpp
index 2a1b820cee1..45fa1e8d129 100644
--- a/src/devices/bus/nubus/nubus_m2video.cpp
+++ b/src/devices/bus/nubus/nubus_m2video.cpp
@@ -75,7 +75,7 @@ nubus_m2video_device::nubus_m2video_device(const machine_config &mconfig, device
m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
m_assembled_tag(util::string_format("%s:%s", tag, M2VIDEO_SCREEN_NAME))
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/nubus_radiustpd.cpp b/src/devices/bus/nubus/nubus_radiustpd.cpp
index 9b6749f92b2..32e66083ae7 100644
--- a/src/devices/bus/nubus/nubus_radiustpd.cpp
+++ b/src/devices/bus/nubus/nubus_radiustpd.cpp
@@ -76,7 +76,7 @@ nubus_radiustpd_device::nubus_radiustpd_device(const machine_config &mconfig, de
m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
m_assembled_tag(util::string_format("%s:%s", tag, RADIUSTPD_SCREEN_NAME))
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/nubus_spec8.cpp b/src/devices/bus/nubus/nubus_spec8.cpp
index 215ad07a1ab..82d7553bc68 100644
--- a/src/devices/bus/nubus/nubus_spec8.cpp
+++ b/src/devices/bus/nubus/nubus_spec8.cpp
@@ -78,7 +78,7 @@ nubus_spec8s3_device::nubus_spec8s3_device(const machine_config &mconfig, device
m_assembled_tag(util::string_format("%s:%s", tag, SPEC8S3_SCREEN_NAME)),
m_vbl_pending(false), m_parameter(0)
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/nubus_specpdq.cpp b/src/devices/bus/nubus/nubus_specpdq.cpp
index 30012d26e64..9eda2555e87 100644
--- a/src/devices/bus/nubus/nubus_specpdq.cpp
+++ b/src/devices/bus/nubus/nubus_specpdq.cpp
@@ -92,7 +92,7 @@ nubus_specpdq_device::nubus_specpdq_device(const machine_config &mconfig, device
m_width(0), m_height(0), m_patofsx(0), m_patofsy(0), m_vram_addr(0), m_vram_src(0),
m_palette(*this, "palette")
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/nubus_wsportrait.cpp b/src/devices/bus/nubus/nubus_wsportrait.cpp
index 095c7aa781e..a88c1cbdb9a 100644
--- a/src/devices/bus/nubus/nubus_wsportrait.cpp
+++ b/src/devices/bus/nubus/nubus_wsportrait.cpp
@@ -76,7 +76,7 @@ nubus_wsportrait_device::nubus_wsportrait_device(const machine_config &mconfig,
m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
m_assembled_tag(util::string_format("%s:%s", tag, WSPORTRAIT_SCREEN_NAME))
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/pds30_30hr.cpp b/src/devices/bus/nubus/pds30_30hr.cpp
index b6ae942efb9..4efd30712ef 100644
--- a/src/devices/bus/nubus/pds30_30hr.cpp
+++ b/src/devices/bus/nubus/pds30_30hr.cpp
@@ -76,7 +76,7 @@ nubus_xceed30hr_device::nubus_xceed30hr_device(const machine_config &mconfig, de
m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
m_assembled_tag(util::string_format("%s:%s", tag, XCEED30HR_SCREEN_NAME))
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/pds30_cb264.cpp b/src/devices/bus/nubus/pds30_cb264.cpp
index 7741308dd6b..37846d2f1eb 100644
--- a/src/devices/bus/nubus/pds30_cb264.cpp
+++ b/src/devices/bus/nubus/pds30_cb264.cpp
@@ -70,7 +70,7 @@ nubus_cb264se30_device::nubus_cb264se30_device(const machine_config &mconfig, de
m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
m_assembled_tag(util::string_format("%s:%s", tag, CB264SE30_SCREEN_NAME))
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/pds30_mc30.cpp b/src/devices/bus/nubus/pds30_mc30.cpp
index 1456c88770a..5c6fa193bf6 100644
--- a/src/devices/bus/nubus/pds30_mc30.cpp
+++ b/src/devices/bus/nubus/pds30_mc30.cpp
@@ -72,7 +72,7 @@ nubus_xceedmc30_device::nubus_xceedmc30_device(const machine_config &mconfig, de
m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
m_assembled_tag(util::string_format("%s:%s", tag, XCEEDMC30_SCREEN_NAME))
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/pds30_procolor816.cpp b/src/devices/bus/nubus/pds30_procolor816.cpp
index d0d73a81a7e..81417b33f44 100644
--- a/src/devices/bus/nubus/pds30_procolor816.cpp
+++ b/src/devices/bus/nubus/pds30_procolor816.cpp
@@ -75,7 +75,7 @@ nubus_procolor816_device::nubus_procolor816_device(const machine_config &mconfig
m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
m_assembled_tag(util::string_format("%s:%s", tag, PROCOLOR816_SCREEN_NAME))
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/pds30_sigmalview.cpp b/src/devices/bus/nubus/pds30_sigmalview.cpp
index 0d1daef83ea..1fcbb1ec3aa 100644
--- a/src/devices/bus/nubus/pds30_sigmalview.cpp
+++ b/src/devices/bus/nubus/pds30_sigmalview.cpp
@@ -70,7 +70,7 @@ nubus_lview_device::nubus_lview_device(const machine_config &mconfig, device_typ
m_vram32(nullptr), m_vbl_disable(0), m_toggle(0), m_timer(nullptr), m_protstate(0),
m_assembled_tag(util::string_format("%s:%s", tag, LVIEW_SCREEN_NAME))
{
- static_set_screen(*this, m_assembled_tag.c_str());
+ set_screen(m_assembled_tag.c_str());
}
//-------------------------------------------------
diff --git a/src/devices/bus/oricext/oricext.h b/src/devices/bus/oricext/oricext.h
index 6dc84ed2599..e914ceeefb7 100644
--- a/src/devices/bus/oricext/oricext.h
+++ b/src/devices/bus/oricext/oricext.h
@@ -17,7 +17,7 @@
MCFG_DEVICE_ADD(_tag, ORICEXT_CONNECTOR, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
downcast<oricext_connector *>(device)->set_cputag(_cputag); \
- devcb = &oricext_connector::set_irq_handler(*device, DEVCB_##_irq);
+ devcb = &downcast<oricext_connector &>(*device).set_irq_handler(DEVCB_##_irq);
class oricext_device;
@@ -29,7 +29,7 @@ public:
virtual ~oricext_connector();
void set_cputag(const char *tag);
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<oricext_connector &>(device).irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return irq_handler.set_callback(std::forward<Object>(cb)); }
void irq_w(int state);
protected:
diff --git a/src/devices/bus/pc1512/mouse.h b/src/devices/bus/pc1512/mouse.h
index f94984ab979..36cf22ce9bd 100644
--- a/src/devices/bus/pc1512/mouse.h
+++ b/src/devices/bus/pc1512/mouse.h
@@ -37,16 +37,16 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_PC1512_MOUSE_PORT_X_CB(_write) \
- devcb = &pc1512_mouse_port_device::set_x_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<pc1512_mouse_port_device &>(*device).set_x_wr_callback(DEVCB_##_write);
#define MCFG_PC1512_MOUSE_PORT_Y_CB(_write) \
- devcb = &pc1512_mouse_port_device::set_y_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<pc1512_mouse_port_device &>(*device).set_y_wr_callback(DEVCB_##_write);
#define MCFG_PC1512_MOUSE_PORT_M1_CB(_write) \
- devcb = &pc1512_mouse_port_device::set_m1_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<pc1512_mouse_port_device &>(*device).set_m1_wr_callback(DEVCB_##_write);
#define MCFG_PC1512_MOUSE_PORT_M2_CB(_write) \
- devcb = &pc1512_mouse_port_device::set_m2_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<pc1512_mouse_port_device &>(*device).set_m2_wr_callback(DEVCB_##_write);
@@ -81,10 +81,10 @@ public:
pc1512_mouse_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_x_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_x.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_y_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_y.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_m1_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_m1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_m2_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_m2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_x_wr_callback(Object &&cb) { return m_write_x.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_y_wr_callback(Object &&cb) { return m_write_y.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_m1_wr_callback(Object &&cb) { return m_write_m1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_m2_wr_callback(Object &&cb) { return m_write_m2.set_callback(std::forward<Object>(cb)); }
// peripheral interface
void x_w(uint8_t data) { m_write_x(data); }
diff --git a/src/devices/bus/pc_kbd/pc_kbdc.cpp b/src/devices/bus/pc_kbd/pc_kbdc.cpp
index 7fc1ed0419a..9bd50c1ea5f 100644
--- a/src/devices/bus/pc_kbd/pc_kbdc.cpp
+++ b/src/devices/bus/pc_kbd/pc_kbdc.cpp
@@ -38,12 +38,6 @@ pc_kbdc_slot_device::pc_kbdc_slot_device(const machine_config &mconfig, const ch
}
-void pc_kbdc_slot_device::static_set_pc_kbdc_slot(device_t &device, device_t *kbdc_device)
-{
- pc_kbdc_slot_device &pc_kbdc = dynamic_cast<pc_kbdc_slot_device &>(device);
- pc_kbdc.m_kbdc_device = kbdc_device;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -54,7 +48,7 @@ void pc_kbdc_slot_device::device_start()
if (pc_kbd)
{
- device_pc_kbd_interface::static_set_pc_kbdc( *pc_kbd, m_kbdc_device );
+ pc_kbd->set_pc_kbdc(m_kbdc_device);
}
}
@@ -219,13 +213,6 @@ WRITE_LINE_MEMBER( device_pc_kbd_interface::data_write )
}
-void device_pc_kbd_interface::static_set_pc_kbdc(device_t &device, device_t *kbdc_device)
-{
- device_pc_kbd_interface &pc_kbd = dynamic_cast<device_pc_kbd_interface &>(device);
- pc_kbd.m_pc_kbdc = dynamic_cast<pc_kbdc_device *>(kbdc_device);
-}
-
-
void device_pc_kbd_interface::set_pc_kbdc_device()
{
if ( m_pc_kbdc )
diff --git a/src/devices/bus/pc_kbd/pc_kbdc.h b/src/devices/bus/pc_kbd/pc_kbdc.h
index f6de3d3a86e..75a17da2d19 100644
--- a/src/devices/bus/pc_kbd/pc_kbdc.h
+++ b/src/devices/bus/pc_kbd/pc_kbdc.h
@@ -21,15 +21,15 @@ set the data line and then set the clock line.
//**************************************************************************
#define MCFG_PC_KBDC_OUT_CLOCK_CB(_devcb) \
- devcb = &pc_kbdc_device::set_out_clock_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pc_kbdc_device &>(*device).set_out_clock_callback(DEVCB_##_devcb);
#define MCFG_PC_KBDC_OUT_DATA_CB(_devcb) \
- devcb = &pc_kbdc_device::set_out_data_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pc_kbdc_device &>(*device).set_out_data_callback(DEVCB_##_devcb);
#define MCFG_PC_KBDC_SLOT_ADD(_kbdc_tag, _tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, PC_KBDC_SLOT, 0 ) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- pc_kbdc_slot_device::static_set_pc_kbdc_slot(*device, subdevice(_kbdc_tag) );
+ downcast<pc_kbdc_slot_device &>(*device).set_pc_kbdc_slot(subdevice(_kbdc_tag) );
//**************************************************************************
// TYPE DEFINITIONS
@@ -47,7 +47,7 @@ public:
virtual void device_start() override;
// inline configuration
- static void static_set_pc_kbdc_slot(device_t &device, device_t *kbdc_device);
+ void set_pc_kbdc_slot(device_t *kbdc_device) { m_kbdc_device = kbdc_device; }
protected:
// configuration
@@ -67,8 +67,8 @@ public:
// construction/destruction
pc_kbdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_clock_callback(device_t &device, Object &&cb) { return downcast<pc_kbdc_device &>(device).m_out_clock_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_data_callback(device_t &device, Object &&cb) { return downcast<pc_kbdc_device &>(device).m_out_data_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_clock_callback(Object &&cb) { return m_out_clock_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_data_callback(Object &&cb) { return m_out_data_cb.set_callback(std::forward<Object>(cb)); }
void set_keyboard(device_pc_kbd_interface *keyboard);
@@ -129,7 +129,7 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER( data_write );
// inline configuration
- static void static_set_pc_kbdc(device_t &device, device_t *kbdc_device);
+ void set_pc_kbdc(device_t *kbdc_device) { m_pc_kbdc = dynamic_cast<pc_kbdc_device *>(kbdc_device); }
protected:
pc_kbdc_device *m_pc_kbdc;
diff --git a/src/devices/bus/pet/cass.h b/src/devices/bus/pet/cass.h
index d5c40c37181..c906f83754b 100644
--- a/src/devices/bus/pet/cass.h
+++ b/src/devices/bus/pet/cass.h
@@ -39,7 +39,7 @@
#define MCFG_PET_DATASSETTE_PORT_ADD(_tag, _slot_intf, _def_slot, _devcb) \
MCFG_DEVICE_ADD(_tag, PET_DATASSETTE_PORT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- devcb = &pet_datassette_port_device::set_read_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_datassette_port_device &>(*device).set_read_handler(DEVCB_##_devcb);
@@ -59,7 +59,7 @@ public:
virtual ~pet_datassette_port_device();
// static configuration helpers
- template <class Object> static devcb_base &set_read_handler(device_t &device, Object &&cb) { return downcast<pet_datassette_port_device &>(device).m_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_handler(Object &&cb) { return m_read_handler.set_callback(std::forward<Object>(cb)); }
// computer interface
DECLARE_READ_LINE_MEMBER( read );
diff --git a/src/devices/bus/pet/user.h b/src/devices/bus/pet/user.h
index 52568776882..04034c492e0 100644
--- a/src/devices/bus/pet/user.h
+++ b/src/devices/bus/pet/user.h
@@ -33,61 +33,61 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_PET_USER_PORT_2_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_2_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_3_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_3_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_3_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_4_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_4_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_4_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_5_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_5_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_5_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_6_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_6_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_6_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_7_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_7_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_7_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_8_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_8_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_8_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_9_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_9_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_9_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_10_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_10_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_10_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_B_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_b_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_b_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_C_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_c_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_c_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_D_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_d_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_d_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_E_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_e_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_e_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_F_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_f_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_f_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_H_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_h_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_h_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_J_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_j_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_j_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_K_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_k_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_k_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_L_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_l_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_l_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_M_HANDLER(_devcb) \
- devcb = &pet_user_port_device::set_m_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pet_user_port_device &>(*device).set_m_handler(DEVCB_##_devcb);
DECLARE_DEVICE_TYPE(PET_USER_PORT, pet_user_port_device)
@@ -102,25 +102,25 @@ class pet_user_port_device : public device_t,
public:
pet_user_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_2_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_2_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_3_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_3_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_4_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_4_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_5_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_5_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_6_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_6_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_7_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_7_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_8_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_8_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_9_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_9_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_10_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_10_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_b_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_b_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_c_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_c_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_d_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_e_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_e_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_f_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_f_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_h_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_h_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_j_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_j_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_k_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_k_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_l_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_l_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_m_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_m_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_2_handler(Object &&cb) { return m_2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_3_handler(Object &&cb) { return m_3_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_4_handler(Object &&cb) { return m_4_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_5_handler(Object &&cb) { return m_5_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_6_handler(Object &&cb) { return m_6_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_7_handler(Object &&cb) { return m_7_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_8_handler(Object &&cb) { return m_8_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_9_handler(Object &&cb) { return m_9_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_10_handler(Object &&cb) { return m_10_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_b_handler(Object &&cb) { return m_b_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_c_handler(Object &&cb) { return m_c_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d_handler(Object &&cb) { return m_d_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_e_handler(Object &&cb) { return m_e_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_f_handler(Object &&cb) { return m_f_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_h_handler(Object &&cb) { return m_h_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_j_handler(Object &&cb) { return m_j_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_k_handler(Object &&cb) { return m_k_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_l_handler(Object &&cb) { return m_l_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_m_handler(Object &&cb) { return m_m_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_2 );
DECLARE_WRITE_LINE_MEMBER( write_3 );
diff --git a/src/devices/bus/plus4/exp.h b/src/devices/bus/plus4/exp.h
index 20cf09c65ad..4a4d583dd5b 100644
--- a/src/devices/bus/plus4/exp.h
+++ b/src/devices/bus/plus4/exp.h
@@ -67,16 +67,16 @@
#define MCFG_PLUS4_EXPANSION_SLOT_IRQ_CALLBACK(_write) \
- devcb = &plus4_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<plus4_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_PLUS4_EXPANSION_SLOT_CD_INPUT_CALLBACK(_read) \
- devcb = &plus4_expansion_slot_device::set_cd_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<plus4_expansion_slot_device &>(*device).set_cd_rd_callback(DEVCB_##_read);
#define MCFG_PLUS4_EXPANSION_SLOT_CD_OUTPUT_CALLBACK(_write) \
- devcb = &plus4_expansion_slot_device::set_cd_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<plus4_expansion_slot_device &>(*device).set_cd_wr_callback(DEVCB_##_write);
#define MCFG_PLUS4_EXPANSION_SLOT_AEC_CALLBACK(_write) \
- devcb = &plus4_expansion_slot_device::set_aec_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<plus4_expansion_slot_device &>(*device).set_aec_wr_callback(DEVCB_##_write);
@@ -96,10 +96,10 @@ public:
// construction/destruction
plus4_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cd_rd_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_read_dma_cd.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cd_wr_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_write_dma_cd.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_aec_wr_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_write_aec.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cd_rd_callback(Object &&cb) { return m_read_dma_cd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cd_wr_callback(Object &&cb) { return m_write_dma_cd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_aec_wr_callback(Object &&cb) { return m_write_aec.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h);
diff --git a/src/devices/bus/pofo/exp.h b/src/devices/bus/pofo/exp.h
index 2adcddb16f3..fadf724b68f 100644
--- a/src/devices/bus/pofo/exp.h
+++ b/src/devices/bus/pofo/exp.h
@@ -64,13 +64,13 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_PORTFOLIO_EXPANSION_SLOT_EINT_CALLBACK(_write) \
- devcb = &portfolio_expansion_slot_device::set_eint_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<portfolio_expansion_slot_device &>(*device).set_eint_wr_callback(DEVCB_##_write);
#define MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(_write) \
- devcb = &portfolio_expansion_slot_device::set_nmio_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<portfolio_expansion_slot_device &>(*device).set_nmio_wr_callback(DEVCB_##_write);
#define MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(_write) \
- devcb = &portfolio_expansion_slot_device::set_wake_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<portfolio_expansion_slot_device &>(*device).set_wake_wr_callback(DEVCB_##_write);
@@ -117,9 +117,9 @@ public:
// construction/destruction
portfolio_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_eint_wr_callback(device_t &device, Object &&cb) { return downcast<portfolio_expansion_slot_device &>(device).m_write_eint.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_nmio_wr_callback(device_t &device, Object &&cb) { return downcast<portfolio_expansion_slot_device &>(device).m_write_nmio.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_wake_wr_callback(device_t &device, Object &&cb) { return downcast<portfolio_expansion_slot_device &>(device).m_write_wake.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_eint_wr_callback(Object &&cb) { return m_write_eint.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmio_wr_callback(Object &&cb) { return m_write_nmio.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_wake_wr_callback(Object &&cb) { return m_write_wake.set_callback(std::forward<Object>(cb)); }
// computer interface
bool nmd1_r() { return (m_card != nullptr) ? m_card->nmd1() : 1; }
diff --git a/src/devices/bus/psi_kbd/psi_kbd.h b/src/devices/bus/psi_kbd/psi_kbd.h
index d042ad5e444..2381ccc97be 100644
--- a/src/devices/bus/psi_kbd/psi_kbd.h
+++ b/src/devices/bus/psi_kbd/psi_kbd.h
@@ -40,10 +40,10 @@
MCFG_DEVICE_SLOT_INTERFACE(psi_keyboard_devices, _def_slot, false)
#define MCFG_PSI_KEYBOARD_RX_HANDLER(_devcb) \
- devcb = &psi_keyboard_bus_device::set_rx_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psi_keyboard_bus_device &>(*device).set_rx_handler(DEVCB_##_devcb);
#define MCFG_PSI_KEYBOARD_KEY_STROBE_HANDLER(_devcb) \
- devcb = &psi_keyboard_bus_device::set_key_strobe_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psi_keyboard_bus_device &>(*device).set_key_strobe_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -62,11 +62,8 @@ public:
virtual ~psi_keyboard_bus_device();
// callbacks
- template <class Object> static devcb_base &set_rx_handler(device_t &device, Object &&cb)
- { return downcast<psi_keyboard_bus_device &>(device).m_rx_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_key_strobe_handler(device_t &device, Object &&cb)
- { return downcast<psi_keyboard_bus_device &>(device).m_key_strobe_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rx_handler(Object &&cb) { return m_rx_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_key_strobe_handler(Object &&cb) { return m_key_strobe_handler.set_callback(std::forward<Object>(cb)); }
// called from keyboard
DECLARE_WRITE_LINE_MEMBER( rx_w ) { m_rx_handler(state); }
diff --git a/src/devices/bus/psx/ctlrport.h b/src/devices/bus/psx/ctlrport.h
index 531c32a27dc..55c8d4473d3 100644
--- a/src/devices/bus/psx/ctlrport.h
+++ b/src/devices/bus/psx/ctlrport.h
@@ -82,10 +82,10 @@ private:
};
#define MCFG_PSX_CONTROLLER_PORTS_DSR_HANDLER(_devcb) \
- devcb = &psxcontrollerports_device::set_dsr_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxcontrollerports_device &>(*device).set_dsr_handler(DEVCB_##_devcb);
#define MCFG_PSX_CONTROLLER_PORTS_RXD_HANDLER(_devcb) \
- devcb = &psxcontrollerports_device::set_rxd_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxcontrollerports_device &>(*device).set_rxd_handler(DEVCB_##_devcb);
class psxcontrollerports_device : public device_t
{
@@ -94,8 +94,8 @@ public:
void ack();
- template <class Object> static devcb_base &set_dsr_handler(device_t &device, Object &&cb) { return downcast<psxcontrollerports_device &>(device).m_dsr_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<psxcontrollerports_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dsr_handler(Object &&cb) { return m_dsr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rxd_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(write_sck);
DECLARE_WRITE_LINE_MEMBER(write_dtr);
diff --git a/src/devices/bus/ql/exp.h b/src/devices/bus/ql/exp.h
index 43c6c6e7edc..bdb9e98808a 100644
--- a/src/devices/bus/ql/exp.h
+++ b/src/devices/bus/ql/exp.h
@@ -59,16 +59,16 @@
#define MCFG_QL_EXPANSION_SLOT_IPL0L_CALLBACK(_write) \
- devcb = &ql_expansion_slot_device::set_ipl0l_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<ql_expansion_slot_device &>(*device).set_ipl0l_wr_callback(DEVCB_##_write);
#define MCFG_QL_EXPANSION_SLOT_IPL1L_CALLBACK(_write) \
- devcb = &ql_expansion_slot_device::set_ipl1l_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<ql_expansion_slot_device &>(*device).set_ipl1l_wr_callback(DEVCB_##_write);
#define MCFG_QL_EXPANSION_SLOT_BERRL_CALLBACK(_write) \
- devcb = &ql_expansion_slot_device::set_berrl_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<ql_expansion_slot_device &>(*device).set_berrl_wr_callback(DEVCB_##_write);
#define MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(_write) \
- devcb = &ql_expansion_slot_device::set_extintl_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<ql_expansion_slot_device &>(*device).set_extintl_wr_callback(DEVCB_##_write);
@@ -107,10 +107,10 @@ public:
// construction/destruction
ql_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_ipl0l_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_ipl0l.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ipl1l_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_ipl1l.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_berrl_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_berrl.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_extintl_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_extintl.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ipl0l_wr_callback(Object &&cb) { return m_write_ipl0l.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ipl1l_wr_callback(Object &&cb) { return m_write_ipl1l.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_berrl_wr_callback(Object &&cb) { return m_write_berrl.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_extintl_wr_callback(Object &&cb) { return m_write_extintl.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t read(address_space &space, offs_t offset, uint8_t data) { if (m_card) data = m_card->read(space, offset, data); return data; }
diff --git a/src/devices/bus/rs232/rs232.h b/src/devices/bus/rs232/rs232.h
index adc121694ef..dbd372418d2 100644
--- a/src/devices/bus/rs232/rs232.h
+++ b/src/devices/bus/rs232/rs232.h
@@ -11,25 +11,25 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_RS232_RXD_HANDLER(_devcb) \
- devcb = &rs232_port_device::set_rxd_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<rs232_port_device &>(*device).set_rxd_handler(DEVCB_##_devcb);
#define MCFG_RS232_DCD_HANDLER(_devcb) \
- devcb = &rs232_port_device::set_dcd_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<rs232_port_device &>(*device).set_dcd_handler(DEVCB_##_devcb);
#define MCFG_RS232_DSR_HANDLER(_devcb) \
- devcb = &rs232_port_device::set_dsr_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<rs232_port_device &>(*device).set_dsr_handler(DEVCB_##_devcb);
#define MCFG_RS232_RI_HANDLER(_devcb) \
- devcb = &rs232_port_device::set_ri_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<rs232_port_device &>(*device).set_ri_handler(DEVCB_##_devcb);
#define MCFG_RS232_CTS_HANDLER(_devcb) \
- devcb = &rs232_port_device::set_cts_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<rs232_port_device &>(*device).set_cts_handler(DEVCB_##_devcb);
#define MCFG_RS232_RXC_HANDLER(_devcb) \
- devcb = &rs232_port_device::set_rxc_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<rs232_port_device &>(*device).set_rxc_handler(DEVCB_##_devcb);
#define MCFG_RS232_TXC_HANDLER(_devcb) \
- devcb = &rs232_port_device::set_txc_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<rs232_port_device &>(*device).set_txc_handler(DEVCB_##_devcb);
#define RS232_BAUD_110 (0x00)
#define RS232_BAUD_150 (0x01)
@@ -126,13 +126,13 @@ public:
virtual ~rs232_port_device();
// static configuration helpers
- template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dcd_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_dcd_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dsr_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_dsr_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ri_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_ri_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cts_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_cts_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rxc_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_rxc_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_txc_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_txc_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rxd_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dcd_handler(Object &&cb) { return m_dcd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dsr_handler(Object &&cb) { return m_dsr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ri_handler(Object &&cb) { return m_ri_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cts_handler(Object &&cb) { return m_cts_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rxc_handler(Object &&cb) { return m_rxc_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txc_handler(Object &&cb) { return m_txc_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_txd );
DECLARE_WRITE_LINE_MEMBER( write_dtr );
diff --git a/src/devices/bus/s100/s100.h b/src/devices/bus/s100/s100.h
index 406876ec20f..99fe0891261 100644
--- a/src/devices/bus/s100/s100.h
+++ b/src/devices/bus/s100/s100.h
@@ -77,55 +77,55 @@
#define MCFG_S100_IRQ_CALLBACK(_write) \
- devcb = &s100_bus_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_S100_NMI_CALLBACK(_write) \
- devcb = &s100_bus_device::set_nmi_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI0_CALLBACK(_write) \
- devcb = &s100_bus_device::set_vi0_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_vi0_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI1_CALLBACK(_write) \
- devcb = &s100_bus_device::set_vi1_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_vi1_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI2_CALLBACK(_write) \
- devcb = &s100_bus_device::set_vi2_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_vi2_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI3_CALLBACK(_write) \
- devcb = &s100_bus_device::set_vi3_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_vi3_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI4_CALLBACK(_write) \
- devcb = &s100_bus_device::set_vi4_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_vi4_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI5_CALLBACK(_write) \
- devcb = &s100_bus_device::set_vi5_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_vi5_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI6_CALLBACK(_write) \
- devcb = &s100_bus_device::set_vi6_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_vi6_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI7_CALLBACK(_write) \
- devcb = &s100_bus_device::set_vi7_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_vi7_wr_callback(DEVCB_##_write);
#define MCFG_S100_DMA0_CALLBACK(_write) \
- devcb = &s100_bus_device::set_dma0_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_dma0_wr_callback(DEVCB_##_write);
#define MCFG_S100_DMA1_CALLBACK(_write) \
- devcb = &s100_bus_device::set_dma1_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_dma1_wr_callback(DEVCB_##_write);
#define MCFG_S100_DMA2_CALLBACK(_write) \
- devcb = &s100_bus_device::set_dma2_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_dma2_wr_callback(DEVCB_##_write);
#define MCFG_S100_DMA3_CALLBACK(_write) \
- devcb = &s100_bus_device::set_dma3_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_dma3_wr_callback(DEVCB_##_write);
#define MCFG_S100_RDY_CALLBACK(_write) \
- devcb = &s100_bus_device::set_rdy_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_rdy_wr_callback(DEVCB_##_write);
#define MCFG_S100_HOLD_CALLBACK(_write) \
- devcb = &s100_bus_device::set_hold_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_hold_wr_callback(DEVCB_##_write);
#define MCFG_S100_ERROR_CALLBACK(_write) \
- devcb = &s100_bus_device::set_error_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<s100_bus_device &>(*device).set_error_wr_callback(DEVCB_##_write);
@@ -201,23 +201,23 @@ public:
s100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~s100_bus_device() { m_device_list.detach_all(); }
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_vi0_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi0.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_vi1_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_vi2_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_vi3_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_vi4_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi4.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_vi5_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi5.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_vi6_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi6.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_vi7_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi7.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma0_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma0.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma1_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma2_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma3_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rdy_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_rdy.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_hold_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_hold.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_error_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_error.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_vi0_wr_callback(Object &&cb) { return m_write_vi0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_vi1_wr_callback(Object &&cb) { return m_write_vi1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_vi2_wr_callback(Object &&cb) { return m_write_vi2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_vi3_wr_callback(Object &&cb) { return m_write_vi3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_vi4_wr_callback(Object &&cb) { return m_write_vi4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_vi5_wr_callback(Object &&cb) { return m_write_vi5.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_vi6_wr_callback(Object &&cb) { return m_write_vi6.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_vi7_wr_callback(Object &&cb) { return m_write_vi7.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma0_wr_callback(Object &&cb) { return m_write_dma0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma1_wr_callback(Object &&cb) { return m_write_dma1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma2_wr_callback(Object &&cb) { return m_write_dma2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma3_wr_callback(Object &&cb) { return m_write_dma3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rdy_wr_callback(Object &&cb) { return m_write_rdy.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_hold_wr_callback(Object &&cb) { return m_write_hold.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_error_wr_callback(Object &&cb) { return m_write_error.set_callback(std::forward<Object>(cb)); }
void add_card(device_s100_card_interface *card);
diff --git a/src/devices/bus/scsi/scsi.h b/src/devices/bus/scsi/scsi.h
index b6e15cecc02..3685a86cddc 100644
--- a/src/devices/bus/scsi/scsi.h
+++ b/src/devices/bus/scsi/scsi.h
@@ -18,55 +18,55 @@
#define SCSI_PORT_DEVICE7 "7"
#define MCFG_SCSI_BSY_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_bsy_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_bsy_handler(DEVCB_##_devcb);
#define MCFG_SCSI_SEL_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_sel_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_sel_handler(DEVCB_##_devcb);
#define MCFG_SCSI_CD_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_cd_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_cd_handler(DEVCB_##_devcb);
#define MCFG_SCSI_IO_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_io_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_io_handler(DEVCB_##_devcb);
#define MCFG_SCSI_MSG_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_msg_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_msg_handler(DEVCB_##_devcb);
#define MCFG_SCSI_REQ_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_req_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_req_handler(DEVCB_##_devcb);
#define MCFG_SCSI_ACK_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_ack_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_ack_handler(DEVCB_##_devcb);
#define MCFG_SCSI_ATN_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_atn_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_atn_handler(DEVCB_##_devcb);
#define MCFG_SCSI_RST_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_rst_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_rst_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA0_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_data0_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_data0_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA1_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_data1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_data1_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA2_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_data2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_data2_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA3_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_data3_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_data3_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA4_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_data4_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_data4_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA5_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_data5_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_data5_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA6_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_data6_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_data6_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA7_HANDLER(_devcb) \
- devcb = &scsi_port_device::set_data7_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<scsi_port_device &>(*device).set_data7_handler(DEVCB_##_devcb);
#define MCFG_SCSI_OUTPUT_LATCH_ADD(_tag, scsi_port_tag) \
MCFG_DEVICE_ADD(_tag, OUTPUT_LATCH, 0) \
@@ -100,23 +100,23 @@ public:
// construction/destruction
scsi_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_bsy_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_bsy_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sel_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_sel_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cd_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_cd_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_io_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_io_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_msg_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_msg_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_req_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_req_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ack_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_ack_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_atn_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_atn_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rst_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_rst_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data0_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data0_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data1_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data1_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data2_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data2_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data3_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data3_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data4_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data4_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data5_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data5_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data6_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data6_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data7_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data7_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_bsy_handler(Object &&cb) { return m_bsy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sel_handler(Object &&cb) { return m_sel_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cd_handler(Object &&cb) { return m_cd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_io_handler(Object &&cb) { return m_io_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_msg_handler(Object &&cb) { return m_msg_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_req_handler(Object &&cb) { return m_req_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ack_handler(Object &&cb) { return m_ack_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_atn_handler(Object &&cb) { return m_atn_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rst_handler(Object &&cb) { return m_rst_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data0_handler(Object &&cb) { return m_data0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data1_handler(Object &&cb) { return m_data1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data2_handler(Object &&cb) { return m_data2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data3_handler(Object &&cb) { return m_data3_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data4_handler(Object &&cb) { return m_data4_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data5_handler(Object &&cb) { return m_data5_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data6_handler(Object &&cb) { return m_data6_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data7_handler(Object &&cb) { return m_data7_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_bsy );
DECLARE_WRITE_LINE_MEMBER( write_sel );
diff --git a/src/devices/bus/sms_ctrl/lphaser.cpp b/src/devices/bus/sms_ctrl/lphaser.cpp
index 1782a75a689..1e41556710d 100644
--- a/src/devices/bus/sms_ctrl/lphaser.cpp
+++ b/src/devices/bus/sms_ctrl/lphaser.cpp
@@ -93,7 +93,7 @@ sms_light_phaser_device::sms_light_phaser_device(const machine_config &mconfig,
{
// Workaround for failed validation that occurs when running on a driver
// with Sega Scope emulation, which adds 2 screens (left/right lenses).
- static_set_screen(*this, ":screen");
+ set_screen(":screen");
}
diff --git a/src/devices/bus/sms_ctrl/smsctrl.h b/src/devices/bus/sms_ctrl/smsctrl.h
index f1dd5404408..71cfa2059c4 100644
--- a/src/devices/bus/sms_ctrl/smsctrl.h
+++ b/src/devices/bus/sms_ctrl/smsctrl.h
@@ -27,11 +27,11 @@
#define MCFG_SMS_CONTROL_PORT_TH_INPUT_HANDLER(_devcb) \
- devcb = &sms_control_port_device::set_th_input_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<sms_control_port_device &>(*device).set_th_input_handler(DEVCB_##_devcb);
#define MCFG_SMS_CONTROL_PORT_PIXEL_HANDLER(_devcb) \
- devcb = &sms_control_port_device::set_pixel_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<sms_control_port_device &>(*device).set_pixel_handler(DEVCB_##_devcb);
@@ -52,9 +52,9 @@ public:
virtual ~sms_control_port_device();
// static configuration helpers
- template <class Object> static devcb_base &set_th_input_handler(device_t &device, Object &&cb) { return downcast<sms_control_port_device &>(device).m_th_pin_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_th_input_handler(Object &&cb) { return m_th_pin_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pixel_handler(device_t &device, Object &&cb) { return downcast<sms_control_port_device &>(device).m_pixel_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pixel_handler(Object &&cb) { return m_pixel_handler.set_callback(std::forward<Object>(cb)); }
// Physical DE-9 connector interface
diff --git a/src/devices/bus/snes_ctrl/ctrl.h b/src/devices/bus/snes_ctrl/ctrl.h
index 943388e3fa0..1e23d1a5ae4 100644
--- a/src/devices/bus/snes_ctrl/ctrl.h
+++ b/src/devices/bus/snes_ctrl/ctrl.h
@@ -52,8 +52,8 @@ public:
snes_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~snes_control_port_device();
- static void set_onscreen_callback(device_t &device, snesctrl_onscreen_delegate callback) { downcast<snes_control_port_device &>(device).m_onscreen_cb = callback; }
- static void set_gunlatch_callback(device_t &device, snesctrl_gunlatch_delegate callback) { downcast<snes_control_port_device &>(device).m_gunlatch_cb = callback; }
+ template <typename Object> void set_onscreen_callback(Object &&cb) { m_onscreen_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_gunlatch_callback(Object &&cb) { m_gunlatch_cb = std::forward<Object>(cb); }
uint8_t read_pin4();
uint8_t read_pin5();
@@ -88,10 +88,10 @@ DECLARE_DEVICE_TYPE(SNES_CONTROL_PORT, snes_control_port_device)
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_SNESCTRL_ONSCREEN_CB(_class, _method) \
- snes_control_port_device::set_onscreen_callback(*device, snesctrl_onscreen_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<snes_control_port_device &>(*device).set_onscreen_callback(snesctrl_onscreen_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_SNESCTRL_GUNLATCH_CB(_class, _method) \
- snes_control_port_device::set_gunlatch_callback(*device, snesctrl_gunlatch_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<snes_control_port_device &>(*device).set_gunlatch_callback(snesctrl_gunlatch_delegate(&_class::_method, #_class "::" #_method, this));
SLOT_INTERFACE_EXTERN( snes_control_port_devices );
diff --git a/src/devices/bus/spectrum/exp.h b/src/devices/bus/spectrum/exp.h
index 0c522d88bb0..1110a3e7021 100644
--- a/src/devices/bus/spectrum/exp.h
+++ b/src/devices/bus/spectrum/exp.h
@@ -66,10 +66,10 @@
MCFG_SPECTRUM_EXPANSION_SLOT_NMI_HANDLER(DEVWRITELINE(DEVICE_SELF_OWNER, spectrum_expansion_slot_device, nmi_w))
#define MCFG_SPECTRUM_EXPANSION_SLOT_IRQ_HANDLER(_devcb) \
- devcb = &spectrum_expansion_slot_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<spectrum_expansion_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_SPECTRUM_EXPANSION_SLOT_NMI_HANDLER(_devcb) \
- devcb = &spectrum_expansion_slot_device::set_nmi_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<spectrum_expansion_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -88,11 +88,8 @@ public:
virtual ~spectrum_expansion_slot_device();
// callbacks
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb)
- { return downcast<spectrum_expansion_slot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
- { return downcast<spectrum_expansion_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( mreq_r );
DECLARE_WRITE8_MEMBER( mreq_w );
diff --git a/src/devices/bus/ss50/interface.h b/src/devices/bus/ss50/interface.h
index 2e35b0abf2f..2dd6f5c48b2 100644
--- a/src/devices/bus/ss50/interface.h
+++ b/src/devices/bus/ss50/interface.h
@@ -20,10 +20,10 @@
MCFG_DEVICE_SLOT_INTERFACE(ss50_##_slot_intf, _def_slot, false)
#define MCFG_SS50_INTERFACE_IRQ_CALLBACK(_devcb) \
- devcb = &ss50_interface_port_device::set_irq_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ss50_interface_port_device &>(*device).set_irq_cb(DEVCB_##_devcb);
#define MCFG_SS50_INTERFACE_FIRQ_CALLBACK(_devcb) \
- devcb = &ss50_interface_port_device::set_firq_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ss50_interface_port_device &>(*device).set_firq_cb(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -43,8 +43,8 @@ public:
ss50_interface_port_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// static configuration
- template<class Object> static devcb_base &set_irq_cb(device_t &device, Object &&object) { return downcast<ss50_interface_port_device &>(device).m_irq_cb.set_callback(std::forward<Object>(object)); }
- template<class Object> static devcb_base &set_firq_cb(device_t &device, Object &&object) { return downcast<ss50_interface_port_device &>(device).m_firq_cb.set_callback(std::forward<Object>(object)); }
+ template<class Object> devcb_base &set_irq_cb(Object &&object) { return m_irq_cb.set_callback(std::forward<Object>(object)); }
+ template<class Object> devcb_base &set_firq_cb(Object &&object) { return m_firq_cb.set_callback(std::forward<Object>(object)); }
// memory accesses
DECLARE_READ8_MEMBER(read);
diff --git a/src/devices/bus/sunkbd/sunkbd.h b/src/devices/bus/sunkbd/sunkbd.h
index e1ea42198ef..9693e95cd4e 100644
--- a/src/devices/bus/sunkbd/sunkbd.h
+++ b/src/devices/bus/sunkbd/sunkbd.h
@@ -12,7 +12,7 @@
MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false)
#define MCFG_SUNKBD_RXD_HANDLER(cb) \
- devcb = &sun_keyboard_port_device::set_rxd_handler(*device, DEVCB_##cb);
+ devcb = &downcast<sun_keyboard_port_device &>(*device).set_rxd_handler(DEVCB_##cb);
class device_sun_keyboard_port_interface;
@@ -27,7 +27,7 @@ public:
virtual ~sun_keyboard_port_device();
// static configuration helpers
- template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<sun_keyboard_port_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rxd_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_txd );
diff --git a/src/devices/bus/svi3x8/expander/expander.h b/src/devices/bus/svi3x8/expander/expander.h
index 262d2a8ea77..28320d7012f 100644
--- a/src/devices/bus/svi3x8/expander/expander.h
+++ b/src/devices/bus/svi3x8/expander/expander.h
@@ -49,25 +49,25 @@
MCFG_DEVICE_ADD(_tag, SVI_EXPANDER, 0) \
MCFG_DEVICE_SLOT_INTERFACE(svi_expander_modules, nullptr, false)
#define MCFG_SVI_EXPANDER_INT_HANDLER(_devcb) \
- devcb = &svi_expander_device::set_int_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<svi_expander_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_ROMDIS_HANDLER(_devcb) \
- devcb = &svi_expander_device::set_romdis_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<svi_expander_device &>(*device).set_romdis_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_RAMDIS_HANDLER(_devcb) \
- devcb = &svi_expander_device::set_ramdis_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<svi_expander_device &>(*device).set_ramdis_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_CTRL1_HANDLER(_devcb) \
- devcb = &svi_expander_device::set_ctrl1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<svi_expander_device &>(*device).set_ctrl1_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_CTRL2_HANDLER(_devcb) \
- devcb = &svi_expander_device::set_ctrl2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<svi_expander_device &>(*device).set_ctrl2_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_EXCSR_HANDLER(_devcb) \
- devcb = &svi_expander_device::set_excsr_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<svi_expander_device &>(*device).set_excsr_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_EXCSW_HANDLER(_devcb) \
- devcb = &svi_expander_device::set_excsw_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<svi_expander_device &>(*device).set_excsw_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -86,26 +86,13 @@ public:
virtual ~svi_expander_device();
// callbacks
- template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
- { return downcast<svi_expander_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_romdis_handler(device_t &device, Object &&cb)
- { return downcast<svi_expander_device &>(device).m_romdis_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ramdis_handler(device_t &device, Object &&cb)
- { return downcast<svi_expander_device &>(device).m_ramdis_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ctrl1_handler(device_t &device, Object &&cb)
- { return downcast<svi_expander_device &>(device).m_ctrl1_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ctrl2_handler(device_t &device, Object &&cb)
- { return downcast<svi_expander_device &>(device).m_ctrl2_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_excsr_handler(device_t &device, Object &&cb)
- { return downcast<svi_expander_device &>(device).m_excsr_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_excsw_handler(device_t &device, Object &&cb)
- { return downcast<svi_expander_device &>(device).m_excsw_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_romdis_handler(Object &&cb) { return m_romdis_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ramdis_handler(Object &&cb) { return m_ramdis_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ctrl1_handler(Object &&cb) { return m_ctrl1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ctrl2_handler(Object &&cb) { return m_ctrl2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_excsr_handler(Object &&cb) { return m_excsr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_excsw_handler(Object &&cb) { return m_excsw_handler.set_callback(std::forward<Object>(cb)); }
// called from cart device
DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); }
diff --git a/src/devices/bus/svi3x8/slot/slot.cpp b/src/devices/bus/svi3x8/slot/slot.cpp
index c8e35ec9c92..c345d864f4b 100644
--- a/src/devices/bus/svi3x8/slot/slot.cpp
+++ b/src/devices/bus/svi3x8/slot/slot.cpp
@@ -212,17 +212,6 @@ svi_slot_device::svi_slot_device(const machine_config &mconfig, const char *tag,
}
//-------------------------------------------------
-// set_bus - set owner bus tag
-//-------------------------------------------------
-
-void svi_slot_device::set_bus(device_t &device, device_t *owner, const char *bus_tag)
-{
- svi_slot_device &card = dynamic_cast<svi_slot_device &>(device);
- card.m_owner = owner;
- card.m_bus_tag = bus_tag;
-}
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/bus/svi3x8/slot/slot.h b/src/devices/bus/svi3x8/slot/slot.h
index 722f9aa0c8d..84764b1dc4f 100644
--- a/src/devices/bus/svi3x8/slot/slot.h
+++ b/src/devices/bus/svi3x8/slot/slot.h
@@ -51,16 +51,16 @@
#define MCFG_SVI_SLOT_ADD(_tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, SVI_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- svi_slot_device::set_bus(*device, this, "slotbus");
+ downcast<svi_slot_device &>(*device).set_bus(this, "slotbus");
#define MCFG_SVI_SLOT_INT_HANDLER(_devcb) \
- devcb = &svi_slot_bus_device::set_int_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<svi_slot_bus_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_SVI_SLOT_ROMDIS_HANDLER(_devcb) \
- devcb = &svi_slot_bus_device::set_romdis_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<svi_slot_bus_device &>(*device).set_romdis_handler(DEVCB_##_devcb);
#define MCFG_SVI_SLOT_RAMDIS_HANDLER(_devcb) \
- devcb = &svi_slot_bus_device::set_ramdis_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<svi_slot_bus_device &>(*device).set_ramdis_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -79,14 +79,9 @@ public:
virtual ~svi_slot_bus_device();
// callbacks
- template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
- { return downcast<svi_slot_bus_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_romdis_handler(device_t &device, Object &&cb)
- { return downcast<svi_slot_bus_device &>(device).m_romdis_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ramdis_handler(device_t &device, Object &&cb)
- { return downcast<svi_slot_bus_device &>(device).m_ramdis_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_romdis_handler(Object &&cb) { return m_romdis_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ramdis_handler(Object &&cb) { return m_ramdis_handler.set_callback(std::forward<Object>(cb)); }
void add_card(device_svi_slot_interface *card);
@@ -130,7 +125,7 @@ public:
svi_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void set_bus(device_t &device, device_t *owner, const char *bus_tag);
+ void set_bus(device_t *owner, const char *bus_tag) { m_owner = owner; m_bus_tag = bus_tag; }
protected:
// device-level overrides
diff --git a/src/devices/bus/ti8x/ti8x.h b/src/devices/bus/ti8x/ti8x.h
index 67ddad75747..91b86806885 100644
--- a/src/devices/bus/ti8x/ti8x.h
+++ b/src/devices/bus/ti8x/ti8x.h
@@ -47,10 +47,10 @@ DECLARE_DEVICE_TYPE(TI8X_LINK_PORT, ti8x_link_port_device)
MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false)
#define MCFG_TI8X_LINK_TIP_HANDLER(cb) \
- devcb = &ti8x_link_port_device::set_tip_handler(*device, DEVCB_##cb);
+ devcb = &downcast<ti8x_link_port_device &>(*device).set_tip_handler(DEVCB_##cb);
#define MCFG_TI8X_LINK_RING_HANDLER(cb) \
- devcb = &ti8x_link_port_device::set_ring_handler(*device, DEVCB_##cb);
+ devcb = &downcast<ti8x_link_port_device &>(*device).set_ring_handler(DEVCB_##cb);
class device_ti8x_link_port_interface;
@@ -62,10 +62,8 @@ public:
ti8x_link_port_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
// static configuration helpers
- template <class Object> static devcb_base &set_tip_handler(device_t &device, Object &&cb)
- { return downcast<ti8x_link_port_device &>(device).m_tip_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ring_handler(device_t &device, Object &&cb)
- { return downcast<ti8x_link_port_device &>(device).m_ring_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tip_handler(Object &&cb) { return m_tip_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ring_handler(Object &&cb) { return m_ring_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(tip_w);
DECLARE_WRITE_LINE_MEMBER(ring_w);
diff --git a/src/devices/bus/ti99/gromport/gromport.h b/src/devices/bus/ti99/gromport/gromport.h
index 7a67aac4bd0..1206b231ce8 100644
--- a/src/devices/bus/ti99/gromport/gromport.h
+++ b/src/devices/bus/ti99/gromport/gromport.h
@@ -38,10 +38,10 @@ public:
DECLARE_WRITE8_MEMBER(set_gromlines); // Combined GROM select lines
DECLARE_WRITE_LINE_MEMBER(gclock_in);
- static void set_mask(device_t &device, int mask) { downcast<gromport_device &>(device).m_mask = mask; }
+ void set_mask(int mask) { m_mask = mask; }
- template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb) { return downcast<gromport_device &>(device).m_console_ready.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_reset_callback(device_t &device, Object &&cb) { return downcast<gromport_device &>(device).m_console_reset.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ready_callback(Object &&cb) { return m_console_ready.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_reset_callback(Object &&cb) { return m_console_reset.set_callback(std::forward<Object>(cb)); }
void cartridge_inserted();
bool is_grom_idle();
@@ -97,19 +97,19 @@ SLOT_INTERFACE_EXTERN(gromport8);
#define MCFG_GROMPORT4_ADD( _tag ) \
MCFG_DEVICE_ADD(_tag, TI99_GROMPORT, 0) \
- bus::ti99::gromport::gromport_device::set_mask(*device, 0x1fff); \
+ downcast<bus::ti99::gromport::gromport_device &>(*device).set_mask(0x1fff); \
MCFG_DEVICE_SLOT_INTERFACE(gromport4, "single", false)
#define MCFG_GROMPORT8_ADD( _tag ) \
MCFG_DEVICE_ADD(_tag, TI99_GROMPORT, 0) \
- bus::ti99::gromport::gromport_device::set_mask(*device, 0x3fff); \
+ downcast<bus::ti99::gromport::gromport_device &>(*device).set_mask(0x3fff); \
MCFG_DEVICE_SLOT_INTERFACE(gromport8, "single", false)
#define MCFG_GROMPORT_READY_HANDLER( _ready ) \
- devcb = &bus::ti99::gromport::gromport_device::static_set_ready_callback( *device, DEVCB_##_ready );
+ devcb = &downcast<bus::ti99::gromport::gromport_device &>(*device).set_ready_callback(DEVCB_##_ready);
#define MCFG_GROMPORT_RESET_HANDLER( _reset ) \
- devcb = &bus::ti99::gromport::gromport_device::static_set_reset_callback( *device, DEVCB_##_reset );
+ devcb = &downcast<bus::ti99::gromport::gromport_device &>(*device).set_reset_callback(DEVCB_##_reset);
DECLARE_DEVICE_TYPE_NS(TI99_GROMPORT, bus::ti99::gromport, gromport_device)
diff --git a/src/devices/bus/ti99/internal/998board.h b/src/devices/bus/ti99/internal/998board.h
index 1787c0f9cec..526fad8bf44 100644
--- a/src/devices/bus/ti99/internal/998board.h
+++ b/src/devices/bus/ti99/internal/998board.h
@@ -522,20 +522,9 @@ public:
DECLARE_WRITE_LINE_MEMBER( holda_line );
- template<class _Object> static devcb_base &set_ready_wr_callback(device_t &device, _Object object)
- {
- return downcast<mainboard8_device &>(device).m_ready.set_callback(object);
- }
-
- template<class _Object> static devcb_base &set_reset_wr_callback(device_t &device, _Object object)
- {
- return downcast<mainboard8_device &>(device).m_console_reset.set_callback(object);
- }
-
- template<class _Object> static devcb_base &set_hold_wr_callback(device_t &device, _Object object)
- {
- return downcast<mainboard8_device &>(device).m_hold_line.set_callback(object);
- }
+ template<class Object> devcb_base &set_ready_wr_callback(Object &&cb) { return m_ready.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_reset_wr_callback(Object &&cb) { return m_console_reset.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_hold_wr_callback(Object &&cb) { return m_hold_line.set_callback(std::forward<Object>(cb)); }
void set_paddress(int address);
@@ -649,16 +638,16 @@ private:
} } } // end namespace bus::ti99::internal
#define MCFG_MAINBOARD8_READY_CALLBACK(_write) \
- devcb = &bus::ti99::internal::mainboard8_device::set_ready_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<bus::ti99::internal::mainboard8_device &>(*device).set_ready_wr_callback(DEVCB_##_write);
#define MCFG_MAINBOARD8_RESET_CALLBACK(_write) \
- devcb = &bus::ti99::internal::mainboard8_device::set_reset_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<bus::ti99::internal::mainboard8_device &>(*device).set_reset_wr_callback(DEVCB_##_write);
#define MCFG_MAINBOARD8_HOLD_CALLBACK(_write) \
- devcb = &bus::ti99::internal::mainboard8_device::set_hold_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<bus::ti99::internal::mainboard8_device &>(*device).set_hold_wr_callback(DEVCB_##_write);
#define MCFG_OSO_INT_CALLBACK(_int) \
- devcb = &bus::ti99::internal::oso_device::set_int_callback(*device, DEVCB##_int);
+ devcb = &downcast<bus::ti99::internal::oso_device &>(*device).set_int_callback(DEVCB##_int);
DECLARE_DEVICE_TYPE_NS(TI99_MAINBOARD8, bus::ti99::internal, mainboard8_device)
DECLARE_DEVICE_TYPE_NS(TI99_VAQUERRO, bus::ti99::internal, vaquerro_device)
diff --git a/src/devices/bus/ti99/internal/datamux.h b/src/devices/bus/ti99/internal/datamux.h
index 9d09f3e4c17..d864ee98c53 100644
--- a/src/devices/bus/ti99/internal/datamux.h
+++ b/src/devices/bus/ti99/internal/datamux.h
@@ -43,10 +43,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( gromclk_in );
- template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb)
- {
- return downcast<datamux_device &>(device).m_ready.set_callback(std::forward<Object>(cb));
- }
+ template <class Object> devcb_base &set_ready_callback(Object &&cb) { return m_ready.set_callback(std::forward<Object>(cb)); }
protected:
/* Constructor */
@@ -141,7 +138,7 @@ private:
/******************************************************************************/
#define MCFG_DMUX_READY_HANDLER( _intcallb ) \
- devcb = &bus::ti99::internal::datamux_device::static_set_ready_callback( *device, DEVCB_##_intcallb );
+ devcb = &downcast<bus::ti99::internal::datamux_device &>(*device).set_ready_callback(DEVCB_##_intcallb);
} } } // end namespace bus::ti99::internal
diff --git a/src/devices/bus/ti99/internal/evpcconn.h b/src/devices/bus/ti99/internal/evpcconn.h
index 4bd95f8f179..9f1af61ccf9 100644
--- a/src/devices/bus/ti99/internal/evpcconn.h
+++ b/src/devices/bus/ti99/internal/evpcconn.h
@@ -21,10 +21,7 @@ class evpc_clock_connector : public device_t
public:
evpc_clock_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &static_set_vdpint_callback(device_t &device, _Object object)
- {
- return downcast<evpc_clock_connector &>(device).m_vdpint.set_callback(object);
- }
+ template<class Object> devcb_base &set_vdpint_callback(Object &&cb) { return m_vdpint.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( vclock_line );
void device_start() override;
@@ -40,6 +37,6 @@ DECLARE_DEVICE_TYPE_NS(TI99_EVPCCONN, bus::ti99::internal, evpc_clock_connector)
#define MCFG_ADD_EVPC_CONNECTOR( _tag, _vdpint ) \
MCFG_DEVICE_ADD(_tag, TI99_EVPCCONN, 0) \
- devcb = &bus::ti99::internal::evpc_clock_connector::static_set_vdpint_callback( *device, DEVCB_##_vdpint );
+ devcb = &downcast<bus::ti99::internal::evpc_clock_connector &>(*device).set_vdpint_callback(DEVCB_##_vdpint);
#endif // MAME_BUS_TI99_INTERNAL_EVPCCONN_H
diff --git a/src/devices/bus/ti99/internal/genboard.h b/src/devices/bus/ti99/internal/genboard.h
index 80101fb2de8..26e6766adef 100644
--- a/src/devices/bus/ti99/internal/genboard.h
+++ b/src/devices/bus/ti99/internal/genboard.h
@@ -63,7 +63,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( clock_control );
uint8_t get_recent_key();
- template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb) { return downcast<geneve_keyboard_device &>(device).m_interrupt.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_interrupt.set_callback(std::forward<Object>(cb)); }
protected:
void device_start() override;
@@ -109,7 +109,7 @@ private:
};
#define MCFG_GENEVE_KBINT_HANDLER( _intcallb ) \
- devcb = &bus::ti99::internal::geneve_keyboard_device::static_set_int_callback( *device, DEVCB_##_intcallb );
+ devcb = &downcast<bus::ti99::internal::geneve_keyboard_device &>(*device).set_int_callback(DEVCB_##_intcallb);
/*****************************************************************************/
@@ -138,7 +138,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( pfm_select_msb );
DECLARE_WRITE_LINE_MEMBER( pfm_output_enable );
- template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb) { return downcast<geneve_mapper_device &>(device).m_ready.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ready_callback(Object &&cb) { return m_ready.set_callback(std::forward<Object>(cb)); }
protected:
void device_start() override;
@@ -222,7 +222,7 @@ private:
};
#define MCFG_GENEVE_READY_HANDLER( _intcallb ) \
- devcb = &bus::ti99::internal::geneve_mapper_device::static_set_ready_callback( *device, DEVCB_##_intcallb );
+ devcb = &downcast<bus::ti99::internal::geneve_mapper_device &>(*device).set_ready_callback(DEVCB_##_intcallb);
} } } // end namespace bus::ti99::internal
diff --git a/src/devices/bus/ti99/internal/ioport.h b/src/devices/bus/ti99/internal/ioport.h
index 91caf5a34a0..f63518705d4 100644
--- a/src/devices/bus/ti99/internal/ioport.h
+++ b/src/devices/bus/ti99/internal/ioport.h
@@ -59,8 +59,8 @@ class ioport_device : public device_t, public device_slot_interface
public:
ioport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &static_set_extint_callback(device_t &device, _Object object) { return downcast<ioport_device &>(device).m_console_extint.set_callback(object); }
- template<class _Object> static devcb_base &static_set_ready_callback(device_t &device, _Object object) { return downcast<ioport_device &>(device).m_console_ready.set_callback(object); }
+ template<class Object> devcb_base &set_extint_callback(Object &&cb) { return m_console_extint.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_ready_callback(Object &&cb) { return m_console_ready.set_callback(std::forward<Object>(cb)); }
// Methods called from the console
DECLARE_READ8Z_MEMBER( readz );
@@ -99,9 +99,9 @@ SLOT_INTERFACE_EXTERN(ti99_io_port_ev);
MCFG_DEVICE_SLOT_INTERFACE(ti99_io_port_ev, "peb", false)
#define MCFG_IOPORT_EXTINT_HANDLER( _extint ) \
- devcb = &bus::ti99::internal::ioport_device::static_set_extint_callback( *device, DEVCB_##_extint );
+ devcb = &downcast<bus::ti99::internal::ioport_device &>(*device).set_extint_callback(DEVCB_##_extint);
#define MCFG_IOPORT_READY_HANDLER( _ready ) \
- devcb = &bus::ti99::internal::ioport_device::static_set_ready_callback( *device, DEVCB_##_ready );
+ devcb = &downcast<bus::ti99::internal::ioport_device &>(*device).set_ready_callback(DEVCB_##_ready);
#endif /* __TI99IOPORT__ */
diff --git a/src/devices/bus/ti99/joyport/joyport.h b/src/devices/bus/ti99/joyport/joyport.h
index 44afd9f5fea..bf3f5bcf1f3 100644
--- a/src/devices/bus/ti99/joyport/joyport.h
+++ b/src/devices/bus/ti99/joyport/joyport.h
@@ -55,7 +55,7 @@ public:
void set_interrupt(int state);
void pulse_clock();
- template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb) { return downcast<joyport_device &>(device).m_interrupt.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_interrupt.set_callback(std::forward<Object>(cb)); }
protected:
void device_start() override;
@@ -75,7 +75,7 @@ SLOT_INTERFACE_EXTERN(ti99_joystick_port_gen);
DECLARE_DEVICE_TYPE_NS(TI99_JOYPORT, bus::ti99::joyport, joyport_device)
#define MCFG_JOYPORT_INT_HANDLER( _intcallb ) \
- devcb = &bus::ti99::joyport::joyport_device::static_set_int_callback( *device, DEVCB_##_intcallb );
+ devcb = &downcast<bus::ti99::joyport::joyport_device &>(*device).set_int_callback(DEVCB_##_intcallb);
#define MCFG_GENEVE_JOYPORT_ADD( _tag ) \
MCFG_DEVICE_ADD(_tag, TI99_JOYPORT, 0) \
diff --git a/src/devices/bus/ti99/peb/peribox.h b/src/devices/bus/ti99/peb/peribox.h
index bd6dda9be7c..00be0795d10 100644
--- a/src/devices/bus/ti99/peb/peribox.h
+++ b/src/devices/bus/ti99/peb/peribox.h
@@ -34,10 +34,10 @@ class peribox_device : public bus::ti99::internal::ioport_attached_device
public:
peribox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &static_set_inta_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_slot1_inta.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_intb_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_slot1_intb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_slot1_ready.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_lcp_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_slot1_lcp.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_inta_callback(Object &&cb) { return m_slot1_inta.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_intb_callback(Object &&cb) { return m_slot1_intb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ready_callback(Object &&cb) { return m_slot1_ready.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_lcp_callback(Object &&cb) { return m_slot1_lcp.set_callback(std::forward<Object>(cb)); }
// Next eight methods are called from the console
DECLARE_READ8Z_MEMBER(readz) override;
@@ -238,16 +238,16 @@ private:
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _default, false)
#define MCFG_PERIBOX_INTA_HANDLER( _inta ) \
- devcb = &bus::ti99::peb::peribox_device::static_set_inta_callback( *device, DEVCB_##_inta );
+ devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_inta_callback(DEVCB_##_inta);
#define MCFG_PERIBOX_INTB_HANDLER( _intb ) \
- devcb = &bus::ti99::peb::peribox_device::static_set_intb_callback( *device, DEVCB_##_intb );
+ devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_intb_callback(DEVCB_##_intb);
#define MCFG_PERIBOX_READY_HANDLER( _ready ) \
- devcb = &bus::ti99::peb::peribox_device::static_set_ready_callback( *device, DEVCB_##_ready );
+ devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_ready_callback(DEVCB_##_ready);
#define MCFG_PERIBOX_LCP_HANDLER( _lcp ) \
- devcb = &bus::ti99::peb::peribox_device::static_set_lcp_callback( *device, DEVCB_##_lcp );
+ devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_lcp_callback(DEVCB_##_lcp);
} } } // end namespace bus::ti99::peb
diff --git a/src/devices/bus/ti99x/990_dk.h b/src/devices/bus/ti99x/990_dk.h
index 97c00ef21d5..79bebc674d6 100644
--- a/src/devices/bus/ti99x/990_dk.h
+++ b/src/devices/bus/ti99x/990_dk.h
@@ -18,10 +18,7 @@ public:
DECLARE_READ8_MEMBER( cru_r );
DECLARE_WRITE8_MEMBER( cru_w );
- template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb)
- {
- return downcast<fd800_legacy_device &>(device).m_int_line.set_callback(std::forward<Object>(cb));
- }
+ template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_int_line.set_callback(std::forward<Object>(cb)); }
private:
enum buf_mode_t
@@ -72,6 +69,6 @@ private:
// LEGACY_FLOPPY_OPTIONS_EXTERN(fd800);
#define MCFG_FD800_INT_HANDLER( _intcallb ) \
- devcb = &fd800_legacy_device::static_set_int_callback( *device, DEVCB_##_intcallb );
+ devcb = &downcast<fd800_legacy_device &>(*device).set_int_callback(DEVCB_##_intcallb);
#endif // MAME_BUS_TI99X_990_DK_H
diff --git a/src/devices/bus/ti99x/990_hd.h b/src/devices/bus/ti99x/990_hd.h
index fdeaac0ea88..57f0f55fa27 100644
--- a/src/devices/bus/ti99x/990_hd.h
+++ b/src/devices/bus/ti99x/990_hd.h
@@ -15,7 +15,7 @@ class ti990_hdc_device : public device_t
public:
ti990_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb) { return downcast<ti990_hdc_device &>(device).m_interrupt_callback.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_interrupt_callback.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER(read);
DECLARE_WRITE16_MEMBER(write);
@@ -75,7 +75,7 @@ private:
};
#define MCFG_TI990_HDC_INT_CALLBACK( _write ) \
- devcb = &ti990_hdc_device::static_set_int_callback( *device, DEVCB_##_write );
+ devcb = &downcast<ti990_hdc_device &>(*device).set_int_callback(DEVCB_##_write);
DECLARE_DEVICE_TYPE(TI990_HDC, ti990_hdc_device)
diff --git a/src/devices/bus/ti99x/990_tap.h b/src/devices/bus/ti99x/990_tap.h
index 256d71da134..a86725dd079 100644
--- a/src/devices/bus/ti99x/990_tap.h
+++ b/src/devices/bus/ti99x/990_tap.h
@@ -14,10 +14,7 @@ class tap_990_device : public device_t
{
public:
tap_990_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb)
- {
- return downcast<tap_990_device &>(device).m_int_line.set_callback(std::forward<Object>(cb));
- }
+ template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_int_line.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER( read );
DECLARE_WRITE16_MEMBER( write );
@@ -64,6 +61,6 @@ private:
};
#define MCFG_TI990_TAPE_INT_HANDLER( _intcallb ) \
- devcb = &tap_990_device::static_set_int_callback( *device, DEVCB_##_intcallb );
+ devcb = &downcast<tap_990_device &>(*device).set_int_callback(DEVCB_##_intcallb);
#endif // MAME_BUS_TI99X_990_TAP_H
diff --git a/src/devices/bus/tiki100/exp.h b/src/devices/bus/tiki100/exp.h
index 9ae56520527..78b2dceaa9f 100644
--- a/src/devices/bus/tiki100/exp.h
+++ b/src/devices/bus/tiki100/exp.h
@@ -39,19 +39,19 @@
#define MCFG_TIKI100_BUS_IRQ_CALLBACK(_write) \
- devcb = &tiki100_bus_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<tiki100_bus_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_TIKI100_BUS_NMI_CALLBACK(_write) \
- devcb = &tiki100_bus_device::set_nmi_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<tiki100_bus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
#define MCFG_TIKI100_BUS_BUSRQ_CALLBACK(_write) \
- devcb = &tiki100_bus_device::set_busrq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<tiki100_bus_device &>(*device).set_busrq_wr_callback(DEVCB_##_write);
#define MCFG_TIKI100_BUS_IN_MREQ_CALLBACK(_read) \
- devcb = &tiki100_bus_device::set_mrq_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<tiki100_bus_device &>(*device).set_mrq_rd_callback(DEVCB_##_read);
#define MCFG_TIKI100_BUS_OUT_MREQ_CALLBACK(_write) \
- devcb = &tiki100_bus_device::set_mrq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<tiki100_bus_device &>(*device).set_mrq_wr_callback(DEVCB_##_write);
@@ -142,11 +142,11 @@ public:
tiki100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~tiki100_bus_device() { m_device_list.detach_all(); }
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_nmi_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_busrq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_busrq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_mrq_rd_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_in_mrq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_mrq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_out_mrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_busrq_wr_callback(Object &&cb) { return m_busrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_mrq_rd_callback(Object &&cb) { return m_in_mrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_mrq_wr_callback(Object &&cb) { return m_out_mrq_cb.set_callback(std::forward<Object>(cb)); }
void add_card(device_tiki100bus_card_interface *card);
diff --git a/src/devices/bus/tvc/tvc.h b/src/devices/bus/tvc/tvc.h
index c3e3ea44cf8..9fd9db95e14 100644
--- a/src/devices/bus/tvc/tvc.h
+++ b/src/devices/bus/tvc/tvc.h
@@ -94,8 +94,8 @@ public:
tvcexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~tvcexp_slot_device();
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<tvcexp_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<tvcexp_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
// reading and writing
virtual uint8_t id_r();
@@ -125,9 +125,9 @@ DECLARE_DEVICE_TYPE(TVCEXP_SLOT, tvcexp_slot_device)
***************************************************************************/
#define MCFG_TVCEXP_SLOT_OUT_IRQ_CB(_devcb) \
- devcb = &tvcexp_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tvcexp_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_TVCEXP_SLOT_OUT_NMI_CB(_devcb) \
- devcb = &tvcexp_slot_device::set_out_nmi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tvcexp_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#endif // MAME_BUS_TVC_TVC_H
diff --git a/src/devices/bus/vcs_ctrl/ctrl.h b/src/devices/bus/vcs_ctrl/ctrl.h
index bc018839989..972dab7ec5e 100644
--- a/src/devices/bus/vcs_ctrl/ctrl.h
+++ b/src/devices/bus/vcs_ctrl/ctrl.h
@@ -27,7 +27,7 @@
#define MCFG_VCS_CONTROL_PORT_TRIGGER_CALLBACK(_write) \
- devcb = &vcs_control_port_device::set_trigger_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<vcs_control_port_device &>(*device).set_trigger_wr_callback(DEVCB_##_write);
@@ -70,7 +70,7 @@ public:
vcs_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_trigger_wr_callback(device_t &device, Object &&cb) { return downcast<vcs_control_port_device &>(device).m_write_trigger.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_trigger_wr_callback(Object &&cb) { return m_write_trigger.set_callback(std::forward<Object>(cb)); }
// computer interface
diff --git a/src/devices/bus/vic10/exp.h b/src/devices/bus/vic10/exp.h
index 56fe43d5ef9..dc63a62a936 100644
--- a/src/devices/bus/vic10/exp.h
+++ b/src/devices/bus/vic10/exp.h
@@ -58,16 +58,16 @@
#define MCFG_VIC10_EXPANSION_SLOT_IRQ_CALLBACK(_write) \
- devcb = &vic10_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<vic10_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_VIC10_EXPANSION_SLOT_RES_CALLBACK(_write) \
- devcb = &vic10_expansion_slot_device::set_res_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<vic10_expansion_slot_device &>(*device).set_res_wr_callback(DEVCB_##_write);
#define MCFG_VIC10_EXPANSION_SLOT_CNT_CALLBACK(_write) \
- devcb = &vic10_expansion_slot_device::set_cnt_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<vic10_expansion_slot_device &>(*device).set_cnt_wr_callback(DEVCB_##_write);
#define MCFG_VIC10_EXPANSION_SLOT_SP_CALLBACK(_write) \
- devcb = &vic10_expansion_slot_device::set_sp_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<vic10_expansion_slot_device &>(*device).set_sp_wr_callback(DEVCB_##_write);
#define MCFG_VIC10_EXPANSION_SLOT_IRQ_CALLBACKS(_irq, _res) \
@@ -94,10 +94,10 @@ public:
// construction/destruction
vic10_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_res_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_res.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cnt_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_cnt.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sp_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_sp.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_res_wr_callback(Object &&cb) { return m_write_res.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cnt_wr_callback(Object &&cb) { return m_write_cnt.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sp_wr_callback(Object &&cb) { return m_write_sp.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int lorom, int uprom, int exram);
diff --git a/src/devices/bus/vic20/exp.h b/src/devices/bus/vic20/exp.h
index 559d55f90a0..695db050936 100644
--- a/src/devices/bus/vic20/exp.h
+++ b/src/devices/bus/vic20/exp.h
@@ -63,13 +63,13 @@
#define MCFG_VIC20_EXPANSION_SLOT_IRQ_CALLBACK(_write) \
- devcb = &vic20_expansion_slot_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<vic20_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_VIC20_EXPANSION_SLOT_NMI_CALLBACK(_write) \
- devcb = &vic20_expansion_slot_device::set_nmi_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<vic20_expansion_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
#define MCFG_VIC20_EXPANSION_SLOT_RES_CALLBACK(_write) \
- devcb = &vic20_expansion_slot_device::set_res_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<vic20_expansion_slot_device &>(*device).set_res_wr_callback(DEVCB_##_write);
@@ -89,9 +89,9 @@ public:
// construction/destruction
vic20_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<vic20_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<vic20_expansion_slot_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_res_wr_callback(device_t &device, Object &&cb) { return downcast<vic20_expansion_slot_device &>(device).m_write_res.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_res_wr_callback(Object &&cb) { return m_write_res.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3);
diff --git a/src/devices/bus/vidbrain/exp.h b/src/devices/bus/vidbrain/exp.h
index 23ae2108d3e..60d1f90ec32 100644
--- a/src/devices/bus/vidbrain/exp.h
+++ b/src/devices/bus/vidbrain/exp.h
@@ -60,7 +60,7 @@
#define MCFG_VIDEOBRAIN_EXPANSION_SLOT_EXTRES_CALLBACK(_write) \
- devcb = &videobrain_expansion_slot_device::set_extres_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<videobrain_expansion_slot_device &>(*device).set_extres_wr_callback(DEVCB_##_write);
@@ -112,7 +112,7 @@ public:
// construction/destruction
videobrain_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_extres_wr_callback(device_t &device, Object &&cb) { return downcast<videobrain_expansion_slot_device &>(device).m_write_extres.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_extres_wr_callback(Object &&cb) { return m_write_extres.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t bo_r(address_space &space, offs_t offset, int cs1, int cs2);
diff --git a/src/devices/bus/vip/exp.h b/src/devices/bus/vip/exp.h
index 9e49ad4b98c..4e864fc0430 100644
--- a/src/devices/bus/vip/exp.h
+++ b/src/devices/bus/vip/exp.h
@@ -57,13 +57,13 @@
#define MCFG_VIP_EXPANSION_SLOT_INT_CALLBACK(_write) \
- devcb = &vip_expansion_slot_device::set_int_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<vip_expansion_slot_device &>(*device).set_int_wr_callback(DEVCB_##_write);
#define MCFG_VIP_EXPANSION_SLOT_DMA_OUT_CALLBACK(_write) \
- devcb = &vip_expansion_slot_device::set_dma_out_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<vip_expansion_slot_device &>(*device).set_dma_out_wr_callback(DEVCB_##_write);
#define MCFG_VIP_EXPANSION_SLOT_DMA_IN_CALLBACK(_write) \
- devcb = &vip_expansion_slot_device::set_dma_in_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<vip_expansion_slot_device &>(*device).set_dma_in_wr_callback(DEVCB_##_write);
@@ -82,9 +82,9 @@ public:
// construction/destruction
vip_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<vip_expansion_slot_device &>(device).m_write_int.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_out_wr_callback(device_t &device, Object &&cb) { return downcast<vip_expansion_slot_device &>(device).m_write_dma_out.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_in_wr_callback(device_t &device, Object &&cb) { return downcast<vip_expansion_slot_device &>(device).m_write_dma_in.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_out_wr_callback(Object &&cb) { return m_write_dma_out.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_in_wr_callback(Object &&cb) { return m_write_dma_in.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t program_r(address_space &space, offs_t offset, int cs, int cdef, int *minh);
diff --git a/src/devices/bus/vme/vme.cpp b/src/devices/bus/vme/vme.cpp
index 5f4bf5d20a9..d7d549bb34c 100644
--- a/src/devices/bus/vme/vme.cpp
+++ b/src/devices/bus/vme/vme.cpp
@@ -117,22 +117,21 @@ vme_slot_device::vme_slot_device(const machine_config &mconfig, device_type type
}
//-------------------------------------------------
-// static_update_vme_chains
+// update_vme_chains
//-------------------------------------------------
-void vme_slot_device::static_update_vme_chains(device_t &device, uint32_t slot_nbr)
+void vme_slot_device::update_vme_chains(uint32_t slot_nbr)
{
- LOG("%s %s - %d\n", FUNCNAME, device.tag(), slot_nbr);
+ LOG("%s %s - %d\n", FUNCNAME, tag(), slot_nbr);
}
//-------------------------------------------------
-// static_set_vme_slot
+// set_vme_slot
//-------------------------------------------------
-void vme_slot_device::static_set_vme_slot(device_t &device, const char *tag, const char *slottag)
+void vme_slot_device::set_vme_slot(const char *tag, const char *slottag)
{
LOG("%s %s - %s\n", FUNCNAME, tag, slottag);
- vme_slot_device &vme_card = dynamic_cast<vme_slot_device&>(device);
- vme_card.m_vme_tag = tag;
- vme_card.m_vme_slottag = slottag;
+ m_vme_tag = tag;
+ m_vme_slottag = slottag;
}
//-------------------------------------------------
@@ -144,7 +143,7 @@ void vme_slot_device::device_start()
LOG("%s %s - %s:%s\n", tag(), FUNCNAME, m_vme_tag, m_vme_slottag);
if (dev)
{
- device_vme_card_interface::static_set_vme_tag(*dev, m_vme_tag, m_vme_slottag);
+ dev->set_vme_tag(m_vme_tag, m_vme_slottag);
}
// m_card = dynamic_cast<device_vme_card_interface *>(get_card_device());
@@ -212,22 +211,14 @@ device_memory_interface::space_config_vector vme_device::memory_space_config() c
};
}
-// static_set_cputag - used to be able to lookup the CPU owning this VME bus
-void vme_device::static_set_cputag(device_t &device, const char *tag)
-{
- vme_device &vme = downcast<vme_device &>(device);
- vme.m_cputag = tag;
-}
-
-// static_set_use_owner_spaces - disables use of the memory interface and use the address spaces
+// set_use_owner_spaces - disables use of the memory interface and use the address spaces
// of the owner instead. This is useful for VME buses where no address modifiers or arbitration is
// being used and gives some gain in performance.
-void vme_device::static_use_owner_spaces(device_t &device)
+void vme_device::use_owner_spaces()
{
- LOG("%s %s\n", device.tag(), FUNCNAME);
- vme_device &vme = downcast<vme_device &>(device);
+ LOG("%s %s\n", tag(), FUNCNAME);
- vme.m_allocspaces = false;
+ m_allocspaces = false;
}
vme_device::vme_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
@@ -418,12 +409,11 @@ device_vme_card_interface::~device_vme_card_interface()
LOG("%s %s\n", m_device->tag(), FUNCNAME);
}
-void device_vme_card_interface::static_set_vme_tag(device_t &device, const char *tag, const char *slottag)
+void device_vme_card_interface::set_vme_tag(const char *tag, const char *slottag)
{
LOG("%s %s\n", tag, FUNCNAME);
- device_vme_card_interface &vme_card = dynamic_cast<device_vme_card_interface &>(device);
- vme_card.m_vme_tag = tag;
- vme_card.m_vme_slottag = slottag;
+ m_vme_tag = tag;
+ m_vme_slottag = slottag;
}
void device_vme_card_interface::set_vme_device()
diff --git a/src/devices/bus/vme/vme.h b/src/devices/bus/vme/vme.h
index 354a1f38978..7fd1a24f9c8 100644
--- a/src/devices/bus/vme/vme.h
+++ b/src/devices/bus/vme/vme.h
@@ -59,7 +59,7 @@
// Callbacks to the board from the VME bus comes through here
#define MCFG_VME_J1_CB(_devcb) \
- devcb = &vme_slot_device::static_set_vme_j1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<vme_slot_device &>(*device).set_vme_j1_callback(DEVCB_##_devcb);
//SLOT_INTERFACE_EXTERN(vme_slot1); // Disabled until we know how to combine a board driver and a slot device.
SLOT_INTERFACE_EXTERN(vme_slots);
@@ -91,10 +91,10 @@ public:
// construction/destruction
vme_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &static_set_vme_j1_callback(device_t &device, Object &&cb) { return downcast<vme_slot_device &>(device).m_vme_j1_callback.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_vme_j1_callback(Object &&cb) { return m_vme_j1_callback.set_callback(std::forward<Object>(cb)); }
- static void static_set_vme_slot(device_t &device, const char *tag, const char *slottag);
- static void static_update_vme_chains(device_t &device, uint32_t slot_nbr);
+ void set_vme_slot(const char *tag, const char *slottag);
+ void update_vme_chains(uint32_t slot_nbr);
virtual DECLARE_READ8_MEMBER(read8);
virtual DECLARE_WRITE8_MEMBER(write8);
@@ -124,10 +124,10 @@ DECLARE_DEVICE_TYPE(VME, vme_device)
MCFG_DEVICE_ADD(_tag, VME, 0)
#define MCFG_VME_CPU(_cputag) \
- vme_device::static_set_cputag(*device, _cputag);
+ downcast<vme_device &>(*device).set_cputag(_cputag);
#define MCFG_VME_BUS_OWNER_SPACES() \
- vme_device::static_use_owner_spaces(*device);
+ downcast<vme_device &>(*device).use_owner_spaces();
class vme_card_interface;
@@ -139,8 +139,8 @@ public:
~vme_device();
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
- static void static_use_owner_spaces(device_t &device);
+ void set_cputag(const char *tag) { m_cputag = tag; }
+ void use_owner_spaces();
virtual space_config_vector memory_space_config() const override;
@@ -219,7 +219,7 @@ class device_vme_card_interface : public device_slot_card_interface
template <class ElementType> friend class simple_list;
public:
// inline configuration
- static void static_set_vme_tag(device_t &device, const char *tag, const char *slottag);
+ void set_vme_tag(const char *tag, const char *slottag);
// construction/destruction
virtual ~device_vme_card_interface();
@@ -245,8 +245,8 @@ private:
{ std::string stag = "slot" + std::to_string(_slotnbr); \
MCFG_DEVICE_ADD(stag.c_str(), VME_SLOT, 0); \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false); \
- vme_slot_device::static_set_vme_slot(*device, _tag, stag.c_str()); \
- vme_slot_device::static_update_vme_chains(*device, _slotnbr); \
+ downcast<vme_slot_device &>(*device).set_vme_slot(_tag, stag.c_str()); \
+ downcast<vme_slot_device &>(*device).update_vme_chains(_slotnbr); \
}
#define MCFG_VME_SLOT_REMOVE(_tag) \
diff --git a/src/devices/bus/vtech/memexp/memexp.h b/src/devices/bus/vtech/memexp/memexp.h
index 692f10c819a..91737e003bc 100644
--- a/src/devices/bus/vtech/memexp/memexp.h
+++ b/src/devices/bus/vtech/memexp/memexp.h
@@ -47,13 +47,13 @@
MCFG_DEVICE_SLOT_INTERFACE(vtech_memexp_carts, nullptr, false)
#define MCFG_MEMEXP_SLOT_INT_HANDLER(_devcb) \
- devcb = &vtech_memexp_device::set_int_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<vtech_memexp_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_MEMEXP_SLOT_NMI_HANDLER(_devcb) \
- devcb = &vtech_memexp_device::set_nmi_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<vtech_memexp_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
#define MCFG_MEMEXP_SLOT_RESET_HANDLER(_devcb) \
- devcb = &vtech_memexp_device::set_reset_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<vtech_memexp_device &>(*device).set_reset_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -74,14 +74,9 @@ public:
void set_io_space(address_space *io);
// callbacks
- template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
- { return downcast<vtech_memexp_slot_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
- { return downcast<vtech_memexp_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb)
- { return downcast<vtech_memexp_slot_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_reset_handler(Object &&cb) { return m_reset_handler.set_callback(std::forward<Object>(cb)); }
// called from cart device
DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); }
diff --git a/src/devices/bus/wangpc/wangpc.cpp b/src/devices/bus/wangpc/wangpc.cpp
index 8344178ca8d..b7acf07f94c 100644
--- a/src/devices/bus/wangpc/wangpc.cpp
+++ b/src/devices/bus/wangpc/wangpc.cpp
@@ -35,13 +35,6 @@ wangpcbus_slot_device::wangpcbus_slot_device(const machine_config &mconfig, cons
{
}
-void wangpcbus_slot_device::static_set_wangpcbus_slot(device_t &device, int sid)
-{
- wangpcbus_slot_device &wangpcbus_card = dynamic_cast<wangpcbus_slot_device &>(device);
- wangpcbus_card.m_sid = sid;
-}
-
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/bus/wangpc/wangpc.h b/src/devices/bus/wangpc/wangpc.h
index 740c7e5ed53..b39c79f12f2 100644
--- a/src/devices/bus/wangpc/wangpc.h
+++ b/src/devices/bus/wangpc/wangpc.h
@@ -35,38 +35,38 @@
#define MCFG_WANGPC_BUS_SLOT_ADD(_tag, _sid, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, WANGPC_BUS_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
- wangpcbus_slot_device::static_set_wangpcbus_slot(*device, _sid);
+ downcast<wangpcbus_slot_device &>(*device).set_wangpcbus_slot(_sid);
#define MCFG_WANGPC_BUS_IRQ2_CALLBACK(_write) \
- devcb = &wangpcbus_device::set_irq2_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<wangpcbus_device &>(*device).set_irq2_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IRQ3_CALLBACK(_write) \
- devcb = &wangpcbus_device::set_irq3_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<wangpcbus_device &>(*device).set_irq3_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IRQ4_CALLBACK(_write) \
- devcb = &wangpcbus_device::set_irq4_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<wangpcbus_device &>(*device).set_irq4_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IRQ5_CALLBACK(_write) \
- devcb = &wangpcbus_device::set_irq5_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<wangpcbus_device &>(*device).set_irq5_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IRQ6_CALLBACK(_write) \
- devcb = &wangpcbus_device::set_irq6_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<wangpcbus_device &>(*device).set_irq6_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IRQ7_CALLBACK(_write) \
- devcb = &wangpcbus_device::set_irq7_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<wangpcbus_device &>(*device).set_irq7_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_DRQ1_CALLBACK(_write) \
- devcb = &wangpcbus_device::set_drq1_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<wangpcbus_device &>(*device).set_drq1_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_DRQ2_CALLBACK(_write) \
- devcb = &wangpcbus_device::set_drq2_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<wangpcbus_device &>(*device).set_drq2_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_DRQ3_CALLBACK(_write) \
- devcb = &wangpcbus_device::set_drq3_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<wangpcbus_device &>(*device).set_drq3_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IOERROR_CALLBACK(_write) \
- devcb = &wangpcbus_device::set_ioerror_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<wangpcbus_device &>(*device).set_ioerror_wr_callback(DEVCB_##_write);
//**************************************************************************
@@ -84,7 +84,7 @@ public:
wangpcbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_wangpcbus_slot(device_t &device, int sid);
+ void set_wangpcbus_slot(int sid) { m_sid = sid; }
protected:
// device-level overrides
@@ -113,16 +113,16 @@ public:
wangpcbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~wangpcbus_device() { m_device_list.detach_all(); }
- template <class Object> static devcb_base &set_irq2_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq3_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq4_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq4.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq5_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq5.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq6_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq6.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq7_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq7.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_drq1_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_drq1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_drq2_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_drq2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_drq3_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_drq3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ioerror_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_ioerror.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq2_wr_callback(Object &&cb) { return m_write_irq2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq3_wr_callback(Object &&cb) { return m_write_irq3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq4_wr_callback(Object &&cb) { return m_write_irq4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq5_wr_callback(Object &&cb) { return m_write_irq5.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq6_wr_callback(Object &&cb) { return m_write_irq6.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq7_wr_callback(Object &&cb) { return m_write_irq7.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_drq1_wr_callback(Object &&cb) { return m_write_drq1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_drq2_wr_callback(Object &&cb) { return m_write_drq2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_drq3_wr_callback(Object &&cb) { return m_write_drq3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ioerror_wr_callback(Object &&cb) { return m_write_ioerror.set_callback(std::forward<Object>(cb)); }
void add_card(device_wangpcbus_card_interface *card, int sid);
diff --git a/src/devices/bus/x68k/x68kexp.h b/src/devices/bus/x68k/x68kexp.h
index bc26bda26d4..3b0a0080e1e 100644
--- a/src/devices/bus/x68k/x68kexp.h
+++ b/src/devices/bus/x68k/x68kexp.h
@@ -78,16 +78,16 @@
//**************************************************************************
#define MCFG_X68K_EXPANSION_SLOT_OUT_IRQ2_CB(_devcb) \
- devcb = &x68k_expansion_slot_device::set_out_irq2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<x68k_expansion_slot_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
#define MCFG_X68K_EXPANSION_SLOT_OUT_IRQ4_CB(_devcb) \
- devcb = &x68k_expansion_slot_device::set_out_irq4_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<x68k_expansion_slot_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
#define MCFG_X68K_EXPANSION_SLOT_OUT_NMI_CB(_devcb) \
- devcb = &x68k_expansion_slot_device::set_out_nmi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<x68k_expansion_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_X68K_EXPANSION_SLOT_OUT_RESET_CB(_devcb) \
- devcb = &x68k_expansion_slot_device::set_out_reset_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<x68k_expansion_slot_device &>(*device).set_out_reset_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -126,10 +126,10 @@ public:
x68k_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~x68k_expansion_slot_device();
- template <class Object> static devcb_base &set_out_irq2_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_irq2_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq4_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_irq4_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_reset_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_reset_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq2_callback(Object &&cb) { return m_out_irq2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq4_callback(Object &&cb) { return m_out_irq4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_reset_callback(Object &&cb) { return m_out_reset_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( irq2_w );
diff --git a/src/devices/bus/z88/z88.h b/src/devices/bus/z88/z88.h
index 477b98eca7c..8481c3e7780 100644
--- a/src/devices/bus/z88/z88.h
+++ b/src/devices/bus/z88/z88.h
@@ -93,7 +93,7 @@ public:
z88cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~z88cart_slot_device();
- template <class Object> static devcb_base &set_out_flp_callback(device_t &device, Object &&cb) { return downcast<z88cart_slot_device &>(device).m_out_flp_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_flp_callback(Object &&cb) { return m_out_flp_cb.set_callback(std::forward<Object>(cb)); }
// image-level overrides
virtual image_init_result call_load() override;
@@ -140,6 +140,6 @@ DECLARE_DEVICE_TYPE(Z88CART_SLOT, z88cart_slot_device)
***************************************************************************/
#define MCFG_Z88CART_SLOT_OUT_FLP_CB(_devcb) \
- devcb = &z88cart_slot_device::set_out_flp_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<z88cart_slot_device &>(*device).set_out_flp_callback(DEVCB_##_devcb);
#endif // MAME_BUS_Z88_Z88_H
diff --git a/src/devices/cpu/adsp2100/adsp2100.h b/src/devices/cpu/adsp2100/adsp2100.h
index 4b2cbcd98a8..9a7d8561621 100644
--- a/src/devices/cpu/adsp2100/adsp2100.h
+++ b/src/devices/cpu/adsp2100/adsp2100.h
@@ -181,16 +181,16 @@ enum
//**************************************************************************
#define MCFG_ADSP21XX_SPORT_RX_CB(_devcb) \
- devcb = &adsp21xx_device::set_sport_rx_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adsp21xx_device &>(*device).set_sport_rx_callback(DEVCB_##_devcb);
#define MCFG_ADSP21XX_SPORT_TX_CB(_devcb) \
- devcb = &adsp21xx_device::set_sport_tx_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adsp21xx_device &>(*device).set_sport_tx_callback(DEVCB_##_devcb);
#define MCFG_ADSP21XX_TIMER_FIRED_CB(_devcb) \
- devcb = &adsp21xx_device::set_timer_fired_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adsp21xx_device &>(*device).set_timer_fired_callback(DEVCB_##_devcb);
#define MCFG_ADSP21XX_DMOVLAY_CB(_devcb) \
- devcb = &adsp21xx_device::set_dmovlay_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adsp21xx_device &>(*device).set_dmovlay_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -204,10 +204,10 @@ public:
virtual ~adsp21xx_device();
// inline configuration helpers
- template <class Object> static devcb_base &set_sport_rx_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_sport_rx_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sport_tx_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_sport_tx_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_timer_fired_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_timer_fired_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dmovlay_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_dmovlay_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sport_rx_callback(Object &&cb) { return m_sport_rx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sport_tx_callback(Object &&cb) { return m_sport_tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_timer_fired_callback(Object &&cb) { return m_timer_fired_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dmovlay_callback(Object &&cb) { return m_dmovlay_cb.set_callback(std::forward<Object>(cb)); }
// public interfaces
void load_boot_data(uint8_t *srcdata, uint32_t *dstdata);
diff --git a/src/devices/cpu/amis2000/amis2000.h b/src/devices/cpu/amis2000/amis2000.h
index 3dfa68262ba..b592bdd9466 100644
--- a/src/devices/cpu/amis2000/amis2000.h
+++ b/src/devices/cpu/amis2000/amis2000.h
@@ -14,43 +14,43 @@
// generic input pins (4 bits each)
#define MCFG_AMI_S2000_READ_K_CB(_devcb) \
- devcb = &amis2000_base_device::set_read_k_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<amis2000_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb);
#define MCFG_AMI_S2000_READ_I_CB(_devcb) \
- devcb = &amis2000_base_device::set_read_i_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<amis2000_base_device &>(*device).set_read_i_callback(DEVCB_##_devcb);
// 8-bit external databus coupled as input/output pins
#define MCFG_AMI_S2000_READ_D_CB(_devcb) \
- devcb = &amis2000_base_device::set_read_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<amis2000_base_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
#define MCFG_AMI_S2000_WRITE_D_CB(_devcb) \
- devcb = &amis2000_base_device::set_write_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<amis2000_base_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
// 13-bit external address bus coupled as output pins
#define MCFG_AMI_S2000_WRITE_A_CB(_devcb) \
- devcb = &amis2000_base_device::set_write_a_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<amis2000_base_device &>(*device).set_write_a_callback(DEVCB_##_devcb);
// F_out pin (only for S2152)
#define MCFG_AMI_S2152_FOUT_CB(_devcb) \
- devcb = &amis2000_base_device::set_write_f_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<amis2000_base_device &>(*device).set_write_f_callback(DEVCB_##_devcb);
// S2000 has a hardcoded 7seg table, that (unlike S2200) is officially
// uncustomizable, but wildfire proves to be an exception to that rule.
#define MCFG_AMI_S2000_7SEG_DECODER(_ptr) \
- amis2000_base_device::set_7seg_table(*device, _ptr);
+ downcast<amis2000_base_device &>(*device).set_7seg_table(_ptr);
class amis2000_base_device : public cpu_device
{
public:
- // static configuration helpers
- template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_i_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_i.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_a_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_a.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); }
- static void set_7seg_table(device_t &device, const u8 *ptr) { downcast<amis2000_base_device &>(device).m_7seg_table = ptr; }
+ // configuration helpers
+ template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_i_callback(Object &&cb) { return m_read_i.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_a_callback(Object &&cb) { return m_write_a.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_f_callback(Object &&cb) { return m_write_f.set_callback(std::forward<Object>(cb)); }
+ void set_7seg_table(const u8 *ptr) { m_7seg_table = ptr; }
void data_64x4(address_map &map);
void data_80x4(address_map &map);
diff --git a/src/devices/cpu/apexc/apexc.h b/src/devices/cpu/apexc/apexc.h
index 46b45e7bc2c..daa42e8ddd8 100644
--- a/src/devices/cpu/apexc/apexc.h
+++ b/src/devices/cpu/apexc/apexc.h
@@ -7,10 +7,10 @@
#pragma once
#define MCFG_APEXC_TAPE_READ_CB(_devcb) \
- devcb = &apexc_cpu_device::set_tape_read_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<apexc_cpu_device &>(*device).set_tape_read_cb(DEVCB_##_devcb);
#define MCFG_APEXC_TAPE_PUNCH_CB(_devcb) \
- devcb = &apexc_cpu_device::set_tape_punch_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<apexc_cpu_device &>(*device).set_tape_punch_cb(DEVCB_##_devcb);
enum
{
@@ -28,17 +28,9 @@ public:
// construction/destruction
apexc_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration
- template<class Object>
- static devcb_base &set_tape_read_cb(device_t &device, Object &&object)
- {
- return downcast<apexc_cpu_device &>(device).m_tape_read_cb.set_callback(std::forward<Object>(object));
- }
- template<class Object>
- static devcb_base &set_tape_punch_cb(device_t &device, Object &&object)
- {
- return downcast<apexc_cpu_device &>(device).m_tape_punch_cb.set_callback(std::forward<Object>(object));
- }
+ // configuration
+ template<class Object> devcb_base &set_tape_read_cb(Object &&object) { return m_tape_read_cb.set_callback(std::forward<Object>(object)); }
+ template<class Object> devcb_base &set_tape_punch_cb(Object &&object) { return m_tape_punch_cb.set_callback(std::forward<Object>(object)); }
protected:
// device-level overrides
diff --git a/src/devices/cpu/arm/arm.h b/src/devices/cpu/arm/arm.h
index 3cfb1386fa9..e1795f0594d 100644
--- a/src/devices/cpu/arm/arm.h
+++ b/src/devices/cpu/arm/arm.h
@@ -17,7 +17,7 @@
***************************************************************************************************/
#define MCFG_ARM_COPRO(_type) \
- arm_cpu_device::set_copro_type(*device, arm_cpu_device::copro_type::_type);
+ downcast<arm_cpu_device &>(*device).set_copro_type(arm_cpu_device::copro_type::_type);
class arm_cpu_device : public cpu_device
@@ -32,7 +32,7 @@ public:
// construction/destruction
arm_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_copro_type(device_t &device, copro_type type) { downcast<arm_cpu_device &>(device).m_copro_type = type; }
+ void set_copro_type(copro_type type) { m_copro_type = type; }
protected:
enum
diff --git a/src/devices/cpu/arm7/arm7.h b/src/devices/cpu/arm7/arm7.h
index a1b4dc04a25..def6bed007b 100644
--- a/src/devices/cpu/arm7/arm7.h
+++ b/src/devices/cpu/arm7/arm7.h
@@ -34,7 +34,7 @@
#define ARM7_MAX_HOTSPOTS 16
#define MCFG_ARM_HIGH_VECTORS() \
- arm7_cpu_device::set_high_vectors(*device);
+ downcast<arm7_cpu_device &>(*device).set_high_vectors();
/***************************************************************************
@@ -57,11 +57,7 @@ public:
// construction/destruction
arm7_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_high_vectors(device_t &device)
- {
- arm7_cpu_device &dev = downcast<arm7_cpu_device &>(device);
- dev.m_vectorbase = 0xffff0000;
- }
+ void set_high_vectors() { m_vectorbase = 0xffff0000; }
protected:
enum
diff --git a/src/devices/cpu/arm7/lpc210x.h b/src/devices/cpu/arm7/lpc210x.h
index fa5a20999d0..afcc4a57795 100644
--- a/src/devices/cpu/arm7/lpc210x.h
+++ b/src/devices/cpu/arm7/lpc210x.h
@@ -23,9 +23,6 @@ class lpc210x_device : public arm7_cpu_device
public:
lpc210x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
- // static configuration helpers
-
-
DECLARE_READ32_MEMBER(arm_E01FC088_r);
DECLARE_READ32_MEMBER(flash_r);
DECLARE_WRITE32_MEMBER(flash_w);
diff --git a/src/devices/cpu/avr8/avr8.h b/src/devices/cpu/avr8/avr8.h
index 344c9ca317b..b898f4efc34 100644
--- a/src/devices/cpu/avr8/avr8.h
+++ b/src/devices/cpu/avr8/avr8.h
@@ -64,7 +64,7 @@
//**************************************************************************
#define MCFG_CPU_AVR8_EEPROM(_tag) \
- avr8_device::set_eeprom_tag(*device, "^" _tag);
+ downcast<avr8_device &>(*device).set_eeprom_tag("^" _tag);
//**************************************************************************
@@ -80,7 +80,7 @@ class avr8_device : public cpu_device
{
public:
// inline configuration helpers
- static void set_eeprom_tag(device_t &device, const char *tag) { downcast<avr8_device &>(device).m_eeprom.set_tag(tag); }
+ void set_eeprom_tag(const char *tag) { m_eeprom.set_tag(tag); }
// fuse configs
void set_low_fuses(uint8_t byte);
diff --git a/src/devices/cpu/ccpu/ccpu.h b/src/devices/cpu/ccpu/ccpu.h
index 4cad4d66965..6510250e233 100644
--- a/src/devices/cpu/ccpu/ccpu.h
+++ b/src/devices/cpu/ccpu/ccpu.h
@@ -23,10 +23,10 @@
#define MCFG_CCPU_EXTERNAL_FUNC(_devcb) \
- ccpu_cpu_device::set_external_func(*device, DEVCB_##_devcb);
+ downcast<ccpu_cpu_device &>(*device).set_external_func(DEVCB_##_devcb);
#define MCFG_CCPU_VECTOR_FUNC(d) \
- ccpu_cpu_device::set_vector_func(*device, d);
+ downcast<ccpu_cpu_device &>(*device).set_vector_func(d);
class ccpu_cpu_device : public cpu_device
@@ -53,9 +53,9 @@ public:
// construction/destruction
ccpu_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_external_func(device_t &device, Object &&cb) { return downcast<ccpu_cpu_device &>(device).m_external_input.set_callback(std::forward<Object>(cb)); }
- static void set_vector_func(device_t &device, vector_delegate callback) { downcast<ccpu_cpu_device &>(device).m_vector_callback = callback; }
+ // configuration helpers
+ template <class Object> devcb_base &set_external_func(Object &&cb) { return m_external_input.set_callback(std::forward<Object>(cb)); }
+ template <typename Object> void set_vector_func(Object &&cb) { m_vector_callback = std::forward<Object>(cb); }
DECLARE_READ8_MEMBER( read_jmi );
void wdt_timer_trigger();
diff --git a/src/devices/cpu/cop400/cop400.h b/src/devices/cpu/cop400/cop400.h
index 3630c2c41b7..643f6129fe1 100644
--- a/src/devices/cpu/cop400/cop400.h
+++ b/src/devices/cpu/cop400/cop400.h
@@ -17,40 +17,40 @@
// L pins: 8-bit bi-directional
#define MCFG_COP400_READ_L_CB(_devcb) \
- devcb = &cop400_cpu_device::set_read_l_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cop400_cpu_device &>(*device).set_read_l_callback(DEVCB_##_devcb);
#define MCFG_COP400_WRITE_L_CB(_devcb) \
- devcb = &cop400_cpu_device::set_write_l_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cop400_cpu_device &>(*device).set_write_l_callback(DEVCB_##_devcb);
// output state when pins are in tri-state, default 0
#define MCFG_COP400_READ_L_TRISTATE_CB(_devcb) \
- devcb = &cop400_cpu_device::set_read_l_tristate_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cop400_cpu_device &>(*device).set_read_l_tristate_callback(DEVCB_##_devcb);
// G pins: 4-bit bi-directional
#define MCFG_COP400_READ_G_CB(_devcb) \
- devcb = &cop400_cpu_device::set_read_g_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cop400_cpu_device &>(*device).set_read_g_callback(DEVCB_##_devcb);
#define MCFG_COP400_WRITE_G_CB(_devcb) \
- devcb = &cop400_cpu_device::set_write_g_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cop400_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb);
// D outputs: 4-bit general purpose output
#define MCFG_COP400_WRITE_D_CB(_devcb) \
- devcb = &cop400_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cop400_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
// IN inputs: 4-bit general purpose input
#define MCFG_COP400_READ_IN_CB(_devcb) \
- devcb = &cop400_cpu_device::set_read_in_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cop400_cpu_device &>(*device).set_read_in_callback(DEVCB_##_devcb);
// SI/SO lines: serial in/out or counter/gen.purpose
#define MCFG_COP400_READ_SI_CB(_devcb) \
- devcb = &cop400_cpu_device::set_read_si_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cop400_cpu_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
#define MCFG_COP400_WRITE_SO_CB(_devcb) \
- devcb = &cop400_cpu_device::set_write_so_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cop400_cpu_device &>(*device).set_write_so_callback(DEVCB_##_devcb);
// SK output line: logic-controlled clock or gen.purpose
#define MCFG_COP400_WRITE_SK_CB(_devcb) \
- devcb = &cop400_cpu_device::set_write_sk_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cop400_cpu_device &>(*device).set_write_sk_callback(DEVCB_##_devcb);
// CKI/CKO lines: only CKO input here
#define MCFG_COP400_READ_CKO_CB(_devcb) \
- devcb = &cop400_cpu_device::set_read_cko_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<cop400_cpu_device &>(*device).set_read_cko_callback(DEVCB_##_devcb);
/***************************************************************************
@@ -112,9 +112,9 @@ enum cop400_cko_bond {
#define MCFG_COP400_CONFIG(_cki, _cko, _microbus) \
- cop400_cpu_device::set_cki(*device, _cki); \
- cop400_cpu_device::set_cko(*device, _cko); \
- cop400_cpu_device::set_microbus(*device, _microbus);
+ downcast<cop400_cpu_device &>(*device).set_cki(_cki); \
+ downcast<cop400_cpu_device &>(*device).set_cko(_cko); \
+ downcast<cop400_cpu_device &>(*device).set_microbus(_microbus);
class cop400_cpu_device : public cpu_device
@@ -122,22 +122,22 @@ class cop400_cpu_device : public cpu_device
public:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- // static configuration helpers
- template<class _Object> static devcb_base &set_read_l_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_l.set_callback(object); }
- template<class _Object> static devcb_base &set_read_l_tristate_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_l_tristate.set_callback(object); }
- template<class _Object> static devcb_base &set_write_l_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_l.set_callback(object); }
- template<class _Object> static devcb_base &set_read_g_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_g.set_callback(object); }
- template<class _Object> static devcb_base &set_write_g_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_g.set_callback(object); }
- template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_d.set_callback(object); }
- template<class _Object> static devcb_base &set_read_in_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_in.set_callback(object); }
- template<class _Object> static devcb_base &set_read_si_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_si.set_callback(object); }
- template<class _Object> static devcb_base &set_write_so_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_so.set_callback(object); }
- template<class _Object> static devcb_base &set_write_sk_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_sk.set_callback(object); }
- template<class _Object> static devcb_base &set_read_cko_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_cko.set_callback(object); }
-
- static void set_cki(device_t &device, cop400_cki_bond cki) { downcast<cop400_cpu_device &>(device).m_cki = cki; }
- static void set_cko(device_t &device, cop400_cko_bond cko) { downcast<cop400_cpu_device &>(device).m_cko = cko; }
- static void set_microbus(device_t &device, bool has_microbus) { downcast<cop400_cpu_device &>(device).m_has_microbus = has_microbus; }
+ // configuration helpers
+ template<class Object> devcb_base &set_read_l_callback(Object &&cb) { return m_read_l.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_read_l_tristate_callback(Object &&cb) { return m_read_l_tristate.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_write_l_callback(Object &&cb) { return m_write_l.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_read_g_callback(Object &&cb) { return m_read_g.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_write_g_callback(Object &&cb) { return m_write_g.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_read_in_callback(Object &&cb) { return m_read_in.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_read_si_callback(Object &&cb) { return m_read_si.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_write_so_callback(Object &&cb) { return m_write_so.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_write_sk_callback(Object &&cb) { return m_write_sk.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_read_cko_callback(Object &&cb) { return m_read_cko.set_callback(std::forward<Object>(cb)); }
+
+ void set_cki(cop400_cki_bond cki) { m_cki = cki; }
+ void set_cko(cop400_cko_bond cko) { m_cko = cko; }
+ void set_microbus(bool has_microbus) { m_has_microbus = has_microbus; }
DECLARE_READ8_MEMBER( microbus_rd );
DECLARE_WRITE8_MEMBER( microbus_wr );
diff --git a/src/devices/cpu/cosmac/cosmac.h b/src/devices/cpu/cosmac/cosmac.h
index 515dde74d45..161b3ea7d5c 100644
--- a/src/devices/cpu/cosmac/cosmac.h
+++ b/src/devices/cpu/cosmac/cosmac.h
@@ -88,34 +88,34 @@
//**************************************************************************
#define MCFG_COSMAC_WAIT_CALLBACK(_read) \
- devcb = &cosmac_device::set_wait_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cosmac_device &>(*device).set_wait_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_CLEAR_CALLBACK(_read) \
- devcb = &cosmac_device::set_clear_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cosmac_device &>(*device).set_clear_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_EF1_CALLBACK(_read) \
- devcb = &cosmac_device::set_ef1_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cosmac_device &>(*device).set_ef1_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_EF2_CALLBACK(_read) \
- devcb = &cosmac_device::set_ef2_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cosmac_device &>(*device).set_ef2_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_EF3_CALLBACK(_read) \
- devcb = &cosmac_device::set_ef3_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cosmac_device &>(*device).set_ef3_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_EF4_CALLBACK(_read) \
- devcb = &cosmac_device::set_ef4_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cosmac_device &>(*device).set_ef4_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_Q_CALLBACK(_write) \
- devcb = &cosmac_device::set_q_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<cosmac_device &>(*device).set_q_wr_callback(DEVCB_##_write);
#define MCFG_COSMAC_DMAR_CALLBACK(_read) \
- devcb = &cosmac_device::set_dma_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cosmac_device &>(*device).set_dma_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_DMAW_CALLBACK(_write) \
- devcb = &cosmac_device::set_dma_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<cosmac_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
#define MCFG_COSMAC_SC_CALLBACK(_write) \
- devcb = &cosmac_device::set_sc_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<cosmac_device &>(*device).set_sc_wr_callback(DEVCB_##_write);
@@ -193,16 +193,16 @@ public:
};
- template <class Object> static devcb_base &set_wait_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_wait.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_clear_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_clear.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ef1_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ef2_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ef3_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ef4_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef4.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_q_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_q.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_dma.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_dma.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sc_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_sc.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_wait_rd_callback(Object &&cb) { return m_read_wait.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_clear_rd_callback(Object &&cb) { return m_read_clear.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ef1_rd_callback(Object &&cb) { return m_read_ef1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ef2_rd_callback(Object &&cb) { return m_read_ef2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ef3_rd_callback(Object &&cb) { return m_read_ef3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ef4_rd_callback(Object &&cb) { return m_read_ef4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_q_wr_callback(Object &&cb) { return m_write_q.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_rd_callback(Object &&cb) { return m_read_dma.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_wr_callback(Object &&cb) { return m_write_dma.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sc_wr_callback(Object &&cb) { return m_write_sc.set_callback(std::forward<Object>(cb)); }
// public interfaces
offs_t get_memory_address();
diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.h b/src/devices/cpu/cubeqcpu/cubeqcpu.h
index 46b3235c6be..90f5b5250c0 100644
--- a/src/devices/cpu/cubeqcpu/cubeqcpu.h
+++ b/src/devices/cpu/cubeqcpu/cubeqcpu.h
@@ -18,16 +18,16 @@
#define MCFG_CQUESTSND_CONFIG(_dac_w, _sound_tag) \
- cquestsnd_cpu_device::set_dac_w(*device, DEVCB_##_dac_w); \
- cquestsnd_cpu_device::set_sound_region(*device, _sound_tag);
+ downcast<cquestsnd_cpu_device &>(*device).set_dac_w(DEVCB_##_dac_w); \
+ downcast<cquestsnd_cpu_device &>(*device).set_sound_region(_sound_tag);
#define MCFG_CQUESTROT_CONFIG(_linedata_w) \
- cquestrot_cpu_device::set_linedata_w(*device, DEVCB_##_linedata_w );
+ downcast<cquestrot_cpu_device &>(*device).set_linedata_w(DEVCB_##_linedata_w );
#define MCFG_CQUESTLIN_CONFIG(_linedata_r) \
- cquestlin_cpu_device::set_linedata_r(*device, DEVCB_##_linedata_r );
+ downcast<cquestlin_cpu_device &>(*device).set_linedata_r(DEVCB_##_linedata_r );
/***************************************************************************
@@ -40,9 +40,9 @@ public:
// construction/destruction
cquestsnd_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_dac_w(device_t &device, Object &&cb) { return downcast<cquestsnd_cpu_device &>(device).m_dac_w.set_callback(std::forward<Object>(cb)); }
- static void set_sound_region(device_t &device, const char *tag) { downcast<cquestsnd_cpu_device &>(device).m_sound_region_tag = tag; }
+ // configuration helpers
+ template <class Object> devcb_base &set_dac_w(Object &&cb) { return m_dac_w.set_callback(std::forward<Object>(cb)); }
+ void set_sound_region(const char *tag) { m_sound_region_tag = tag; }
DECLARE_WRITE16_MEMBER(sndram_w);
DECLARE_READ16_MEMBER(sndram_r);
@@ -131,8 +131,8 @@ public:
// construction/destruction
cquestrot_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_linedata_w(device_t &device, Object &&cb) { return downcast<cquestrot_cpu_device &>(device).m_linedata_w.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_linedata_w(Object &&cb) { return m_linedata_w.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER(linedata_r);
DECLARE_WRITE16_MEMBER(rotram_w);
@@ -243,8 +243,8 @@ public:
// construction/destruction
cquestlin_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_linedata_r(device_t &device, Object &&cb) { return downcast<cquestlin_cpu_device &>(device).m_linedata_r.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_linedata_r(Object &&cb) { return m_linedata_r.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE16_MEMBER( linedata_w );
void cubeqcpu_swap_line_banks();
diff --git a/src/devices/cpu/dsp32/dsp32.h b/src/devices/cpu/dsp32/dsp32.h
index 8f8ad369736..1a091fb1c95 100644
--- a/src/devices/cpu/dsp32/dsp32.h
+++ b/src/devices/cpu/dsp32/dsp32.h
@@ -31,7 +31,7 @@ const int DSP32_OUTPUT_PDF = 0x02;
//**************************************************************************
#define MCFG_DSP32C_OUTPUT_CALLBACK(_write) \
- devcb = &dsp32c_device::set_output_pins_callback(*device, DEVCB_##_write);
+ devcb = &downcast<dsp32c_device &>(*device).set_output_pins_callback(DEVCB_##_write);
// ======================> dsp32c_device
@@ -41,7 +41,7 @@ public:
// construction/destruction
dsp32c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_output_pins_callback(device_t &device, Object &&cb) { return downcast<dsp32c_device &>(device).m_output_pins_changed.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_pins_callback(Object &&cb) { return m_output_pins_changed.set_callback(std::forward<Object>(cb)); }
// public interfaces
diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h
index d6e35ab2fbf..7e9c4d0f91b 100644
--- a/src/devices/cpu/e0c6200/e0c6s46.h
+++ b/src/devices/cpu/e0c6200/e0c6s46.h
@@ -16,7 +16,7 @@
// 5 4-bit R output ports
#define MCFG_E0C6S46_WRITE_R_CB(R, _devcb) \
- devcb = &e0c6s46_device::set_write_r##R##_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<e0c6s46_device &>(*device).set_write_r##R##_callback(DEVCB_##_devcb);
enum
{
@@ -29,9 +29,9 @@ enum
// 4 4-bit P I/O ports
#define MCFG_E0C6S46_READ_P_CB(R, _devcb) \
- devcb = &hmcs40_cpu_device::set_read_r##P##_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hmcs40_cpu_device &>(*device).set_read_r##P##_callback(DEVCB_##_devcb);
#define MCFG_E0C6S46_WRITE_P_CB(R, _devcb) \
- devcb = &e0c6s46_device::set_write_r##P##_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<e0c6s46_device &>(*device).set_write_r##P##_callback(DEVCB_##_devcb);
enum
{
@@ -57,7 +57,7 @@ enum
// lcd driver
#define MCFG_E0C6S46_PIXEL_UPDATE_CB(_class, _method) \
- e0c6s46_device::static_set_pixel_update_cb(*device, e0c6s46_device::pixel_update_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<e0c6s46_device &>(*device).set_pixel_update_cb(e0c6s46_device::pixel_update_delegate(&_class::_method, #_class "::" #_method, this));
#define E0C6S46_PIXEL_UPDATE(name) void name(bitmap_ind16 &bitmap, const rectangle &cliprect, int contrast, int seg, int com, int state)
@@ -69,23 +69,23 @@ public:
e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_write_r0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r0.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r4_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r4.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_read_p0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p0.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_p1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_p2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_p3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_p0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p0.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_p1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_p2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_p3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p3.set_callback(std::forward<Object>(cb)); }
-
- static void static_set_pixel_update_cb(device_t &device, pixel_update_delegate &&cb) { downcast<e0c6s46_device &>(device).m_pixel_update_cb = std::move(cb); }
+ // configuration helpers
+ template <class Object> devcb_base &set_write_r0_callback(Object &&cb) { return m_write_r0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r1_callback(Object &&cb) { return m_write_r1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r2_callback(Object &&cb) { return m_write_r2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r3_callback(Object &&cb) { return m_write_r3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r4_callback(Object &&cb) { return m_write_r4.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> devcb_base &set_read_p0_callback(Object &&cb) { return m_read_p0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_p1_callback(Object &&cb) { return m_read_p1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_p2_callback(Object &&cb) { return m_read_p2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_p3_callback(Object &&cb) { return m_read_p3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_p0_callback(Object &&cb) { return m_write_p0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_p1_callback(Object &&cb) { return m_write_p1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_p2_callback(Object &&cb) { return m_write_p2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_p3_callback(Object &&cb) { return m_write_p3.set_callback(std::forward<Object>(cb)); }
+
+ template <typename Object> void set_pixel_update_cb(Object &&cb) { m_pixel_update_cb = std::forward<Object>(cb); }
DECLARE_READ8_MEMBER(io_r);
DECLARE_WRITE8_MEMBER(io_w);
diff --git a/src/devices/cpu/esrip/esrip.h b/src/devices/cpu/esrip/esrip.h
index 13320e82a12..d913861cb01 100644
--- a/src/devices/cpu/esrip/esrip.h
+++ b/src/devices/cpu/esrip/esrip.h
@@ -20,19 +20,19 @@
#define ESRIP_DRAW(name) int name(int l, int r, int fig, int attr, int addr, int col, int x_scale, int bank)
#define MCFG_ESRIP_FDT_R_CALLBACK(_read) \
- devcb = &esrip_device::static_set_fdt_r_callback(*device, DEVCB_##_read);
+ devcb = &downcast<esrip_device &>(*device).set_fdt_r_callback(DEVCB_##_read);
#define MCFG_ESRIP_FDT_W_CALLBACK(_write) \
- devcb = &esrip_device::static_set_fdt_w_callback(*device, DEVCB_##_write);
+ devcb = &downcast<esrip_device &>(*device).set_fdt_w_callback(DEVCB_##_write);
#define MCFG_ESRIP_STATUS_IN_CALLBACK(_read) \
- devcb = &esrip_device::static_set_status_in_callback(*device, DEVCB_##_read);
+ devcb = &downcast<esrip_device &>(*device).set_status_in_callback(DEVCB_##_read);
#define MCFG_ESRIP_DRAW_CALLBACK_OWNER(_class, _method) \
- esrip_device::static_set_draw_callback(*device, esrip_device::draw_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<esrip_device &>(*device).set_draw_callback(esrip_device::draw_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_ESRIP_LBRM_PROM(_tag) \
- esrip_device::static_lbrm_prom(*device, _tag);
+ downcast<esrip_device &>(*device).lbrm_prom(_tag);
//**************************************************************************
@@ -54,11 +54,11 @@ public:
esrip_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration helpers
- template <class Object> static devcb_base &static_set_fdt_r_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_fdt_r.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_fdt_w_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_fdt_w.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_status_in_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_status_in.set_callback(std::forward<Object>(cb)); }
- static void static_set_draw_callback(device_t &device, draw_delegate func) { downcast<esrip_device &>(device).m_draw = func; }
- static void static_lbrm_prom(device_t &device, const char *name) { downcast<esrip_device &>(device).m_lbrm_prom = name; }
+ template <class Object> devcb_base &set_fdt_r_callback(Object &&cb) { return m_fdt_r.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_fdt_w_callback(Object &&cb) { return m_fdt_w.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_status_in_callback(Object &&cb) { return m_status_in.set_callback(std::forward<Object>(cb)); }
+ template <typename Object> void set_draw_callback(Object &&cb) { m_draw = std::forward<Object>(cb); }
+ void lbrm_prom(const char *name) { m_lbrm_prom = name; }
// public interfaces
uint8_t get_rip_status();
diff --git a/src/devices/cpu/h8/h83002.h b/src/devices/cpu/h8/h83002.h
index 613611c92ba..457e604aa21 100644
--- a/src/devices/cpu/h8/h83002.h
+++ b/src/devices/cpu/h8/h83002.h
@@ -26,16 +26,16 @@
#include "h8_watchdog.h"
#define MCFG_H83002_TEND0_CALLBACK(_devcb) \
- devcb = &h83002_device::set_tend0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<h83002_device &>(*device).set_tend0_callback(DEVCB_##_devcb);
#define MCFG_H83002_TEND1_CALLBACK(_devcb) \
- devcb = &h83002_device::set_tend1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<h83002_device &>(*device).set_tend1_callback(DEVCB_##_devcb);
class h83002_device : public h8h_device {
public:
h83002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_tend0_callback(device_t &device, _Object object) { return downcast<h83002_device&>(device).tend0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_tend1_callback(device_t &device, _Object object) { return downcast<h83002_device&>(device).tend1_cb.set_callback(object); }
+ template<class Object> devcb_base &set_tend0_callback(Object &&cb) { return tend0_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_tend1_callback(Object &&cb) { return tend1_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(syscr_r);
DECLARE_WRITE8_MEMBER(syscr_w);
diff --git a/src/devices/cpu/h8/h8_sci.h b/src/devices/cpu/h8/h8_sci.h
index ea13f1f65a2..3c2db4147df 100644
--- a/src/devices/cpu/h8/h8_sci.h
+++ b/src/devices/cpu/h8/h8_sci.h
@@ -25,10 +25,10 @@
downcast<h8_sci_device *>(device)->set_external_clock_period(_period);
#define MCFG_H8_SCI_TX_CALLBACK(_devcb) \
- devcb = &h8_sci_device::set_tx_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<h8_sci_device &>(*device).set_tx_cb(DEVCB_##_devcb);
#define MCFG_H8_SCI_CLK_CALLBACK(_devcb) \
- devcb = &h8_sci_device::set_clk_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<h8_sci_device &>(*device).set_clk_cb(DEVCB_##_devcb);
class h8_sci_device : public device_t {
public:
@@ -54,8 +54,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(rx_w);
DECLARE_WRITE_LINE_MEMBER(clk_w);
- template <class Object> static devcb_base &set_tx_cb(device_t &device, Object &&cb) { return downcast<h8_sci_device &>(device).tx_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_clk_cb(device_t &device, Object &&cb) { return downcast<h8_sci_device &>(device).clk_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tx_cb(Object &&cb) { return tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_clk_cb(Object &&cb) { return clk_cb.set_callback(std::forward<Object>(cb)); }
uint64_t internal_update(uint64_t current_time);
diff --git a/src/devices/cpu/hcd62121/hcd62121.h b/src/devices/cpu/hcd62121/hcd62121.h
index 1b7fb74feba..def79f44681 100644
--- a/src/devices/cpu/hcd62121/hcd62121.h
+++ b/src/devices/cpu/hcd62121/hcd62121.h
@@ -6,12 +6,12 @@
#pragma once
-#define MCFG_HCD62121_KOL_CB(_devcb) devcb = &hcd62121_cpu_device::set_kol_callback(*device, DEVCB_##_devcb);
-#define MCFG_HCD62121_KOH_CB(_devcb) devcb = &hcd62121_cpu_device::set_koh_callback(*device, DEVCB_##_devcb);
-#define MCFG_HCD62121_PORT_CB(_devcb) devcb = &hcd62121_cpu_device::set_port_callback(*device, DEVCB_##_devcb);
-#define MCFG_HCD62121_OPT_CB(_devcb) devcb = &hcd62121_cpu_device::set_opt_callback(*device, DEVCB_##_devcb);
-#define MCFG_HCD62121_KI_CB(_devcb) devcb = &hcd62121_cpu_device::set_ki_callback(*device, DEVCB_##_devcb);
-#define MCFG_HCD62121_IN0_CB(_devcb) devcb = &hcd62121_cpu_device::set_in0_callback(*device, DEVCB_##_devcb);
+#define MCFG_HCD62121_KOL_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_kol_callback(DEVCB_##_devcb);
+#define MCFG_HCD62121_KOH_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_koh_callback(DEVCB_##_devcb);
+#define MCFG_HCD62121_PORT_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_port_callback(DEVCB_##_devcb);
+#define MCFG_HCD62121_OPT_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_opt_callback(DEVCB_##_devcb);
+#define MCFG_HCD62121_KI_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_ki_callback(DEVCB_##_devcb);
+#define MCFG_HCD62121_IN0_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_in0_callback(DEVCB_##_devcb);
class hcd62121_cpu_device : public cpu_device
@@ -20,12 +20,12 @@ public:
// construction/destruction
hcd62121_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_kol_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_kol_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_koh_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_koh_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_port_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_opt_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_opt_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ki_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_ki_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in0_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_in0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_kol_callback(Object &&cb) { return m_kol_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_koh_callback(Object &&cb) { return m_koh_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port_callback(Object &&cb) { return m_port_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_opt_callback(Object &&cb) { return m_opt_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ki_callback(Object &&cb) { return m_ki_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in0_callback(Object &&cb) { return m_in0_cb.set_callback(std::forward<Object>(cb)); }
protected:
enum
diff --git a/src/devices/cpu/hd61700/hd61700.h b/src/devices/cpu/hd61700/hd61700.h
index 12da10dece3..971de2fb179 100644
--- a/src/devices/cpu/hd61700/hd61700.h
+++ b/src/devices/cpu/hd61700/hd61700.h
@@ -16,25 +16,25 @@
//**************************************************************************
#define MCFG_HD61700_LCD_CTRL_CB(_devcb) \
- devcb = &hd61700_cpu_device::set_lcd_ctrl_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd61700_cpu_device &>(*device).set_lcd_ctrl_callback(DEVCB_##_devcb);
#define MCFG_HD61700_LCD_WRITE_CB(_devcb) \
- devcb = &hd61700_cpu_device::set_lcd_write_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd61700_cpu_device &>(*device).set_lcd_write_callback(DEVCB_##_devcb);
#define MCFG_HD61700_LCD_READ_CB(_devcb) \
- devcb = &hd61700_cpu_device::set_lcd_read_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd61700_cpu_device &>(*device).set_lcd_read_callback(DEVCB_##_devcb);
#define MCFG_HD61700_KB_WRITE_CB(_devcb) \
- devcb = &hd61700_cpu_device::set_kb_write_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd61700_cpu_device &>(*device).set_kb_write_callback(DEVCB_##_devcb);
#define MCFG_HD61700_KB_READ_CB(_devcb) \
- devcb = &hd61700_cpu_device::set_kb_read_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd61700_cpu_device &>(*device).set_kb_read_callback(DEVCB_##_devcb);
#define MCFG_HD61700_PORT_WRITE_CB(_devcb) \
- devcb = &hd61700_cpu_device::set_port_write_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd61700_cpu_device &>(*device).set_port_write_callback(DEVCB_##_devcb);
#define MCFG_HD61700_PORT_READ_CB(_devcb) \
- devcb = &hd61700_cpu_device::set_port_read_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd61700_cpu_device &>(*device).set_port_read_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -61,13 +61,13 @@ public:
// construction/destruction
hd61700_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- template<class _Object> static devcb_base &set_lcd_ctrl_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_lcd_ctrl_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_lcd_write_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_lcd_write_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_lcd_read_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_lcd_read_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_kb_write_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_kb_write_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_kb_read_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_kb_read_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_port_write_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_port_write_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_port_read_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_port_read_cb.set_callback(object); }
+ template<class Object> devcb_base &set_lcd_ctrl_callback(Object &&cb) { return m_lcd_ctrl_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_lcd_write_callback(Object &&cb) { return m_lcd_write_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_lcd_read_callback(Object &&cb) { return m_lcd_read_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_kb_write_callback(Object &&cb) { return m_kb_write_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_kb_read_callback(Object &&cb) { return m_kb_read_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_port_write_callback(Object &&cb) { return m_port_write_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_port_read_callback(Object &&cb) { return m_port_read_cb.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
diff --git a/src/devices/cpu/hmcs40/hmcs40.h b/src/devices/cpu/hmcs40/hmcs40.h
index c91b2a99102..4ea6b8f5eeb 100644
--- a/src/devices/cpu/hmcs40/hmcs40.h
+++ b/src/devices/cpu/hmcs40/hmcs40.h
@@ -16,15 +16,15 @@
// max 8 4-bit R ports
#define MCFG_HMCS40_READ_R_CB(R, _devcb) \
- devcb = &hmcs40_cpu_device::set_read_r##R##_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hmcs40_cpu_device &>(*device).set_read_r##R##_callback(DEVCB_##_devcb);
#define MCFG_HMCS40_WRITE_R_CB(R, _devcb) \
- devcb = &hmcs40_cpu_device::set_write_r##R##_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hmcs40_cpu_device &>(*device).set_write_r##R##_callback(DEVCB_##_devcb);
// 16-bit discrete
#define MCFG_HMCS40_READ_D_CB(_devcb) \
- devcb = &hmcs40_cpu_device::set_read_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hmcs40_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
#define MCFG_HMCS40_WRITE_D_CB(_devcb) \
- devcb = &hmcs40_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hmcs40_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
enum
{
@@ -105,27 +105,27 @@ public:
PORT_R7X
};
- // static configuration helpers
- template <class Object> static devcb_base &set_read_r0_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r0.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_r1_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_r2_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_r3_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_r4_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r4.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_r5_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r5.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_r6_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r6.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_r7_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r7.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_write_r0_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r0.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r1_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r2_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r3_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r4_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r4.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r5_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r5.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r6_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r6.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r7_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r7.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_read_r0_callback(Object &&cb) { return m_read_r0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_r1_callback(Object &&cb) { return m_read_r1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_r2_callback(Object &&cb) { return m_read_r2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_r3_callback(Object &&cb) { return m_read_r3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_r4_callback(Object &&cb) { return m_read_r4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_r5_callback(Object &&cb) { return m_read_r5.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_r6_callback(Object &&cb) { return m_read_r6.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_r7_callback(Object &&cb) { return m_read_r7.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> devcb_base &set_write_r0_callback(Object &&cb) { return m_write_r0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r1_callback(Object &&cb) { return m_write_r1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r2_callback(Object &&cb) { return m_write_r2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r3_callback(Object &&cb) { return m_write_r3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r4_callback(Object &&cb) { return m_write_r4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r5_callback(Object &&cb) { return m_write_r5.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r6_callback(Object &&cb) { return m_write_r6.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r7_callback(Object &&cb) { return m_write_r7.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> devcb_base &set_read_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); }
protected:
enum
diff --git a/src/devices/cpu/hphybrid/hphybrid.h b/src/devices/cpu/hphybrid/hphybrid.h
index bd362d710ee..63360d0bfdd 100644
--- a/src/devices/cpu/hphybrid/hphybrid.h
+++ b/src/devices/cpu/hphybrid/hphybrid.h
@@ -41,11 +41,11 @@
// Set boot mode of 5061-3001: either normal (false) or as in HP9845 system (true)
#define MCFG_HPHYBRID_SET_9845_BOOT(_mode) \
- hp_5061_3001_cpu_device::set_boot_mode_static(*device, _mode);
+ downcast<hp_5061_3001_cpu_device &>(*device).set_boot_mode(_mode);
// PA changed callback
#define MCFG_HPHYBRID_PA_CHANGED(_devcb) \
- devcb = &hp_hybrid_cpu_device::set_pa_changed_func(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp_hybrid_cpu_device &>(*device).set_pa_changed_func(DEVCB_##_devcb);
class hp_hybrid_cpu_device : public cpu_device
{
@@ -57,7 +57,7 @@ public:
uint8_t pa_r() const;
- template <class Object> static devcb_base &set_pa_changed_func(device_t &device, Object &&cb) { return downcast<hp_hybrid_cpu_device &>(device).m_pa_changed_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pa_changed_func(Object &&cb) { return m_pa_changed_func.set_callback(std::forward<Object>(cb)); }
protected:
hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t addrwidth);
@@ -161,7 +161,7 @@ class hp_5061_3001_cpu_device : public hp_hybrid_cpu_device
public:
hp_5061_3001_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_boot_mode_static(device_t &device, bool mode) { downcast<hp_5061_3001_cpu_device &>(device).m_boot_mode = mode; }
+ void set_boot_mode(bool mode) { m_boot_mode = mode; }
protected:
virtual void device_start() override;
diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h
index 5c56d292280..b0f0ba0fa5b 100644
--- a/src/devices/cpu/i386/i386.h
+++ b/src/devices/cpu/i386/i386.h
@@ -26,10 +26,10 @@
#define MCFG_I386_SMIACT(_devcb) \
- devcb = &i386_device::set_smiact(*device, DEVCB_##_devcb);
+ devcb = &downcast<i386_device &>(*device).set_smiact(DEVCB_##_devcb);
#define MCFG_I486_FERR_HANDLER(_devcb) \
- devcb = &i386_device::set_ferr(*device, DEVCB_##_devcb);
+ devcb = &downcast<i386_device &>(*device).set_ferr(DEVCB_##_devcb);
#define X86_NUM_CPUS 4
@@ -39,9 +39,9 @@ public:
// construction/destruction
i386_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_smiact(device_t &device, Object &&cb) { return downcast<i386_device &>(device).m_smiact.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ferr(device_t &device, Object &&cb) { return downcast<i386_device &>(device).m_ferr_handler.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_smiact(Object &&cb) { return m_smiact.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ferr(Object &&cb) { return m_ferr_handler.set_callback(std::forward<Object>(cb)); }
uint64_t debug_segbase(symbol_table &table, int params, const uint64_t *param);
uint64_t debug_seglimit(symbol_table &table, int params, const uint64_t *param);
diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h
index b4ab5901c1f..2da4c89acd1 100644
--- a/src/devices/cpu/i8085/i8085.h
+++ b/src/devices/cpu/i8085/i8085.h
@@ -18,25 +18,25 @@
// STATUS changed callback
#define MCFG_I8085A_STATUS(_devcb) \
- devcb = &i8085a_cpu_device::set_out_status_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8085a_cpu_device &>(*device).set_out_status_func(DEVCB_##_devcb);
// INTE changed callback
#define MCFG_I8085A_INTE(_devcb) \
- devcb = &i8085a_cpu_device::set_out_inte_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8085a_cpu_device &>(*device).set_out_inte_func(DEVCB_##_devcb);
// SID changed callback (8085A only)
#define MCFG_I8085A_SID(_devcb) \
- devcb = &i8085a_cpu_device::set_in_sid_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8085a_cpu_device &>(*device).set_in_sid_func(DEVCB_##_devcb);
// SOD changed callback (8085A only)
#define MCFG_I8085A_SOD(_devcb) \
- devcb = &i8085a_cpu_device::set_out_sod_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8085a_cpu_device &>(*device).set_out_sod_func(DEVCB_##_devcb);
// CLK rate callback (8085A only)
#define MCFG_I8085A_CLK_OUT_DEVICE(_tag) \
- i8085a_cpu_device::static_set_clk_out(*device, clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr));
+ downcast<i8085a_cpu_device &>(*device).set_clk_out(clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr));
#define MCFG_I8085A_CLK_OUT_CUSTOM(_class, _func) \
- i8085a_cpu_device::static_set_clk_out(*device, clock_update_delegate(&_class::_func, #_class "::" _func, owner));
+ downcast<i8085a_cpu_device &>(*device).set_clk_out(clock_update_delegate(&_class::_func, #_class "::" _func, owner));
class i8085a_cpu_device : public cpu_device
@@ -65,12 +65,12 @@ public:
// construction/destruction
i8085a_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_out_status_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_status_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_inte_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_inte_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_sid_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_in_sid_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_sod_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_sod_func.set_callback(std::forward<Object>(cb)); }
- static void static_set_clk_out(device_t &device, clock_update_delegate &&clk_out) { downcast<i8085a_cpu_device &>(device).m_clk_out_func = std::move(clk_out); }
+ // configuration helpers
+ template <class Object> devcb_base &set_out_status_func(Object &&cb) { return m_out_status_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_inte_func(Object &&cb) { return m_out_inte_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_sid_func(Object &&cb) { return m_in_sid_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_sod_func(Object &&cb) { return m_out_sod_func.set_callback(std::forward<Object>(cb)); }
+ template <typename Object> void set_clk_out(Object &&cb) { m_clk_out_func = std::forward<Object>(cb); }
protected:
i8085a_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int cputype);
diff --git a/src/devices/cpu/i8089/i8089.h b/src/devices/cpu/i8089/i8089.h
index 1659afd54d9..df72f847b85 100644
--- a/src/devices/cpu/i8089/i8089.h
+++ b/src/devices/cpu/i8089/i8089.h
@@ -23,7 +23,7 @@
//**************************************************************************
#define MCFG_I8089_DATA_WIDTH(_data_width) \
- i8089_device::set_data_width(*device, _data_width);
+ downcast<i8089_device &>(*device).set_data_width(_data_width);
#define MCFG_I8089_SINTR1(_sintr1) \
devcb = &downcast<i8089_device *>(device)->set_sintr1_callback(DEVCB_##_sintr1);
@@ -53,8 +53,8 @@ public:
template <class Object> devcb_base &set_sintr1_callback(Object &&sintr1) { return m_write_sintr1.set_callback(std::forward<Object>(sintr1)); }
template <class Object> devcb_base &set_sintr2_callback(Object &&sintr2) { return m_write_sintr2.set_callback(std::forward<Object>(sintr2)); }
- // static configuration helpers
- static void set_data_width(device_t &device, uint8_t data_width) { downcast<i8089_device &>(device).m_data_width = data_width; }
+ // configuration helpers
+ void set_data_width(uint8_t data_width) { m_data_width = data_width; }
// input lines
DECLARE_WRITE_LINE_MEMBER( ca_w );
diff --git a/src/devices/cpu/i86/i186.cpp b/src/devices/cpu/i86/i186.cpp
index 6bb679a3300..558a36cb912 100644
--- a/src/devices/cpu/i86/i186.cpp
+++ b/src/devices/cpu/i86/i186.cpp
@@ -126,7 +126,7 @@ i80188_cpu_device::i80188_cpu_device(const machine_config &mconfig, const char *
{
memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing));
m_fetch_xor = 0;
- static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this));
+ set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this));
}
i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
@@ -134,7 +134,7 @@ i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, const char *
{
memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing));
m_fetch_xor = BYTE_XOR_LE(0);
- static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this));
+ set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this));
}
i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size)
diff --git a/src/devices/cpu/i86/i186.h b/src/devices/cpu/i86/i186.h
index ec7acac9bea..7ebb6e1bc4b 100644
--- a/src/devices/cpu/i86/i186.h
+++ b/src/devices/cpu/i86/i186.h
@@ -16,10 +16,10 @@ public:
// construction/destruction
i80186_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &static_set_read_slave_ack_callback(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_read_slave_ack_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_chip_select_callback(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_chip_select_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_tmrout0_handler(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_tmrout0_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_tmrout1_handler(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_tmrout1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_slave_ack_callback(Object &&cb) { return m_read_slave_ack_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_chip_select_callback(Object &&cb) { return m_out_chip_select_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tmrout0_handler(Object &&cb) { return m_out_tmrout0_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tmrout1_handler(Object &&cb) { return m_out_tmrout1_func.set_callback(std::forward<Object>(cb)); }
IRQ_CALLBACK_MEMBER(int_callback);
DECLARE_WRITE_LINE_MEMBER(drq0_w) { if(state) drq_callback(0); m_dma[0].drq_state = state; }
@@ -153,15 +153,15 @@ public:
};
#define MCFG_80186_IRQ_SLAVE_ACK(_devcb) \
- devcb = &i80186_cpu_device::static_set_read_slave_ack_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i80186_cpu_device &>(*device).set_read_slave_ack_callback(DEVCB_##_devcb);
#define MCFG_80186_CHIP_SELECT_CB(_devcb) \
- devcb = &i80186_cpu_device::static_set_chip_select_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i80186_cpu_device &>(*device).set_chip_select_callback(DEVCB_##_devcb);
#define MCFG_80186_TMROUT0_HANDLER(_devcb) \
- devcb = &i80186_cpu_device::static_set_tmrout0_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<i80186_cpu_device &>(*device).set_tmrout0_handler(DEVCB_##_devcb);
#define MCFG_80186_TMROUT1_HANDLER(_devcb) \
- devcb = &i80186_cpu_device::static_set_tmrout1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<i80186_cpu_device &>(*device).set_tmrout1_handler(DEVCB_##_devcb);
#endif // MAME_CPU_I86_I186_H
diff --git a/src/devices/cpu/i86/i286.h b/src/devices/cpu/i86/i286.h
index 8136b0128ce..dbf5e245673 100644
--- a/src/devices/cpu/i86/i286.h
+++ b/src/devices/cpu/i86/i286.h
@@ -72,8 +72,8 @@ public:
virtual space_config_vector memory_space_config() const override;
typedef delegate<uint32_t (bool)> a20_cb;
- static void static_set_a20_callback(device_t &device, a20_cb object) { downcast<i80286_cpu_device &>(device).m_a20_callback = object; }
- template <class Object> static devcb_base &static_set_shutdown_callback(device_t &device, Object &&cb) { return downcast<i80286_cpu_device &>(device).m_out_shutdown_func.set_callback(std::forward<Object>(cb)); }
+ template <typename Object> void set_a20_callback(Object &&cb) { m_a20_callback = std::forward<Object>(cb); }
+ template <class Object> devcb_base &set_shutdown_callback(Object &&cb) { return m_out_shutdown_func.set_callback(std::forward<Object>(cb)); }
protected:
virtual void execute_run() override;
@@ -162,9 +162,9 @@ private:
};
#define MCFG_80286_A20(_class, _a20_cb) \
- i80286_cpu_device::static_set_a20_callback(*device, i80286_cpu_device::a20_cb(&_class::_a20_cb, this));
+ downcast<i80286_cpu_device &>(*device).set_a20_callback(i80286_cpu_device::a20_cb(&_class::_a20_cb, this));
#define MCFG_80286_SHUTDOWN(_devcb) \
- devcb = &i80286_cpu_device::static_set_shutdown_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i80286_cpu_device &>(*device).set_shutdown_callback(DEVCB_##_devcb);
#endif // MAME_CPU_I86_I286_H
diff --git a/src/devices/cpu/i86/i86.h b/src/devices/cpu/i86/i86.h
index d0bfd9b8782..3376a37f3b8 100644
--- a/src/devices/cpu/i86/i86.h
+++ b/src/devices/cpu/i86/i86.h
@@ -17,10 +17,10 @@ DECLARE_DEVICE_TYPE(I8088, i8088_cpu_device)
#define MCFG_I8086_LOCK_HANDLER(_write) \
- devcb = &i8086_common_cpu_device::set_lock_handler(*device, DEVCB_##_write);
+ devcb = &downcast<i8086_common_cpu_device &>(*device).set_lock_handler(DEVCB_##_write);
#define MCFG_I8086_IF_HANDLER(_write) \
- devcb = &i8086_cpu_device::set_if_handler(*device, DEVCB_##_write);
+ devcb = &downcast<i8086_cpu_device &>(*device).set_if_handler(DEVCB_##_write);
#define MCFG_I8086_STACK_MAP(map) \
MCFG_DEVICE_ADDRESS_MAP(i8086_cpu_device::AS_STACK, map)
@@ -32,10 +32,10 @@ DECLARE_DEVICE_TYPE(I8088, i8088_cpu_device)
MCFG_DEVICE_ADDRESS_MAP(i8086_cpu_device::AS_EXTRA, map)
#define MCFG_I8086_ESC_OPCODE_HANDLER(_write) \
- devcb = &i8086_cpu_device::set_esc_opcode_handler(*device, DEVCB_##_write);
+ devcb = &downcast<i8086_cpu_device &>(*device).set_esc_opcode_handler(DEVCB_##_write);
#define MCFG_I8086_ESC_DATA_HANDLER(_write) \
- devcb = &i8086_cpu_device::set_esc_data_handler(*device, DEVCB_##_write);
+ devcb = &downcast<i8086_cpu_device &>(*device).set_esc_data_handler(DEVCB_##_write);
enum
{
@@ -49,8 +49,7 @@ enum
class i8086_common_cpu_device : public cpu_device, public i386_disassembler::config
{
public:
- template <class Object> static devcb_base &set_lock_handler(device_t &device, Object &&cb)
- { return downcast<i8086_common_cpu_device &>(device).m_lock_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_lock_handler(Object &&cb) { return m_lock_handler.set_callback(std::forward<Object>(cb)); }
protected:
enum
@@ -367,14 +366,9 @@ public:
// device_memory_interface overrides
virtual space_config_vector memory_space_config() const override;
- template <class Object> static devcb_base &set_if_handler(device_t &device, Object &&cb)
- { return downcast<i8086_cpu_device &>(device).m_out_if_func.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_esc_opcode_handler(device_t &device, Object &&cb)
- { return downcast<i8086_cpu_device &>(device).m_esc_opcode_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_esc_data_handler(device_t &device, Object &&cb)
- { return downcast<i8086_cpu_device &>(device).m_esc_data_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_if_handler(Object &&cb) { return m_out_if_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_esc_opcode_handler(Object &&cb) { return m_esc_opcode_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_esc_data_handler(Object &&cb) { return m_esc_data_handler.set_callback(std::forward<Object>(cb)); }
protected:
i8086_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size);
diff --git a/src/devices/cpu/jaguar/jaguar.h b/src/devices/cpu/jaguar/jaguar.h
index ac7f406621d..cb88c8a5d41 100644
--- a/src/devices/cpu/jaguar/jaguar.h
+++ b/src/devices/cpu/jaguar/jaguar.h
@@ -65,7 +65,7 @@ enum
***************************************************************************/
#define MCFG_JAGUAR_IRQ_HANDLER(_devcb) \
- devcb = &jaguar_cpu_device::set_int_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<jaguar_cpu_device &>(*device).set_int_func(DEVCB_##_devcb);
/***************************************************************************
@@ -95,8 +95,8 @@ public:
// construction/destruction
~jaguar_cpu_device();
- // static configuration helpers
- template <class Object> static devcb_base &set_int_func(device_t &device, Object &&cb) { return downcast<jaguar_cpu_device &>(device).m_cpu_interrupt.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_int_func(Object &&cb) { return m_cpu_interrupt.set_callback(std::forward<Object>(cb)); }
virtual DECLARE_WRITE32_MEMBER(ctrl_w) = 0;
virtual DECLARE_READ32_MEMBER(ctrl_r) = 0;
diff --git a/src/devices/cpu/lc8670/lc8670.h b/src/devices/cpu/lc8670/lc8670.h
index 3286c3b1504..3944c864a4a 100644
--- a/src/devices/cpu/lc8670/lc8670.h
+++ b/src/devices/cpu/lc8670/lc8670.h
@@ -45,14 +45,14 @@ enum
//**************************************************************************
#define MCFG_LC8670_SET_CLOCK_SOURCES(_sub_clock, _rc_clock, _cf_clock) \
- lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::SUB, _sub_clock); \
- lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::RC, _rc_clock); \
- lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::CF, _cf_clock);
+ downcast<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::SUB, _sub_clock); \
+ downcast<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::RC, _rc_clock); \
+ downcast<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::CF, _cf_clock);
#define MCFG_LC8670_BANKSWITCH_CB(_devcb) \
- devcb = &lc8670_cpu_device::static_set_bankswitch_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<lc8670_cpu_device &>(*device).set_bankswitch_cb(DEVCB_##_devcb);
#define MCFG_LC8670_LCD_UPDATE_CB(_cb) \
- lc8670_cpu_device::static_set_lcd_update_cb(*device, _cb);
+ downcast<lc8670_cpu_device &>(*device).set_lcd_update_cb(_cb);
// ======================> lc8670_cpu_device
@@ -83,11 +83,11 @@ public:
DECLARE_READ8_MEMBER(xram_r);
DECLARE_WRITE8_MEMBER(xram_w);
- // static configuration helpers
- static void static_set_cpu_clock(device_t &device, clock_source source, uint32_t clock) { downcast<lc8670_cpu_device &>(device).m_clocks[unsigned(source)] = clock; }
- static void static_set_cpu_clock(device_t &device, clock_source source, const XTAL &clock) { static_set_cpu_clock(device, source, clock.value()); }
- static void static_set_lcd_update_cb(device_t &device, lcd_update cb) { downcast<lc8670_cpu_device &>(device).m_lcd_update_func = cb; }
- template <class Object> static devcb_base & static_set_bankswitch_cb(device_t &device, Object &&cb) { return downcast<lc8670_cpu_device &>(device).m_bankswitch_func.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ void set_cpu_clock(clock_source source, uint32_t clock) { m_clocks[unsigned(source)] = clock; }
+ void set_cpu_clock(clock_source source, const XTAL &clock) { set_cpu_clock(source, clock.value()); }
+ template <typename Object> void set_lcd_update_cb(Object &&cb) { m_lcd_update_func = std::forward<Object>(cb); }
+ template <class Object> devcb_base &set_bankswitch_cb(Object &&cb) { return m_bankswitch_func.set_callback(std::forward<Object>(cb)); }
void lc8670_internal_map(address_map &map);
protected:
diff --git a/src/devices/cpu/lh5801/lh5801.h b/src/devices/cpu/lh5801/lh5801.h
index 2981bda7d0f..679e2e90fa4 100644
--- a/src/devices/cpu/lh5801/lh5801.h
+++ b/src/devices/cpu/lh5801/lh5801.h
@@ -61,7 +61,7 @@ enum
#define MCFG_LH5801_IN(_devcb) \
- devcb = &lh5801_cpu_device::set_in_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<lh5801_cpu_device &>(*device).set_in_func(DEVCB_##_devcb);
class lh5801_cpu_device : public cpu_device
@@ -70,8 +70,8 @@ public:
// construction/destruction
lh5801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_in_func(device_t &device, Object &&cb) { return downcast<lh5801_cpu_device &>(device).m_in_func.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_in_func(Object &&cb) { return m_in_func.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
diff --git a/src/devices/cpu/lr35902/lr35902.h b/src/devices/cpu/lr35902/lr35902.h
index 0d33bbbe548..d3743209e76 100644
--- a/src/devices/cpu/lr35902/lr35902.h
+++ b/src/devices/cpu/lr35902/lr35902.h
@@ -7,19 +7,19 @@
#define MCFG_LR35902_TIMER_CB(_devcb) \
- devcb = &lr35902_cpu_device::set_timer_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<lr35902_cpu_device &>(*device).set_timer_cb(DEVCB_##_devcb);
// The first release of this CPU has a bug where the programcounter
// is not incremented properly after an interrupt after the halt opcode.
// This was fixed in a newer revision.
#define MCFG_LR35902_HALT_BUG \
- lr35902_cpu_device::set_halt_bug(*device);
+ downcast<lr35902_cpu_device &>(*device).set_halt_bug(true);
// The GameBoy has a bug where OAM data gets corrupted if you inc/dec
// a 16-bit register in the $fe** region.
// note: oldval is in hiword, newval is in loword
#define MCFG_LR35902_INCDEC16_CB(_devcb) \
- devcb = &lr35902_cpu_device::set_incdec16_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<lr35902_cpu_device &>(*device).set_incdec16_cb(DEVCB_##_devcb);
enum
@@ -39,10 +39,10 @@ public:
// construction/destruction
lr35902_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- // static configuration helpers
- template<class _Object> static devcb_base &set_timer_cb(device_t &device, _Object object) { return downcast<lr35902_cpu_device &>(device).m_timer_func.set_callback(object); }
- template<class _Object> static devcb_base &set_incdec16_cb(device_t &device, _Object object) { return downcast<lr35902_cpu_device &>(device).m_incdec16_func.set_callback(object); }
- static void set_halt_bug(device_t &device) { downcast<lr35902_cpu_device &>(device).m_has_halt_bug = true; }
+ // configuration helpers
+ template<class Object> devcb_base &set_timer_cb(Object &&cb) { return m_timer_func.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_incdec16_cb(Object &&cb) { return m_incdec16_func.set_callback(std::forward<Object>(cb)); }
+ void set_halt_bug(bool has_halt_bug) { m_has_halt_bug = has_halt_bug; }
uint8_t get_speed();
void set_speed(uint8_t speed_request);
diff --git a/src/devices/cpu/m6502/m5074x.h b/src/devices/cpu/m6502/m5074x.h
index c9f7ddb4ba6..2782d09f2d7 100644
--- a/src/devices/cpu/m6502/m5074x.h
+++ b/src/devices/cpu/m6502/m5074x.h
@@ -20,28 +20,28 @@
//**************************************************************************
#define MCFG_M5074X_PORT0_READ_CALLBACK(_read) \
- devcb = &m5074x_device::set_p0_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<m5074x_device &>(*device).set_p0_rd_callback(DEVCB_##_read);
#define MCFG_M5074X_PORT1_READ_CALLBACK(_read) \
- devcb = &m5074x_device::set_p1_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<m5074x_device &>(*device).set_p1_rd_callback(DEVCB_##_read);
#define MCFG_M5074X_PORT2_READ_CALLBACK(_read) \
- devcb = &m5074x_device::set_p2_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<m5074x_device &>(*device).set_p2_rd_callback(DEVCB_##_read);
#define MCFG_M5074X_PORT3_READ_CALLBACK(_read) \
- devcb = &m5074x_device::set_p3_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<m5074x_device &>(*device).set_p3_rd_callback(DEVCB_##_read);
#define MCFG_M5074X_PORT0_WRITE_CALLBACK(_write) \
- devcb = &m5074x_device::set_p0_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<m5074x_device &>(*device).set_p0_wr_callback(DEVCB_##_write);
#define MCFG_M5074X_PORT1_WRITE_CALLBACK(_write) \
- devcb = &m5074x_device::set_p1_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<m5074x_device &>(*device).set_p1_wr_callback(DEVCB_##_write);
#define MCFG_M5074X_PORT2_WRITE_CALLBACK(_write) \
- devcb = &m5074x_device::set_p2_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<m5074x_device &>(*device).set_p2_wr_callback(DEVCB_##_write);
#define MCFG_M5074X_PORT3_WRITE_CALLBACK(_write) \
- devcb = &m5074x_device::set_p3_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<m5074x_device &>(*device).set_p3_wr_callback(DEVCB_##_write);
//**************************************************************************
// TYPE DEFINITIONS
@@ -73,14 +73,14 @@ class m5074x_device : public m740_device
public:
const address_space_config m_program_config;
- template<class _Object> static devcb_base &set_p0_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p0.set_callback(object); }
- template<class _Object> static devcb_base &set_p1_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p1.set_callback(object); }
- template<class _Object> static devcb_base &set_p2_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p2.set_callback(object); }
- template<class _Object> static devcb_base &set_p3_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p3.set_callback(object); }
- template<class _Object> static devcb_base &set_p0_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p0.set_callback(object); }
- template<class _Object> static devcb_base &set_p1_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p1.set_callback(object); }
- template<class _Object> static devcb_base &set_p2_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p2.set_callback(object); }
- template<class _Object> static devcb_base &set_p3_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p3.set_callback(object); }
+ template<class Object> devcb_base &set_p0_rd_callback(Object &&cb) { return read_p0.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_p1_rd_callback(Object &&cb) { return read_p1.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_p2_rd_callback(Object &&cb) { return read_p2.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_p3_rd_callback(Object &&cb) { return read_p3.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_p0_wr_callback(Object &&cb) { return write_p0.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_p1_wr_callback(Object &&cb) { return write_p1.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_p2_wr_callback(Object &&cb) { return write_p2.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_p3_wr_callback(Object &&cb) { return write_p3.set_callback(std::forward<Object>(cb)); }
devcb_read8 read_p0, read_p1, read_p2, read_p3;
devcb_write8 write_p0, write_p1, write_p2, write_p3;
diff --git a/src/devices/cpu/m6502/m6502.h b/src/devices/cpu/m6502/m6502.h
index ab44415ca5a..18c0bdb5c3b 100644
--- a/src/devices/cpu/m6502/m6502.h
+++ b/src/devices/cpu/m6502/m6502.h
@@ -15,7 +15,7 @@
downcast<m6502_device *>(device)->disable_direct();
#define MCFG_M6502_SYNC_CALLBACK(_cb) \
- devcb = &m6502_device::set_sync_callback(*device, DEVCB_##_cb);
+ devcb = &downcast<m6502_device &>(*device).set_sync_callback(DEVCB_##_cb);
class m6502_device : public cpu_device {
public:
@@ -31,7 +31,7 @@ public:
bool get_sync() const { return sync; }
void disable_direct() { direct_disabled = true; }
- template<class _Object> static devcb_base &set_sync_callback(device_t &device, _Object object) { return downcast<m6502_device &>(device).sync_w.set_callback(object); }
+ template<class Object> devcb_base &set_sync_callback(Object &&cb) { return sync_w.set_callback(std::forward<Object>(cb)); }
devcb_write_line sync_w;
diff --git a/src/devices/cpu/m6502/xavix.h b/src/devices/cpu/m6502/xavix.h
index e58a355b35d..67014209aa0 100644
--- a/src/devices/cpu/m6502/xavix.h
+++ b/src/devices/cpu/m6502/xavix.h
@@ -13,7 +13,7 @@
#include "m6502.h"
#define MCFG_XAVIX_VECTOR_CALLBACK(_class, _method) \
- xavix_device::set_vector_callback(*device, xavix_device::xavix_interrupt_vector_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<xavix_device &>(*device).set_vector_callback(xavix_device::xavix_interrupt_vector_delegate(&_class::_method, #_class "::" #_method, this));
class xavix_device : public m6502_device {
public:
@@ -33,7 +33,7 @@ public:
typedef device_delegate<uint8_t (int which, int half)> xavix_interrupt_vector_delegate;
- static void set_vector_callback(device_t &device, xavix_interrupt_vector_delegate &&cb) { downcast<xavix_device &>(device).m_vector_callback = std::move(cb); }
+ template <typename Object> void set_vector_callback(Object &&cb) { m_vector_callback = std::forward<Object>(cb); }
#undef O
diff --git a/src/devices/cpu/m6800/m6801.h b/src/devices/cpu/m6800/m6801.h
index 08a75439827..154c6220ce1 100644
--- a/src/devices/cpu/m6800/m6801.h
+++ b/src/devices/cpu/m6800/m6801.h
@@ -52,9 +52,9 @@ enum
#define MCFG_M6801_SC2(_devcb) \
- devcb = &m6801_cpu_device::set_out_sc2_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<m6801_cpu_device &>(*device).set_out_sc2_func(DEVCB_##_devcb);
#define MCFG_M6801_SER_TX(_devcb) \
- devcb = &m6801_cpu_device::set_out_sertx_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<m6801_cpu_device &>(*device).set_out_sertx_func(DEVCB_##_devcb);
class m6801_cpu_device : public m6800_cpu_device
@@ -62,9 +62,9 @@ class m6801_cpu_device : public m6800_cpu_device
public:
m6801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template<class _Object> static devcb_base &set_out_sc2_func(device_t &device, _Object object) { return downcast<m6801_cpu_device &>(device).m_out_sc2_func.set_callback(object); }
- template<class _Object> static devcb_base &set_out_sertx_func(device_t &device, _Object object) { return downcast<m6801_cpu_device &>(device).m_out_sertx_func.set_callback(object); }
+ // configuration helpers
+ template<class Object> devcb_base &set_out_sc2_func(Object &&cb) { return m_out_sc2_func.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_sertx_func(Object &&cb) { return m_out_sertx_func.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( m6801_io_r );
DECLARE_WRITE8_MEMBER( m6801_io_w );
diff --git a/src/devices/cpu/m6805/m68705.h b/src/devices/cpu/m6805/m68705.h
index a93b32902df..888dfdc23d1 100644
--- a/src/devices/cpu/m6805/m68705.h
+++ b/src/devices/cpu/m6805/m68705.h
@@ -25,35 +25,33 @@ DECLARE_DEVICE_TYPE(M68705U3, m68705u3_device)
// ======================> m68705_device
#define MCFG_M68705_PORTA_R_CB(obj) \
- devcb = &m68705_device::set_port_cb_r<0>(*device, DEVCB_##obj);
+ devcb = &downcast<m68705_device &>(*device).set_port_cb_r<0>(DEVCB_##obj);
#define MCFG_M68705_PORTB_R_CB(obj) \
- devcb = &m68705_device::set_port_cb_r<1>(*device, DEVCB_##obj);
+ devcb = &downcast<m68705_device &>(*device).set_port_cb_r<1>(DEVCB_##obj);
#define MCFG_M68705_PORTC_R_CB(obj) \
- devcb = &m68705_device::set_port_cb_r<2>(*device, DEVCB_##obj);
+ devcb = &downcast<m68705_device &>(*device).set_port_cb_r<2>(DEVCB_##obj);
#define MCFG_M68705_PORTD_R_CB(obj) \
- devcb = &m68705_device::set_port_cb_r<3>(*device, DEVCB_##obj);
+ devcb = &downcast<m68705_device &>(*device).set_port_cb_r<3>(DEVCB_##obj);
#define MCFG_M68705_PORTA_W_CB(obj) \
- devcb = &m68705_device::set_port_cb_w<0>(*device, DEVCB_##obj);
+ devcb = &downcast<m68705_device &>(*device).set_port_cb_w<0>(DEVCB_##obj);
#define MCFG_M68705_PORTB_W_CB(obj) \
- devcb = &m68705_device::set_port_cb_w<1>(*device, DEVCB_##obj);
+ devcb = &downcast<m68705_device &>(*device).set_port_cb_w<1>(DEVCB_##obj);
#define MCFG_M68705_PORTC_W_CB(obj) \
- devcb = &m68705_device::set_port_cb_w<2>(*device, DEVCB_##obj);
+ devcb = &downcast<m68705_device &>(*device).set_port_cb_w<2>(DEVCB_##obj);
class m68705_device : public m6805_base_device, public device_nvram_interface
{
public:
- // static configuration helpers
- template<std::size_t N, typename Object> static devcb_base &set_port_cb_r(device_t &device, Object &&obj)
- { return downcast<m68705_device &>(device).m_port_cb_r[N].set_callback(std::forward<Object>(obj)); }
- template<std::size_t N, typename Object> static devcb_base &set_port_cb_w(device_t &device, Object &&obj)
- { return downcast<m68705_device &>(device).m_port_cb_w[N].set_callback(std::forward<Object>(obj)); }
+ // configuration helpers
+ template<std::size_t N, typename Object> devcb_base &set_port_cb_r(Object &&obj) { return m_port_cb_r[N].set_callback(std::forward<Object>(obj)); }
+ template<std::size_t N, typename Object> devcb_base &set_port_cb_w(Object &&obj) { return m_port_cb_w[N].set_callback(std::forward<Object>(obj)); }
protected:
// state index constants
diff --git a/src/devices/cpu/m6805/m68hc05.h b/src/devices/cpu/m6805/m68hc05.h
index 772df2a4689..4190ad9a91c 100644
--- a/src/devices/cpu/m6805/m68hc05.h
+++ b/src/devices/cpu/m6805/m68hc05.h
@@ -26,43 +26,40 @@ DECLARE_DEVICE_TYPE(M68HC705C8A, m68hc705c8a_device)
// ======================> m68hc05_device
#define MCFG_M68HC05_PORTA_R_CB(obj) \
- devcb = &m68hc05_device::set_port_cb_r<0>(*device, DEVCB_##obj);
+ devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<0>(DEVCB_##obj);
#define MCFG_M68HC05_PORTB_R_CB(obj) \
- devcb = &m68hc05_device::set_port_cb_r<1>(*device, DEVCB_##obj);
+ devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<1>(DEVCB_##obj);
#define MCFG_M68HC05_PORTC_R_CB(obj) \
- devcb = &m68hc05_device::set_port_cb_r<2>(*device, DEVCB_##obj);
+ devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<2>(DEVCB_##obj);
#define MCFG_M68HC05_PORTD_R_CB(obj) \
- devcb = &m68hc05_device::set_port_cb_r<3>(*device, DEVCB_##obj);
+ devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<3>(DEVCB_##obj);
#define MCFG_M68HC05_PORTA_W_CB(obj) \
- devcb = &m68hc05_device::set_port_cb_w<0>(*device, DEVCB_##obj);
+ devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<0>(DEVCB_##obj);
#define MCFG_M68HC05_PORTB_W_CB(obj) \
- devcb = &m68hc05_device::set_port_cb_w<1>(*device, DEVCB_##obj);
+ devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<1>(DEVCB_##obj);
#define MCFG_M68HC05_PORTC_W_CB(obj) \
- devcb = &m68hc05_device::set_port_cb_w<2>(*device, DEVCB_##obj);
+ devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<2>(DEVCB_##obj);
#define MCFG_M68HC05_PORTD_W_CB(obj) \
- devcb = &m68hc05_device::set_port_cb_w<3>(*device, DEVCB_##obj);
+ devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<3>(DEVCB_##obj);
#define MCFG_M68HC05_TCMP_CB(obj) \
- devcb = &m68hc05_device::set_tcmp_cb(*device, DEVCB_##obj);
+ devcb = &downcast<m68hc05_device &>(*device).set_tcmp_cb(DEVCB_##obj);
class m68hc05_device : public m6805_base_device
{
public:
- // static configuration helpers
- template<std::size_t N, typename Object> static devcb_base &set_port_cb_r(device_t &device, Object &&obj)
- { return downcast<m68hc05_device &>(device).m_port_cb_r[N].set_callback(std::forward<Object>(obj)); }
- template<std::size_t N, typename Object> static devcb_base &set_port_cb_w(device_t &device, Object &&obj)
- { return downcast<m68hc05_device &>(device).m_port_cb_w[N].set_callback(std::forward<Object>(obj)); }
- template<typename Object> static devcb_base &set_tcmp_cb(device_t &device, Object &&obj)
- { return downcast<m68hc05_device &>(device).m_tcmp_cb.set_callback(std::forward<Object>(obj)); }
+ // configuration helpers
+ template<std::size_t N, typename Object> devcb_base &set_port_cb_r(Object &&obj) { return m_port_cb_r[N].set_callback(std::forward<Object>(obj)); }
+ template<std::size_t N, typename Object> devcb_base &set_port_cb_w(Object &&obj) { return m_port_cb_w[N].set_callback(std::forward<Object>(obj)); }
+ template<typename Object> devcb_base &set_tcmp_cb(Object &&obj) { return m_tcmp_cb.set_callback(std::forward<Object>(obj)); }
protected:
// state index constants
diff --git a/src/devices/cpu/m6809/konami.h b/src/devices/cpu/m6809/konami.h
index 216b007302a..e53c86e4fb2 100644
--- a/src/devices/cpu/m6809/konami.h
+++ b/src/devices/cpu/m6809/konami.h
@@ -21,7 +21,7 @@
//**************************************************************************
#define MCFG_KONAMICPU_LINE_CB(_devcb) \
- devcb = &konami_cpu_device::set_line_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<konami_cpu_device &>(*device).set_line_callback(DEVCB_##_devcb);
// device type definition
@@ -36,7 +36,7 @@ public:
konami_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
- template<class _Object> static devcb_base &set_line_callback(device_t &device, _Object object) { return downcast<konami_cpu_device &>(device).m_set_lines.set_callback(object); }
+ template<class Object> devcb_base &set_line_callback(Object &&cb) { return m_set_lines.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
diff --git a/src/devices/cpu/m6809/m6809.h b/src/devices/cpu/m6809/m6809.h
index 675ec9e2317..bffa63f8a7c 100644
--- a/src/devices/cpu/m6809/m6809.h
+++ b/src/devices/cpu/m6809/m6809.h
@@ -306,7 +306,7 @@ public:
// MC6809E has LIC line to indicate opcode/data fetch
#define MCFG_MC6809E_LIC_CB(_devcb) \
- devcb = &mc6809e_device::set_lic_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc6809e_device &>(*device).set_lic_cb(DEVCB_##_devcb);
class mc6809e_device : public m6809_base_device
@@ -315,8 +315,8 @@ public:
// construction/destruction
mc6809e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template<class _Object> static devcb_base &set_lic_cb(device_t &device, _Object object) { return downcast<mc6809e_device &>(device).m_lic_func.set_callback(object); }
+ // configuration helpers
+ template<class Object> devcb_base &set_lic_cb(Object &&cb) { return m_lic_func.set_callback(std::forward<Object>(cb)); }
};
// ======================> m6809_device (LEGACY)
diff --git a/src/devices/cpu/mb86233/mb86233.h b/src/devices/cpu/mb86233/mb86233.h
index 49ba58d7ea8..70e3a66dfd5 100644
--- a/src/devices/cpu/mb86233/mb86233.h
+++ b/src/devices/cpu/mb86233/mb86233.h
@@ -7,13 +7,13 @@
#define MCFG_MB86233_FIFO_READ_CB(_devcb) \
- devcb = &mb86233_cpu_device::set_fifo_read_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb86233_cpu_device &>(*device).set_fifo_read_cb(DEVCB_##_devcb);
#define MCFG_MB86233_FIFO_READ_OK_CB(_devcb) \
- devcb = &mb86233_cpu_device::set_fifo_read_ok_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb86233_cpu_device &>(*device).set_fifo_read_ok_cb(DEVCB_##_devcb);
#define MCFG_MB86233_FIFO_WRITE_CB(_devcb) \
- devcb = &mb86233_cpu_device::set_fifo_write_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb86233_cpu_device &>(*device).set_fifo_write_cb(DEVCB_##_devcb);
#define MCFG_MB86233_TABLE_REGION(_region) \
- mb86233_cpu_device::set_tablergn(*device, _region);
+ downcast<mb86233_cpu_device &>(*device).set_tablergn(_region);
class mb86233_cpu_device : public cpu_device
@@ -22,11 +22,11 @@ public:
// construction/destruction
mb86233_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_fifo_read_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_read_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_fifo_read_ok_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_read_ok_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_fifo_write_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_write_cb.set_callback(std::forward<Object>(cb)); }
- static void set_tablergn(device_t &device, const char *tablergn) { downcast<mb86233_cpu_device &>(device).m_tablergn = tablergn; }
+ // configuration helpers
+ template <class Object> devcb_base &set_fifo_read_cb(Object &&cb) { return m_fifo_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_fifo_read_ok_cb(Object &&cb) { return m_fifo_read_ok_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_fifo_write_cb(Object &&cb) { return m_fifo_write_cb.set_callback(std::forward<Object>(cb)); }
+ void set_tablergn(const char *tablergn) { m_tablergn = tablergn; }
protected:
// register enumeration
diff --git a/src/devices/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h
index e9e7c5567eb..b5dd5fe79fc 100644
--- a/src/devices/cpu/mb88xx/mb88xx.h
+++ b/src/devices/cpu/mb88xx/mb88xx.h
@@ -54,51 +54,51 @@
// K (K3-K0): input-only port
#define MCFG_MB88XX_READ_K_CB(_devcb) \
- devcb = &mb88_cpu_device::set_read_k_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_read_k_callback(DEVCB_##_devcb);
// O (O7-O4 = OH, O3-O0 = OL): output through PLA
#define MCFG_MB88XX_WRITE_O_CB(_devcb) \
- devcb = &mb88_cpu_device::set_write_o_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_write_o_callback(DEVCB_##_devcb);
// P (P3-P0): output-only port
#define MCFG_MB88XX_WRITE_P_CB(_devcb) \
- devcb = &mb88_cpu_device::set_write_p_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_write_p_callback(DEVCB_##_devcb);
// R0 (R3-R0): input/output port
#define MCFG_MB88XX_READ_R0_CB(_devcb) \
- devcb = &mb88_cpu_device::set_read_r_callback(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(0, DEVCB_##_devcb);
#define MCFG_MB88XX_WRITE_R0_CB(_devcb) \
- devcb = &mb88_cpu_device::set_write_r_callback(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(0, DEVCB_##_devcb);
// R1 (R7-R4): input/output port
#define MCFG_MB88XX_READ_R1_CB(_devcb) \
- devcb = &mb88_cpu_device::set_read_r_callback(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(1, DEVCB_##_devcb);
#define MCFG_MB88XX_WRITE_R1_CB(_devcb) \
- devcb = &mb88_cpu_device::set_write_r_callback(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(1, DEVCB_##_devcb);
// R2 (R11-R8): input/output port
#define MCFG_MB88XX_READ_R2_CB(_devcb) \
- devcb = &mb88_cpu_device::set_read_r_callback(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(2, DEVCB_##_devcb);
#define MCFG_MB88XX_WRITE_R2_CB(_devcb) \
- devcb = &mb88_cpu_device::set_write_r_callback(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(2, DEVCB_##_devcb);
// R3 (R15-R12): input/output port
#define MCFG_MB88XX_READ_R3_CB(_devcb) \
- devcb = &mb88_cpu_device::set_read_r_callback(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(3, DEVCB_##_devcb);
#define MCFG_MB88XX_WRITE_R3_CB(_devcb) \
- devcb = &mb88_cpu_device::set_write_r_callback(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(3, DEVCB_##_devcb);
// SI: serial input
#define MCFG_MB88XX_READ_SI_CB(_devcb) \
- devcb = &mb88_cpu_device::set_read_si_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
// SO: serial output
#define MCFG_MB88XX_WRITE_SO_CB(_devcb) \
- devcb = &mb88_cpu_device::set_write_so_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb88_cpu_device &>(*device).set_write_so_callback(DEVCB_##_devcb);
// Configure 32 byte PLA; if nullptr (default) assume direct output
#define MCFG_MB88XX_OUTPUT_PLA(_pla) \
- mb88_cpu_device::set_pla(*device, _pla);
+ downcast<mb88_cpu_device &>(*device).set_pla(_pla);
/***************************************************************************
REGISTER ENUMERATION
@@ -125,15 +125,15 @@ enum
class mb88_cpu_device : public cpu_device
{
public:
- // static configuration helpers
- template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_o_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_write_o.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_p_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_write_p.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_r_callback(device_t &device, int n, Object &&cb) { assert(n >= 0 && n < 4); return downcast<mb88_cpu_device &>(device).m_read_r[n].set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r_callback(device_t &device, int n, Object &&cb) { assert(n >= 0 && n < 4); return downcast<mb88_cpu_device &>(device).m_write_r[n].set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_si_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_read_si.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_so_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_write_so.set_callback(std::forward<Object>(cb)); }
- static void set_pla(device_t &device, uint8_t *pla) { downcast<mb88_cpu_device &>(device).m_PLA = pla; }
+ // configuration helpers
+ template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_o_callback(Object &&cb) { return m_write_o.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_p_callback(Object &&cb) { return m_write_p.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_r_callback(int n, Object &&cb) { assert(n >= 0 && n < 4); return m_read_r[n].set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r_callback(int n, Object &&cb) { assert(n >= 0 && n < 4); return m_write_r[n].set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_si_callback(Object &&cb) { return m_read_si.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_so_callback(Object &&cb) { return m_write_so.set_callback(std::forward<Object>(cb)); }
+ void set_pla(uint8_t *pla) { m_PLA = pla; }
DECLARE_WRITE_LINE_MEMBER( clock_w );
diff --git a/src/devices/cpu/mc68hc11/mc68hc11.h b/src/devices/cpu/mc68hc11/mc68hc11.h
index 35b0cb98170..e22c7f53197 100644
--- a/src/devices/cpu/mc68hc11/mc68hc11.h
+++ b/src/devices/cpu/mc68hc11/mc68hc11.h
@@ -33,9 +33,9 @@ DECLARE_DEVICE_TYPE(MC68HC11, mc68hc11_cpu_device)
#define MCFG_MC68HC11_CONFIG(_has_extended_io, _internal_ram_size, _init_value) \
- mc68hc11_cpu_device::set_has_extended_io(*device, _has_extended_io); \
- mc68hc11_cpu_device::set_internal_ram_size(*device, _internal_ram_size); \
- mc68hc11_cpu_device::set_init_value(*device, _init_value);
+ downcast<mc68hc11_cpu_device &>(*device).set_has_extended_io(_has_extended_io); \
+ downcast<mc68hc11_cpu_device &>(*device).set_internal_ram_size(_internal_ram_size); \
+ downcast<mc68hc11_cpu_device &>(*device).set_init_value(_init_value);
class mc68hc11_cpu_device : public cpu_device
@@ -45,10 +45,10 @@ public:
mc68hc11_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// I/O enable flag
- static void set_has_extended_io(device_t &device, int has_extended_io) { downcast<mc68hc11_cpu_device &>(device).m_has_extended_io = has_extended_io; }
- static void set_internal_ram_size(device_t &device, int internal_ram_size) { downcast<mc68hc11_cpu_device &>(device).m_internal_ram_size = internal_ram_size; }
+ void set_has_extended_io(int has_extended_io) { m_has_extended_io = has_extended_io; }
+ void set_internal_ram_size(int internal_ram_size) { m_internal_ram_size = internal_ram_size; }
// default value for INIT register
- static void set_init_value(device_t &device, int init_value) { downcast<mc68hc11_cpu_device &>(device).m_init_value = init_value; }
+ void set_init_value(int init_value) { m_init_value = init_value; }
protected:
// device-level overrides
diff --git a/src/devices/cpu/mcs40/mcs40.h b/src/devices/cpu/mcs40/mcs40.h
index 3a7605fc366..177425fff0f 100644
--- a/src/devices/cpu/mcs40/mcs40.h
+++ b/src/devices/cpu/mcs40/mcs40.h
@@ -48,31 +48,31 @@ enum
MCFG_DEVICE_ADDRESS_MAP(i4004_cpu_device::AS_PROGRAM_MEMORY, map)
#define MCFG_I4004_BUS_CYCLE_CB(obj) \
- i4004_cpu_device::set_bus_cycle_cb(*device, (MCS40CB_##obj));
+ downcast<i4004_cpu_device &>(*device).set_bus_cycle_cb((MCS40CB_##obj));
#define MCFG_I4004_SYNC_CB(obj) \
- devcb = &i4004_cpu_device::set_sync_cb(*device, DEVCB_##obj);
+ devcb = &downcast<i4004_cpu_device &>(*device).set_sync_cb(DEVCB_##obj);
#define MCFG_I4004_CM_ROM_CB(obj) \
- devcb = &i4004_cpu_device::set_cm_rom_cb(*device, DEVCB_##obj);
+ devcb = &downcast<i4004_cpu_device &>(*device).set_cm_rom_cb(DEVCB_##obj);
#define MCFG_I4004_CM_RAM0_CB(obj) \
- devcb = &i4004_cpu_device::set_cm_ram_cb<0>(*device, DEVCB_##obj);
+ devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<0>(DEVCB_##obj);
#define MCFG_I4004_CM_RAM1_CB(obj) \
- devcb = &i4004_cpu_device::set_cm_ram_cb<1>(*device, DEVCB_##obj);
+ devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<1>(DEVCB_##obj);
#define MCFG_I4004_CM_RAM2_CB(obj) \
- devcb = &i4004_cpu_device::set_cm_ram_cb<2>(*device, DEVCB_##obj);
+ devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<2>(DEVCB_##obj);
#define MCFG_I4004_CM_RAM3_CB(obj) \
- devcb = &i4004_cpu_device::set_cm_ram_cb<3>(*device, DEVCB_##obj);
+ devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<3>(DEVCB_##obj);
#define MCFG_I4004_4289_PM_CB(obj) \
- devcb = &i4004_cpu_device::set_4289_pm_cb(*device, DEVCB_##obj);
+ devcb = &downcast<i4004_cpu_device &>(*device).set_4289_pm_cb(DEVCB_##obj);
#define MCFG_I4004_4289_F_L_CB(obj) \
- devcb = &i4004_cpu_device::set_4289_f_l_cb(*device, DEVCB_##obj);
+ devcb = &downcast<i4004_cpu_device &>(*device).set_4289_f_l_cb(DEVCB_##obj);
#define MCFG_I4040_ROM_MAP(map) \
@@ -94,40 +94,40 @@ enum
MCFG_DEVICE_ADDRESS_MAP(i4040_cpu_device::AS_PROGRAM_MEMORY, map)
#define MCFG_I4040_BUS_CYCLE_CB(obj) \
- i4040_cpu_device::set_bus_cycle_cb(*device, (MCS40CB_##obj));
+ downcast<i4040_cpu_device &>(*device).set_bus_cycle_cb((MCS40CB_##obj));
#define MCFG_I4040_SYNC_CB(obj) \
- devcb = &i4040_cpu_device::set_sync_cb(*device, DEVCB_##obj);
+ devcb = &downcast<i4040_cpu_device &>(*device).set_sync_cb(DEVCB_##obj);
#define MCFG_I4040_CM_ROM0_CB(obj) \
- devcb = &i4040_cpu_device::set_cm_rom_cb<0>(*device, DEVCB_##obj);
+ devcb = &downcast<i4040_cpu_device &>(*device).set_cm_rom_cb<0>(DEVCB_##obj);
#define MCFG_I4040_CM_ROM1_CB(obj) \
- devcb = &i4040_cpu_device::set_cm_rom_cb<1>(*device, DEVCB_##obj);
+ devcb = &downcast<i4040_cpu_device &>(*device).set_cm_rom_cb<1>(DEVCB_##obj);
#define MCFG_I4040_CM_RAM0_CB(obj) \
- devcb = &i4040_cpu_device::set_cm_ram_cb<0>(*device, DEVCB_##obj);
+ devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<0>(DEVCB_##obj);
#define MCFG_I4040_CM_RAM1_CB(obj) \
- devcb = &i4040_cpu_device::set_cm_ram_cb<1>(*device, DEVCB_##obj);
+ devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<1>(DEVCB_##obj);
#define MCFG_I4040_CM_RAM2_CB(obj) \
- devcb = &i4040_cpu_device::set_cm_ram_cb<2>(*device, DEVCB_##obj);
+ devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<2>(DEVCB_##obj);
#define MCFG_I4040_CM_RAM3_CB(obj) \
- devcb = &i4040_cpu_device::set_cm_ram_cb<3>(*device, DEVCB_##obj);
+ devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<3>(DEVCB_##obj);
#define MCFG_I4040_CY_CB(obj) \
- devcb = &i4040_cpu_device::set_cy_cb(*device, DEVCB_##obj);
+ devcb = &downcast<i4040_cpu_device &>(*device).set_cy_cb(DEVCB_##obj);
#define MCFG_I4040_STP_ACK_CB(obj) \
- devcb = &i4040_cpu_device::set_stp_ack_cb(*device, DEVCB_##obj);
+ devcb = &downcast<i4040_cpu_device &>(*device).set_stp_ack_cb(DEVCB_##obj);
#define MCFG_I4040_4289_PM_CB(obj) \
- devcb = &i4040_cpu_device::set_4289_pm_cb(*device, DEVCB_##obj);
+ devcb = &downcast<i4040_cpu_device &>(*device).set_4289_pm_cb(DEVCB_##obj);
#define MCFG_I4040_4289_F_L_CB(obj) \
- devcb = &i4040_cpu_device::set_4289_f_l_cb(*device, DEVCB_##obj);
+ devcb = &downcast<i4040_cpu_device &>(*device).set_4289_f_l_cb(DEVCB_##obj);
@@ -152,12 +152,9 @@ public:
typedef device_delegate<void (phase step, u8 sync, u8 data)> bus_cycle_delegate;
// configuration helpers
- template <typename Obj> static void set_bus_cycle_cb(device_t &device, Obj &&cb)
- { downcast<mcs40_cpu_device_base &>(device).m_bus_cycle_cb = std::forward<Obj>(cb); }
- template <typename Obj> static devcb_base &set_4289_pm_cb(device_t &device, Obj &&cb)
- { return downcast<mcs40_cpu_device_base &>(device).m_4289_pm_cb.set_callback(std::forward<Obj>(cb)); }
- template <typename Obj> static devcb_base &set_4289_f_l_cb(device_t &device, Obj &&cb)
- { return downcast<mcs40_cpu_device_base &>(device).m_4289_f_l_cb.set_callback(std::forward<Obj>(cb)); }
+ template <typename Obj> void set_bus_cycle_cb(Obj &&cb) { m_bus_cycle_cb = std::forward<Obj>(cb); }
+ template <typename Obj> devcb_base &set_4289_pm_cb(Obj &&cb) { return m_4289_pm_cb.set_callback(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_4289_f_l_cb(Obj &&cb) { return m_4289_f_l_cb.set_callback(std::forward<Obj>(cb)); }
// chip select outputs
u8 get_cm_rom() const { return m_cm_rom; }
@@ -241,16 +238,11 @@ protected:
void set_stp(int state);
// configuration helpers
- template <typename Obj> devcb_base &set_sync_cb(Obj &&cb)
- { return m_sync_cb.set_callback(std::forward<Obj>(cb)); }
- template <unsigned N, typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb)
- { return m_cm_rom_cb[N].set_callback(std::forward<Obj>(cb)); }
- template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb)
- { return m_cm_ram_cb[N].set_callback(std::forward<Obj>(cb)); }
- template <typename Obj> devcb_base &set_cy_cb(Obj &&cb)
- { return m_cy_cb.set_callback(std::forward<Obj>(cb)); }
- template <typename Obj> devcb_base &set_stp_ack_cb(Obj &&cb)
- { return m_stp_ack_cb.set_callback(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_sync_cb(Obj &&cb) { return m_sync_cb.set_callback(std::forward<Obj>(cb)); }
+ template <unsigned N, typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb) { return m_cm_rom_cb[N].set_callback(std::forward<Obj>(cb)); }
+ template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb) { return m_cm_ram_cb[N].set_callback(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_cy_cb(Obj &&cb) { return m_cy_cb.set_callback(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_stp_ack_cb(Obj &&cb) { return m_stp_ack_cb.set_callback(std::forward<Obj>(cb)); }
private:
enum
@@ -357,12 +349,9 @@ class i4004_cpu_device : public mcs40_cpu_device_base
{
public:
// configuration helpers
- template <typename Obj> static devcb_base &set_sync_cb(device_t &device, Obj &&cb)
- { return downcast<i4004_cpu_device &>(device).set_sync_cb(std::forward<Obj>(cb)); }
- template <typename Obj> static devcb_base &set_cm_rom_cb(device_t &device, Obj &&cb)
- { return downcast<i4004_cpu_device &>(device).set_cm_rom_cb<0>(std::forward<Obj>(cb)); }
- template <unsigned N, typename Obj> static devcb_base &set_cm_ram_cb(device_t &device, Obj &&cb)
- { return downcast<i4004_cpu_device &>(device).set_cm_ram_cb<N>(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_sync_cb(Obj &&cb) { return mcs40_cpu_device_base::set_sync_cb(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb) { return set_cm_rom_cb<0>(std::forward<Obj>(cb)); }
+ template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb) { return mcs40_cpu_device_base::set_cm_ram_cb<N>(std::forward<Obj>(cb)); }
i4004_cpu_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
@@ -393,16 +382,11 @@ class i4040_cpu_device : public i4004_cpu_device
{
public:
// configuration helpers
- template <typename Obj> static devcb_base &set_sync_cb(device_t &device, Obj &&cb)
- { return downcast<i4040_cpu_device &>(device).set_sync_cb(std::forward<Obj>(cb)); }
- template <unsigned N, typename Obj> static devcb_base &set_cm_rom_cb(device_t &device, Obj &&cb)
- { return downcast<i4040_cpu_device &>(device).set_cm_rom_cb<N>(std::forward<Obj>(cb)); }
- template <unsigned N, typename Obj> static devcb_base &set_cm_ram_cb(device_t &device, Obj &&cb)
- { return downcast<i4040_cpu_device &>(device).set_cm_ram_cb<N>(std::forward<Obj>(cb)); }
- template <typename Obj> static devcb_base &set_cy_cb(device_t &device, Obj &&cb)
- { return downcast<i4040_cpu_device &>(device).set_cy_cb(std::forward<Obj>(cb)); }
- template <typename Obj> static devcb_base &set_stp_ack_cb(device_t &device, Obj &&cb)
- { return downcast<i4040_cpu_device &>(device).set_stp_ack_cb(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_sync_cb(Obj &&cb) { return i4004_cpu_device::set_sync_cb(std::forward<Obj>(cb)); }
+ template <unsigned N, typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb) { return set_cm_rom_cb<N>(std::forward<Obj>(cb)); }
+ template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb) { return set_cm_ram_cb<N>(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_cy_cb(Obj &&cb) { return i4004_cpu_device::set_cy_cb(std::forward<Obj>(cb)); }
+ template <typename Obj> devcb_base &set_stp_ack_cb(Obj &&cb) { return i4004_cpu_device::set_stp_ack_cb(std::forward<Obj>(cb)); }
i4040_cpu_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h
index 464d3e010e1..58dc676219e 100644
--- a/src/devices/cpu/mcs48/mcs48.h
+++ b/src/devices/cpu/mcs48/mcs48.h
@@ -69,33 +69,33 @@ enum
#define MCFG_MCS48_PORT_P1_IN_CB(_devcb) \
- devcb = &mcs48_cpu_device::set_port_in_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<mcs48_cpu_device &>(*device).set_port_in_cb(0, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_P1_OUT_CB(_devcb) \
- devcb = &mcs48_cpu_device::set_port_out_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<mcs48_cpu_device &>(*device).set_port_out_cb(0, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_P2_IN_CB(_devcb) \
- devcb = &mcs48_cpu_device::set_port_in_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<mcs48_cpu_device &>(*device).set_port_in_cb(1, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_P2_OUT_CB(_devcb) \
- devcb = &mcs48_cpu_device::set_port_out_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<mcs48_cpu_device &>(*device).set_port_out_cb(1, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_T0_IN_CB(_devcb) \
- devcb = &mcs48_cpu_device::set_test_in_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<mcs48_cpu_device &>(*device).set_test_in_cb(0, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_T0_CLK_DEVICE(_tag) \
- mcs48_cpu_device::set_t0_clk_cb(*device, clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr));
+ downcast<mcs48_cpu_device &>(*device).set_t0_clk_cb(clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr));
#define MCFG_MCS48_PORT_T0_CLK_CUSTOM(_class, _func) \
- mcs48_cpu_device::set_t0_clk_cb(*device, clock_update_delegate(&_class::_func, #_class "::" _func, owner));
+ downcast<mcs48_cpu_device &>(*device).set_t0_clk_cb(clock_update_delegate(&_class::_func, #_class "::" _func, owner));
#define MCFG_MCS48_PORT_T1_IN_CB(_devcb) \
- devcb = &mcs48_cpu_device::set_test_in_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<mcs48_cpu_device &>(*device).set_test_in_cb(1, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_BUS_IN_CB(_devcb) \
- devcb = &mcs48_cpu_device::set_bus_in_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<mcs48_cpu_device &>(*device).set_bus_in_cb(DEVCB_##_devcb);
#define MCFG_MCS48_PORT_BUS_OUT_CB(_devcb) \
- devcb = &mcs48_cpu_device::set_bus_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<mcs48_cpu_device &>(*device).set_bus_out_cb(DEVCB_##_devcb);
// PROG line to 8243 expander
#define MCFG_MCS48_PORT_PROG_OUT_CB(_devcb) \
- devcb = &mcs48_cpu_device::set_prog_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<mcs48_cpu_device &>(*device).set_prog_out_cb(DEVCB_##_devcb);
/***************************************************************************
@@ -141,14 +141,14 @@ public:
EXPANDER_OP_AND = 3
};
- // static configuration
- template <class Object> static devcb_base &set_port_in_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_port_in_cb[n].set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port_out_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_port_out_cb[n].set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_bus_in_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_bus_in_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_bus_out_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_bus_out_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_test_in_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_test_in_cb[n].set_callback(std::forward<Object>(cb)); }
- static void set_t0_clk_cb(device_t &device, clock_update_delegate &&func) { downcast<mcs48_cpu_device &>(device).m_t0_clk_func = std::move(func); }
- template <class Object> static devcb_base &set_prog_out_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_prog_out_cb.set_callback(std::forward<Object>(cb)); }
+ // configuration
+ template <class Object> devcb_base &set_port_in_cb(int n, Object &&cb) { return m_port_in_cb[n].set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port_out_cb(int n, Object &&cb) { return m_port_out_cb[n].set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_bus_in_cb(Object &&cb) { return m_bus_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_bus_out_cb(Object &&cb) { return m_bus_out_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_test_in_cb(int n, Object &&cb) { return m_test_in_cb[n].set_callback(std::forward<Object>(cb)); }
+ template <typename Object> void set_t0_clk_cb(Object &&cb) { m_t0_clk_func = std::forward<Object>(cb); }
+ template <class Object> devcb_base &set_prog_out_cb(Object &&cb) { return m_prog_out_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(p1_r);
DECLARE_READ8_MEMBER(p2_r);
diff --git a/src/devices/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h
index e19c38f2a7b..2f4c096c04e 100644
--- a/src/devices/cpu/mcs51/mcs51.h
+++ b/src/devices/cpu/mcs51/mcs51.h
@@ -33,30 +33,30 @@
#define MCFG_MCS51_PORT_P0_IN_CB(_devcb) \
- devcb = &mcs51_cpu_device::set_port_in_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(0, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P0_OUT_CB(_devcb) \
- devcb = &mcs51_cpu_device::set_port_out_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(0, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P1_IN_CB(_devcb) \
- devcb = &mcs51_cpu_device::set_port_in_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(1, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P1_OUT_CB(_devcb) \
- devcb = &mcs51_cpu_device::set_port_out_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(1, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P2_IN_CB(_devcb) \
- devcb = &mcs51_cpu_device::set_port_in_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(2, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P2_OUT_CB(_devcb) \
- devcb = &mcs51_cpu_device::set_port_out_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(2, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P3_IN_CB(_devcb) \
- devcb = &mcs51_cpu_device::set_port_in_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(3, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P3_OUT_CB(_devcb) \
- devcb = &mcs51_cpu_device::set_port_out_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(3, DEVCB_##_devcb);
#define MCFG_MCS51_SERIAL_RX_CB(_devcb) \
- devcb = &mcs51_cpu_device::set_serial_rx_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<mcs51_cpu_device &>(*device).set_serial_rx_cb(DEVCB_##_devcb);
#define MCFG_MCS51_SERIAL_TX_CB(_devcb) \
- devcb = &mcs51_cpu_device::set_serial_tx_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<mcs51_cpu_device &>(*device).set_serial_tx_cb(DEVCB_##_devcb);
enum
@@ -84,21 +84,21 @@ enum
*/
#define MCFG_MCS51_PORT1_CONFIG(_forced_inputs) \
- mcs51_cpu_device::set_port_forced_input(*device, 1, _forced_inputs);
+ downcast<mcs51_cpu_device &>(*device).set_port_forced_input(1, _forced_inputs);
#define MCFG_MCS51_PORT2_CONFIG(_forced_inputs) \
- mcs51_cpu_device::set_port_forced_input(*device, 2, _forced_inputs);
+ downcast<mcs51_cpu_device &>(*device).set_port_forced_input(2, _forced_inputs);
#define MCFG_MCS51_PORT3_CONFIG(_forced_inputs) \
- mcs51_cpu_device::set_port_forced_input(*device, 3, _forced_inputs);
+ downcast<mcs51_cpu_device &>(*device).set_port_forced_input(3, _forced_inputs);
class mcs51_cpu_device : public cpu_device
{
public:
// configuration helpers
- template<class Object> static devcb_base &set_port_in_cb(device_t &device, int n, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_port_in_cb[n].set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_port_out_cb(device_t &device, int n, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_port_out_cb[n].set_callback(std::forward<Object>(cb)); }
- static void set_port_forced_input(device_t &device, uint8_t port, uint8_t forced_input) { downcast<mcs51_cpu_device &>(device).m_forced_inputs[port] = forced_input; }
- template<class Object> static devcb_base &set_serial_rx_cb(device_t &device, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_serial_rx_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_serial_tx_cb(device_t &device, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_serial_tx_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_port_in_cb(int n, Object &&cb) { return m_port_in_cb[n].set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_port_out_cb(int n, Object &&cb) { return m_port_out_cb[n].set_callback(std::forward<Object>(cb)); }
+ void set_port_forced_input(uint8_t port, uint8_t forced_input) { m_forced_inputs[port] = forced_input; }
+ template<class Object> devcb_base &set_serial_rx_cb(Object &&cb) { return m_serial_rx_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_serial_tx_cb(Object &&cb) { return m_serial_tx_cb.set_callback(std::forward<Object>(cb)); }
void data_7bit(address_map &map);
void data_8bit(address_map &map);
@@ -527,9 +527,9 @@ public:
// construction/destruction
ds5002fp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_mcon(device_t &device, uint8_t mcon) { downcast<ds5002fp_device &>(device).m_ds5002fp.mcon = mcon; }
- static void set_rpctl(device_t &device, uint8_t rpctl) { downcast<ds5002fp_device &>(device).m_ds5002fp.rpctl = rpctl; }
- static void set_crc(device_t &device, uint8_t crc) { downcast<ds5002fp_device &>(device).m_ds5002fp.crc = crc; }
+ void set_mcon(uint8_t mcon) { m_ds5002fp.mcon = mcon; }
+ void set_rpctl(uint8_t rpctl) { m_ds5002fp.rpctl = rpctl; }
+ void set_crc(uint8_t crc) { m_ds5002fp.crc = crc; }
// device_nvram_interface overrides
virtual void nvram_default() override;
diff --git a/src/devices/cpu/melps4/melps4.h b/src/devices/cpu/melps4/melps4.h
index c268d74e508..ae11114aecf 100644
--- a/src/devices/cpu/melps4/melps4.h
+++ b/src/devices/cpu/melps4/melps4.h
@@ -16,37 +16,37 @@
// K input or A/D input port, up to 16 pins
#define MCFG_MELPS4_READ_K_CB(_devcb) \
- devcb = &melps4_cpu_device::set_read_k_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<melps4_cpu_device &>(*device).set_read_k_callback(DEVCB_##_devcb);
// D discrete I/O port, up to 16 pins - offset 0-15 for bit, 16 for all pins clear
#define MCFG_MELPS4_READ_D_CB(_devcb) \
- devcb = &melps4_cpu_device::set_read_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<melps4_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
#define MCFG_MELPS4_WRITE_D_CB(_devcb) \
- devcb = &melps4_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<melps4_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
// 8-bit S generic I/O port
#define MCFG_MELPS4_READ_S_CB(_devcb) \
- devcb = &melps4_cpu_device::set_read_s_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<melps4_cpu_device &>(*device).set_read_s_callback(DEVCB_##_devcb);
#define MCFG_MELPS4_WRITE_S_CB(_devcb) \
- devcb = &melps4_cpu_device::set_write_s_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<melps4_cpu_device &>(*device).set_write_s_callback(DEVCB_##_devcb);
// 4-bit F generic I/O port
#define MCFG_MELPS4_READ_F_CB(_devcb) \
- devcb = &melps4_cpu_device::set_read_f_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<melps4_cpu_device &>(*device).set_read_f_callback(DEVCB_##_devcb);
#define MCFG_MELPS4_WRITE_F_CB(_devcb) \
- devcb = &melps4_cpu_device::set_write_f_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<melps4_cpu_device &>(*device).set_write_f_callback(DEVCB_##_devcb);
// 4-bit G generic output port
#define MCFG_MELPS4_WRITE_G_CB(_devcb) \
- devcb = &melps4_cpu_device::set_write_g_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<melps4_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb);
// 1-bit U generic output port
#define MCFG_MELPS4_WRITE_U_CB(_devcb) \
- devcb = &melps4_cpu_device::set_write_u_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<melps4_cpu_device &>(*device).set_write_u_callback(DEVCB_##_devcb);
// T timer I/O pin (use execute_set_input for reads)
#define MCFG_MELPS4_WRITE_T_CB(_devcb) \
- devcb = &melps4_cpu_device::set_write_t_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<melps4_cpu_device &>(*device).set_write_t_callback(DEVCB_##_devcb);
#define MELPS4_PORTD_CLR 16
@@ -100,18 +100,18 @@ enum
class melps4_cpu_device : public cpu_device
{
public:
- // static configuration helpers
- template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_s_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_s.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_f_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_f.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_s_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_s.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_g_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_g.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_u_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_u.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_t_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_t.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_s_callback(Object &&cb) { return m_read_s.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_f_callback(Object &&cb) { return m_read_f.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_s_callback(Object &&cb) { return m_write_s.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_f_callback(Object &&cb) { return m_write_f.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_g_callback(Object &&cb) { return m_write_g.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_u_callback(Object &&cb) { return m_write_u.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_t_callback(Object &&cb) { return m_write_t.set_callback(std::forward<Object>(cb)); }
protected:
// construction/destruction
diff --git a/src/devices/cpu/mips/mips3.h b/src/devices/cpu/mips/mips3.h
index dd0bac966d9..e207dd23469 100644
--- a/src/devices/cpu/mips/mips3.h
+++ b/src/devices/cpu/mips/mips3.h
@@ -238,13 +238,13 @@ struct compiler_state
#define MIPS3_MAX_TLB_ENTRIES 48
#define MCFG_MIPS3_ICACHE_SIZE(_size) \
- mips3_device::set_icache_size(*device, _size);
+ downcast<mips3_device &>(*device).set_icache_size(_size);
#define MCFG_MIPS3_DCACHE_SIZE(_size) \
- mips3_device::set_dcache_size(*device, _size);
+ downcast<mips3_device &>(*device).set_dcache_size(_size);
#define MCFG_MIPS3_SYSTEM_CLOCK(_clock) \
- mips3_device::set_system_clock(*device, _clock);
+ downcast<mips3_device &>(*device).set_system_clock(_clock);
class mips3_frontend;
@@ -277,9 +277,9 @@ public:
// construction/destruction
mips3_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, mips3_flavor flavor, endianness_t endiannes);
- static void set_icache_size(device_t &device, size_t icache_size) { downcast<mips3_device &>(device).c_icache_size = icache_size; }
- static void set_dcache_size(device_t &device, size_t dcache_size) { downcast<mips3_device &>(device).c_dcache_size = dcache_size; }
- static void set_system_clock(device_t &device, uint32_t system_clock) { downcast<mips3_device &>(device).c_system_clock = system_clock; }
+ void set_icache_size(size_t icache_size) { c_icache_size = icache_size; }
+ void set_dcache_size(size_t dcache_size) { c_dcache_size = dcache_size; }
+ void set_system_clock(uint32_t system_clock) { c_system_clock = system_clock; }
TIMER_CALLBACK_MEMBER(compare_int_callback);
diff --git a/src/devices/cpu/mips/r3000.h b/src/devices/cpu/mips/r3000.h
index a5f9998a23c..9af401484d2 100644
--- a/src/devices/cpu/mips/r3000.h
+++ b/src/devices/cpu/mips/r3000.h
@@ -19,19 +19,19 @@
***************************************************************************/
#define MCFG_R3000_ENDIANNESS(_endianness) \
- r3000_device::static_set_endianness(*device, _endianness);
+ downcast<r3000_device &>(*device).set_endianness(_endianness);
#define MCFG_R3000_BRCOND0_INPUT(_devcb) \
- devcb = &r3000_device::static_set_brcond0_input(*device, DEVCB_##_devcb);
+ devcb = &downcast<r3000_device &>(*device).set_brcond0_input(DEVCB_##_devcb);
#define MCFG_R3000_BRCOND1_INPUT(_devcb) \
- devcb = &r3000_device::static_set_brcond1_input(*device, DEVCB_##_devcb);
+ devcb = &downcast<r3000_device &>(*device).set_brcond1_input(DEVCB_##_devcb);
#define MCFG_R3000_BRCOND2_INPUT(_devcb) \
- devcb = &r3000_device::static_set_brcond2_input(*device, DEVCB_##_devcb);
+ devcb = &downcast<r3000_device &>(*device).set_brcond2_input(DEVCB_##_devcb);
#define MCFG_R3000_BRCOND3_INPUT(_devcb) \
- devcb = &r3000_device::static_set_brcond3_input(*device, DEVCB_##_devcb);
+ devcb = &downcast<r3000_device &>(*device).set_brcond3_input(DEVCB_##_devcb);
/***************************************************************************
@@ -73,30 +73,12 @@ public:
virtual ~r3000_device();
// inline configuration helpers
- static void static_set_endianness(device_t &device, endianness_t endianness)
- {
- downcast<r3000_device &>(device).m_endianness = endianness;
- }
-
- template <class Object> static devcb_base &static_set_brcond0_input(device_t &device, Object &&cb)
- {
- return downcast<r3000_device &>(device).m_in_brcond0.set_callback(std::forward<Object>(cb));
- }
-
- template <class Object> static devcb_base &static_set_brcond1_input(device_t &device, Object &&cb)
- {
- return downcast<r3000_device &>(device).m_in_brcond1.set_callback(std::forward<Object>(cb));
- }
-
- template <class Object> static devcb_base &static_set_brcond2_input(device_t &device, Object &&cb)
- {
- return downcast<r3000_device &>(device).m_in_brcond2.set_callback(std::forward<Object>(cb));
- }
+ void set_endianness(endianness_t endianness) { m_endianness = endianness; }
- template <class Object> static devcb_base &static_set_brcond3_input(device_t &device, Object &&cb)
- {
- return downcast<r3000_device &>(device).m_in_brcond3.set_callback(std::forward<Object>(cb));
- }
+ template <class Object> devcb_base &set_brcond0_input(Object &&cb) { return m_in_brcond0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_brcond1_input(Object &&cb) { return m_in_brcond1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_brcond2_input(Object &&cb) { return m_in_brcond2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_brcond3_input(Object &&cb) { return m_in_brcond3.set_callback(std::forward<Object>(cb)); }
protected:
enum chip_type
diff --git a/src/devices/cpu/mn10200/mn10200.h b/src/devices/cpu/mn10200/mn10200.h
index f3b496611bb..aadeff37281 100644
--- a/src/devices/cpu/mn10200/mn10200.h
+++ b/src/devices/cpu/mn10200/mn10200.h
@@ -15,9 +15,9 @@
// port setup
#define MCFG_MN10200_READ_PORT_CB(X, _devcb) \
- devcb = &mn10200_device::set_read_port##X##_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mn10200_device &>(*device).set_read_port##X##_callback(DEVCB_##_devcb);
#define MCFG_MN10200_WRITE_PORT_CB(X, _devcb) \
- devcb = &mn10200_device::set_write_port##X##_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mn10200_device &>(*device).set_write_port##X##_callback(DEVCB_##_devcb);
enum
{
@@ -42,18 +42,18 @@ enum
class mn10200_device : public cpu_device
{
public:
- // static configuration helpers
- template <class Object> static devcb_base &set_read_port0_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port0.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_port1_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_port2_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_port3_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_port4_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port4.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_write_port0_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port0.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_port1_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_port2_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_port3_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_port4_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port4.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_read_port0_callback(Object &&cb) { return m_read_port0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_port1_callback(Object &&cb) { return m_read_port1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_port2_callback(Object &&cb) { return m_read_port2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_port3_callback(Object &&cb) { return m_read_port3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_port4_callback(Object &&cb) { return m_read_port4.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> devcb_base &set_write_port0_callback(Object &&cb) { return m_write_port0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_port1_callback(Object &&cb) { return m_write_port1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_port2_callback(Object &&cb) { return m_write_port2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_port3_callback(Object &&cb) { return m_write_port3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_port4_callback(Object &&cb) { return m_write_port4.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(io_control_r);
DECLARE_WRITE8_MEMBER(io_control_w);
diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor.h b/src/devices/cpu/nanoprocessor/nanoprocessor.h
index 98b717e6c07..1a8c820e748 100644
--- a/src/devices/cpu/nanoprocessor/nanoprocessor.h
+++ b/src/devices/cpu/nanoprocessor/nanoprocessor.h
@@ -62,20 +62,20 @@ constexpr unsigned HP_NANO_IE_DC = 7; // DC line used as interrupt enable/ma
// DC0 is in bit 0, DC1 in bit 1 and so on.
// Keep in mind that DC7 usually masks the interrupt signal.
#define MCFG_HP_NANO_DC_CHANGED(_devcb) \
- devcb = &hp_nanoprocessor_device::set_dc_changed_func(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp_nanoprocessor_device &>(*device).set_dc_changed_func(DEVCB_##_devcb);
// Callback to read the input state of DC lines
// All lines that are not in input are to be reported at "1"
#define MCFG_HP_NANO_READ_DC_CB(_devcb) \
- devcb = &hp_nanoprocessor_device::set_read_dc_func(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp_nanoprocessor_device &>(*device).set_read_dc_func(DEVCB_##_devcb);
class hp_nanoprocessor_device : public cpu_device
{
public:
hp_nanoprocessor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_dc_changed_func(device_t &device, Object &&cb) { return downcast<hp_nanoprocessor_device &>(device).m_dc_changed_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_dc_func(device_t &device, Object &&cb) { return downcast<hp_nanoprocessor_device &>(device).m_read_dc_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dc_changed_func(Object &&cb) { return m_dc_changed_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_dc_func(Object &&cb) { return m_read_dc_func.set_callback(std::forward<Object>(cb)); }
// device_execute_interface overrides
virtual uint32_t execute_min_cycles() const override { return 2; }
diff --git a/src/devices/cpu/nec/v25.h b/src/devices/cpu/nec/v25.h
index cda729e88ef..b796bed3b67 100644
--- a/src/devices/cpu/nec/v25.h
+++ b/src/devices/cpu/nec/v25.h
@@ -23,45 +23,45 @@ enum
#define MCFG_V25_CONFIG(_table) \
- v25_common_device::set_decryption_table(*device, _table);
+ downcast<v25_common_device &>(*device).set_decryption_table(_table);
#define MCFG_V25_PORT_PT_READ_CB(_devcb) \
- devcb = &v25_common_device::set_pt_in_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<v25_common_device &>(*device).set_pt_in_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P0_READ_CB(_devcb) \
- devcb = &v25_common_device::set_p0_in_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<v25_common_device &>(*device).set_p0_in_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P1_READ_CB(_devcb) \
- devcb = &v25_common_device::set_p1_in_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<v25_common_device &>(*device).set_p1_in_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P2_READ_CB(_devcb) \
- devcb = &v25_common_device::set_p2_in_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<v25_common_device &>(*device).set_p2_in_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P0_WRITE_CB(_devcb) \
- devcb = &v25_common_device::set_p0_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<v25_common_device &>(*device).set_p0_out_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P1_WRITE_CB(_devcb) \
- devcb = &v25_common_device::set_p1_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<v25_common_device &>(*device).set_p1_out_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P2_WRITE_CB(_devcb) \
- devcb = &v25_common_device::set_p2_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<v25_common_device &>(*device).set_p2_out_cb(DEVCB_##_devcb);
class v25_common_device : public cpu_device
{
public:
- // static configuration helpers
- static void set_decryption_table(device_t &device, const uint8_t *decryption_table) { downcast<v25_common_device &>(device).m_v25v35_decryptiontable = decryption_table; }
+ // configuration helpers
+ void set_decryption_table(const uint8_t *decryption_table) { m_v25v35_decryptiontable = decryption_table; }
- template <class Object> static devcb_base & set_pt_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_pt_in.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base & set_p0_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p0_in.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base & set_p1_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p1_in.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base & set_p2_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p2_in.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pt_in_cb(Object &&cb) { return m_pt_in.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_p0_in_cb(Object &&cb) { return m_p0_in.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_p1_in_cb(Object &&cb) { return m_p1_in.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_p2_in_cb(Object &&cb) { return m_p2_in.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base & set_p0_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p0_out.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base & set_p1_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p1_out.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base & set_p2_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p2_out.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_p0_out_cb(Object &&cb) { return m_p0_out.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_p1_out_cb(Object &&cb) { return m_p1_out.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_p2_out_cb(Object &&cb) { return m_p2_out.set_callback(std::forward<Object>(cb)); }
TIMER_CALLBACK_MEMBER(v25_timer_callback);
diff --git a/src/devices/cpu/nec/v53.cpp b/src/devices/cpu/nec/v53.cpp
index 0e91bb64614..018613af230 100644
--- a/src/devices/cpu/nec/v53.cpp
+++ b/src/devices/cpu/nec/v53.cpp
@@ -228,7 +228,7 @@ void v53_base_device::device_start()
m_out_dack_2_cb.resolve_safe();
m_out_dack_3_cb.resolve_safe();
- static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(pic8259_device::inta_cb), (pic8259_device*)m_v53icu));
+ set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pic8259_device::inta_cb), (pic8259_device*)m_v53icu));
}
void v53_base_device::install_peripheral_io()
diff --git a/src/devices/cpu/nec/v53.h b/src/devices/cpu/nec/v53.h
index 1c45a3cbc89..dfecbfb5f04 100644
--- a/src/devices/cpu/nec/v53.h
+++ b/src/devices/cpu/nec/v53.h
@@ -16,94 +16,94 @@
// SCU
#define MCFG_V53_SCU_TXD_HANDLER(_devcb) \
- devcb = &v53_base_device::set_txd_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_txd_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_DTR_HANDLER(_devcb) \
- devcb = &v53_base_device::set_dtr_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_dtr_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_RTS_HANDLER(_devcb) \
- devcb = &v53_base_device::set_rts_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_rts_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_RXRDY_HANDLER(_devcb) \
- devcb = &v53_base_device::set_rxrdy_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_rxrdy_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_TXRDY_HANDLER(_devcb) \
- devcb = &v53_base_device::set_txrdy_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_txrdy_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_TXEMPTY_HANDLER(_devcb) \
- devcb = &v53_base_device::set_txempty_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_txempty_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_SYNDET_HANDLER(_devcb) \
- devcb = &v53_base_device::set_syndet_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_syndet_handler(DEVCB_##_devcb);
// TCU
#define MCFG_V53_TCU_CLK0(_clk) \
- v53_base_device::set_clk0(*device, _clk);
+ downcast<v53_base_device &>(*device).set_clk0(_clk);
#define MCFG_V53_TCU_CLK1(_clk) \
- v53_base_device::set_clk1(*device, _clk);
+ downcast<v53_base_device &>(*device).set_clk1(_clk);
#define MCFG_V53_TCU_CLK2(_clk) \
- v53_base_device::set_clk2(*device, _clk);
+ downcast<v53_base_device &>(*device).set_clk2(_clk);
#define MCFG_V53_TCU_OUT0_HANDLER(_devcb) \
- devcb = &v53_base_device::set_out0_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out0_handler(DEVCB_##_devcb);
#define MCFG_V53_TCU_OUT1_HANDLER(_devcb) \
- devcb = &v53_base_device::set_out1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out1_handler(DEVCB_##_devcb);
#define MCFG_V53_TCU_OUT2_HANDLER(_devcb) \
- devcb = &v53_base_device::set_out2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out2_handler(DEVCB_##_devcb);
// DMAU
#define MCFG_V53_DMAU_OUT_HREQ_CB(_devcb) \
- devcb = &v53_base_device::set_out_hreq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out_hreq_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_EOP_CB(_devcb) \
- devcb = &v53_base_device::set_out_eop_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out_eop_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_IN_MEMR_CB(_devcb) \
- devcb = &v53_base_device::set_in_memr_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_in_memr_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_MEMW_CB(_devcb) \
- devcb = &v53_base_device::set_out_memw_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out_memw_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_IN_IOR_0_CB(_devcb) \
- devcb = &v53_base_device::set_in_ior_0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_in_ior_0_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_IN_IOR_1_CB(_devcb) \
- devcb = &v53_base_device::set_in_ior_1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_in_ior_1_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_IN_IOR_2_CB(_devcb) \
- devcb = &v53_base_device::set_in_ior_2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_in_ior_2_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_IN_IOR_3_CB(_devcb) \
- devcb = &v53_base_device::set_in_ior_3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_in_ior_3_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_IOW_0_CB(_devcb) \
- devcb = &v53_base_device::set_out_iow_0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out_iow_0_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_IOW_1_CB(_devcb) \
- devcb = &v53_base_device::set_out_iow_1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out_iow_1_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_IOW_2_CB(_devcb) \
- devcb = &v53_base_device::set_out_iow_2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out_iow_2_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_IOW_3_CB(_devcb) \
- devcb = &v53_base_device::set_out_iow_3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out_iow_3_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_DACK_0_CB(_devcb) \
- devcb = &v53_base_device::set_out_dack_0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out_dack_0_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_DACK_1_CB(_devcb) \
- devcb = &v53_base_device::set_out_dack_1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out_dack_1_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_DACK_2_CB(_devcb) \
- devcb = &v53_base_device::set_out_dack_2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out_dack_2_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_DACK_3_CB(_devcb) \
- devcb = &v53_base_device::set_out_dack_3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<v53_base_device &>(*device).set_out_dack_3_callback(DEVCB_##_devcb);
@@ -135,13 +135,13 @@ public:
// SCU
DECLARE_READ8_MEMBER(scu_simk_r);
DECLARE_WRITE8_MEMBER(scu_simk_w);
- template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rxrdy_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_rxrdy_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_txrdy_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txrdy_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_txempty_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txempty_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_syndet_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_syndet_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dtr_handler(Object &&cb) { return m_dtr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rxrdy_handler(Object &&cb) { return m_rxrdy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txrdy_handler(Object &&cb) { return m_txrdy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txempty_handler(Object &&cb) { return m_txempty_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_syndet_handler(Object &&cb) { return m_syndet_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(scu_txd_trampoline_cb) { m_txd_handler(state); }
DECLARE_WRITE_LINE_MEMBER(scu_dtr_trampoline_cb) { m_dtr_handler(state); }
DECLARE_WRITE_LINE_MEMBER(scu_rts_trampoline_cb) { m_rts_handler(state); }
@@ -158,33 +158,33 @@ public:
DECLARE_READ8_MEMBER(tmu_tst2_r);
DECLARE_WRITE8_MEMBER(tmu_tct2_w);
DECLARE_WRITE8_MEMBER(tmu_tmd_w);
-// static void set_clk0(device_t &device, double clk0) { downcast<v53_base_device &>(device).m_clk0 = clk0; }
-// static void set_clk1(device_t &device, double clk1) { downcast<v53_base_device &>(device).m_clk1 = clk1; }
-// static void set_clk2(device_t &device, double clk2) { downcast<v53_base_device &>(device).m_clk2 = clk2; }
- template <class Object> static devcb_base &set_out0_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out0_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out1_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out1_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out2_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out2_handler.set_callback(std::forward<Object>(cb)); }
+// void set_clk0(double clk0) { m_clk0 = clk0; }
+// void set_clk1(double clk1) { m_clk1 = clk1; }
+// void set_clk2(double clk2) { m_clk2 = clk2; }
+ template <class Object> devcb_base &set_out0_handler(Object &&cb) { return m_out0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out1_handler(Object &&cb) { return m_out1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out2_handler(Object &&cb) { return m_out2_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(tcu_out0_trampoline_cb){ m_out0_handler(state); }
DECLARE_WRITE_LINE_MEMBER(tcu_out1_trampoline_cb){ m_out1_handler(state); }
DECLARE_WRITE_LINE_MEMBER(tcu_out2_trampoline_cb){ m_out2_handler(state); }
// DMAU
- template<class Object> static devcb_base &set_out_hreq_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_hreq_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_out_eop_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_eop_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_in_memr_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_memr_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_out_memw_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_memw_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_in_ior_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_0_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_in_ior_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_1_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_in_ior_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_2_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_in_ior_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_3_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_out_iow_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_0_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_out_iow_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_1_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_out_iow_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_2_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_out_iow_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_3_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_out_dack_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_0_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_out_dack_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_1_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_out_dack_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_2_cb.set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_out_dack_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_3_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_hreq_callback(Object &&cb) { return m_out_hreq_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_eop_callback(Object &&cb) { return m_out_eop_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_in_memr_callback(Object &&cb) { return m_in_memr_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_memw_callback(Object &&cb) { return m_out_memw_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_in_ior_0_callback(Object &&cb) { return m_in_ior_0_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_in_ior_1_callback(Object &&cb) { return m_in_ior_1_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_in_ior_2_callback(Object &&cb) { return m_in_ior_2_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_in_ior_3_callback(Object &&cb) { return m_in_ior_3_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_iow_0_callback(Object &&cb) { return m_out_iow_0_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_iow_1_callback(Object &&cb) { return m_out_iow_1_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_iow_2_callback(Object &&cb) { return m_out_iow_2_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_iow_3_callback(Object &&cb) { return m_out_iow_3_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_dack_0_callback(Object &&cb) { return m_out_dack_0_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_dack_1_callback(Object &&cb) { return m_out_dack_1_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_dack_2_callback(Object &&cb) { return m_out_dack_2_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_dack_3_callback(Object &&cb) { return m_out_dack_3_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(dreq0_w);
DECLARE_WRITE_LINE_MEMBER(dreq1_w);
diff --git a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h
index 26bf4298ad1..0450b2ea314 100644
--- a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h
+++ b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h
@@ -6,13 +6,13 @@
#pragma once
#define MCFG_PATINHO_RC_READ_CB(_devcb) \
- devcb = &patinho_feio_cpu_device::set_rc_read_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<patinho_feio_cpu_device &>(*device).set_rc_read_callback(DEVCB_##_devcb);
#define MCFG_PATINHO_BUTTONS_READ_CB(_devcb) \
- devcb = &patinho_feio_cpu_device::set_buttons_read_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<patinho_feio_cpu_device &>(*device).set_buttons_read_callback(DEVCB_##_devcb);
#define MCFG_PATINHO_IODEV_READ_CB(devnumber, _devcb) \
- devcb = &patinho_feio_cpu_device::set_iodev_read_callback(*device, devnumber, DEVCB_##_devcb);
+ devcb = &downcast<patinho_feio_cpu_device &>(*device).set_iodev_read_callback(devnumber, DEVCB_##_devcb);
#define MCFG_PATINHO_IODEV_WRITE_CB(devnumber, _devcb) \
- devcb = &patinho_feio_cpu_device::set_iodev_write_callback(*device, devnumber, DEVCB_##_devcb);
+ devcb = &downcast<patinho_feio_cpu_device &>(*device).set_iodev_write_callback(devnumber, DEVCB_##_devcb);
/* register IDs */
enum
@@ -53,11 +53,11 @@ public:
// construction/destruction
patinho_feio_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- template <class Object> static devcb_base &set_rc_read_callback(device_t &device, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_rc_read_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_buttons_read_callback(device_t &device, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_buttons_read_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_iodev_read_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_read_cb[devnumber].set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_iodev_write_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_write_cb[devnumber].set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_iodev_status_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_status_cb[devnumber].set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rc_read_callback(Object &&cb) { return m_rc_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_buttons_read_callback(Object &&cb) { return m_buttons_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_iodev_read_callback(int devnumber, Object &&cb) { return m_iodev_read_cb[devnumber].set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_iodev_write_callback(int devnumber, Object &&cb) { return m_iodev_write_cb[devnumber].set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_iodev_status_callback(int devnumber, Object &&cb) { return m_iodev_status_cb[devnumber].set_callback(std::forward<Object>(cb)); }
void transfer_byte_from_external_device(uint8_t channel, uint8_t data);
void set_iodev_status(uint8_t channel, bool status) { m_iodev_status[channel] = status; }
diff --git a/src/devices/cpu/pdp1/pdp1.h b/src/devices/cpu/pdp1/pdp1.h
index 5a2df5fd91e..a64b23f5c69 100644
--- a/src/devices/cpu/pdp1/pdp1.h
+++ b/src/devices/cpu/pdp1/pdp1.h
@@ -83,7 +83,7 @@ public:
// construction/destruction
pdp1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_reset_param(device_t &device, const pdp1_reset_param_t *param) { downcast<pdp1_device &>(device).m_reset_param = param; }
+ void set_reset_param(const pdp1_reset_param_t *param) { m_reset_param = param; }
void pulse_start_clear();
void io_complete() { m_ios = 1; }
@@ -200,7 +200,7 @@ DECLARE_DEVICE_TYPE(PDP1, pdp1_device)
#define MCFG_PDP1_RESET_PARAM(_param) \
- pdp1_device::static_set_reset_param(*device, &(_param));
+ downcast<pdp1_device &>(*device).set_reset_param(&(_param));
#endif // MAME_CPU_PDP1_PDP1_H
diff --git a/src/devices/cpu/pdp1/tx0.h b/src/devices/cpu/pdp1/tx0.h
index e9174a46413..7c69bf40649 100644
--- a/src/devices/cpu/pdp1/tx0.h
+++ b/src/devices/cpu/pdp1/tx0.h
@@ -22,32 +22,32 @@ enum
#define MCFG_TX0_CONFIG(_cpy_devcb, _r1l_devcb, _dis_devcb, _r3l_devcb, _prt_devcb, _rsv_devcb, _p6h_devcb, _p7h_devcb, _sel_devcb, _res_devcb) \
- tx0_device::set_cpy_cb(*device, DEVCB_##_cpy_devcb); \
- tx0_device::set_r1l_cb(*device, DEVCB_##_r1l_devcb); \
- tx0_device::set_dis_cb(*device, DEVCB_##_dis_devcb); \
- tx0_device::set_r3l_cb(*device, DEVCB_##_r3l_devcb); \
- tx0_device::set_prt_cb(*device, DEVCB_##_prt_devcb); \
- tx0_device::set_rsv_cb(*device, DEVCB_##_rsv_devcb); \
- tx0_device::set_p6h_cb(*device, DEVCB_##_p6h_devcb); \
- tx0_device::set_p7h_cb(*device, DEVCB_##_p7h_devcb); \
- tx0_device::set_sel_cb(*device, DEVCB_##_sel_devcb); \
- tx0_device::set_res_cb(*device, DEVCB_##_res_devcb);
+ downcast<tx0_device &>(*device).set_cpy_cb(DEVCB_##_cpy_devcb); \
+ downcast<tx0_device &>(*device).set_r1l_cb(DEVCB_##_r1l_devcb); \
+ downcast<tx0_device &>(*device).set_dis_cb(DEVCB_##_dis_devcb); \
+ downcast<tx0_device &>(*device).set_r3l_cb(DEVCB_##_r3l_devcb); \
+ downcast<tx0_device &>(*device).set_prt_cb(DEVCB_##_prt_devcb); \
+ downcast<tx0_device &>(*device).set_rsv_cb(DEVCB_##_rsv_devcb); \
+ downcast<tx0_device &>(*device).set_p6h_cb(DEVCB_##_p6h_devcb); \
+ downcast<tx0_device &>(*device).set_p7h_cb(DEVCB_##_p7h_devcb); \
+ downcast<tx0_device &>(*device).set_sel_cb(DEVCB_##_sel_devcb); \
+ downcast<tx0_device &>(*device).set_res_cb(DEVCB_##_res_devcb);
class tx0_device : public cpu_device
{
public:
- // static configuration helpers
- template <class Object> static devcb_base &set_cpy_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_cpy_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_r1l_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_r1l_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dis_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_dis_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_r3l_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_r3l_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_prt_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_prt_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rsv_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_rsv_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_p6h_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_p6h_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_p7h_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_p7h_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sel_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_sel_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_res_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_io_reset_callback.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_cpy_cb(Object &&cb) { return m_cpy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_r1l_cb(Object &&cb) { return m_r1l_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dis_cb(Object &&cb) { return m_dis_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_r3l_cb(Object &&cb) { return m_r3l_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_prt_cb(Object &&cb) { return m_prt_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rsv_cb(Object &&cb) { return m_rsv_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_p6h_cb(Object &&cb) { return m_p6h_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_p7h_cb(Object &&cb) { return m_p7h_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sel_cb(Object &&cb) { return m_sel_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_res_cb(Object &&cb) { return m_io_reset_callback.set_callback(std::forward<Object>(cb)); }
void pulse_reset();
void io_complete();
diff --git a/src/devices/cpu/pic16c5x/pic16c5x.h b/src/devices/cpu/pic16c5x/pic16c5x.h
index 0971c5fa9a4..e442fa3a5da 100644
--- a/src/devices/cpu/pic16c5x/pic16c5x.h
+++ b/src/devices/cpu/pic16c5x/pic16c5x.h
@@ -37,31 +37,31 @@ enum
// port a, 4 or 8 bits, 2-way
#define MCFG_PIC16C5x_READ_A_CB(_devcb) \
- devcb = &pic16c5x_device::set_read_a_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pic16c5x_device &>(*device).set_read_a_callback(DEVCB_##_devcb);
#define MCFG_PIC16C5x_WRITE_A_CB(_devcb) \
- devcb = &pic16c5x_device::set_write_a_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pic16c5x_device &>(*device).set_write_a_callback(DEVCB_##_devcb);
// port b, 8 bits, 2-way
#define MCFG_PIC16C5x_READ_B_CB(_devcb) \
- devcb = &pic16c5x_device::set_read_b_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pic16c5x_device &>(*device).set_read_b_callback(DEVCB_##_devcb);
#define MCFG_PIC16C5x_WRITE_B_CB(_devcb) \
- devcb = &pic16c5x_device::set_write_b_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pic16c5x_device &>(*device).set_write_b_callback(DEVCB_##_devcb);
// port c, 8 bits, 2-way
#define MCFG_PIC16C5x_READ_C_CB(_devcb) \
- devcb = &pic16c5x_device::set_read_c_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pic16c5x_device &>(*device).set_read_c_callback(DEVCB_##_devcb);
#define MCFG_PIC16C5x_WRITE_C_CB(_devcb) \
- devcb = &pic16c5x_device::set_write_c_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pic16c5x_device &>(*device).set_write_c_callback(DEVCB_##_devcb);
// port d, 8 bits, 2-way
#define MCFG_PIC16C5x_READ_D_CB(_devcb) \
- devcb = &pic16c5x_device::set_read_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pic16c5x_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
#define MCFG_PIC16C5x_WRITE_D_CB(_devcb) \
- devcb = &pic16c5x_device::set_write_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pic16c5x_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
// CONFIG register
#define MCFG_PIC16C5x_SET_CONFIG(_data) \
- pic16c5x_device::set_config_static(*device, _data);
+ downcast<pic16c5x_device &>(*device).pic16c5x_set_config(_data);
@@ -78,16 +78,16 @@ DECLARE_DEVICE_TYPE(PIC1655, pic1655_device)
class pic16c5x_device : public cpu_device
{
public:
- // static configuration helpers
- template <class Object> static devcb_base &set_read_a_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_a.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_c_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_c.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_read_a_callback(Object &&cb) { return m_read_a.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_b_callback(Object &&cb) { return m_read_b.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_c_callback(Object &&cb) { return m_read_c.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_a_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_a.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_b_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_b.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_c_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_c.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_a_callback(Object &&cb) { return m_write_a.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_b_callback(Object &&cb) { return m_write_b.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_c_callback(Object &&cb) { return m_write_c.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); }
/****************************************************************************
* Function to configure the CONFIG register. This is actually hard-wired
@@ -96,9 +96,6 @@ public:
*/
void pic16c5x_set_config(uint16_t data);
- // or with a macro
- static void set_config_static(device_t &device, uint16_t data) { downcast<pic16c5x_device &>(device).m_temp_config = data; }
-
void pic16c5x_ram_5(address_map &map);
void pic16c5x_ram_7(address_map &map);
void pic16c5x_rom_10(address_map &map);
diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h
index 8a5673ae990..0a951bd2277 100644
--- a/src/devices/cpu/powerpc/ppc.h
+++ b/src/devices/cpu/powerpc/ppc.h
@@ -165,7 +165,7 @@ enum
***************************************************************************/
#define MCFG_PPC_BUS_FREQUENCY(_frequency) \
- ppc_device::set_bus_frequency(*device, _frequency);
+ downcast<ppc_device &>(*device).set_bus_frequency(_frequency);
class ppc_frontend;
@@ -213,8 +213,8 @@ protected:
ppc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int address_bits, int data_bits, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor, address_map_constructor internal_map);
public:
- static void set_bus_frequency(device_t &device, uint32_t bus_frequency) { downcast<ppc_device &>(device).c_bus_frequency = bus_frequency; }
- static void set_bus_frequency(device_t &device, const XTAL &xtal) { set_bus_frequency(device, xtal.value()); }
+ void set_bus_frequency(uint32_t bus_frequency) { c_bus_frequency = bus_frequency; }
+ void set_bus_frequency(const XTAL &xtal) { set_bus_frequency(xtal.value()); }
void ppc_set_dcstore_callback(write32_delegate callback);
diff --git a/src/devices/cpu/pps4/pps4.h b/src/devices/cpu/pps4/pps4.h
index fcf1d790756..de0bca60b1c 100644
--- a/src/devices/cpu/pps4/pps4.h
+++ b/src/devices/cpu/pps4/pps4.h
@@ -29,13 +29,13 @@ enum
//**************************************************************************
#define MCFG_PPS4_DISCRETE_INPUT_A_CB(_devcb) \
- devcb = &pps4_device::set_dia_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<pps4_device &>(*device).set_dia_cb(DEVCB_##_devcb);
#define MCFG_PPS4_DISCRETE_INPUT_B_CB(_devcb) \
- devcb = &pps4_device::set_dib_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<pps4_device &>(*device).set_dib_cb(DEVCB_##_devcb);
#define MCFG_PPS4_DISCRETE_OUTPUT_CB(_devcb) \
- devcb = &pps4_device::set_do_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<pps4_device &>(*device).set_do_cb(DEVCB_##_devcb);
//**************************************************************************
// DEVICE TYPE DEFINITIONS
@@ -54,10 +54,10 @@ public:
// construction/destruction
pps4_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_dia_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_dia_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dib_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_dib_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_do_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_do_cb.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_dia_cb(Object &&cb) { return m_dia_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dib_cb(Object &&cb) { return m_dib_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_do_cb(Object &&cb) { return m_do_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER(address_bus_r);
diff --git a/src/devices/cpu/psx/dma.h b/src/devices/cpu/psx/dma.h
index ba10e80903c..7be62c0eb0d 100644
--- a/src/devices/cpu/psx/dma.h
+++ b/src/devices/cpu/psx/dma.h
@@ -16,7 +16,7 @@
DECLARE_DEVICE_TYPE(PSX_DMA, psxdma_device)
#define MCFG_PSX_DMA_IRQ_HANDLER(_devcb) \
- devcb = &psxdma_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxdma_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class psxdma_device : public device_t
{
@@ -26,8 +26,8 @@ public:
psxdma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<psxdma_device &>(device).m_irq_handler.set_callback(object); }
+ //configuration helpers
+ template<class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
void install_read_handler( int n_channel, read_delegate p_fn_dma_read );
void install_write_handler( int n_channel, write_delegate p_fn_dma_write );
diff --git a/src/devices/cpu/psx/irq.h b/src/devices/cpu/psx/irq.h
index 5a4f91b6aa7..8030845ff2e 100644
--- a/src/devices/cpu/psx/irq.h
+++ b/src/devices/cpu/psx/irq.h
@@ -16,15 +16,15 @@
extern const device_type PSX_IRQ;
#define MCFG_PSX_IRQ_HANDLER(_devcb) \
- devcb = &psxirq_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxirq_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class psxirq_device : public device_t
{
public:
psxirq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<psxirq_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ32_MEMBER( read );
DECLARE_WRITE32_MEMBER( write );
diff --git a/src/devices/cpu/psx/psx.cpp b/src/devices/cpu/psx/psx.cpp
index 6f697bbc81d..52861c92dfd 100644
--- a/src/devices/cpu/psx/psx.cpp
+++ b/src/devices/cpu/psx/psx.cpp
@@ -3381,11 +3381,6 @@ void psxcpu_device::setcp3cr( int reg, uint32_t value )
{
}
-psxcpu_device *psxcpu_device::getcpu( device_t &device, const char *cputag )
-{
- return downcast<psxcpu_device *>( device.subdevice( cputag ) );
-}
-
READ32_MEMBER( psxcpu_device::gpu_r )
{
return m_gpu_read_handler( space, offset, mem_mask );
diff --git a/src/devices/cpu/psx/psx.h b/src/devices/cpu/psx/psx.h
index bdf3b0f2327..73e4380a8f7 100644
--- a/src/devices/cpu/psx/psx.h
+++ b/src/devices/cpu/psx/psx.h
@@ -121,19 +121,19 @@ enum
psxcpu_device::getcpu( *this, cputag )->subdevice<psxdma_device>("dma")->install_write_handler( channel, handler );
#define MCFG_PSX_GPU_READ_HANDLER(_devcb) \
- devcb = &psxcpu_device::set_gpu_read_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxcpu_device &>(*device).set_gpu_read_handler(DEVCB_##_devcb);
#define MCFG_PSX_GPU_WRITE_HANDLER(_devcb) \
- devcb = &psxcpu_device::set_gpu_write_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxcpu_device &>(*device).set_gpu_write_handler(DEVCB_##_devcb);
#define MCFG_PSX_SPU_READ_HANDLER(_devcb) \
- devcb = &psxcpu_device::set_spu_read_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxcpu_device &>(*device).set_spu_read_handler(DEVCB_##_devcb);
#define MCFG_PSX_SPU_WRITE_HANDLER(_devcb) \
- devcb = &psxcpu_device::set_spu_write_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxcpu_device &>(*device).set_spu_write_handler(DEVCB_##_devcb);
#define MCFG_PSX_CD_READ_HANDLER(_devcb) \
- devcb = &psxcpu_device::set_cd_read_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxcpu_device &>(*device).set_cd_read_handler(DEVCB_##_devcb);
#define MCFG_PSX_CD_WRITE_HANDLER(_devcb) \
- devcb = &psxcpu_device::set_cd_write_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxcpu_device &>(*device).set_cd_write_handler(DEVCB_##_devcb);
#define MCFG_PSX_DISABLE_ROM_BERR \
downcast<psxcpu_device *>(device)->set_disable_rom_berr(true);
@@ -146,13 +146,13 @@ enum
class psxcpu_device : public cpu_device, psxcpu_disassembler::config
{
public:
- // static configuration helpers
- template <class Object> static devcb_base &set_gpu_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_gpu_read_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_gpu_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_gpu_write_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_spu_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_spu_read_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_spu_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_spu_write_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cd_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_cd_read_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cd_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_cd_write_handler.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_gpu_read_handler(Object &&cb) { return m_gpu_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_gpu_write_handler(Object &&cb) { return m_gpu_write_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_spu_read_handler(Object &&cb) { return m_spu_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_spu_write_handler(Object &&cb) { return m_spu_write_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cd_read_handler(Object &&cb) { return m_cd_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cd_write_handler(Object &&cb) { return m_cd_write_handler.set_callback(std::forward<Object>(cb)); }
// public interfaces
DECLARE_WRITE32_MEMBER( berr_w );
@@ -187,7 +187,7 @@ public:
DECLARE_WRITE32_MEMBER( com_delay_w );
DECLARE_READ32_MEMBER( com_delay_r );
- static psxcpu_device *getcpu( device_t &device, const char *cputag );
+ static psxcpu_device *getcpu( device_t &device, const char *cputag ) { return downcast<psxcpu_device *>( device.subdevice( cputag ) ); }
void set_disable_rom_berr(bool mode);
void psxcpu_internal_map(address_map &map);
diff --git a/src/devices/cpu/psx/rcnt.h b/src/devices/cpu/psx/rcnt.h
index 48262325bfc..2047d229c3e 100644
--- a/src/devices/cpu/psx/rcnt.h
+++ b/src/devices/cpu/psx/rcnt.h
@@ -16,11 +16,11 @@
DECLARE_DEVICE_TYPE(PSX_RCNT, psxrcnt_device)
#define MCFG_PSX_RCNT_IRQ0_HANDLER(_devcb) \
- devcb = &psxrcnt_device::set_irq0_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxrcnt_device &>(*device).set_irq0_handler(DEVCB_##_devcb);
#define MCFG_PSX_RCNT_IRQ1_HANDLER(_devcb) \
- devcb = &psxrcnt_device::set_irq1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxrcnt_device &>(*device).set_irq1_handler(DEVCB_##_devcb);
#define MCFG_PSX_RCNT_IRQ2_HANDLER(_devcb) \
- devcb = &psxrcnt_device::set_irq2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxrcnt_device &>(*device).set_irq2_handler(DEVCB_##_devcb);
#define PSX_RC_STOP ( 0x01 )
#define PSX_RC_RESET ( 0x04 ) /* guess */
#define PSX_RC_COUNTTARGET ( 0x08 )
@@ -35,10 +35,10 @@ class psxrcnt_device : public device_t
public:
psxrcnt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_irq0_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq0_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq1_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq1_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq2_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq2_handler.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_irq0_handler(Object &&cb) { return m_irq0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq1_handler(Object &&cb) { return m_irq1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq2_handler(Object &&cb) { return m_irq2_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE32_MEMBER( write );
DECLARE_READ32_MEMBER( read );
diff --git a/src/devices/cpu/psx/sio.h b/src/devices/cpu/psx/sio.h
index 1205e4b278c..fe2cb6af269 100644
--- a/src/devices/cpu/psx/sio.h
+++ b/src/devices/cpu/psx/sio.h
@@ -17,19 +17,19 @@ DECLARE_DEVICE_TYPE(PSX_SIO0, psxsio0_device)
DECLARE_DEVICE_TYPE(PSX_SIO1, psxsio1_device)
#define MCFG_PSX_SIO_IRQ_HANDLER(_devcb) \
- devcb = &psxsio_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxsio_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_PSX_SIO_SCK_HANDLER(_devcb) \
- devcb = &psxsio_device::set_sck_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxsio_device &>(*device).set_sck_handler(DEVCB_##_devcb);
#define MCFG_PSX_SIO_TXD_HANDLER(_devcb) \
- devcb = &psxsio_device::set_txd_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxsio_device &>(*device).set_txd_handler(DEVCB_##_devcb);
#define MCFG_PSX_SIO_DTR_HANDLER(_devcb) \
- devcb = &psxsio_device::set_dtr_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxsio_device &>(*device).set_dtr_handler(DEVCB_##_devcb);
#define MCFG_PSX_SIO_RTS_HANDLER(_devcb) \
- devcb = &psxsio_device::set_rts_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<psxsio_device &>(*device).set_rts_handler(DEVCB_##_devcb);
#define SIO_BUF_SIZE ( 8 )
@@ -51,12 +51,12 @@ DECLARE_DEVICE_TYPE(PSX_SIO1, psxsio1_device)
class psxsio_device : public device_t
{
public:
- // static configuration helpers
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sck_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_sck_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sck_handler(Object &&cb) { return m_sck_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dtr_handler(Object &&cb) { return m_dtr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE32_MEMBER( write );
DECLARE_READ32_MEMBER( read );
diff --git a/src/devices/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h
index 5f7b9ccb001..cc407513cec 100644
--- a/src/devices/cpu/rsp/rsp.h
+++ b/src/devices/cpu/rsp/rsp.h
@@ -84,19 +84,19 @@ enum
#define RSPDRC_STRICT_VERIFY 0x0001 /* verify all instructions */
#define MCFG_RSP_DP_REG_R_CB(_devcb) \
- devcb = &rsp_device::static_set_dp_reg_r_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<rsp_device &>(*device).set_dp_reg_r_callback(DEVCB_##_devcb);
#define MCFG_RSP_DP_REG_W_CB(_devcb) \
- devcb = &rsp_device::static_set_dp_reg_w_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<rsp_device &>(*device).set_dp_reg_w_callback(DEVCB_##_devcb);
#define MCFG_RSP_SP_REG_R_CB(_devcb) \
- devcb = &rsp_device::static_set_sp_reg_r_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<rsp_device &>(*device).set_sp_reg_r_callback(DEVCB_##_devcb);
#define MCFG_RSP_SP_REG_W_CB(_devcb) \
- devcb = &rsp_device::static_set_sp_reg_w_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<rsp_device &>(*device).set_sp_reg_w_callback(DEVCB_##_devcb);
#define MCFG_RSP_SP_SET_STATUS_CB(_devcb) \
- devcb = &rsp_device::static_set_status_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<rsp_device &>(*device).set_status_callback(DEVCB_##_devcb);
class rsp_frontend;
@@ -113,11 +113,11 @@ public:
rsp_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
void resolve_cb();
- template <class Object> static devcb_base &static_set_dp_reg_r_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_dp_reg_r_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_dp_reg_w_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_dp_reg_w_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_sp_reg_r_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_reg_r_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_sp_reg_w_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_reg_w_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &static_set_status_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_set_status_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dp_reg_r_callback(Object &&cb) { return m_dp_reg_r_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dp_reg_w_callback(Object &&cb) { return m_dp_reg_w_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sp_reg_r_callback(Object &&cb) { return m_sp_reg_r_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sp_reg_w_callback(Object &&cb) { return m_sp_reg_w_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_status_callback(Object &&cb) { return m_sp_set_status_func.set_callback(std::forward<Object>(cb)); }
void rspdrc_flush_drc_cache();
void rspdrc_set_options(uint32_t options);
diff --git a/src/devices/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h
index e329831690c..4d8da0cde0c 100644
--- a/src/devices/cpu/s2650/s2650.h
+++ b/src/devices/cpu/s2650/s2650.h
@@ -28,13 +28,13 @@ DECLARE_DEVICE_TYPE(S2650, s2650_device)
#define MCFG_S2650_SENSE_INPUT(_devcb) \
- devcb = &s2650_device::set_sense_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<s2650_device &>(*device).set_sense_handler(DEVCB_##_devcb);
#define MCFG_S2650_FLAG_OUTPUT(_devcb) \
- devcb = &s2650_device::set_flag_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<s2650_device &>(*device).set_flag_handler(DEVCB_##_devcb);
#define MCFG_S2650_INTACK_HANDLER(_devcb) \
- devcb = &s2650_device::set_intack_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<s2650_device &>(*device).set_intack_handler(DEVCB_##_devcb);
class s2650_device : public cpu_device, public s2650_disassembler::config
{
@@ -42,10 +42,10 @@ public:
// construction/destruction
s2650_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_sense_handler(device_t &device, Object &&cb) { return downcast<s2650_device &>(device).m_sense_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_flag_handler(device_t &device, Object &&cb) { return downcast<s2650_device &>(device).m_flag_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_intack_handler(device_t &device, Object &&cb) { return downcast<s2650_device &>(device).m_intack_handler.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_sense_handler(Object &&cb) { return m_sense_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_flag_handler(Object &&cb) { return m_flag_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_intack_handler(Object &&cb) { return m_intack_handler.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
diff --git a/src/devices/cpu/saturn/saturn.h b/src/devices/cpu/saturn/saturn.h
index bd49ad18806..a7ad69c43fc 100644
--- a/src/devices/cpu/saturn/saturn.h
+++ b/src/devices/cpu/saturn/saturn.h
@@ -63,14 +63,14 @@ enum
#define MCFG_SATURN_CONFIG(_out, _in, _reset, _config, _unconfig, _id, _crc, _rsi) \
- saturn_device::set_out_func(*device, DEVCB_##_out); \
- saturn_device::set_in_func(*device, DEVCB_##_in); \
- saturn_device::set_reset_func(*device, DEVCB_##_reset); \
- saturn_device::set_config_func(*device, DEVCB_##_config); \
- saturn_device::set_unconfig_func(*device, DEVCB_##_unconfig); \
- saturn_device::set_id_func(*device, DEVCB_##_id); \
- saturn_device::set_crc_func(*device, DEVCB_##_crc); \
- saturn_device::set_rsi_func(*device, DEVCB_##_rsi);
+ downcast<saturn_device &>(*device).set_out_func(DEVCB_##_out); \
+ downcast<saturn_device &>(*device).set_in_func(DEVCB_##_in); \
+ downcast<saturn_device &>(*device).set_reset_func(DEVCB_##_reset); \
+ downcast<saturn_device &>(*device).set_config_func(DEVCB_##_config); \
+ downcast<saturn_device &>(*device).set_unconfig_func(DEVCB_##_unconfig); \
+ downcast<saturn_device &>(*device).set_id_func(DEVCB_##_id); \
+ downcast<saturn_device &>(*device).set_crc_func(DEVCB_##_crc); \
+ downcast<saturn_device &>(*device).set_rsi_func(DEVCB_##_rsi);
class saturn_device : public cpu_device, public saturn_disassembler::config
@@ -79,15 +79,15 @@ public:
// construction/destruction
saturn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_out_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_out_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_in_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_reset_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_reset_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_config_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_config_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_unconfig_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_unconfig_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_id_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_id_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_crc_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_crc_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rsi_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_rsi_func.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_out_func(Object &&cb) { return m_out_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_func(Object &&cb) { return m_in_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_reset_func(Object &&cb) { return m_reset_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_config_func(Object &&cb) { return m_config_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_unconfig_func(Object &&cb) { return m_unconfig_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_id_func(Object &&cb) { return m_id_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_crc_func(Object &&cb) { return m_crc_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rsi_func(Object &&cb) { return m_rsi_func.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
diff --git a/src/devices/cpu/sc61860/sc61860.h b/src/devices/cpu/sc61860/sc61860.h
index 3b9e6745e4d..80f1733c666 100644
--- a/src/devices/cpu/sc61860/sc61860.h
+++ b/src/devices/cpu/sc61860/sc61860.h
@@ -45,28 +45,28 @@ enum
#define MCFG_SC61860_READ_RESET_HANDLER(_devcb) \
- devcb = &sc61860_device::set_reset_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<sc61860_device &>(*device).set_reset_cb(DEVCB_##_devcb);
#define MCFG_SC61860_READ_BRK_HANDLER(_devcb) \
- devcb = &sc61860_device::set_brk_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<sc61860_device &>(*device).set_brk_cb(DEVCB_##_devcb);
#define MCFG_SC61860_READ_X_HANDLER(_devcb) \
- devcb = &sc61860_device::set_x_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<sc61860_device &>(*device).set_x_cb(DEVCB_##_devcb);
#define MCFG_SC61860_READ_A_HANDLER(_devcb) \
- devcb = &sc61860_device::set_ina_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<sc61860_device &>(*device).set_ina_cb(DEVCB_##_devcb);
#define MCFG_SC61860_WRITE_A_HANDLER(_devcb) \
- devcb = &sc61860_device::set_outa_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<sc61860_device &>(*device).set_outa_cb(DEVCB_##_devcb);
#define MCFG_SC61860_READ_B_HANDLER(_devcb) \
- devcb = &sc61860_device::set_inb_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<sc61860_device &>(*device).set_inb_cb(DEVCB_##_devcb);
#define MCFG_SC61860_WRITE_B_HANDLER(_devcb) \
- devcb = &sc61860_device::set_outb_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<sc61860_device &>(*device).set_outb_cb(DEVCB_##_devcb);
#define MCFG_SC61860_WRITE_C_HANDLER(_devcb) \
- devcb = &sc61860_device::set_outc_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<sc61860_device &>(*device).set_outc_cb(DEVCB_##_devcb);
class sc61860_device : public cpu_device
{
@@ -74,15 +74,15 @@ public:
// construction/destruction
sc61860_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_reset_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_reset.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_brk_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_brk.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_x_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_x.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ina_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_ina.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_outa_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outa.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_inb_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_inb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_outb_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_outc_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outc.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_reset_cb(Object &&cb) { return m_reset.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_brk_cb(Object &&cb) { return m_brk.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_x_cb(Object &&cb) { return m_x.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ina_cb(Object &&cb) { return m_ina.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_outa_cb(Object &&cb) { return m_outa.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_inb_cb(Object &&cb) { return m_inb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_outb_cb(Object &&cb) { return m_outb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_outc_cb(Object &&cb) { return m_outc.set_callback(std::forward<Object>(cb)); }
/* this is though for power on/off of the sharps */
uint8_t *internal_ram();
diff --git a/src/devices/cpu/scmp/scmp.h b/src/devices/cpu/scmp/scmp.h
index 1ca7c699af5..c77068d40b8 100644
--- a/src/devices/cpu/scmp/scmp.h
+++ b/src/devices/cpu/scmp/scmp.h
@@ -7,12 +7,12 @@
#define MCFG_SCMP_CONFIG(_flag_out_devcb, _sout_devcb, _sin_devcb, _sensea_devcb, _senseb_devcb, _halt_devcb) \
- scmp_device::set_flag_out_cb(*device, DEVCB_##_flag_out_devcb); \
- scmp_device::set_sout_cb(*device, DEVCB_##_sout_devcb); \
- scmp_device::set_sin_cb(*device, DEVCB_##_sin_devcb); \
- scmp_device::set_sensea_cb(*device, DEVCB_##_sensea_devcb); \
- scmp_device::set_senseb_cb(*device, DEVCB_##_senseb_devcb); \
- scmp_device::set_halt_cb(*device, DEVCB_##_halt_devcb);
+ downcast<scmp_device &>(*device).set_flag_out_cb(DEVCB_##_flag_out_devcb); \
+ downcast<scmp_device &>(*device).set_sout_cb(DEVCB_##_sout_devcb); \
+ downcast<scmp_device &>(*device).set_sin_cb(DEVCB_##_sin_devcb); \
+ downcast<scmp_device &>(*device).set_sensea_cb( DEVCB_##_sensea_devcb); \
+ downcast<scmp_device &>(*device).set_senseb_cb(DEVCB_##_senseb_devcb); \
+ downcast<scmp_device &>(*device).set_halt_cb(DEVCB_##_halt_devcb);
class scmp_device : public cpu_device
@@ -21,13 +21,13 @@ public:
// construction/destruction
scmp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_flag_out_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_flag_out_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sout_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sout_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sin_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sin_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sensea_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sensea_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_senseb_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_senseb_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_halt_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_halt_func.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_flag_out_cb(Object &&cb) { return m_flag_out_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sout_cb(Object &&cb) { return m_sout_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sin_cb(Object &&cb) { return m_sin_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sensea_cb(Object &&cb) { return m_sensea_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_senseb_cb(Object &&cb) { return m_senseb_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_halt_cb(Object &&cb) { return m_halt_func.set_callback(std::forward<Object>(cb)); }
protected:
enum
diff --git a/src/devices/cpu/scudsp/scudsp.h b/src/devices/cpu/scudsp/scudsp.h
index 52a132511ad..aab1a6f0af3 100644
--- a/src/devices/cpu/scudsp/scudsp.h
+++ b/src/devices/cpu/scudsp/scudsp.h
@@ -37,13 +37,13 @@ enum
#define MCFG_SCUDSP_OUT_IRQ_CB(_devcb) \
- devcb = &scudsp_cpu_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<scudsp_cpu_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_SCUDSP_IN_DMA_CB(_devcb) \
- devcb = &scudsp_cpu_device::set_in_dma_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<scudsp_cpu_device &>(*device).set_in_dma_callback(DEVCB_##_devcb);
#define MCFG_SCUDSP_OUT_DMA_CB(_devcb) \
- devcb = &scudsp_cpu_device::set_out_dma_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<scudsp_cpu_device &>(*device).set_out_dma_callback(DEVCB_##_devcb);
#define SCUDSP_RESET INPUT_LINE_RESET /* Non-Maskable */
@@ -54,9 +54,9 @@ public:
// construction/destruction
scudsp_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_dma_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_in_dma_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_dma_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_out_dma_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_dma_callback(Object &&cb) { return m_in_dma_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_dma_callback(Object &&cb) { return m_out_dma_cb.set_callback(std::forward<Object>(cb)); }
/* port 0 */
DECLARE_READ32_MEMBER( program_control_r );
diff --git a/src/devices/cpu/sh/sh2.h b/src/devices/cpu/sh/sh2.h
index 4e0fd37ca30..b3b767347e7 100644
--- a/src/devices/cpu/sh/sh2.h
+++ b/src/devices/cpu/sh/sh2.h
@@ -46,16 +46,16 @@
#define SH2_FTCSR_READ_CB(name) void name(uint32_t data)
#define MCFG_SH2_IS_SLAVE(_slave) \
- sh2_device::set_is_slave(*device, _slave);
+ downcast<sh2_device &>(*device).set_is_slave(_slave);
#define MCFG_SH2_DMA_KLUDGE_CB(_class, _method) \
- sh2_device::set_dma_kludge_callback(*device, sh2_device::dma_kludge_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<sh2_device &>(*device).set_dma_kludge_callback(sh2_device::dma_kludge_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_SH2_FIFO_DATA_AVAIL_CB(_class, _method) \
- sh2_device::set_dma_fifo_data_available_callback(*device, sh2_device::dma_fifo_data_available_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<sh2_device &>(*device).set_dma_fifo_data_available_callback(sh2_device::dma_fifo_data_available_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_SH2_FTCSR_READ_CB(_class, _method) \
- sh2_device::set_ftcsr_read_callback(*device, sh2_device::ftcsr_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<sh2_device &>(*device).set_ftcsr_read_callback(sh2_device::ftcsr_read_delegate(&_class::_method, #_class "::" #_method, this));
class sh2_frontend;
@@ -72,10 +72,10 @@ public:
// construction/destruction
sh2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_is_slave(device_t &device, int slave) { downcast<sh2_device &>(device).m_is_slave = slave; }
- static void set_dma_kludge_callback(device_t &device, dma_kludge_delegate callback) { downcast<sh2_device &>(device).m_dma_kludge_cb = callback; }
- static void set_dma_fifo_data_available_callback(device_t &device, dma_fifo_data_available_delegate callback) { downcast<sh2_device &>(device).m_dma_fifo_data_available_cb = callback; }
- static void set_ftcsr_read_callback(device_t &device, ftcsr_read_delegate callback) { downcast<sh2_device &>(device).m_ftcsr_read_cb = callback; }
+ void set_is_slave(int slave) { m_is_slave = slave; }
+ template <typename Object> void set_dma_kludge_callback(Object &&cb) { m_dma_kludge_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_dma_fifo_data_available_callback(Object &&cb) { m_dma_fifo_data_available_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_ftcsr_read_callback(Object &&cb) { m_ftcsr_read_cb = std::forward<Object>(cb); }
DECLARE_WRITE32_MEMBER( sh7604_w );
DECLARE_READ32_MEMBER( sh7604_r );
diff --git a/src/devices/cpu/sh/sh4.h b/src/devices/cpu/sh/sh4.h
index 9954f378954..52d7cdf4c3b 100644
--- a/src/devices/cpu/sh/sh4.h
+++ b/src/devices/cpu/sh/sh4.h
@@ -157,38 +157,38 @@ typedef void (*sh4_ftcsr_callback)(uint32_t);
#define MCFG_SH4_MD0(_md0) \
- sh34_base_device::set_md0(*device, _md0);
+ downcast<sh34_base_device &>(*device).set_md0(_md0);
#define MCFG_SH4_MD1(_md1) \
- sh34_base_device::set_md1(*device, _md1);
+ downcast<sh34_base_device &>(*device).set_md1(_md1);
#define MCFG_SH4_MD2(_md2) \
- sh34_base_device::set_md2(*device, _md2);
+ downcast<sh34_base_device &>(*device).set_md2(_md2);
#define MCFG_SH4_MD3(_md3) \
- sh34_base_device::set_md3(*device, _md3);
+ downcast<sh34_base_device &>(*device).set_md3(_md3);
#define MCFG_SH4_MD4(_md4) \
- sh34_base_device::set_md4(*device, _md4);
+ downcast<sh34_base_device &>(*device).set_md4(_md4);
#define MCFG_SH4_MD5(_md5) \
- sh34_base_device::set_md5(*device, _md5);
+ downcast<sh34_base_device &>(*device).set_md5(_md5);
#define MCFG_SH4_MD6(_md6) \
- sh34_base_device::set_md6(*device, _md6);
+ downcast<sh34_base_device &>(*device).set_md6(_md6);
#define MCFG_SH4_MD7(_md7) \
- sh34_base_device::set_md7(*device, _md7);
+ downcast<sh34_base_device &>(*device).set_md7(_md7);
#define MCFG_SH4_MD8(_md8) \
- sh34_base_device::set_md8(*device, _md8);
+ downcast<sh34_base_device &>(*device).set_md8(_md8);
#define MCFG_SH4_CLOCK(_clock) \
- sh34_base_device::set_sh4_clock(*device, _clock);
+ downcast<sh34_base_device &>(*device).set_sh4_clock(_clock);
#define MCFG_MMU_HACK_TYPE(_hacktype) \
- sh34_base_device::set_mmu_hacktype(*device, _hacktype);
+ downcast<sh34_base_device &>(*device).set_mmu_hacktype(_hacktype);
class sh4_frontend;
class sh4be_frontend;
@@ -197,19 +197,19 @@ class sh34_base_device : public sh_common_execution
{
public:
- static void set_md0(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md0 = md0; }
- static void set_md1(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md1 = md0; }
- static void set_md2(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md2 = md0; }
- static void set_md3(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md3 = md0; }
- static void set_md4(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md4 = md0; }
- static void set_md5(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md5 = md0; }
- static void set_md6(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md6 = md0; }
- static void set_md7(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md7 = md0; }
- static void set_md8(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md8 = md0; }
- static void set_sh4_clock(device_t &device, int clock) { downcast<sh34_base_device &>(device).c_clock = clock; }
- static void set_sh4_clock(device_t &device, const XTAL &xtal) { set_sh4_clock(device, xtal.value()); }
-
- static void set_mmu_hacktype(device_t &device, int hacktype) { downcast<sh34_base_device &>(device).m_mmuhack = hacktype; }
+ void set_md0(int md0) { c_md0 = md0; }
+ void set_md1(int md0) { c_md1 = md0; }
+ void set_md2(int md0) { c_md2 = md0; }
+ void set_md3(int md0) { c_md3 = md0; }
+ void set_md4(int md0) { c_md4 = md0; }
+ void set_md5(int md0) { c_md5 = md0; }
+ void set_md6(int md0) { c_md6 = md0; }
+ void set_md7(int md0) { c_md7 = md0; }
+ void set_md8(int md0) { c_md8 = md0; }
+ void set_sh4_clock(int clock) { c_clock = clock; }
+ void set_sh4_clock(const XTAL &xtal) { set_sh4_clock(xtal.value()); }
+
+ void set_mmu_hacktype(int hacktype) { m_mmuhack = hacktype; }
TIMER_CALLBACK_MEMBER( sh4_refresh_timer_callback );
TIMER_CALLBACK_MEMBER( sh4_rtc_timer_callback );
diff --git a/src/devices/cpu/sharc/sharc.h b/src/devices/cpu/sharc/sharc.h
index 7780f44288b..e183fb6a866 100644
--- a/src/devices/cpu/sharc/sharc.h
+++ b/src/devices/cpu/sharc/sharc.h
@@ -74,7 +74,7 @@
#define MCFG_SHARC_BOOT_MODE(boot_mode) \
- adsp21062_device::set_boot_mode(*device, adsp21062_device::boot_mode);
+ downcast<adsp21062_device &>(*device).set_boot_mode(adsp21062_device::boot_mode);
class sharc_frontend;
@@ -95,8 +95,8 @@ public:
// construction/destruction
adsp21062_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- // static configuration helpers
- static void set_boot_mode(device_t &device, const sharc_boot_mode boot_mode) { downcast<adsp21062_device &>(device).m_boot_mode = boot_mode; }
+ // configuration helpers
+ void set_boot_mode(const sharc_boot_mode boot_mode) { m_boot_mode = boot_mode; }
void set_flag_input(int flag_num, int state);
void external_iop_write(uint32_t address, uint32_t data);
diff --git a/src/devices/cpu/sm510/sm500.h b/src/devices/cpu/sm510/sm500.h
index 36e361eecdb..b0d056b47bd 100644
--- a/src/devices/cpu/sm510/sm500.h
+++ b/src/devices/cpu/sm510/sm500.h
@@ -18,7 +18,7 @@
// LCD segment outputs: H1/2 as a0, O group as a1-a4, O data as d0-d3
#define MCFG_SM500_WRITE_O_CB(_devcb) \
- devcb = &sm500_device::set_write_o_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm500_device &>(*device).set_write_o_callback(DEVCB_##_devcb);
// see sm510.h for ACL, K, R, alpha, beta
@@ -79,8 +79,8 @@ class sm500_device : public sm510_base_device
public:
sm500_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_write_o_callback(device_t &device, Object &&cb) { return downcast<sm500_device &>(device).m_write_o.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_write_o_callback(Object &&cb) { return m_write_o.set_callback(std::forward<Object>(cb)); }
protected:
sm500_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int o_pins, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
diff --git a/src/devices/cpu/sm510/sm510.h b/src/devices/cpu/sm510/sm510.h
index e4805188f75..d51aca23bcf 100644
--- a/src/devices/cpu/sm510/sm510.h
+++ b/src/devices/cpu/sm510/sm510.h
@@ -15,45 +15,45 @@
// 4-bit K input port (pull-down)
#define MCFG_SM510_READ_K_CB(_devcb) \
- devcb = &sm510_base_device::set_read_k_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm510_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb);
// when in halt state, any K input going High can wake up the CPU,
// driver is required to use set_input_line(SM510_INPUT_LINE_K, state)
#define SM510_INPUT_LINE_K 0
// 1-bit BA(aka alpha) input pin (pull-up)
#define MCFG_SM510_READ_BA_CB(_devcb) \
- devcb = &sm510_base_device::set_read_ba_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm510_base_device &>(*device).set_read_ba_callback(DEVCB_##_devcb);
// 1-bit B(beta) input pin (pull-up)
#define MCFG_SM510_READ_B_CB(_devcb) \
- devcb = &sm510_base_device::set_read_b_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm510_base_device &>(*device).set_read_b_callback(DEVCB_##_devcb);
// 8-bit S strobe output port
#define MCFG_SM510_WRITE_S_CB(_devcb) \
- devcb = &sm510_base_device::set_write_s_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm510_base_device &>(*device).set_write_s_callback(DEVCB_##_devcb);
// 1/2/4-bit R (buzzer/melody) output port
#define MCFG_SM510_WRITE_R_CB(_devcb) \
- devcb = &sm510_base_device::set_write_r_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm510_base_device &>(*device).set_write_r_callback(DEVCB_##_devcb);
// For SM510, SM500, SM5A, R port output is selected with a mask option,
// either from the divider or direct contol. Documented options are:
// SM510/SM5A: control, 2(4096Hz meant for alarm sound)
// SM500: 14, 11, 3 (divider f1, f4, f12)
#define MCFG_SM510_R_MASK_OPTION(_bit) \
- sm510_base_device::set_r_mask_option(*device, _bit);
+ downcast<sm510_base_device &>(*device).set_r_mask_option(_bit);
#define SM510_R_CONTROL_OUTPUT -1
// LCD segment outputs: H1-4 as offset(low), a/b/c 1-16 as data d0-d15
#define MCFG_SM510_WRITE_SEGA_CB(_devcb) \
- devcb = &sm510_base_device::set_write_sega_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm510_base_device &>(*device).set_write_sega_callback(DEVCB_##_devcb);
#define MCFG_SM510_WRITE_SEGB_CB(_devcb) \
- devcb = &sm510_base_device::set_write_segb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm510_base_device &>(*device).set_write_segb_callback(DEVCB_##_devcb);
#define MCFG_SM510_WRITE_SEGC_CB(_devcb) \
- devcb = &sm510_base_device::set_write_segc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm510_base_device &>(*device).set_write_segc_callback(DEVCB_##_devcb);
// LCD bs output: same as above, but only up to 2 bits used
#define MCFG_SM510_WRITE_SEGBS_CB(_devcb) \
- devcb = &sm510_base_device::set_write_segbs_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm510_base_device &>(*device).set_write_segbs_callback(DEVCB_##_devcb);
// LCD output lazy combination
#define MCFG_SM510_WRITE_SEGS_CB(_devcb) \
@@ -125,18 +125,18 @@ public:
, m_write_r(*this)
{ }
- // static configuration helpers
- template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_ba_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_ba.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_s_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_s.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_r.set_callback(std::forward<Object>(cb)); }
- static void set_r_mask_option(device_t &device, int bit) { downcast<sm510_base_device &>(device).m_r_mask_option = bit; }
-
- template <class Object> static devcb_base &set_write_sega_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_sega.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_segb_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_segc_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segc.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_segbs_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segbs.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_ba_callback(Object &&cb) { return m_read_ba.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_b_callback(Object &&cb) { return m_read_b.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_s_callback(Object &&cb) { return m_write_s.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r_callback(Object &&cb) { return m_write_r.set_callback(std::forward<Object>(cb)); }
+ void set_r_mask_option(int bit) { m_r_mask_option = bit; }
+
+ template <class Object> devcb_base &set_write_sega_callback(Object &&cb) { return m_write_sega.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_segb_callback(Object &&cb) { return m_write_segb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_segc_callback(Object &&cb) { return m_write_segc.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_segbs_callback(Object &&cb) { return m_write_segbs.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
diff --git a/src/devices/cpu/sm8500/sm8500.h b/src/devices/cpu/sm8500/sm8500.h
index ac9aea3fe82..34e3242f957 100644
--- a/src/devices/cpu/sm8500/sm8500.h
+++ b/src/devices/cpu/sm8500/sm8500.h
@@ -6,10 +6,10 @@
#pragma once
#define MCFG_SM8500_DMA_CB(_devcb) \
- devcb = &sm8500_cpu_device::set_dma_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm8500_cpu_device &>(*device).set_dma_cb(DEVCB_##_devcb);
#define MCFG_SM8500_TIMER_CB(_devcb) \
- devcb = &sm8500_cpu_device::set_timer_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<sm8500_cpu_device &>(*device).set_timer_cb(DEVCB_##_devcb);
enum
{
@@ -28,9 +28,9 @@ public:
// construction/destruction
sm8500_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_dma_cb(device_t &device, Object &&cb) { return downcast<sm8500_cpu_device &>(device).m_dma_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_timer_cb(device_t &device, Object &&cb) { return downcast<sm8500_cpu_device &>(device).m_timer_func.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_dma_cb(Object &&cb) { return m_dma_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_timer_cb(Object &&cb) { return m_timer_func.set_callback(std::forward<Object>(cb)); }
/* interrupts */
static constexpr int ILL_INT = 0;
diff --git a/src/devices/cpu/sparc/sparc.h b/src/devices/cpu/sparc/sparc.h
index 8d91183ee1a..2991886adfa 100644
--- a/src/devices/cpu/sparc/sparc.h
+++ b/src/devices/cpu/sparc/sparc.h
@@ -20,7 +20,7 @@
// TODO: when there are more SPARC CPUs, move setter to a base class
#define MCFG_SPARC_ADD_ASI_DESC(desc) \
- mb86901_device::add_asi_desc(*device, [](sparc_disassembler *dasm) { dasm->add_asi_desc(desc); });
+ downcast<mb86901_device &>(*device).add_asi_desc([](sparc_disassembler *dasm) { dasm->add_asi_desc(desc); });
class mb86901_device : public cpu_device, protected sparc_disassembler::config
{
@@ -51,7 +51,7 @@ public:
uint8_t get_asi() { return m_asi; }
uint32_t pc() { return m_pc; }
- static void add_asi_desc(device_t &device, std::function<void (sparc_disassembler *)> f) { downcast<mb86901_device &>(device).m_asi_desc_adder = f; }
+ void add_asi_desc(std::function<void (sparc_disassembler *)> f) { m_asi_desc_adder = f; }
#if LOG_FCODES
void enable_log_fcodes(bool enable) { m_log_fcodes = enable; }
diff --git a/src/devices/cpu/superfx/superfx.h b/src/devices/cpu/superfx/superfx.h
index 0bd060bb5fa..28c474d4d92 100644
--- a/src/devices/cpu/superfx/superfx.h
+++ b/src/devices/cpu/superfx/superfx.h
@@ -90,7 +90,7 @@ enum
#define MCFG_SUPERFX_OUT_IRQ(_devcb) \
- devcb = &superfx_device::set_out_irq_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<superfx_device &>(*device).set_out_irq_func(DEVCB_##_devcb);
class superfx_device : public cpu_device, public superfx_disassembler::config
@@ -99,8 +99,8 @@ public:
// construction/destruction
superfx_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_out_irq_func(device_t &device, Object &&cb) { return downcast<superfx_device &>(device).m_out_irq_func.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_out_irq_func(Object &&cb) { return m_out_irq_func.set_callback(std::forward<Object>(cb)); }
uint8_t mmio_read(uint32_t addr);
void mmio_write(uint32_t addr, uint8_t data);
diff --git a/src/devices/cpu/t11/t11.h b/src/devices/cpu/t11/t11.h
index 27f1177b03f..2ca0dd0e425 100644
--- a/src/devices/cpu/t11/t11.h
+++ b/src/devices/cpu/t11/t11.h
@@ -29,10 +29,10 @@ enum
#define MCFG_T11_INITIAL_MODE(_mode) \
- t11_device::set_initial_mode(*device, _mode);
+ downcast<t11_device &>(*device).set_initial_mode(_mode);
#define MCFG_T11_RESET(_devcb) \
- devcb = &t11_device::set_out_reset_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<t11_device &>(*device).set_out_reset_func(DEVCB_##_devcb);
class t11_device : public cpu_device
{
@@ -40,9 +40,9 @@ public:
// construction/destruction
t11_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- // static configuration helpers
- static void set_initial_mode(device_t &device, const uint16_t mode) { downcast<t11_device &>(device).c_initial_mode = mode; }
- template <class Object> static devcb_base &set_out_reset_func(device_t &device, Object &&cb) { return downcast<t11_device &>(device).m_out_reset_func.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ void set_initial_mode(const uint16_t mode) { c_initial_mode = mode; }
+ template <class Object> devcb_base &set_out_reset_func(Object &&cb) { return m_out_reset_func.set_callback(std::forward<Object>(cb)); }
protected:
t11_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
diff --git a/src/devices/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h
index abd4c081c40..bd3aa4ab249 100644
--- a/src/devices/cpu/tlcs90/tlcs90.h
+++ b/src/devices/cpu/tlcs90/tlcs90.h
@@ -8,59 +8,59 @@
// I/O callbacks
#define MCFG_TLCS90_PORT_P0_READ_CB(_devcb) \
- devcb = &tlcs90_device::set_port_read_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P1_READ_CB(_devcb) \
- devcb = &tlcs90_device::set_port_read_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(1, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P2_READ_CB(_devcb) \
- devcb = &tlcs90_device::set_port_read_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P3_READ_CB(_devcb) \
- devcb = &tlcs90_device::set_port_read_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P4_READ_CB(_devcb) \
- devcb = &tlcs90_device::set_port_read_cb(*device, 4, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P5_READ_CB(_devcb) \
- devcb = &tlcs90_device::set_port_read_cb(*device, 5, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(5, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P6_READ_CB(_devcb) \
- devcb = &tlcs90_device::set_port_read_cb(*device, 6, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(6, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P7_READ_CB(_devcb) \
- devcb = &tlcs90_device::set_port_read_cb(*device, 7, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(7, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P8_READ_CB(_devcb) \
- devcb = &tlcs90_device::set_port_read_cb(*device, 8, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(8, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P0_WRITE_CB(_devcb) \
- devcb = &tlcs90_device::set_port_write_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P1_WRITE_CB(_devcb) \
- devcb = &tlcs90_device::set_port_write_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P2_WRITE_CB(_devcb) \
- devcb = &tlcs90_device::set_port_write_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P3_WRITE_CB(_devcb) \
- devcb = &tlcs90_device::set_port_write_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P4_WRITE_CB(_devcb) \
- devcb = &tlcs90_device::set_port_write_cb(*device, 4, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P5_WRITE_CB(_devcb) \
- devcb = &tlcs90_device::set_port_write_cb(*device, 5, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(5, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P6_WRITE_CB(_devcb) \
- devcb = &tlcs90_device::set_port_write_cb(*device, 6, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(6, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P7_WRITE_CB(_devcb) \
- devcb = &tlcs90_device::set_port_write_cb(*device, 7, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(7, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P8_WRITE_CB(_devcb) \
- devcb = &tlcs90_device::set_port_write_cb(*device, 8, DEVCB_##_devcb);
+ devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(8, DEVCB_##_devcb);
enum tlcs90_e_irq { INTSWI = 0, INTNMI, INTWD, INT0, INTT0, INTT1, INTT2, INTT3, INTT4, INT1, INTT5, INT2, INTRX, INTTX, INTMAX };
@@ -88,16 +88,16 @@ protected:
public:
- // static configuration
- template<class Object> static devcb_base &set_port_read_cb(device_t &device, int port, Object &&object)
+ // configuration
+ template<class Object> devcb_base &set_port_read_cb(int port, Object &&object)
{
assert(port >= 0 && port < MAX_PORTS);
- return downcast<tlcs90_device &>(device).m_port_read_cb[port].set_callback(std::forward<Object>(object));
+ return m_port_read_cb[port].set_callback(std::forward<Object>(object));
}
- template<class Object> static devcb_base &set_port_write_cb(device_t &device, int port, Object &&object)
+ template<class Object> devcb_base &set_port_write_cb(int port, Object &&object)
{
assert(port >= 0 && port < MAX_PORTS);
- return downcast<tlcs90_device &>(device).m_port_write_cb[port].set_callback(std::forward<Object>(object));
+ return m_port_write_cb[port].set_callback(std::forward<Object>(object));
}
protected:
diff --git a/src/devices/cpu/tlcs900/900tbl.hxx b/src/devices/cpu/tlcs900/900tbl.hxx
index dc331c1d85c..80f46c0d1c1 100644
--- a/src/devices/cpu/tlcs900/900tbl.hxx
+++ b/src/devices/cpu/tlcs900/900tbl.hxx
@@ -9,28 +9,28 @@ TLCS-900/H instruction set
enum e_operand
{
- _A=1, /* current register set register A */
- _C8, /* current register set byte */
- _C16, /* current register set word */
- _C32, /* current register set long word */
- _MC16, /* current register set mul/div register word */
- _CC, /* condition */
- _CR8,
- _CR16,
- _CR32,
- _D8, /* byte displacement */
- _D16, /* word displacement */
- _F, /* F register */
- _I3, /* immediate 3 bit (part of last byte) */
- _I8, /* immediate byte */
- _I16, /* immediate word */
- _I24, /* immediate 3 byte address */
- _I32, /* immediate long word */
- _M, /* memory location (defined by extension) */
- _M8, /* (8) */
- _M16, /* (i16) */
- _R, /* register (defined by extension) */
- _SR /* status register */
+ p_A=1, /* current register set register A */
+ p_C8, /* current register set byte */
+ p_C16, /* current register set word */
+ p_C32, /* current register set long word */
+ p_MC16, /* current register set mul/div register word */
+ p_CC, /* condition */
+ p_CR8,
+ p_CR16,
+ p_CR32,
+ p_D8, /* byte displacement */
+ p_D16, /* word displacement */
+ p_F, /* F register */
+ p_I3, /* immediate 3 bit (part of last byte) */
+ p_I8, /* immediate byte */
+ p_I16, /* immediate word */
+ p_I24, /* immediate 3 byte address */
+ p_I32, /* immediate long word */
+ p_M, /* memory location (defined by extension) */
+ p_M8, /* (8) */
+ p_M16, /* (i16) */
+ p_R, /* register (defined by extension) */
+ p_SR /* status register */
};
@@ -1231,295 +1231,295 @@ uint32_t tlcs900h_device::divs16( int32_t a, int16_t b )
}
-void tlcs900h_device::_ADCBMI()
+void tlcs900h_device::op_ADCBMI()
{
WRMEM( m_ea1.d, adc8( RDMEM( m_ea1.d ), m_imm2.b.l ) );
}
-void tlcs900h_device::_ADCBMR()
+void tlcs900h_device::op_ADCBMR()
{
WRMEM( m_ea1.d, adc8( RDMEM( m_ea1.d ), *m_p2_reg8 ) );
}
-void tlcs900h_device::_ADCBRI()
+void tlcs900h_device::op_ADCBRI()
{
*m_p1_reg8 = adc8( *m_p1_reg8, m_imm2.b.l );
}
-void tlcs900h_device::_ADCBRM()
+void tlcs900h_device::op_ADCBRM()
{
*m_p1_reg8 = adc8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_ADCBRR()
+void tlcs900h_device::op_ADCBRR()
{
*m_p1_reg8 = adc8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_ADCWMI()
+void tlcs900h_device::op_ADCWMI()
{
WRMEMW( m_ea1.d, adc16( RDMEMW( m_ea1.d ), m_imm2.w.l ) );
}
-void tlcs900h_device::_ADCWMR()
+void tlcs900h_device::op_ADCWMR()
{
WRMEMW( m_ea1.d, adc16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) );
}
-void tlcs900h_device::_ADCWRI()
+void tlcs900h_device::op_ADCWRI()
{
*m_p1_reg16 = adc16( *m_p1_reg16, m_imm2.w.l );
}
-void tlcs900h_device::_ADCWRM()
+void tlcs900h_device::op_ADCWRM()
{
*m_p1_reg16 = adc16( *m_p1_reg16, RDMEMW( m_ea2.d ) );
}
-void tlcs900h_device::_ADCWRR()
+void tlcs900h_device::op_ADCWRR()
{
*m_p1_reg16 = adc16( *m_p1_reg16, *m_p2_reg16 );
}
-void tlcs900h_device::_ADCLMR()
+void tlcs900h_device::op_ADCLMR()
{
WRMEML( m_ea1.d, adc32( RDMEML( m_ea1.d ), *m_p2_reg32 ) );
}
-void tlcs900h_device::_ADCLRI()
+void tlcs900h_device::op_ADCLRI()
{
*m_p1_reg32 = adc32( *m_p1_reg32, m_imm2.d );
}
-void tlcs900h_device::_ADCLRM()
+void tlcs900h_device::op_ADCLRM()
{
*m_p1_reg32 = adc32( *m_p1_reg32, RDMEML( m_ea2.d ) );
}
-void tlcs900h_device::_ADCLRR()
+void tlcs900h_device::op_ADCLRR()
{
*m_p1_reg32 = adc32( *m_p1_reg32, *m_p2_reg32 );
}
-void tlcs900h_device::_ADDBMI()
+void tlcs900h_device::op_ADDBMI()
{
WRMEM( m_ea1.d, add8( RDMEM( m_ea1.d ), m_imm2.b.l ) );
}
-void tlcs900h_device::_ADDBMR()
+void tlcs900h_device::op_ADDBMR()
{
WRMEM( m_ea1.d, add8( RDMEM( m_ea1.d ), *m_p2_reg8 ) );
}
-void tlcs900h_device::_ADDBRI()
+void tlcs900h_device::op_ADDBRI()
{
*m_p1_reg8 = add8( *m_p1_reg8, m_imm2.b.l );
}
-void tlcs900h_device::_ADDBRM()
+void tlcs900h_device::op_ADDBRM()
{
*m_p1_reg8 = add8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_ADDBRR()
+void tlcs900h_device::op_ADDBRR()
{
*m_p1_reg8 = add8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_ADDWMI()
+void tlcs900h_device::op_ADDWMI()
{
WRMEMW( m_ea1.d, add16( RDMEMW( m_ea1.d ), m_imm2.w.l ) );
}
-void tlcs900h_device::_ADDWMR()
+void tlcs900h_device::op_ADDWMR()
{
WRMEMW( m_ea1.d, add16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) );
}
-void tlcs900h_device::_ADDWRI()
+void tlcs900h_device::op_ADDWRI()
{
*m_p1_reg16 = add16( *m_p1_reg16, m_imm2.w.l );
}
-void tlcs900h_device::_ADDWRM()
+void tlcs900h_device::op_ADDWRM()
{
*m_p1_reg16 = add16( *m_p1_reg16, RDMEMW( m_ea2.d ) );
}
-void tlcs900h_device::_ADDWRR()
+void tlcs900h_device::op_ADDWRR()
{
*m_p1_reg16 = add16( *m_p1_reg16, *m_p2_reg16 );
}
-void tlcs900h_device::_ADDLMR()
+void tlcs900h_device::op_ADDLMR()
{
WRMEML( m_ea1.d, add32( RDMEML( m_ea1.d ), *m_p2_reg32 ) );
}
-void tlcs900h_device::_ADDLRI()
+void tlcs900h_device::op_ADDLRI()
{
*m_p1_reg32 = add32( *m_p1_reg32, m_imm2.d );
}
-void tlcs900h_device::_ADDLRM()
+void tlcs900h_device::op_ADDLRM()
{
*m_p1_reg32 = add32( *m_p1_reg32, RDMEML( m_ea2.d ) );
}
-void tlcs900h_device::_ADDLRR()
+void tlcs900h_device::op_ADDLRR()
{
*m_p1_reg32 = add32( *m_p1_reg32, *m_p2_reg32 );
}
-void tlcs900h_device::_ANDBMI()
+void tlcs900h_device::op_ANDBMI()
{
WRMEM( m_ea1.d, and8( RDMEM( m_ea1.d ), m_imm2.b.l ) );
}
-void tlcs900h_device::_ANDBMR()
+void tlcs900h_device::op_ANDBMR()
{
WRMEM( m_ea1.d, and8( RDMEM( m_ea1.d ), *m_p2_reg8 ) );
}
-void tlcs900h_device::_ANDBRI()
+void tlcs900h_device::op_ANDBRI()
{
*m_p1_reg8 = and8( *m_p1_reg8, m_imm2.b.l );
}
-void tlcs900h_device::_ANDBRM()
+void tlcs900h_device::op_ANDBRM()
{
*m_p1_reg8 = and8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_ANDBRR()
+void tlcs900h_device::op_ANDBRR()
{
*m_p1_reg8 = and8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_ANDWMI()
+void tlcs900h_device::op_ANDWMI()
{
WRMEMW( m_ea1.d, and16( RDMEMW( m_ea1.d ), m_imm2.w.l ) );
}
-void tlcs900h_device::_ANDWMR()
+void tlcs900h_device::op_ANDWMR()
{
WRMEMW( m_ea1.d, and16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) );
}
-void tlcs900h_device::_ANDWRI()
+void tlcs900h_device::op_ANDWRI()
{
*m_p1_reg16 = and16( *m_p1_reg16, m_imm2.w.l );
}
-void tlcs900h_device::_ANDWRM()
+void tlcs900h_device::op_ANDWRM()
{
*m_p1_reg16 = and16( *m_p1_reg16, RDMEMW( m_ea2.d ) );
}
-void tlcs900h_device::_ANDWRR()
+void tlcs900h_device::op_ANDWRR()
{
*m_p1_reg16 = and16( *m_p1_reg16, *m_p2_reg16 );
}
-void tlcs900h_device::_ANDLMR()
+void tlcs900h_device::op_ANDLMR()
{
WRMEML( m_ea1.d, and32( RDMEML( m_ea1.d ), *m_p2_reg32 ) );
}
-void tlcs900h_device::_ANDLRI()
+void tlcs900h_device::op_ANDLRI()
{
*m_p1_reg32 = and32( *m_p1_reg32, m_imm2.d );
}
-void tlcs900h_device::_ANDLRM()
+void tlcs900h_device::op_ANDLRM()
{
*m_p1_reg32 = and32( *m_p1_reg32, RDMEML( m_ea2.d ) );
}
-void tlcs900h_device::_ANDLRR()
+void tlcs900h_device::op_ANDLRR()
{
*m_p1_reg32 = and32( *m_p1_reg32, *m_p2_reg32 );
}
-void tlcs900h_device::_ANDCFBIM()
+void tlcs900h_device::op_ANDCFBIM()
{
andcf8( m_imm1.b.l, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_ANDCFBIR()
+void tlcs900h_device::op_ANDCFBIR()
{
andcf8( m_imm1.b.l, *m_p2_reg8 );
}
-void tlcs900h_device::_ANDCFBRM()
+void tlcs900h_device::op_ANDCFBRM()
{
andcf8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_ANDCFBRR()
+void tlcs900h_device::op_ANDCFBRR()
{
andcf8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_ANDCFWIR()
+void tlcs900h_device::op_ANDCFWIR()
{
andcf16( m_imm1.b.l, *m_p2_reg16 );
}
-void tlcs900h_device::_ANDCFWRR()
+void tlcs900h_device::op_ANDCFWRR()
{
andcf16( *m_p1_reg8, *m_p2_reg16 );
}
-void tlcs900h_device::_BITBIM()
+void tlcs900h_device::op_BITBIM()
{
m_sr.b.l &= ~ ( FLAG_ZF | FLAG_NF );
if ( RDMEM( m_ea2.d ) & ( 1 << ( m_imm1.b.l & 0x07 ) ) )
@@ -1529,7 +1529,7 @@ void tlcs900h_device::_BITBIM()
}
-void tlcs900h_device::_BITBIR()
+void tlcs900h_device::op_BITBIR()
{
m_sr.b.l &= ~ ( FLAG_ZF | FLAG_NF );
if ( *m_p2_reg8 & ( 1 << ( m_imm1.b.l & 0x0f ) ) )
@@ -1539,7 +1539,7 @@ void tlcs900h_device::_BITBIR()
}
-void tlcs900h_device::_BITWIR()
+void tlcs900h_device::op_BITWIR()
{
m_sr.b.l &= ~ ( FLAG_ZF | FLAG_NF );
if ( *m_p2_reg16 & ( 1 << ( m_imm1.b.l & 0x0f ) ) )
@@ -1549,7 +1549,7 @@ void tlcs900h_device::_BITWIR()
}
-void tlcs900h_device::_BS1BRR()
+void tlcs900h_device::op_BS1BRR()
{
uint16_t r = *m_p2_reg16;
@@ -1568,7 +1568,7 @@ void tlcs900h_device::_BS1BRR()
}
-void tlcs900h_device::_BS1FRR()
+void tlcs900h_device::op_BS1FRR()
{
uint16_t r = *m_p2_reg16;
@@ -1587,7 +1587,7 @@ void tlcs900h_device::_BS1FRR()
}
-void tlcs900h_device::_CALLI()
+void tlcs900h_device::op_CALLI()
{
m_xssp.d -= 4;
WRMEML( m_xssp.d, m_pc.d );
@@ -1596,7 +1596,7 @@ void tlcs900h_device::_CALLI()
}
-void tlcs900h_device::_CALLM()
+void tlcs900h_device::op_CALLM()
{
if ( condition_true( m_op ) )
{
@@ -1609,7 +1609,7 @@ void tlcs900h_device::_CALLM()
}
-void tlcs900h_device::_CALR()
+void tlcs900h_device::op_CALR()
{
m_xssp.d -= 4;
WRMEML( m_xssp.d, m_pc.d );
@@ -1618,116 +1618,116 @@ void tlcs900h_device::_CALR()
}
-void tlcs900h_device::_CCF()
+void tlcs900h_device::op_CCF()
{
m_sr.b.l &= ~ FLAG_NF;
m_sr.b.l ^= FLAG_CF;
}
-void tlcs900h_device::_CHGBIM()
+void tlcs900h_device::op_CHGBIM()
{
WRMEM( m_ea2.d, RDMEM( m_ea2.d ) ^ ( 1 << ( m_imm1.b.l & 0x07 ) ) );
}
-void tlcs900h_device::_CHGBIR()
+void tlcs900h_device::op_CHGBIR()
{
*m_p2_reg8 ^= ( 1 << ( m_imm1.b.l & 0x07 ) );
}
-void tlcs900h_device::_CHGWIR()
+void tlcs900h_device::op_CHGWIR()
{
*m_p2_reg16 ^= ( 1 << ( m_imm1.b.l & 0x0f ) );
}
-void tlcs900h_device::_CPBMI()
+void tlcs900h_device::op_CPBMI()
{
sub8( RDMEM( m_ea1.d ), m_imm2.b.l );
}
-void tlcs900h_device::_CPBMR()
+void tlcs900h_device::op_CPBMR()
{
sub8( RDMEM( m_ea1.d ), *m_p2_reg8 );
}
-void tlcs900h_device::_CPBRI()
+void tlcs900h_device::op_CPBRI()
{
sub8( *m_p1_reg8, m_imm2.b.l );
}
-void tlcs900h_device::_CPBRM()
+void tlcs900h_device::op_CPBRM()
{
sub8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_CPBRR()
+void tlcs900h_device::op_CPBRR()
{
sub8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_CPWMI()
+void tlcs900h_device::op_CPWMI()
{
sub16( RDMEMW( m_ea1.d ), m_imm2.w.l );
}
-void tlcs900h_device::_CPWMR()
+void tlcs900h_device::op_CPWMR()
{
sub16( RDMEMW( m_ea1.d ), *m_p2_reg16 );
}
-void tlcs900h_device::_CPWRI()
+void tlcs900h_device::op_CPWRI()
{
sub16( *m_p1_reg16, m_imm2.w.l );
}
-void tlcs900h_device::_CPWRM()
+void tlcs900h_device::op_CPWRM()
{
sub16( *m_p1_reg16, RDMEMW( m_ea2.d ) );
}
-void tlcs900h_device::_CPWRR()
+void tlcs900h_device::op_CPWRR()
{
sub16( *m_p1_reg16, *m_p2_reg16 );
}
-void tlcs900h_device::_CPLMR()
+void tlcs900h_device::op_CPLMR()
{
sub32( RDMEML( m_ea1.d ), *m_p2_reg32 );
}
-void tlcs900h_device::_CPLRI()
+void tlcs900h_device::op_CPLRI()
{
sub32( *m_p1_reg32, m_imm2.d );
}
-void tlcs900h_device::_CPLRM()
+void tlcs900h_device::op_CPLRM()
{
sub32( *m_p1_reg32, RDMEML( m_ea2.d ) );
}
-void tlcs900h_device::_CPLRR()
+void tlcs900h_device::op_CPLRR()
{
sub32( *m_p1_reg32, *m_p2_reg32 );
}
-void tlcs900h_device::_CPD()
+void tlcs900h_device::op_CPD()
{
uint8_t result = *get_reg8_current( 1 ) - RDMEM( *m_p2_reg32 );
uint16_t *bc = get_reg16_current( 1 );
@@ -1740,9 +1740,9 @@ void tlcs900h_device::_CPD()
}
-void tlcs900h_device::_CPDR()
+void tlcs900h_device::op_CPDR()
{
- _CPD();
+ op_CPD();
if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF )
{
@@ -1753,7 +1753,7 @@ void tlcs900h_device::_CPDR()
}
-void tlcs900h_device::_CPDW()
+void tlcs900h_device::op_CPDW()
{
uint16_t result = *get_reg16_current( 0 ) - RDMEMW( *m_p2_reg32 );
uint16_t *bc = get_reg16_current( 1 );
@@ -1766,9 +1766,9 @@ void tlcs900h_device::_CPDW()
}
-void tlcs900h_device::_CPDRW()
+void tlcs900h_device::op_CPDRW()
{
- _CPDW();
+ op_CPDW();
if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF )
{
@@ -1779,7 +1779,7 @@ void tlcs900h_device::_CPDRW()
}
-void tlcs900h_device::_CPI()
+void tlcs900h_device::op_CPI()
{
uint8_t result = *get_reg8_current( 1 ) - RDMEM( *m_p2_reg32 );
uint16_t *bc = get_reg16_current( 1 );
@@ -1792,9 +1792,9 @@ void tlcs900h_device::_CPI()
}
-void tlcs900h_device::_CPIR()
+void tlcs900h_device::op_CPIR()
{
- _CPI();
+ op_CPI();
if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF )
{
@@ -1805,7 +1805,7 @@ void tlcs900h_device::_CPIR()
}
-void tlcs900h_device::_CPIW()
+void tlcs900h_device::op_CPIW()
{
uint16_t result = *get_reg16_current( 0 ) - RDMEMW( *m_p2_reg32 );
uint16_t *bc = get_reg16_current( 1 );
@@ -1818,9 +1818,9 @@ void tlcs900h_device::_CPIW()
}
-void tlcs900h_device::_CPIRW()
+void tlcs900h_device::op_CPIRW()
{
- _CPIW();
+ op_CPIW();
if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF )
{
@@ -1831,21 +1831,21 @@ void tlcs900h_device::_CPIRW()
}
-void tlcs900h_device::_CPLBR()
+void tlcs900h_device::op_CPLBR()
{
*m_p1_reg8 = ~ *m_p1_reg8;
m_sr.b.l |= FLAG_HF | FLAG_NF;
}
-void tlcs900h_device::_CPLWR()
+void tlcs900h_device::op_CPLWR()
{
*m_p1_reg16 = ~ *m_p1_reg16;
m_sr.b.l |= FLAG_HF | FLAG_NF;
}
-void tlcs900h_device::_DAABR()
+void tlcs900h_device::op_DAABR()
{
uint8_t oldval = *m_p1_reg8;
uint8_t fixval = 0;
@@ -1907,13 +1907,13 @@ void tlcs900h_device::_DAABR()
}
-void tlcs900h_device::_DB()
+void tlcs900h_device::op_DB()
{
logerror("%08x: invalid or illegal instruction\n", m_pc.d );
}
-void tlcs900h_device::_DECBIM()
+void tlcs900h_device::op_DECBIM()
{
uint8_t cy = m_sr.b.l & FLAG_CF;
@@ -1922,7 +1922,7 @@ void tlcs900h_device::_DECBIM()
}
-void tlcs900h_device::_DECBIR()
+void tlcs900h_device::op_DECBIR()
{
uint8_t cy = m_sr.b.l & FLAG_CF;
@@ -1931,7 +1931,7 @@ void tlcs900h_device::_DECBIR()
}
-void tlcs900h_device::_DECWIM()
+void tlcs900h_device::op_DECWIM()
{
uint8_t cy = m_sr.b.l & FLAG_CF;
@@ -1940,19 +1940,19 @@ void tlcs900h_device::_DECWIM()
}
-void tlcs900h_device::_DECWIR()
+void tlcs900h_device::op_DECWIR()
{
*m_p2_reg16 -= m_imm1.b.l ? m_imm1.b.l : 8;
}
-void tlcs900h_device::_DECLIR()
+void tlcs900h_device::op_DECLIR()
{
*m_p2_reg32 -= m_imm1.b.l ? m_imm1.b.l : 8;
}
-void tlcs900h_device::_DECF()
+void tlcs900h_device::op_DECF()
{
/* 0x03 for MAX mode, 0x07 for MIN mode */
m_sr.b.h = ( m_sr.b.h & 0xf8 ) | ( ( m_sr.b.h - 1 ) & 0x07 );
@@ -1960,79 +1960,79 @@ void tlcs900h_device::_DECF()
}
-void tlcs900h_device::_DIVBRI()
+void tlcs900h_device::op_DIVBRI()
{
*m_p1_reg16 = div8( *m_p1_reg16, m_imm2.b.l );
}
-void tlcs900h_device::_DIVBRM()
+void tlcs900h_device::op_DIVBRM()
{
*m_p1_reg16 = div8( *m_p1_reg16, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_DIVBRR()
+void tlcs900h_device::op_DIVBRR()
{
*m_p1_reg16 = div8( *m_p1_reg16, *m_p2_reg8 );
}
-void tlcs900h_device::_DIVWRI()
+void tlcs900h_device::op_DIVWRI()
{
*m_p1_reg32 = div16( *m_p1_reg32, m_imm2.w.l );
}
-void tlcs900h_device::_DIVWRM()
+void tlcs900h_device::op_DIVWRM()
{
*m_p1_reg32 = div16( *m_p1_reg32, RDMEMW( m_ea2.d ) );
}
-void tlcs900h_device::_DIVWRR()
+void tlcs900h_device::op_DIVWRR()
{
*m_p1_reg32 = div16( *m_p1_reg32, *m_p2_reg16 );
}
-void tlcs900h_device::_DIVSBRI()
+void tlcs900h_device::op_DIVSBRI()
{
*m_p1_reg16 = divs8( *m_p1_reg16, m_imm2.b.l );
}
-void tlcs900h_device::_DIVSBRM()
+void tlcs900h_device::op_DIVSBRM()
{
*m_p1_reg16 = divs8( *m_p1_reg16, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_DIVSBRR()
+void tlcs900h_device::op_DIVSBRR()
{
*m_p1_reg16 = divs8( *m_p1_reg16, *m_p2_reg8 );
}
-void tlcs900h_device::_DIVSWRI()
+void tlcs900h_device::op_DIVSWRI()
{
*m_p1_reg32 = divs16( *m_p1_reg32, m_imm2.w.l );
}
-void tlcs900h_device::_DIVSWRM()
+void tlcs900h_device::op_DIVSWRM()
{
*m_p1_reg32 = divs16( *m_p1_reg32, RDMEMW( m_ea2.d ) );
}
-void tlcs900h_device::_DIVSWRR()
+void tlcs900h_device::op_DIVSWRR()
{
*m_p1_reg32 = divs16( *m_p1_reg32, *m_p2_reg16 );
}
-void tlcs900h_device::_DJNZB()
+void tlcs900h_device::op_DJNZB()
{
*m_p1_reg8 -= 1;
if ( *m_p1_reg8 )
@@ -2044,7 +2044,7 @@ void tlcs900h_device::_DJNZB()
}
-void tlcs900h_device::_DJNZW()
+void tlcs900h_device::op_DJNZW()
{
*m_p1_reg16 -= 1;
if ( *m_p1_reg16 )
@@ -2056,14 +2056,14 @@ void tlcs900h_device::_DJNZW()
}
-void tlcs900h_device::_EI()
+void tlcs900h_device::op_EI()
{
m_sr.b.h = ( m_sr.b.h & 0x8f ) | ( ( m_imm1.b.l & 0x07 ) << 4 );
m_check_irqs = 1;
}
-void tlcs900h_device::_EXBMR()
+void tlcs900h_device::op_EXBMR()
{
uint8_t i = RDMEM( m_ea1.d );
@@ -2072,7 +2072,7 @@ void tlcs900h_device::_EXBMR()
}
-void tlcs900h_device::_EXBRR()
+void tlcs900h_device::op_EXBRR()
{
uint8_t i = *m_p2_reg8;
@@ -2081,7 +2081,7 @@ void tlcs900h_device::_EXBRR()
}
-void tlcs900h_device::_EXWMR()
+void tlcs900h_device::op_EXWMR()
{
uint16_t i = RDMEMW( m_ea1.d );
@@ -2090,7 +2090,7 @@ void tlcs900h_device::_EXWMR()
}
-void tlcs900h_device::_EXWRR()
+void tlcs900h_device::op_EXWRR()
{
uint16_t i = *m_p2_reg16;
@@ -2099,7 +2099,7 @@ void tlcs900h_device::_EXWRR()
}
-void tlcs900h_device::_EXTSWR()
+void tlcs900h_device::op_EXTSWR()
{
if ( *m_p1_reg16 & 0x0080 )
*m_p1_reg16 |= 0xff00;
@@ -2108,7 +2108,7 @@ void tlcs900h_device::_EXTSWR()
}
-void tlcs900h_device::_EXTSLR()
+void tlcs900h_device::op_EXTSLR()
{
if ( *m_p1_reg32 & 0x00008000 )
*m_p1_reg32 |= 0xffff0000;
@@ -2117,25 +2117,25 @@ void tlcs900h_device::_EXTSLR()
}
-void tlcs900h_device::_EXTZWR()
+void tlcs900h_device::op_EXTZWR()
{
*m_p1_reg16 &= 0x00ff;
}
-void tlcs900h_device::_EXTZLR()
+void tlcs900h_device::op_EXTZLR()
{
*m_p1_reg32 &= 0x0000ffff;
}
-void tlcs900h_device::_HALT()
+void tlcs900h_device::op_HALT()
{
m_halted = 1;
}
-void tlcs900h_device::_INCBIM()
+void tlcs900h_device::op_INCBIM()
{
uint8_t cy = m_sr.b.l & FLAG_CF;
@@ -2144,7 +2144,7 @@ void tlcs900h_device::_INCBIM()
}
-void tlcs900h_device::_INCBIR()
+void tlcs900h_device::op_INCBIR()
{
uint8_t cy = m_sr.b.l & FLAG_CF;
@@ -2153,7 +2153,7 @@ void tlcs900h_device::_INCBIR()
}
-void tlcs900h_device::_INCWIM()
+void tlcs900h_device::op_INCWIM()
{
uint8_t cy = m_sr.b.l & FLAG_CF;
@@ -2162,19 +2162,19 @@ void tlcs900h_device::_INCWIM()
}
-void tlcs900h_device::_INCWIR()
+void tlcs900h_device::op_INCWIR()
{
*m_p2_reg16 += m_imm1.b.l ? m_imm1.b.l : 8;
}
-void tlcs900h_device::_INCLIR()
+void tlcs900h_device::op_INCLIR()
{
*m_p2_reg32 += m_imm1.b.l ? m_imm1.b.l : 8;
}
-void tlcs900h_device::_INCF()
+void tlcs900h_device::op_INCF()
{
/* 0x03 for MAX mode, 0x07 for MIN mode */
m_sr.b.h = ( m_sr.b.h & 0xf8 ) | ( ( m_sr.b.h + 1 ) & 0x07 );
@@ -2182,14 +2182,14 @@ void tlcs900h_device::_INCF()
}
-void tlcs900h_device::_JPI()
+void tlcs900h_device::op_JPI()
{
m_pc.d = m_imm1.d;
m_prefetch_clear = true;
}
-void tlcs900h_device::_JPM()
+void tlcs900h_device::op_JPM()
{
if ( condition_true( m_op ) )
{
@@ -2200,7 +2200,7 @@ void tlcs900h_device::_JPM()
}
-void tlcs900h_device::_JR()
+void tlcs900h_device::op_JR()
{
if ( condition_true( m_op ) )
{
@@ -2211,7 +2211,7 @@ void tlcs900h_device::_JR()
}
-void tlcs900h_device::_JRL()
+void tlcs900h_device::op_JRL()
{
if ( condition_true( m_op ) )
{
@@ -2222,169 +2222,169 @@ void tlcs900h_device::_JRL()
}
-void tlcs900h_device::_LDBMI()
+void tlcs900h_device::op_LDBMI()
{
WRMEM( m_ea1.d, m_imm2.b.l );
}
-void tlcs900h_device::_LDBMM()
+void tlcs900h_device::op_LDBMM()
{
WRMEM( m_ea1.d, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_LDBMR()
+void tlcs900h_device::op_LDBMR()
{
WRMEM( m_ea1.d, *m_p2_reg8 );
}
-void tlcs900h_device::_LDBRI()
+void tlcs900h_device::op_LDBRI()
{
*m_p1_reg8 = m_imm2.b.l;
}
-void tlcs900h_device::_LDBRM()
+void tlcs900h_device::op_LDBRM()
{
*m_p1_reg8 = RDMEM( m_ea2.d );
}
-void tlcs900h_device::_LDBRR()
+void tlcs900h_device::op_LDBRR()
{
*m_p1_reg8 = *m_p2_reg8;
}
-void tlcs900h_device::_LDWMI()
+void tlcs900h_device::op_LDWMI()
{
WRMEMW( m_ea1.d, m_imm2.w.l );
}
-void tlcs900h_device::_LDWMM()
+void tlcs900h_device::op_LDWMM()
{
WRMEMW( m_ea1.d, RDMEMW( m_ea2.d ) );
}
-void tlcs900h_device::_LDWMR()
+void tlcs900h_device::op_LDWMR()
{
WRMEMW( m_ea1.d, *m_p2_reg16 );
}
-void tlcs900h_device::_LDWRI()
+void tlcs900h_device::op_LDWRI()
{
*m_p1_reg16 = m_imm2.w.l;
}
-void tlcs900h_device::_LDWRM()
+void tlcs900h_device::op_LDWRM()
{
*m_p1_reg16 = RDMEMW( m_ea2.d );
}
-void tlcs900h_device::_LDWRR()
+void tlcs900h_device::op_LDWRR()
{
*m_p1_reg16 = *m_p2_reg16;
}
-void tlcs900h_device::_LDLRI()
+void tlcs900h_device::op_LDLRI()
{
*m_p1_reg32 = m_imm2.d;
}
-void tlcs900h_device::_LDLRM()
+void tlcs900h_device::op_LDLRM()
{
*m_p1_reg32 = RDMEML( m_ea2.d );
}
-void tlcs900h_device::_LDLRR()
+void tlcs900h_device::op_LDLRR()
{
*m_p1_reg32 = *m_p2_reg32;
}
-void tlcs900h_device::_LDLMR()
+void tlcs900h_device::op_LDLMR()
{
WRMEML( m_ea1.d, *m_p2_reg32 );
}
-void tlcs900h_device::_LDAW()
+void tlcs900h_device::op_LDAW()
{
*m_p1_reg16 = m_ea2.w.l;
}
-void tlcs900h_device::_LDAL()
+void tlcs900h_device::op_LDAL()
{
*m_p1_reg32 = m_ea2.d;
}
-void tlcs900h_device::_LDCBRR()
+void tlcs900h_device::op_LDCBRR()
{
*m_p1_reg8 = *m_p2_reg8;
}
-void tlcs900h_device::_LDCWRR()
+void tlcs900h_device::op_LDCWRR()
{
*m_p1_reg16 = *m_p2_reg16;
}
-void tlcs900h_device::_LDCLRR()
+void tlcs900h_device::op_LDCLRR()
{
*m_p1_reg32 = *m_p2_reg32;
}
-void tlcs900h_device::_LDCFBIM()
+void tlcs900h_device::op_LDCFBIM()
{
ldcf8( m_imm1.b.l, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_LDCFBIR()
+void tlcs900h_device::op_LDCFBIR()
{
ldcf8( m_imm1.b.l, *m_p2_reg8 );
}
-void tlcs900h_device::_LDCFBRM()
+void tlcs900h_device::op_LDCFBRM()
{
ldcf8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_LDCFBRR()
+void tlcs900h_device::op_LDCFBRR()
{
ldcf8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_LDCFWIR()
+void tlcs900h_device::op_LDCFWIR()
{
ldcf16( m_imm1.b.l, *m_p2_reg16 );
}
-void tlcs900h_device::_LDCFWRR()
+void tlcs900h_device::op_LDCFWRR()
{
ldcf16( *m_p1_reg8, *m_p2_reg16 );
}
-void tlcs900h_device::_LDD()
+void tlcs900h_device::op_LDD()
{
uint16_t *bc = get_reg16_current( 1 );
@@ -2400,7 +2400,7 @@ void tlcs900h_device::_LDD()
}
-void tlcs900h_device::_LDDR()
+void tlcs900h_device::op_LDDR()
{
uint16_t *bc = get_reg16_current( 1 );
@@ -2419,7 +2419,7 @@ void tlcs900h_device::_LDDR()
}
-void tlcs900h_device::_LDDRW()
+void tlcs900h_device::op_LDDRW()
{
uint16_t *bc = get_reg16_current( 1 );
@@ -2438,7 +2438,7 @@ void tlcs900h_device::_LDDRW()
}
-void tlcs900h_device::_LDDW()
+void tlcs900h_device::op_LDDW()
{
uint16_t *bc = get_reg16_current( 1 );
@@ -2454,14 +2454,14 @@ void tlcs900h_device::_LDDW()
}
-void tlcs900h_device::_LDF()
+void tlcs900h_device::op_LDF()
{
m_sr.b.h = ( m_sr.b.h & 0xf8 ) | ( m_imm1.b.l & 0x07 );
m_regbank = m_imm1.b.l & 0x03;
}
-void tlcs900h_device::_LDI()
+void tlcs900h_device::op_LDI()
{
uint16_t *bc = get_reg16_current( 1 );
@@ -2477,7 +2477,7 @@ void tlcs900h_device::_LDI()
}
-void tlcs900h_device::_LDIR()
+void tlcs900h_device::op_LDIR()
{
uint16_t *bc = get_reg16_current( 1 );
@@ -2496,7 +2496,7 @@ void tlcs900h_device::_LDIR()
}
-void tlcs900h_device::_LDIRW()
+void tlcs900h_device::op_LDIRW()
{
uint16_t *bc = get_reg16_current( 1 );
@@ -2515,7 +2515,7 @@ void tlcs900h_device::_LDIRW()
}
-void tlcs900h_device::_LDIW()
+void tlcs900h_device::op_LDIW()
{
uint16_t *bc = get_reg16_current( 1 );
@@ -2531,7 +2531,7 @@ void tlcs900h_device::_LDIW()
}
-void tlcs900h_device::_LDX()
+void tlcs900h_device::op_LDX()
{
uint8_t a, b;
@@ -2544,7 +2544,7 @@ void tlcs900h_device::_LDX()
}
-void tlcs900h_device::_LINK()
+void tlcs900h_device::op_LINK()
{
m_xssp.d -= 4;
WRMEML( m_xssp.d, *m_p1_reg32 );
@@ -2553,13 +2553,13 @@ void tlcs900h_device::_LINK()
}
-void tlcs900h_device::_MAX()
+void tlcs900h_device::op_MAX()
{
m_sr.b.h |= 0x04;
}
-void tlcs900h_device::_MDEC1()
+void tlcs900h_device::op_MDEC1()
{
if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l )
*m_p2_reg16 += m_imm1.w.l;
@@ -2568,7 +2568,7 @@ void tlcs900h_device::_MDEC1()
}
-void tlcs900h_device::_MDEC2()
+void tlcs900h_device::op_MDEC2()
{
if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l )
*m_p2_reg16 += m_imm1.w.l;
@@ -2577,7 +2577,7 @@ void tlcs900h_device::_MDEC2()
}
-void tlcs900h_device::_MDEC4()
+void tlcs900h_device::op_MDEC4()
{
if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l )
*m_p2_reg16 += m_imm1.w.l;
@@ -2586,7 +2586,7 @@ void tlcs900h_device::_MDEC4()
}
-void tlcs900h_device::_MINC1()
+void tlcs900h_device::op_MINC1()
{
if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l )
*m_p2_reg16 -= m_imm1.w.l;
@@ -2595,7 +2595,7 @@ void tlcs900h_device::_MINC1()
}
-void tlcs900h_device::_MINC2()
+void tlcs900h_device::op_MINC2()
{
if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l )
*m_p2_reg16 -= m_imm1.w.l;
@@ -2604,7 +2604,7 @@ void tlcs900h_device::_MINC2()
}
-void tlcs900h_device::_MINC4()
+void tlcs900h_device::op_MINC4()
{
if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l )
*m_p2_reg16 -= m_imm1.w.l;
@@ -2613,7 +2613,7 @@ void tlcs900h_device::_MINC4()
}
-void tlcs900h_device::_MIRRW()
+void tlcs900h_device::op_MIRRW()
{
uint16_t r = *m_p1_reg16;
uint16_t s = ( r & 0x01 );
@@ -2631,43 +2631,43 @@ void tlcs900h_device::_MIRRW()
}
-void tlcs900h_device::_MULBRI()
+void tlcs900h_device::op_MULBRI()
{
*m_p1_reg16 = ( *m_p1_reg16 & 0xff ) * m_imm2.b.l;
}
-void tlcs900h_device::_MULBRM()
+void tlcs900h_device::op_MULBRM()
{
*m_p1_reg16 = ( *m_p1_reg16 & 0xff ) * RDMEM( m_ea2.d );
}
-void tlcs900h_device::_MULBRR()
+void tlcs900h_device::op_MULBRR()
{
*m_p1_reg16 = ( *m_p1_reg16 & 0xff ) * *m_p2_reg8;
}
-void tlcs900h_device::_MULWRI()
+void tlcs900h_device::op_MULWRI()
{
*m_p1_reg32 = ( *m_p1_reg32 & 0xffff ) * m_imm2.w.l;
}
-void tlcs900h_device::_MULWRM()
+void tlcs900h_device::op_MULWRM()
{
*m_p1_reg32 = ( *m_p1_reg32 & 0xffff ) * RDMEMW( m_ea2.d );
}
-void tlcs900h_device::_MULWRR()
+void tlcs900h_device::op_MULWRR()
{
*m_p1_reg32 = ( *m_p1_reg32 & 0xffff ) * *m_p2_reg16;
}
-void tlcs900h_device::_MULAR()
+void tlcs900h_device::op_MULAR()
{
uint32_t *xde = get_reg32_current( 2 );
uint32_t *xhl = get_reg32_current( 3 );
@@ -2680,317 +2680,317 @@ void tlcs900h_device::_MULAR()
}
-void tlcs900h_device::_MULSBRI()
+void tlcs900h_device::op_MULSBRI()
{
*m_p1_reg16 = (int8_t)( *m_p1_reg16 & 0xff ) * m_imm2.sb.l;
}
-void tlcs900h_device::_MULSBRM()
+void tlcs900h_device::op_MULSBRM()
{
*m_p1_reg16 = (int8_t)( *m_p1_reg16 & 0xff ) * (int8_t)RDMEM( m_ea2.d );
}
-void tlcs900h_device::_MULSBRR()
+void tlcs900h_device::op_MULSBRR()
{
*m_p1_reg16 = (int8_t)( *m_p1_reg16 & 0xff ) * (int8_t)*m_p2_reg8;
}
-void tlcs900h_device::_MULSWRI()
+void tlcs900h_device::op_MULSWRI()
{
*m_p1_reg32 = (int16_t)( *m_p1_reg32 & 0xffff ) * m_imm2.sw.l;
}
-void tlcs900h_device::_MULSWRM()
+void tlcs900h_device::op_MULSWRM()
{
*m_p1_reg32 = (int16_t)( *m_p1_reg32 & 0xffff ) * (int16_t)RDMEMW( m_ea2.d );
}
-void tlcs900h_device::_MULSWRR()
+void tlcs900h_device::op_MULSWRR()
{
*m_p1_reg32 = (int16_t)( *m_p1_reg32 & 0xffff ) * (int16_t)*m_p2_reg16;
}
-void tlcs900h_device::_NEGBR()
+void tlcs900h_device::op_NEGBR()
{
*m_p1_reg8 = sub8( 0, *m_p1_reg8 );
}
-void tlcs900h_device::_NEGWR()
+void tlcs900h_device::op_NEGWR()
{
*m_p1_reg16 = sub16( 0, *m_p1_reg16 );
}
-void tlcs900h_device::_NOP()
+void tlcs900h_device::op_NOP()
{
/* Do nothing */
}
-void tlcs900h_device::_NORMAL()
+void tlcs900h_device::op_NORMAL()
{
m_sr.b.h &= 0x7F;
}
-void tlcs900h_device::_ORBMI()
+void tlcs900h_device::op_ORBMI()
{
WRMEM( m_ea1.d, or8( RDMEM( m_ea1.d ), m_imm2.b.l ) );
}
-void tlcs900h_device::_ORBMR()
+void tlcs900h_device::op_ORBMR()
{
WRMEM( m_ea1.d, or8( RDMEM( m_ea1.d ), *m_p2_reg8 ) );
}
-void tlcs900h_device::_ORBRI()
+void tlcs900h_device::op_ORBRI()
{
*m_p1_reg8 = or8( *m_p1_reg8, m_imm2.b.l );
}
-void tlcs900h_device::_ORBRM()
+void tlcs900h_device::op_ORBRM()
{
*m_p1_reg8 = or8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_ORBRR()
+void tlcs900h_device::op_ORBRR()
{
*m_p1_reg8 = or8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_ORWMI()
+void tlcs900h_device::op_ORWMI()
{
WRMEMW( m_ea1.d, or16( RDMEMW( m_ea1.d ), m_imm2.w.l ) );
}
-void tlcs900h_device::_ORWMR()
+void tlcs900h_device::op_ORWMR()
{
WRMEMW( m_ea1.d, or16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) );
}
-void tlcs900h_device::_ORWRI()
+void tlcs900h_device::op_ORWRI()
{
*m_p1_reg16 = or16( *m_p1_reg16, m_imm2.w.l );
}
-void tlcs900h_device::_ORWRM()
+void tlcs900h_device::op_ORWRM()
{
*m_p1_reg16 = or16( *m_p1_reg16, RDMEMW( m_ea2.d ) );
}
-void tlcs900h_device::_ORWRR()
+void tlcs900h_device::op_ORWRR()
{
*m_p1_reg16 = or16( *m_p1_reg16, *m_p2_reg16 );
}
-void tlcs900h_device::_ORLMR()
+void tlcs900h_device::op_ORLMR()
{
WRMEML( m_ea1.d, or32( RDMEML( m_ea1.d ), *m_p2_reg32 ) );
}
-void tlcs900h_device::_ORLRI()
+void tlcs900h_device::op_ORLRI()
{
*m_p1_reg32 = or32( *m_p1_reg32, m_imm2.d );
}
-void tlcs900h_device::_ORLRM()
+void tlcs900h_device::op_ORLRM()
{
*m_p1_reg32 = or32( *m_p1_reg32, RDMEML( m_ea2.d ) );
}
-void tlcs900h_device::_ORLRR()
+void tlcs900h_device::op_ORLRR()
{
*m_p1_reg32 = or32( *m_p1_reg32, *m_p2_reg32 );
}
-void tlcs900h_device::_ORCFBIM()
+void tlcs900h_device::op_ORCFBIM()
{
orcf8( m_imm1.b.l, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_ORCFBIR()
+void tlcs900h_device::op_ORCFBIR()
{
orcf8( m_imm1.b.l, *m_p2_reg8 );
}
-void tlcs900h_device::_ORCFBRM()
+void tlcs900h_device::op_ORCFBRM()
{
orcf8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_ORCFBRR()
+void tlcs900h_device::op_ORCFBRR()
{
orcf8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_ORCFWIR()
+void tlcs900h_device::op_ORCFWIR()
{
orcf16( m_imm1.b.l, *m_p2_reg16 );
}
-void tlcs900h_device::_ORCFWRR()
+void tlcs900h_device::op_ORCFWRR()
{
orcf16( *m_p1_reg8, *m_p2_reg16 );
}
-void tlcs900h_device::_PAAWR()
+void tlcs900h_device::op_PAAWR()
{
if ( *m_p1_reg16 & 1 )
*m_p1_reg16 += 1;
}
-void tlcs900h_device::_PAALR()
+void tlcs900h_device::op_PAALR()
{
if ( *m_p1_reg32 & 1 )
*m_p1_reg32 += 1;
}
-void tlcs900h_device::_POPBM()
+void tlcs900h_device::op_POPBM()
{
WRMEM( m_ea1.d, RDMEM( m_xssp.d ) );
m_xssp.d += 1;
}
-void tlcs900h_device::_POPBR()
+void tlcs900h_device::op_POPBR()
{
*m_p1_reg8 = RDMEM( m_xssp.d );
m_xssp.d += 1;
}
-void tlcs900h_device::_POPWM()
+void tlcs900h_device::op_POPWM()
{
WRMEMW( m_ea1.d, RDMEMW( m_xssp.d ) );
m_xssp.d += 2;
}
-void tlcs900h_device::_POPWR()
+void tlcs900h_device::op_POPWR()
{
*m_p1_reg16 = RDMEMW( m_xssp.d );
m_xssp.d += 2;
}
-void tlcs900h_device::_POPWSR()
+void tlcs900h_device::op_POPWSR()
{
- _POPWR();
+ op_POPWR();
m_regbank = m_sr.b.h & 0x03;
m_check_irqs = 1;
}
-void tlcs900h_device::_POPLR()
+void tlcs900h_device::op_POPLR()
{
*m_p1_reg32 = RDMEML( m_xssp.d );
m_xssp.d += 4;
}
-void tlcs900h_device::_PUSHBI()
+void tlcs900h_device::op_PUSHBI()
{
m_xssp.d -= 1;
WRMEM( m_xssp.d, m_imm1.b.l );
}
-void tlcs900h_device::_PUSHBM()
+void tlcs900h_device::op_PUSHBM()
{
m_xssp.d -= 1;
WRMEM( m_xssp.d, RDMEM( m_ea1.d ) );
}
-void tlcs900h_device::_PUSHBR()
+void tlcs900h_device::op_PUSHBR()
{
m_xssp.d -= 1;
WRMEM( m_xssp.d, *m_p1_reg8 );
}
-void tlcs900h_device::_PUSHWI()
+void tlcs900h_device::op_PUSHWI()
{
m_xssp.d -= 2;
WRMEMW( m_xssp.d, m_imm1.w.l );
}
-void tlcs900h_device::_PUSHWM()
+void tlcs900h_device::op_PUSHWM()
{
m_xssp.d -= 2;
WRMEMW( m_xssp.d, RDMEMW( m_ea1.d ) );
}
-void tlcs900h_device::_PUSHWR()
+void tlcs900h_device::op_PUSHWR()
{
m_xssp.d -= 2;
WRMEMW( m_xssp.d, *m_p1_reg16 );
}
-void tlcs900h_device::_PUSHLR()
+void tlcs900h_device::op_PUSHLR()
{
m_xssp.d -= 4;
WRMEML( m_xssp.d, *m_p1_reg32 );
}
-void tlcs900h_device::_RCF()
+void tlcs900h_device::op_RCF()
{
m_sr.b.l &= ~ ( FLAG_HF | FLAG_NF | FLAG_CF );
}
-void tlcs900h_device::_RESBIM()
+void tlcs900h_device::op_RESBIM()
{
WRMEM( m_ea2.d, RDMEM( m_ea2.d ) & ~( 1 << ( m_imm1.d & 0x07 ) ) );
}
-void tlcs900h_device::_RESBIR()
+void tlcs900h_device::op_RESBIR()
{
*m_p2_reg8 = *m_p2_reg8 & ~( 1 << ( m_imm1.d & 0x07 ) );
}
-void tlcs900h_device::_RESWIR()
+void tlcs900h_device::op_RESWIR()
{
*m_p2_reg16 = *m_p2_reg16 & ~( 1 << ( m_imm1.d & 0x0f ) );
}
-void tlcs900h_device::_RET()
+void tlcs900h_device::op_RET()
{
m_pc.d = RDMEML( m_xssp.d );
m_xssp.d += 4;
@@ -2998,7 +2998,7 @@ void tlcs900h_device::_RET()
}
-void tlcs900h_device::_RETCC()
+void tlcs900h_device::op_RETCC()
{
if ( condition_true( m_op ) )
{
@@ -3010,7 +3010,7 @@ void tlcs900h_device::_RETCC()
}
-void tlcs900h_device::_RETD()
+void tlcs900h_device::op_RETD()
{
m_pc.d = RDMEML( m_xssp.d );
m_xssp.d += 4 + m_imm1.sw.l;
@@ -3018,7 +3018,7 @@ void tlcs900h_device::_RETD()
}
-void tlcs900h_device::_RETI()
+void tlcs900h_device::op_RETI()
{
m_sr.w.l = RDMEMW( m_xssp.d );
m_xssp.d += 2;
@@ -3030,103 +3030,103 @@ void tlcs900h_device::_RETI()
}
-void tlcs900h_device::_RLBM()
+void tlcs900h_device::op_RLBM()
{
WRMEM( m_ea2.d, rl8( RDMEM( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_RLWM()
+void tlcs900h_device::op_RLWM()
{
WRMEMW( m_ea2.d, rl16( RDMEMW( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_RLBIR()
+void tlcs900h_device::op_RLBIR()
{
*m_p2_reg8 = rl8( *m_p2_reg8, m_imm1.b.l );
}
-void tlcs900h_device::_RLBRR()
+void tlcs900h_device::op_RLBRR()
{
*m_p2_reg8 = rl8( *m_p2_reg8, *m_p1_reg8 );
}
-void tlcs900h_device::_RLWIR()
+void tlcs900h_device::op_RLWIR()
{
*m_p2_reg16 = rl16( *m_p2_reg16, m_imm1.b.l );
}
-void tlcs900h_device::_RLWRR()
+void tlcs900h_device::op_RLWRR()
{
*m_p2_reg16 = rl16( *m_p2_reg16, *m_p1_reg8 );
}
-void tlcs900h_device::_RLLIR()
+void tlcs900h_device::op_RLLIR()
{
*m_p2_reg32 = rl32( *m_p2_reg32, m_imm1.b.l );
}
-void tlcs900h_device::_RLLRR()
+void tlcs900h_device::op_RLLRR()
{
*m_p2_reg32 = rl32( *m_p2_reg32, *m_p1_reg8 );
}
-void tlcs900h_device::_RLCBM()
+void tlcs900h_device::op_RLCBM()
{
WRMEM( m_ea2.d, rlc8( RDMEM( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_RLCWM()
+void tlcs900h_device::op_RLCWM()
{
WRMEMW( m_ea2.d, rlc16( RDMEMW( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_RLCBIR()
+void tlcs900h_device::op_RLCBIR()
{
*m_p2_reg8 = rlc8( *m_p2_reg8, m_imm1.b.l );
}
-void tlcs900h_device::_RLCBRR()
+void tlcs900h_device::op_RLCBRR()
{
*m_p2_reg8 = rlc8( *m_p2_reg8, *m_p1_reg8 );
}
-void tlcs900h_device::_RLCWIR()
+void tlcs900h_device::op_RLCWIR()
{
*m_p2_reg16 = rlc16( *m_p2_reg16, m_imm1.b.l );
}
-void tlcs900h_device::_RLCWRR()
+void tlcs900h_device::op_RLCWRR()
{
*m_p2_reg16 = rlc16( *m_p2_reg16, *m_p1_reg8 );
}
-void tlcs900h_device::_RLCLIR()
+void tlcs900h_device::op_RLCLIR()
{
*m_p2_reg32 = rlc32( *m_p2_reg32, m_imm1.b.l );
}
-void tlcs900h_device::_RLCLRR()
+void tlcs900h_device::op_RLCLRR()
{
*m_p2_reg32 = rlc32( *m_p2_reg32, *m_p1_reg8 );
}
-void tlcs900h_device::_RLDRM()
+void tlcs900h_device::op_RLDRM()
{
uint8_t a = *m_p1_reg8 & 0x0f;
uint8_t b = RDMEM( m_ea2.d );
@@ -3139,103 +3139,103 @@ void tlcs900h_device::_RLDRM()
}
-void tlcs900h_device::_RRBM()
+void tlcs900h_device::op_RRBM()
{
WRMEM( m_ea2.d, rr8( RDMEM( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_RRWM()
+void tlcs900h_device::op_RRWM()
{
WRMEMW( m_ea2.d, rr16( RDMEMW( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_RRBIR()
+void tlcs900h_device::op_RRBIR()
{
*m_p2_reg8 = rr8( *m_p2_reg8, m_imm1.b.l );
}
-void tlcs900h_device::_RRBRR()
+void tlcs900h_device::op_RRBRR()
{
*m_p2_reg8 = rr8( *m_p2_reg8, *m_p1_reg8 );
}
-void tlcs900h_device::_RRWIR()
+void tlcs900h_device::op_RRWIR()
{
*m_p2_reg16 = rr16( *m_p2_reg16, m_imm1.b.l );
}
-void tlcs900h_device::_RRWRR()
+void tlcs900h_device::op_RRWRR()
{
*m_p2_reg16 = rr16( *m_p2_reg16, *m_p1_reg8 );
}
-void tlcs900h_device::_RRLIR()
+void tlcs900h_device::op_RRLIR()
{
*m_p2_reg32 = rr32( *m_p2_reg32, m_imm1.b.l );
}
-void tlcs900h_device::_RRLRR()
+void tlcs900h_device::op_RRLRR()
{
*m_p2_reg32 = rr32( *m_p2_reg32, *m_p1_reg8 );
}
-void tlcs900h_device::_RRCBM()
+void tlcs900h_device::op_RRCBM()
{
WRMEM( m_ea2.d, rrc8( RDMEM( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_RRCWM()
+void tlcs900h_device::op_RRCWM()
{
WRMEMW( m_ea2.d, rrc16( RDMEMW( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_RRCBIR()
+void tlcs900h_device::op_RRCBIR()
{
*m_p2_reg8 = rrc8( *m_p2_reg8, m_imm1.b.l );
}
-void tlcs900h_device::_RRCBRR()
+void tlcs900h_device::op_RRCBRR()
{
*m_p2_reg8 = rrc8( *m_p2_reg8, *m_p1_reg8 );
}
-void tlcs900h_device::_RRCWIR()
+void tlcs900h_device::op_RRCWIR()
{
*m_p2_reg16 = rrc16( *m_p2_reg16, m_imm1.b.l );
}
-void tlcs900h_device::_RRCWRR()
+void tlcs900h_device::op_RRCWRR()
{
*m_p2_reg16 = rrc16( *m_p2_reg16, *m_p1_reg8 );
}
-void tlcs900h_device::_RRCLIR()
+void tlcs900h_device::op_RRCLIR()
{
*m_p2_reg32 = rrc32( *m_p2_reg32, m_imm1.b.l );
}
-void tlcs900h_device::_RRCLRR()
+void tlcs900h_device::op_RRCLRR()
{
*m_p2_reg32 = rrc32( *m_p2_reg32, *m_p1_reg8 );
}
-void tlcs900h_device::_RRDRM()
+void tlcs900h_device::op_RRDRM()
{
uint8_t a = *m_p1_reg8 & 0x0f;
uint8_t b = RDMEM( m_ea2.d );
@@ -3248,320 +3248,320 @@ void tlcs900h_device::_RRDRM()
}
-void tlcs900h_device::_SBCBMI()
+void tlcs900h_device::op_SBCBMI()
{
WRMEM( m_ea1.d, sbc8( RDMEM( m_ea1.d ), m_imm2.b.l ) );
}
-void tlcs900h_device::_SBCBMR()
+void tlcs900h_device::op_SBCBMR()
{
WRMEM( m_ea1.d, sbc8( RDMEM( m_ea1.d ), *m_p2_reg8 ) );
}
-void tlcs900h_device::_SBCBRI()
+void tlcs900h_device::op_SBCBRI()
{
*m_p1_reg8 = sbc8( *m_p1_reg8, m_imm2.b.l );
}
-void tlcs900h_device::_SBCBRM()
+void tlcs900h_device::op_SBCBRM()
{
*m_p1_reg8 = sbc8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_SBCBRR()
+void tlcs900h_device::op_SBCBRR()
{
*m_p1_reg8 = sbc8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_SBCWMI()
+void tlcs900h_device::op_SBCWMI()
{
WRMEMW( m_ea1.d, sbc16( RDMEMW( m_ea1.d ), m_imm2.w.l ) );
}
-void tlcs900h_device::_SBCWMR()
+void tlcs900h_device::op_SBCWMR()
{
WRMEMW( m_ea1.d, sbc16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) );
}
-void tlcs900h_device::_SBCWRI()
+void tlcs900h_device::op_SBCWRI()
{
*m_p1_reg16 = sbc16( *m_p1_reg16, m_imm2.w.l );
}
-void tlcs900h_device::_SBCWRM()
+void tlcs900h_device::op_SBCWRM()
{
*m_p1_reg16 = sbc16( *m_p1_reg16, RDMEMW( m_ea2.d ) );
}
-void tlcs900h_device::_SBCWRR()
+void tlcs900h_device::op_SBCWRR()
{
*m_p1_reg16 = sbc16( *m_p1_reg16, *m_p2_reg16 );
}
-void tlcs900h_device::_SBCLMR()
+void tlcs900h_device::op_SBCLMR()
{
WRMEML( m_ea1.d, sbc32( RDMEML( m_ea1.d ), *m_p2_reg32 ) );
}
-void tlcs900h_device::_SBCLRI()
+void tlcs900h_device::op_SBCLRI()
{
*m_p1_reg32 = sbc32( *m_p1_reg32, m_imm2.d );
}
-void tlcs900h_device::_SBCLRM()
+void tlcs900h_device::op_SBCLRM()
{
*m_p1_reg32 = sbc32( *m_p1_reg32, RDMEML( m_ea2.d ) );
}
-void tlcs900h_device::_SBCLRR()
+void tlcs900h_device::op_SBCLRR()
{
*m_p1_reg32 = sbc32( *m_p1_reg32, *m_p2_reg32 );
}
-void tlcs900h_device::_SCCBR()
+void tlcs900h_device::op_SCCBR()
{
*m_p2_reg8 = condition_true( m_op ) ? 1 : 0;
}
-void tlcs900h_device::_SCCWR()
+void tlcs900h_device::op_SCCWR()
{
*m_p2_reg16 = condition_true( m_op ) ? 1 : 0;
}
-void tlcs900h_device::_SCF()
+void tlcs900h_device::op_SCF()
{
m_sr.b.l &= ~ ( FLAG_HF | FLAG_NF );
m_sr.b.l |= FLAG_CF;
}
-void tlcs900h_device::_SETBIM()
+void tlcs900h_device::op_SETBIM()
{
WRMEM( m_ea2.d, RDMEM( m_ea2.d ) | ( 1 << ( m_imm1.d & 0x07 ) ) );
}
-void tlcs900h_device::_SETBIR()
+void tlcs900h_device::op_SETBIR()
{
*m_p2_reg8 = *m_p2_reg8 | ( 1 << ( m_imm1.d & 0x07 ) );
}
-void tlcs900h_device::_SETWIR()
+void tlcs900h_device::op_SETWIR()
{
*m_p2_reg16 = *m_p2_reg16 | ( 1 << ( m_imm1.d & 0x0f ) );
}
-void tlcs900h_device::_SLABM()
+void tlcs900h_device::op_SLABM()
{
WRMEM( m_ea2.d, sla8( RDMEM( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_SLAWM()
+void tlcs900h_device::op_SLAWM()
{
WRMEMW( m_ea2.d, sla16( RDMEMW( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_SLABIR()
+void tlcs900h_device::op_SLABIR()
{
*m_p2_reg8 = sla8( *m_p2_reg8, m_imm1.b.l );
}
-void tlcs900h_device::_SLABRR()
+void tlcs900h_device::op_SLABRR()
{
*m_p2_reg8 = sla8( *m_p2_reg8, *m_p1_reg8 );
}
-void tlcs900h_device::_SLAWIR()
+void tlcs900h_device::op_SLAWIR()
{
*m_p2_reg16 = sla16( *m_p2_reg16, m_imm1.b.l );
}
-void tlcs900h_device::_SLAWRR()
+void tlcs900h_device::op_SLAWRR()
{
*m_p2_reg16 = sla16( *m_p2_reg16, *m_p1_reg8 );
}
-void tlcs900h_device::_SLALIR()
+void tlcs900h_device::op_SLALIR()
{
*m_p2_reg32 = sla32( *m_p2_reg32, m_imm1.b.l );
}
-void tlcs900h_device::_SLALRR()
+void tlcs900h_device::op_SLALRR()
{
*m_p2_reg32 = sla32( *m_p2_reg32, *m_p1_reg8 );
}
-void tlcs900h_device::_SLLBM()
+void tlcs900h_device::op_SLLBM()
{
WRMEM( m_ea2.d, sla8( RDMEM( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_SLLWM()
+void tlcs900h_device::op_SLLWM()
{
WRMEMW( m_ea2.d, sla16( RDMEMW( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_SLLBIR()
+void tlcs900h_device::op_SLLBIR()
{
*m_p2_reg8 = sla8( *m_p2_reg8, m_imm1.b.l );
}
-void tlcs900h_device::_SLLBRR()
+void tlcs900h_device::op_SLLBRR()
{
*m_p2_reg8 = sla8( *m_p2_reg8, *m_p1_reg8 );
}
-void tlcs900h_device::_SLLWIR()
+void tlcs900h_device::op_SLLWIR()
{
*m_p2_reg16 = sla16( *m_p2_reg16, m_imm1.b.l );
}
-void tlcs900h_device::_SLLWRR()
+void tlcs900h_device::op_SLLWRR()
{
*m_p2_reg16 = sla16( *m_p2_reg16, *m_p1_reg8 );
}
-void tlcs900h_device::_SLLLIR()
+void tlcs900h_device::op_SLLLIR()
{
*m_p2_reg32 = sla32( *m_p2_reg32, m_imm1.b.l );
}
-void tlcs900h_device::_SLLLRR()
+void tlcs900h_device::op_SLLLRR()
{
*m_p2_reg32 = sla32( *m_p2_reg32, *m_p1_reg8 );
}
-void tlcs900h_device::_SRABM()
+void tlcs900h_device::op_SRABM()
{
WRMEM( m_ea2.d, sra8( RDMEM( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_SRAWM()
+void tlcs900h_device::op_SRAWM()
{
WRMEMW( m_ea2.d, sra16( RDMEMW( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_SRABIR()
+void tlcs900h_device::op_SRABIR()
{
*m_p2_reg8 = sra8( *m_p2_reg8, m_imm1.b.l );
}
-void tlcs900h_device::_SRABRR()
+void tlcs900h_device::op_SRABRR()
{
*m_p2_reg8 = sra8( *m_p2_reg8, *m_p1_reg8 );
}
-void tlcs900h_device::_SRAWIR()
+void tlcs900h_device::op_SRAWIR()
{
*m_p2_reg16 = sra16( *m_p2_reg16, m_imm1.b.l );
}
-void tlcs900h_device::_SRAWRR()
+void tlcs900h_device::op_SRAWRR()
{
*m_p2_reg16 = sra16( *m_p2_reg16, *m_p1_reg8 );
}
-void tlcs900h_device::_SRALIR()
+void tlcs900h_device::op_SRALIR()
{
*m_p2_reg32 = sra32( *m_p2_reg32, m_imm1.b.l );
}
-void tlcs900h_device::_SRALRR()
+void tlcs900h_device::op_SRALRR()
{
*m_p2_reg32 = sra32( *m_p2_reg32, *m_p1_reg8 );
}
-void tlcs900h_device::_SRLBM()
+void tlcs900h_device::op_SRLBM()
{
WRMEM( m_ea2.d, srl8( RDMEM( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_SRLWM()
+void tlcs900h_device::op_SRLWM()
{
WRMEMW( m_ea2.d, srl16( RDMEMW( m_ea2.d ), 1 ) );
}
-void tlcs900h_device::_SRLBIR()
+void tlcs900h_device::op_SRLBIR()
{
*m_p2_reg8 = srl8( *m_p2_reg8, m_imm1.b.l );
}
-void tlcs900h_device::_SRLBRR()
+void tlcs900h_device::op_SRLBRR()
{
*m_p2_reg8 = srl8( *m_p2_reg8, *m_p1_reg8 );
}
-void tlcs900h_device::_SRLWIR()
+void tlcs900h_device::op_SRLWIR()
{
*m_p2_reg16 = srl16( *m_p2_reg16, m_imm1.b.l );
}
-void tlcs900h_device::_SRLWRR()
+void tlcs900h_device::op_SRLWRR()
{
*m_p2_reg16 = srl16( *m_p2_reg16, *m_p1_reg8 );
}
-void tlcs900h_device::_SRLLIR()
+void tlcs900h_device::op_SRLLIR()
{
*m_p2_reg32 = srl32( *m_p2_reg32, m_imm1.b.l );
}
-void tlcs900h_device::_SRLLRR()
+void tlcs900h_device::op_SRLLRR()
{
*m_p2_reg32 = srl32( *m_p2_reg32, *m_p1_reg8 );
}
-void tlcs900h_device::_STCFBIM()
+void tlcs900h_device::op_STCFBIM()
{
if ( m_sr.b.l & FLAG_CF )
WRMEM( m_ea2.d, RDMEM( m_ea2.d ) | ( 1 << ( m_imm1.b.l & 0x07 ) ) );
@@ -3570,7 +3570,7 @@ void tlcs900h_device::_STCFBIM()
}
-void tlcs900h_device::_STCFBIR()
+void tlcs900h_device::op_STCFBIR()
{
if ( m_sr.b.l & FLAG_CF )
*m_p2_reg8 |= ( 1 << ( m_imm1.b.l & 0x07 ) );
@@ -3579,7 +3579,7 @@ void tlcs900h_device::_STCFBIR()
}
-void tlcs900h_device::_STCFBRM()
+void tlcs900h_device::op_STCFBRM()
{
if ( m_sr.b.l & FLAG_CF )
WRMEM( m_ea2.d, RDMEM( m_ea2.d ) | ( 1 << ( *m_p1_reg8 & 0x07 ) ) );
@@ -3588,7 +3588,7 @@ void tlcs900h_device::_STCFBRM()
}
-void tlcs900h_device::_STCFBRR()
+void tlcs900h_device::op_STCFBRR()
{
if ( m_sr.b.l & FLAG_CF )
*m_p2_reg8 |= ( 1 << ( *m_p1_reg8 & 0x07 ) );
@@ -3597,7 +3597,7 @@ void tlcs900h_device::_STCFBRR()
}
-void tlcs900h_device::_STCFWIR()
+void tlcs900h_device::op_STCFWIR()
{
if ( m_sr.b.l & FLAG_CF )
*m_p2_reg16 |= ( 1 << ( m_imm1.b.l & 0x0f ) );
@@ -3606,7 +3606,7 @@ void tlcs900h_device::_STCFWIR()
}
-void tlcs900h_device::_STCFWRR()
+void tlcs900h_device::op_STCFWRR()
{
if ( m_sr.b.l & FLAG_CF )
*m_p2_reg16 |= ( 1 << ( *m_p1_reg8 & 0x0f ) );
@@ -3615,91 +3615,91 @@ void tlcs900h_device::_STCFWRR()
}
-void tlcs900h_device::_SUBBMI()
+void tlcs900h_device::op_SUBBMI()
{
WRMEM( m_ea1.d, sub8( RDMEM( m_ea1.d ), m_imm2.b.l ) );
}
-void tlcs900h_device::_SUBBMR()
+void tlcs900h_device::op_SUBBMR()
{
WRMEM( m_ea1.d, sub8( RDMEM( m_ea1.d ), *m_p2_reg8 ) );
}
-void tlcs900h_device::_SUBBRI()
+void tlcs900h_device::op_SUBBRI()
{
*m_p1_reg8 = sub8( *m_p1_reg8, m_imm2.b.l );
}
-void tlcs900h_device::_SUBBRM()
+void tlcs900h_device::op_SUBBRM()
{
*m_p1_reg8 = sub8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_SUBBRR()
+void tlcs900h_device::op_SUBBRR()
{
*m_p1_reg8 = sub8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_SUBWMI()
+void tlcs900h_device::op_SUBWMI()
{
WRMEMW( m_ea1.d, sub16( RDMEMW( m_ea1.d ), m_imm2.w.l ) );
}
-void tlcs900h_device::_SUBWMR()
+void tlcs900h_device::op_SUBWMR()
{
WRMEMW( m_ea1.d, sub16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) );
}
-void tlcs900h_device::_SUBWRI()
+void tlcs900h_device::op_SUBWRI()
{
*m_p1_reg16 = sub16( *m_p1_reg16, m_imm2.w.l );
}
-void tlcs900h_device::_SUBWRM()
+void tlcs900h_device::op_SUBWRM()
{
*m_p1_reg16 = sub16( *m_p1_reg16, RDMEMW( m_ea2.d ) );
}
-void tlcs900h_device::_SUBWRR()
+void tlcs900h_device::op_SUBWRR()
{
*m_p1_reg16 = sub16( *m_p1_reg16, *m_p2_reg16 );
}
-void tlcs900h_device::_SUBLMR()
+void tlcs900h_device::op_SUBLMR()
{
WRMEML( m_ea1.d, sub32( RDMEML( m_ea1.d ), *m_p2_reg32 ) );
}
-void tlcs900h_device::_SUBLRI()
+void tlcs900h_device::op_SUBLRI()
{
*m_p1_reg32 = sub32( *m_p1_reg32, m_imm2.d );
}
-void tlcs900h_device::_SUBLRM()
+void tlcs900h_device::op_SUBLRM()
{
*m_p1_reg32 = sub32( *m_p1_reg32, RDMEML( m_ea2.d ) );
}
-void tlcs900h_device::_SUBLRR()
+void tlcs900h_device::op_SUBLRR()
{
*m_p1_reg32 = sub32( *m_p1_reg32, *m_p2_reg32 );
}
-void tlcs900h_device::_SWI()
+void tlcs900h_device::op_SWI()
{
m_xssp.d -= 4;
WRMEML( m_xssp.d, m_pc.d );
@@ -3710,7 +3710,7 @@ void tlcs900h_device::_SWI()
}
-void tlcs900h_device::_TSETBIM()
+void tlcs900h_device::op_TSETBIM()
{
uint8_t b = 1 << ( m_imm1.b.l & 0x07 );
uint8_t a = RDMEM( m_ea2.d );
@@ -3721,7 +3721,7 @@ void tlcs900h_device::_TSETBIM()
}
-void tlcs900h_device::_TSETBIR()
+void tlcs900h_device::op_TSETBIR()
{
uint8_t b = 1 << ( m_imm1.b.l & 0x07 );
@@ -3731,7 +3731,7 @@ void tlcs900h_device::_TSETBIR()
}
-void tlcs900h_device::_TSETWIR()
+void tlcs900h_device::op_TSETWIR()
{
uint16_t b = 1 << ( m_imm1.b.l & 0x0f );
@@ -3741,7 +3741,7 @@ void tlcs900h_device::_TSETWIR()
}
-void tlcs900h_device::_UNLK()
+void tlcs900h_device::op_UNLK()
{
m_xssp.d = *m_p1_reg32;
*m_p1_reg32 = RDMEML( m_xssp.d );
@@ -3749,127 +3749,127 @@ void tlcs900h_device::_UNLK()
}
-void tlcs900h_device::_XORBMI()
+void tlcs900h_device::op_XORBMI()
{
WRMEM( m_ea1.d, xor8( RDMEM( m_ea1.d ), m_imm2.b.l ) );
}
-void tlcs900h_device::_XORBMR()
+void tlcs900h_device::op_XORBMR()
{
WRMEM( m_ea1.d, xor8( RDMEM( m_ea1.d ), *m_p2_reg8 ) );
}
-void tlcs900h_device::_XORBRI()
+void tlcs900h_device::op_XORBRI()
{
*m_p1_reg8 = xor8( *m_p1_reg8, m_imm2.b.l );
}
-void tlcs900h_device::_XORBRM()
+void tlcs900h_device::op_XORBRM()
{
*m_p1_reg8 = xor8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_XORBRR()
+void tlcs900h_device::op_XORBRR()
{
*m_p1_reg8 = xor8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_XORWMI()
+void tlcs900h_device::op_XORWMI()
{
WRMEMW( m_ea1.d, xor16( RDMEMW( m_ea1.d ), m_imm2.w.l ) );
}
-void tlcs900h_device::_XORWMR()
+void tlcs900h_device::op_XORWMR()
{
WRMEMW( m_ea1.d, xor16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) );
}
-void tlcs900h_device::_XORWRI()
+void tlcs900h_device::op_XORWRI()
{
*m_p1_reg16 = xor16( *m_p1_reg16, m_imm2.w.l );
}
-void tlcs900h_device::_XORWRM()
+void tlcs900h_device::op_XORWRM()
{
*m_p1_reg16 = xor16( *m_p1_reg16, RDMEMW( m_ea2.d ) );
}
-void tlcs900h_device::_XORWRR()
+void tlcs900h_device::op_XORWRR()
{
*m_p1_reg16 = xor16( *m_p1_reg16, *m_p2_reg16 );
}
-void tlcs900h_device::_XORLMR()
+void tlcs900h_device::op_XORLMR()
{
WRMEML( m_ea1.d, xor32( RDMEML( m_ea1.d ), *m_p2_reg32 ) );
}
-void tlcs900h_device::_XORLRI()
+void tlcs900h_device::op_XORLRI()
{
*m_p1_reg32 = xor32( *m_p1_reg32, m_imm2.d );
}
-void tlcs900h_device::_XORLRM()
+void tlcs900h_device::op_XORLRM()
{
*m_p1_reg32 = xor32( *m_p1_reg32, RDMEML( m_ea2.d ) );
}
-void tlcs900h_device::_XORLRR()
+void tlcs900h_device::op_XORLRR()
{
*m_p1_reg32 = xor32( *m_p1_reg32, *m_p2_reg32 );
}
-void tlcs900h_device::_XORCFBIM()
+void tlcs900h_device::op_XORCFBIM()
{
xorcf8( m_imm1.b.l, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_XORCFBIR()
+void tlcs900h_device::op_XORCFBIR()
{
xorcf8( m_imm1.b.l, *m_p2_reg8 );
}
-void tlcs900h_device::_XORCFBRM()
+void tlcs900h_device::op_XORCFBRM()
{
xorcf8( *m_p1_reg8, RDMEM( m_ea2.d ) );
}
-void tlcs900h_device::_XORCFBRR()
+void tlcs900h_device::op_XORCFBRR()
{
xorcf8( *m_p1_reg8, *m_p2_reg8 );
}
-void tlcs900h_device::_XORCFWIR()
+void tlcs900h_device::op_XORCFWIR()
{
xorcf16( m_imm1.b.l, *m_p2_reg16 );
}
-void tlcs900h_device::_XORCFWRR()
+void tlcs900h_device::op_XORCFWRR()
{
xorcf16( *m_p1_reg8, *m_p2_reg16 );
}
-void tlcs900h_device::_ZCF()
+void tlcs900h_device::op_ZCF()
{
m_sr.b.l &= ~ ( FLAG_NF | FLAG_CF );
m_sr.b.l |= ( ( m_sr.b.l & FLAG_ZF ) ? 0 : FLAG_CF );
@@ -3880,28 +3880,28 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst)
{
switch ( inst->operand1 )
{
- case _A:
+ case p_A:
m_p1_reg8 = &m_xwa[m_regbank].b.l;
break;
- case _F:
+ case p_F:
m_p1_reg8 = &m_sr.b.l;
break;
- case _SR:
+ case p_SR:
m_p1_reg16 = &m_sr.w.l;
break;
- case _C8:
+ case p_C8:
m_p1_reg8 = get_reg8_current( m_op );
break;
- case _C16:
+ case p_C16:
m_p1_reg16 = get_reg16_current( m_op );
break;
- case _MC16: /* For MUL and DIV operations */
+ case p_MC16: /* For MUL and DIV operations */
m_p1_reg16 = get_reg16_current( ( m_op >> 1 ) & 0x03 );
break;
- case _C32:
+ case p_C32:
m_p1_reg32 = get_reg32_current( m_op );
break;
- case _CR8:
+ case p_CR8:
m_imm1.d = RDOP();
switch( m_imm1.d )
{
@@ -3922,7 +3922,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst)
break;
}
break;
- case _CR16:
+ case p_CR16:
m_imm1.d = RDOP();
switch( m_imm1.d )
{
@@ -3943,7 +3943,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst)
break;
}
break;
- case _CR32:
+ case p_CR32:
m_imm1.d = RDOP();
switch( m_imm1.d )
{
@@ -3976,47 +3976,47 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst)
break;
}
break;
- case _D8:
+ case p_D8:
m_ea1.d = RDOP();
m_ea1.d = m_pc.d + m_ea1.sb.l;
break;
- case _D16:
+ case p_D16:
m_ea1.d = RDOP();
m_ea1.b.h = RDOP();
m_ea1.d = m_pc.d + m_ea1.sw.l;
break;
- case _I3:
+ case p_I3:
m_imm1.d = m_op & 0x07;
break;
- case _I8:
+ case p_I8:
m_imm1.d = RDOP();
break;
- case _I16:
+ case p_I16:
m_imm1.d = RDOP();
m_imm1.b.h = RDOP();
break;
- case _I24:
+ case p_I24:
m_imm1.d = RDOP();
m_imm1.b.h = RDOP();
m_imm1.b.h2 = RDOP();
break;
- case _I32:
+ case p_I32:
m_imm1.d = RDOP();
m_imm1.b.h = RDOP();
m_imm1.b.h2 = RDOP();
m_imm1.b.h3 = RDOP();
break;
- case _M:
+ case p_M:
m_ea1.d = m_ea2.d;
break;
- case _M8:
+ case p_M8:
m_ea1.d = RDOP();
break;
- case _M16:
+ case p_M16:
m_ea1.d = RDOP();
m_ea1.b.h = RDOP();
break;
- case _R:
+ case p_R:
m_p1_reg8 = m_p2_reg8;
m_p1_reg16 = m_p2_reg16;
m_p1_reg32 = m_p2_reg32;
@@ -4025,25 +4025,25 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst)
switch ( inst->operand2 )
{
- case _A:
+ case p_A:
m_p2_reg8 = &m_xwa[m_regbank].b.l;
break;
- case _F: /* F' */
+ case p_F: /* F' */
m_p2_reg8 = &m_f2.b.l;
break;
- case _SR:
+ case p_SR:
m_p2_reg16 = &m_sr.w.l;
break;
- case _C8:
+ case p_C8:
m_p2_reg8 = get_reg8_current( m_op );
break;
- case _C16:
+ case p_C16:
m_p2_reg16 = get_reg16_current( m_op );
break;
- case _C32:
+ case p_C32:
m_p2_reg32 = get_reg32_current( m_op );
break;
- case _CR8:
+ case p_CR8:
m_imm1.d = RDOP();
switch( m_imm1.d )
{
@@ -4064,7 +4064,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst)
break;
}
break;
- case _CR16:
+ case p_CR16:
m_imm1.d = RDOP();
switch( m_imm1.d )
{
@@ -4085,7 +4085,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst)
break;
}
break;
- case _CR32:
+ case p_CR32:
m_imm1.d = RDOP();
switch( m_imm1.d )
{
@@ -4118,35 +4118,35 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst)
break;
}
break;
- case _D8:
+ case p_D8:
m_ea2.d = RDOP();
m_ea2.d = m_pc.d + m_ea2.sb.l;
break;
- case _D16:
+ case p_D16:
m_ea2.d = RDOP();
m_ea2.b.h = RDOP();
m_ea2.d = m_pc.d + m_ea2.sw.l;
break;
- case _I3:
+ case p_I3:
m_imm2.d = m_op & 0x07;
break;
- case _I8:
+ case p_I8:
m_imm2.d = RDOP();
break;
- case _I16:
+ case p_I16:
m_imm2.d = RDOP();
m_imm2.b.h = RDOP();
break;
- case _I32:
+ case p_I32:
m_imm2.d = RDOP();
m_imm2.b.h = RDOP();
m_imm2.b.h2 = RDOP();
m_imm2.b.h3 = RDOP();
break;
- case _M8:
+ case p_M8:
m_ea2.d = RDOP();
break;
- case _M16:
+ case p_M16:
m_ea2.d = RDOP();
m_ea2.b.h = RDOP();
break;
@@ -4157,1181 +4157,1181 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst)
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_80[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_PUSHBM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_RLDRM, _A, _M, 12 }, { &tlcs900h_device::_RRDRM, _A, _M, 12 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LDI, 0, 0, 10 }, { &tlcs900h_device::_LDIR, 0, 0, 10 }, { &tlcs900h_device::_LDD, 0, 0, 10 }, { &tlcs900h_device::_LDDR, 0, 0, 10 },
- { &tlcs900h_device::_CPI, 0, 0, 8 }, { &tlcs900h_device::_CPIR, 0, 0, 10 }, { &tlcs900h_device::_CPD, 0, 0, 8 }, { &tlcs900h_device::_CPDR, 0, 0, 10 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_PUSHBM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_RLDRM, p_A, p_M, 12 }, { &tlcs900h_device::op_RRDRM, p_A, p_M, 12 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDI, 0, 0, 10 }, { &tlcs900h_device::op_LDIR, 0, 0, 10 }, { &tlcs900h_device::op_LDD, 0, 0, 10 }, { &tlcs900h_device::op_LDDR, 0, 0, 10 },
+ { &tlcs900h_device::op_CPI, 0, 0, 8 }, { &tlcs900h_device::op_CPIR, 0, 0, 10 }, { &tlcs900h_device::op_CPD, 0, 0, 8 }, { &tlcs900h_device::op_CPDR, 0, 0, 10 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 },
- { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADDBMI, _M, _I8, 7 }, { &tlcs900h_device::_ADCBMI, _M, _I8, 7 }, { &tlcs900h_device::_SUBBMI, _M, _I8, 7 }, { &tlcs900h_device::_SBCBMI, _M, _I8, 7 },
- { &tlcs900h_device::_ANDBMI, _M, _I8, 7 }, { &tlcs900h_device::_XORBMI, _M, _I8, 7 }, { &tlcs900h_device::_ORBMI, _M, _I8, 7 }, { &tlcs900h_device::_CPBMI, _M, _I8, 6 },
+ { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ADCBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SUBBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SBCBMI, p_M, p_I8, 7 },
+ { &tlcs900h_device::op_ANDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_XORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_CPBMI, p_M, p_I8, 6 },
/* 40 - 5F */
- { &tlcs900h_device::_MULBRM, _MC16, _M, 18}, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_MULBRM, _MC16, _M, 18}, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 },
- { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 },
- { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 },
- { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 },
+ { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18}, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18}, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 },
+ { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 },
+ { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 },
+ { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 },
/* 60 - 7F */
- { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 },
- { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_RLCBM, _M, 0, 8 }, { &tlcs900h_device::_RRCBM, _M, 0, 8 }, { &tlcs900h_device::_RLBM, _M, 0, 8 }, { &tlcs900h_device::_RRBM, _M, 0, 8 },
- { &tlcs900h_device::_SLABM, _M, 0, 8 }, { &tlcs900h_device::_SRABM, _M, 0, 8 }, { &tlcs900h_device::_SLLBM, _M, 0, 8 }, { &tlcs900h_device::_SRLBM, _M, 0, 8 },
+ { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_RLCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RLBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRBM, p_M, 0, 8 },
+ { &tlcs900h_device::op_SLABM, p_M, 0, 8 }, { &tlcs900h_device::op_SRABM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLBM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLBM, p_M, 0, 8 },
/* 80 - 9F */
- { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 },
/* A0 - BF */
- { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 },
- { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 },
- { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 },
- { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 },
/* C0 - DF */
- { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 },
- { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 },
/* E0 - FF */
- { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 },
- { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 },
- { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 },
- { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 },
- { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 },
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_88[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_PUSHBM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_RLDRM, _A, _M, 12 }, { &tlcs900h_device::_RRDRM, _A, _M, 12 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_PUSHBM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_RLDRM, p_A, p_M, 12 }, { &tlcs900h_device::op_RRDRM, p_A, p_M, 12 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 },
- { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADDBMI, _M, _I8, 7 }, { &tlcs900h_device::_ADCBMI, _M, _I8, 7 }, { &tlcs900h_device::_SUBBMI, _M, _I8, 7 }, { &tlcs900h_device::_SBCBMI, _M, _I8, 7 },
- { &tlcs900h_device::_ANDBMI, _M, _I8, 7 }, { &tlcs900h_device::_XORBMI, _M, _I8, 7 }, { &tlcs900h_device::_ORBMI, _M, _I8, 7 }, { &tlcs900h_device::_CPBMI, _M, _I8, 6 },
+ { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ADCBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SUBBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SBCBMI, p_M, p_I8, 7 },
+ { &tlcs900h_device::op_ANDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_XORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_CPBMI, p_M, p_I8, 6 },
/* 40 - 5F */
- { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 },
- { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 },
- { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 },
- { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 },
+ { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 },
+ { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 },
+ { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 },
+ { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 },
/* 60 - 7F */
- { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 },
- { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_RLCBM, _M, 0, 8 }, { &tlcs900h_device::_RRCBM, _M, 0, 8 }, { &tlcs900h_device::_RLBM, _M, 0, 8 }, { &tlcs900h_device::_RRBM, _M, 0, 8 },
- { &tlcs900h_device::_SLABM, _M, 0, 8 }, { &tlcs900h_device::_SRABM, _M, 0, 8 }, { &tlcs900h_device::_SLLBM, _M, 0, 8 }, { &tlcs900h_device::_SRLBM, _M, 0, 8 },
+ { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_RLCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RLBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRBM, p_M, 0, 8 },
+ { &tlcs900h_device::op_SLABM, p_M, 0, 8 }, { &tlcs900h_device::op_SRABM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLBM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLBM, p_M, 0, 8 },
/* 80 - 9F */
- { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 },
/* A0 - BF */
- { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 },
- { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 },
- { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 },
- { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 },
/* C0 - DF */
- { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 },
- { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 },
/* E0 - FF */
- { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 },
- { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 },
- { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 },
- { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 },
- { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 },
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_90[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_PUSHWM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LDIW, 0, 0, 10 }, { &tlcs900h_device::_LDIRW, 0, 0, 10 }, { &tlcs900h_device::_LDDW, 0, 0, 10 }, { &tlcs900h_device::_LDDRW, 0, 0, 10 },
- { &tlcs900h_device::_CPIW, 0, 0, 8 }, { &tlcs900h_device::_CPIRW, 0, 0, 10 }, { &tlcs900h_device::_CPDW, 0, 0, 8 }, { &tlcs900h_device::_CPDRW, 0, 0, 10 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_PUSHWM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDIW, 0, 0, 10 }, { &tlcs900h_device::op_LDIRW, 0, 0, 10 }, { &tlcs900h_device::op_LDDW, 0, 0, 10 }, { &tlcs900h_device::op_LDDRW, 0, 0, 10 },
+ { &tlcs900h_device::op_CPIW, 0, 0, 8 }, { &tlcs900h_device::op_CPIRW, 0, 0, 10 }, { &tlcs900h_device::op_CPDW, 0, 0, 8 }, { &tlcs900h_device::op_CPDRW, 0, 0, 10 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 },
- { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADDWMI, _M, _I16, 8 }, { &tlcs900h_device::_ADCWMI, _M, _I16, 8 }, { &tlcs900h_device::_SUBWMI, _M, _I16, 8 }, { &tlcs900h_device::_SBCWMI, _M, _I16, 8 },
- { &tlcs900h_device::_ANDWMI, _M, _I16, 8 }, { &tlcs900h_device::_XORWMI, _M, _I16, 8 }, { &tlcs900h_device::_ORWMI, _M, _I16, 8 }, { &tlcs900h_device::_CPWMI, _M, _I16, 6 },
+ { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ADCWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SUBWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SBCWMI, p_M, p_I16, 8 },
+ { &tlcs900h_device::op_ANDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_XORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_CPWMI, p_M, p_I16, 6 },
/* 40 - 5F */
- { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 },
- { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 },
- { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 },
- { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 },
- { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 },
- { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 },
- { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 },
- { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 },
+ { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 },
+ { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 },
+ { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 },
+ { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 },
/* 60 - 7F */
- { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 },
- { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_RLCWM, _M, 0, 8 }, { &tlcs900h_device::_RRCWM, _M, 0, 8 }, { &tlcs900h_device::_RLWM, _M, 0, 8 }, { &tlcs900h_device::_RRWM, _M, 0, 8 },
- { &tlcs900h_device::_SLAWM, _M, 0, 8 }, { &tlcs900h_device::_SRAWM, _M, 0, 8 }, { &tlcs900h_device::_SLLWM, _M, 0, 8 }, { &tlcs900h_device::_SRLWM, _M, 0, 8 },
+ { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_RLCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RLWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRWM, p_M, 0, 8 },
+ { &tlcs900h_device::op_SLAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLWM, p_M, 0, 8 },
/* 80 - 9F */
- { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 },
/* A0 - BF */
- { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 },
- { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 },
- { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 },
- { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 },
/* C0 - DF */
- { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 },
- { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 },
/* E0 - FF */
- { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 },
- { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 },
- { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 },
- { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 },
- { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 },
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_98[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_PUSHWM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_PUSHWM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 },
- { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADDWMI, _M, _I16, 8 }, { &tlcs900h_device::_ADCWMI, _M, _I16, 8 }, { &tlcs900h_device::_SUBWMI, _M, _I16, 8 }, { &tlcs900h_device::_SBCWMI, _M, _I16, 8 },
- { &tlcs900h_device::_ANDWMI, _M, _I16, 8 }, { &tlcs900h_device::_XORWMI, _M, _I16, 8 }, { &tlcs900h_device::_ORWMI, _M, _I16, 8 }, { &tlcs900h_device::_CPWMI, _M, _I16, 6 },
+ { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ADCWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SUBWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SBCWMI, p_M, p_I16, 8 },
+ { &tlcs900h_device::op_ANDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_XORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_CPWMI, p_M, p_I16, 6 },
/* 40 - 5F */
- { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 },
- { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 },
- { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 },
- { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 },
- { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 },
- { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 },
- { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 },
- { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 },
+ { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 },
+ { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 },
+ { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 },
+ { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 },
/* 60 - 7F */
- { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 },
- { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_RLCWM, _M, 0, 8 }, { &tlcs900h_device::_RRCWM, _M, 0, 8 }, { &tlcs900h_device::_RLWM, _M, 0, 8 }, { &tlcs900h_device::_RRWM, _M, 0, 8 },
- { &tlcs900h_device::_SLAWM, _M, 0, 8 }, { &tlcs900h_device::_SRAWM, _M, 0, 8 }, { &tlcs900h_device::_SLLWM, _M, 0, 8 }, { &tlcs900h_device::_SRLWM, _M, 0, 8 },
+ { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_RLCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RLWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRWM, p_M, 0, 8 },
+ { &tlcs900h_device::op_SLAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLWM, p_M, 0, 8 },
/* 80 - 9F */
- { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 },
/* A0 - BF */
- { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 },
- { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 },
- { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 },
- { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 },
/* C0 - DF */
- { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 },
- { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 },
/* E0 - FF */
- { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 },
- { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 },
- { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 },
- { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 },
- { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 },
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_a0[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 40 - 5F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 60 - 7F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 80 - 9F */
- { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 },
- { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 },
- { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 },
- { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 },
+ { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 },
/* A0 - BF */
- { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 },
- { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 },
- { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 },
- { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 },
- { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 },
- { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 },
- { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 },
- { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 },
+ { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 },
/* C0 - DF */
- { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 },
- { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 },
- { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 },
- { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 },
- { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 },
- { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 },
+ { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 },
/* E0 - FF */
- { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 },
- { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 },
- { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 },
- { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 },
- { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 },
- { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 },
+ { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 },
+ { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 },
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_b0[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_LDBMI, _M, _I8, 5 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMI, _M, _I16, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_POPBM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_POPWM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LDBMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDBMI, p_M, p_I8, 5 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMI, p_M, p_I16, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_POPBM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_POPWM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDBMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 },
- { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 },
- { &tlcs900h_device::_ANDCFBRM, _A, _M, 8 }, { &tlcs900h_device::_ORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_XORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_LDCFBRM, _A, _M, 8 },
- { &tlcs900h_device::_STCFBRM, _A, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 },
- { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ANDCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_ORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_XORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_LDCFBRM, p_A, p_M, 8 },
+ { &tlcs900h_device::op_STCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 },
+ { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 40 - 5F */
- { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 },
- { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 },
- { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 },
+ { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 },
+ { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 60 - 7F */
- { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 },
- { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 },
+ { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 80 - 9F */
- { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 },
+ { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 },
/* A0 - BF */
- { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 },
- { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 },
- { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 },
- { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 },
- { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 },
- { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 },
+ { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 },
+ { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 },
+ { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 },
/* C0 - DF */
- { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 },
- { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 },
- { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 },
- { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
+ { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
/* E0 - FF */
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 },
- { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 },
- { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 },
- { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 },
+ { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 },
+ { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 },
+ { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_b8[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_LDBMI, _M, _I8, 5 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMI, _M, _I16, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_POPBM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_POPWM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LDBMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDBMI, p_M, p_I8, 5 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMI, p_M, p_I16, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_POPBM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_POPWM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDBMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 },
- { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 },
- { &tlcs900h_device::_ANDCFBRM, _A, _M, 8 }, { &tlcs900h_device::_ORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_XORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_LDCFBRM, _A, _M, 8 },
- { &tlcs900h_device::_STCFBRM, _A, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 },
- { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ANDCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_ORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_XORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_LDCFBRM, p_A, p_M, 8 },
+ { &tlcs900h_device::op_STCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 },
+ { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 40 - 5F */
- { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 },
- { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 },
- { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 },
+ { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 },
+ { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 60 - 7F */
- { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 },
- { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 },
+ { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 80 - 9F */
- { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 },
+ { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 },
/* A0 - BF */
- { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 },
- { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 },
- { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 },
- { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 },
- { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 },
- { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 },
- { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 },
+ { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 },
+ { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 },
+ { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 },
/* C0 - DF */
- { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 },
- { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 },
- { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 },
- { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
+ { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
/* E0 - FF */
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_c0[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_PUSHBM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_RLDRM, _A, _M, 12 }, { &tlcs900h_device::_RRDRM, _A, _M, 12 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_PUSHBM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_RLDRM, p_A, p_M, 12 }, { &tlcs900h_device::op_RRDRM, p_A, p_M, 12 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 },
- { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADDBMI, _M, _I8, 7 }, { &tlcs900h_device::_ADCBMI, _M, _I8, 7 }, { &tlcs900h_device::_SUBBMI, _M, _I8, 7 }, { &tlcs900h_device::_SBCBMI, _M, _I8, 7 },
- { &tlcs900h_device::_ANDBMI, _M, _I8, 7 }, { &tlcs900h_device::_XORBMI, _M, _I8, 7 }, { &tlcs900h_device::_ORBMI, _M, _I8, 7 }, { &tlcs900h_device::_CPBMI, _M, _I8, 6 },
+ { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ADCBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SUBBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SBCBMI, p_M, p_I8, 7 },
+ { &tlcs900h_device::op_ANDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_XORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_CPBMI, p_M, p_I8, 6 },
/* 40 - 5F */
- { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 },
- { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 },
- { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 },
- { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 },
- { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 },
+ { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 },
+ { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 },
+ { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 },
+ { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 },
+ { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 },
/* 60 - 7F */
- { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 },
- { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_RLCBM, _M, 0, 8 }, { &tlcs900h_device::_RRCBM, _M, 0, 8 }, { &tlcs900h_device::_RLBM, _M, 0, 8 }, { &tlcs900h_device::_RRBM, _M, 0, 8 },
- { &tlcs900h_device::_SLABM, _M, 0, 8 }, { &tlcs900h_device::_SRABM, _M, 0, 8 }, { &tlcs900h_device::_SLLBM, _M, 0, 8 }, { &tlcs900h_device::_SRLBM, _M, 0, 8 },
+ { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_RLCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RLBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRBM, p_M, 0, 8 },
+ { &tlcs900h_device::op_SLABM, p_M, 0, 8 }, { &tlcs900h_device::op_SRABM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLBM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLBM, p_M, 0, 8 },
/* 80 - 9F */
- { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 },
/* A0 - BF */
- { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 },
- { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 },
- { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 },
- { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 },
- { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 },
/* C0 - DF */
- { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 },
- { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 },
- { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 },
/* E0 - FF */
- { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 },
- { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 },
- { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 },
- { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 },
- { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 },
- { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 },
- { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 },
+ { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 },
+ { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 },
+ { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 },
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_c8[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBRI, _R, _I8, 4 },
- { &tlcs900h_device::_PUSHBR, _R, 0, 6 }, { &tlcs900h_device::_POPBR, _R, 0, 6 }, { &tlcs900h_device::_CPLBR, _R, 0, 4 }, { &tlcs900h_device::_NEGBR, _R, 0, 5 },
- { &tlcs900h_device::_MULBRI, _R, _I8, 18}, { &tlcs900h_device::_MULSBRI, _R, _I8, 18 }, { &tlcs900h_device::_DIVBRI, _R, _I8, 22 }, { &tlcs900h_device::_DIVSBRI, _R, _I8, 24 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DAABR, _R, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DJNZB, _R, _D8, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBRI, p_R, p_I8, 4 },
+ { &tlcs900h_device::op_PUSHBR, p_R, 0, 6 }, { &tlcs900h_device::op_POPBR, p_R, 0, 6 }, { &tlcs900h_device::op_CPLBR, p_R, 0, 4 }, { &tlcs900h_device::op_NEGBR, p_R, 0, 5 },
+ { &tlcs900h_device::op_MULBRI, p_R, p_I8, 18}, { &tlcs900h_device::op_MULSBRI, p_R, p_I8, 18 }, { &tlcs900h_device::op_DIVBRI, p_R, p_I8, 22 }, { &tlcs900h_device::op_DIVSBRI, p_R, p_I8, 24 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DAABR, p_R, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DJNZB, p_R, p_D8, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_ANDCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_ORCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_XORCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_LDCFBIR, _I8, _R, 4 },
- { &tlcs900h_device::_STCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_ANDCFBRR, _A, _R, 4 }, { &tlcs900h_device::_ORCFBRR, _A, _R, 4 }, { &tlcs900h_device::_XORCFBRR, _A, _R, 4 }, { &tlcs900h_device::_LDCFBRR, _A, _R, 4 },
- { &tlcs900h_device::_STCFBRR, _A, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDCBRR, _CR8, _R, 1 }, { &tlcs900h_device::_LDCBRR, _R, _CR8, 1 },
- { &tlcs900h_device::_RESBIR, _I8, _R, 4 }, { &tlcs900h_device::_SETBIR, _I8, _R, 4 }, { &tlcs900h_device::_CHGBIR, _I8, _R, 4 }, { &tlcs900h_device::_BITBIR, _I8, _R, 4 },
- { &tlcs900h_device::_TSETBIR, _I8, _R, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_ANDCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_ORCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_XORCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_LDCFBIR, p_I8, p_R, 4 },
+ { &tlcs900h_device::op_STCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_ANDCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_ORCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_XORCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_LDCFBRR, p_A, p_R, 4 },
+ { &tlcs900h_device::op_STCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDCBRR, p_CR8, p_R, 1 }, { &tlcs900h_device::op_LDCBRR, p_R, p_CR8, 1 },
+ { &tlcs900h_device::op_RESBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_SETBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_CHGBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_BITBIR, p_I8, p_R, 4 },
+ { &tlcs900h_device::op_TSETBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 40 - 5F */
- { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 },
- { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 },
- { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 },
- { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 },
- { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 },
- { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 },
- { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 },
- { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 },
+ { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 },
+ { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 },
+ { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 },
+ { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 },
+ { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 },
+ { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 },
+ { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 },
+ { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 },
/* 60 - 7F */
- { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 },
- { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 },
- { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 },
- { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 },
- { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 },
- { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 },
- { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 },
- { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 },
+ { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 },
+ { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 },
+ { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 },
+ { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 },
/* 80 - 9F */
- { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 },
- { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 },
- { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 },
- { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 },
- { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 },
- { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 },
- { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 },
- { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 },
+ { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 },
+ { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 },
/* A0 - BF */
- { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 },
- { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 },
- { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 },
- { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 },
- { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 },
- { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 },
- { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 },
- { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 },
+ { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 },
+ { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 },
+ { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 },
+ { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 },
/* C0 - DF */
- { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 },
- { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 },
- { &tlcs900h_device::_ADDBRI, _R, _I8, 4 }, { &tlcs900h_device::_ADCBRI, _R, _I8, 4 }, { &tlcs900h_device::_SUBBRI, _R, _I8, 4 }, { &tlcs900h_device::_SBCBRI, _R, _I8, 4 },
- { &tlcs900h_device::_ANDBRI, _R, _I8, 4 }, { &tlcs900h_device::_XORBRI, _R, _I8, 4 }, { &tlcs900h_device::_ORBRI, _R, _I8, 4 }, { &tlcs900h_device::_CPBRI, _R, _I8, 4 },
- { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 },
- { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 },
- { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 },
- { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 },
+ { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_ADDBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_ADCBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_SUBBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_SBCBRI, p_R, p_I8, 4 },
+ { &tlcs900h_device::op_ANDBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_XORBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_ORBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I8, 4 },
+ { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 },
+ { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 },
/* E0 - FF */
- { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 },
- { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 },
- { &tlcs900h_device::_RLCBIR, _I8, _R, 6 }, { &tlcs900h_device::_RRCBIR, _I8, _R, 6 }, { &tlcs900h_device::_RLBIR, _I8, _R, 6 }, { &tlcs900h_device::_RRBIR, _I8, _R, 6 },
- { &tlcs900h_device::_SLABIR, _I8, _R, 6 }, { &tlcs900h_device::_SRABIR, _I8, _R, 6 }, { &tlcs900h_device::_SLLBIR, _I8, _R, 6 }, { &tlcs900h_device::_SRLBIR, _I8, _R, 6 },
- { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 },
- { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 },
- { &tlcs900h_device::_RLCBRR, _A, _R, 6 }, { &tlcs900h_device::_RRCBRR, _A, _R, 6 }, { &tlcs900h_device::_RLBRR, _A, _R, 6 }, { &tlcs900h_device::_RRBRR, _A, _R, 6 },
- { &tlcs900h_device::_SLABRR, _A, _R, 6 }, { &tlcs900h_device::_SRABRR, _A, _R, 6 }, { &tlcs900h_device::_SLLBRR, _A, _R, 6 }, { &tlcs900h_device::_SRLBRR, _A, _R, 6 }
+ { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_RLCBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRCBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RLBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRBIR, p_I8, p_R, 6 },
+ { &tlcs900h_device::op_SLABIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRABIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SLLBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRLBIR, p_I8, p_R, 6 },
+ { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 },
+ { &tlcs900h_device::op_RLCBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRCBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RLBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRBRR, p_A, p_R, 6 },
+ { &tlcs900h_device::op_SLABRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRABRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SLLBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRLBRR, p_A, p_R, 6 }
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_d0[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_PUSHWM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_PUSHWM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 },
- { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADDWMI, _M, _I16, 8 }, { &tlcs900h_device::_ADCWMI, _M, _I16, 8 }, { &tlcs900h_device::_SUBWMI, _M, _I16, 8 }, { &tlcs900h_device::_SBCWMI, _M, _I16, 8 },
- { &tlcs900h_device::_ANDWMI, _M, _I16, 8 }, { &tlcs900h_device::_XORWMI, _M, _I16, 8 }, { &tlcs900h_device::_ORWMI, _M, _I16, 8 }, { &tlcs900h_device::_CPWMI, _M, _I16, 6 },
+ { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ADCWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SUBWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SBCWMI, p_M, p_I16, 8 },
+ { &tlcs900h_device::op_ANDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_XORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_CPWMI, p_M, p_I16, 6 },
/* 40 - 5F */
- { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 },
- { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 },
- { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 },
- { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 },
- { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 },
- { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 },
- { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 },
- { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 },
+ { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 },
+ { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 },
+ { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 },
+ { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 },
+ { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 },
/* 60 - 7F */
- { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 },
- { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 },
- { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_RLCWM, _M, 0, 8 }, { &tlcs900h_device::_RRCWM, _M, 0, 8 }, { &tlcs900h_device::_RLWM, _M, 0, 8 }, { &tlcs900h_device::_RRWM, _M, 0, 8 },
- { &tlcs900h_device::_SLAWM, _M, 0, 8 }, { &tlcs900h_device::_SRAWM, _M, 0, 8 }, { &tlcs900h_device::_SLLWM, _M, 0, 8 }, { &tlcs900h_device::_SRLWM, _M, 0, 8 },
+ { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_RLCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RLWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRWM, p_M, 0, 8 },
+ { &tlcs900h_device::op_SLAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLWM, p_M, 0, 8 },
/* 80 - 9F */
- { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 },
/* A0 - BF */
- { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 },
- { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 },
- { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 },
- { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 },
- { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 },
/* C0 - DF */
- { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 },
- { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 },
- { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 },
/* E0 - FF */
- { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 },
- { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 },
- { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 },
- { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 },
- { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 },
- { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 },
- { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 },
+ { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 },
+ { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 },
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_d8[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWRI, _R, _I16, 4 },
- { &tlcs900h_device::_PUSHWR, _R, 0, 5 }, { &tlcs900h_device::_POPWR, _R, 0, 6 }, { &tlcs900h_device::_CPLWR, _R, 0, 4 }, { &tlcs900h_device::_NEGWR, _R, 0, 5 },
- { &tlcs900h_device::_MULWRI, _R, _I16, 26 }, { &tlcs900h_device::_MULSWRI, _R, _I16, 26 }, { &tlcs900h_device::_DIVWRI, _R, _I16, 30 }, { &tlcs900h_device::_DIVSWRI, _R, _I16, 32 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_BS1FRR, _A, _R, 4 }, { &tlcs900h_device::_BS1BRR, _A, _R, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_EXTZWR, _R, 0, 4 }, { &tlcs900h_device::_EXTSWR, _R, 0, 5 },
- { &tlcs900h_device::_PAAWR, _R, 0, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_MIRRW, _R, 0, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_MULAR, _R, 0, 31 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DJNZW, _R, _D8, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWRI, p_R, p_I16, 4 },
+ { &tlcs900h_device::op_PUSHWR, p_R, 0, 5 }, { &tlcs900h_device::op_POPWR, p_R, 0, 6 }, { &tlcs900h_device::op_CPLWR, p_R, 0, 4 }, { &tlcs900h_device::op_NEGWR, p_R, 0, 5 },
+ { &tlcs900h_device::op_MULWRI, p_R, p_I16, 26 }, { &tlcs900h_device::op_MULSWRI, p_R, p_I16, 26 }, { &tlcs900h_device::op_DIVWRI, p_R, p_I16, 30 }, { &tlcs900h_device::op_DIVSWRI, p_R, p_I16, 32 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_BS1FRR, p_A, p_R, 4 }, { &tlcs900h_device::op_BS1BRR, p_A, p_R, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_EXTZWR, p_R, 0, 4 }, { &tlcs900h_device::op_EXTSWR, p_R, 0, 5 },
+ { &tlcs900h_device::op_PAAWR, p_R, 0, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_MIRRW, p_R, 0, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_MULAR, p_R, 0, 31 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DJNZW, p_R, p_D8, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_ANDCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_ORCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_XORCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_LDCFWIR, _I8, _R, 4 },
- { &tlcs900h_device::_STCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_ANDCFWRR, _A, _R, 4 }, { &tlcs900h_device::_ORCFWRR, _A, _R, 4 }, { &tlcs900h_device::_XORCFWRR, _A, _R, 4 }, { &tlcs900h_device::_LDCFWRR, _A, _R, 4 },
- { &tlcs900h_device::_STCFWRR, _A, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDCWRR, _CR16, _R, 1 }, { &tlcs900h_device::_LDCWRR, _R, _CR16, 1 },
- { &tlcs900h_device::_RESWIR, _I8, _R, 4 }, { &tlcs900h_device::_SETWIR, _I8, _R, 4 }, { &tlcs900h_device::_CHGWIR, _I8, _R, 4 }, { &tlcs900h_device::_BITWIR, _I8, _R, 4 },
- { &tlcs900h_device::_TSETWIR, _I8, _R, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_MINC1, _I16, _R, 8 }, { &tlcs900h_device::_MINC2, _I16, _R, 8 }, { &tlcs900h_device::_MINC4, _I16, _R, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_MDEC1, _I16, _R, 7 }, { &tlcs900h_device::_MDEC2, _I16, _R, 7 }, { &tlcs900h_device::_MDEC4, _I16, _R, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_ANDCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_ORCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_XORCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_LDCFWIR, p_I8, p_R, 4 },
+ { &tlcs900h_device::op_STCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_ANDCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_ORCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_XORCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_LDCFWRR, p_A, p_R, 4 },
+ { &tlcs900h_device::op_STCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDCWRR, p_CR16, p_R, 1 }, { &tlcs900h_device::op_LDCWRR, p_R, p_CR16, 1 },
+ { &tlcs900h_device::op_RESWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_SETWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_CHGWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_BITWIR, p_I8, p_R, 4 },
+ { &tlcs900h_device::op_TSETWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_MINC1, p_I16, p_R, 8 }, { &tlcs900h_device::op_MINC2, p_I16, p_R, 8 }, { &tlcs900h_device::op_MINC4, p_I16, p_R, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_MDEC1, p_I16, p_R, 7 }, { &tlcs900h_device::op_MDEC2, p_I16, p_R, 7 }, { &tlcs900h_device::op_MDEC4, p_I16, p_R, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 40 - 5F */
- { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 },
- { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 },
- { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 },
- { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 },
- { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 },
- { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 },
- { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 },
- { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 },
+ { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 },
+ { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 },
+ { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 },
+ { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 },
+ { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 },
+ { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 },
+ { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 },
+ { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 },
/* 60 - 7F */
- { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 },
- { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 },
- { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 },
- { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 },
- { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 },
- { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 },
- { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 },
- { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 },
+ { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 },
+ { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 },
+ { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 },
+ { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 },
/* 80 - 9F */
- { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 },
- { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 },
- { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 },
- { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 },
- { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 },
- { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 },
- { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 },
- { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 },
+ { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 },
+ { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 },
/* A0 - BF */
- { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 },
- { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 },
- { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 },
- { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 },
- { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 },
- { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 },
- { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 },
- { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 },
+ { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 },
+ { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 },
+ { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 },
+ { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 },
/* C0 - DF */
- { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 },
- { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 },
- { &tlcs900h_device::_ADDWRI, _R, _I16, 4 }, { &tlcs900h_device::_ADCWRI, _R, _I16, 4 }, { &tlcs900h_device::_SUBWRI, _R, _I16, 4 }, { &tlcs900h_device::_SBCWRI, _R, _I16, 4 },
- { &tlcs900h_device::_ANDWRI, _R, _I16, 4 }, { &tlcs900h_device::_XORWRI, _R, _I16, 4 }, { &tlcs900h_device::_ORWRI, _R, _I16, 4 }, { &tlcs900h_device::_CPWRI, _R, _I16, 4 },
- { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 },
- { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 },
- { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 },
- { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 },
+ { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_ADDWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_ADCWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_SUBWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_SBCWRI, p_R, p_I16, 4 },
+ { &tlcs900h_device::op_ANDWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_XORWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_ORWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I16, 4 },
+ { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 },
+ { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 },
/* E0 - FF */
- { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 },
- { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 },
- { &tlcs900h_device::_RLCWIR, _I8, _R, 6 }, { &tlcs900h_device::_RRCWIR, _I8, _R, 6 }, { &tlcs900h_device::_RLWIR, _I8, _R, 6 }, { &tlcs900h_device::_RRWIR, _I8, _R, 6 },
- { &tlcs900h_device::_SLAWIR, _I8, _R, 6 }, { &tlcs900h_device::_SRAWIR, _I8, _R, 6 }, { &tlcs900h_device::_SLLWIR, _I8, _R, 6 }, { &tlcs900h_device::_SRLWIR, _I8, _R, 6 },
- { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 },
- { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 },
- { &tlcs900h_device::_RLCWRR, _A, _R, 6 }, { &tlcs900h_device::_RRCWRR, _A, _R, 6 }, { &tlcs900h_device::_RLWRR, _A, _R, 6 }, { &tlcs900h_device::_RRWRR, _A, _R, 6 },
- { &tlcs900h_device::_SLAWRR, _A, _R, 6 }, { &tlcs900h_device::_SRAWRR, _A, _R, 6 }, { &tlcs900h_device::_SLLWRR, _A, _R, 6 }, { &tlcs900h_device::_SRLWRR, _A, _R, 6 }
+ { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_RLCWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRCWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RLWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRWIR, p_I8, p_R, 6 },
+ { &tlcs900h_device::op_SLAWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRAWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SLLWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRLWIR, p_I8, p_R, 6 },
+ { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 },
+ { &tlcs900h_device::op_RLCWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRCWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RLWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRWRR, p_A, p_R, 6 },
+ { &tlcs900h_device::op_SLAWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRAWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SLLWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRLWRR, p_A, p_R, 6 }
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_e0[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 40 - 5F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 60 - 7F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 80 - 9F */
- { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 },
- { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 },
- { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 },
- { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 },
+ { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 },
/* A0 - BF */
- { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 },
- { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 },
- { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 },
- { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 },
- { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 },
- { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 },
- { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 },
- { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 },
+ { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 },
/* C0 - DF */
- { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 },
- { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 },
- { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 },
- { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 },
- { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 },
- { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 },
+ { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 },
/* E0 - FF */
- { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 },
- { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 },
- { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 },
- { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 },
- { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 },
- { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 },
- { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 },
+ { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 },
+ { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 },
+ { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 },
+ { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 },
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_e8[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDLRI, _R, _I32, 6 },
- { &tlcs900h_device::_PUSHLR, _R, 0, 7 }, { &tlcs900h_device::_POPLR, _R, 0, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LINK, _R, _I16, 10 }, { &tlcs900h_device::_UNLK, _R, 0, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_EXTZLR, _R, 0, 4 }, { &tlcs900h_device::_EXTSLR, _R, 0, 5 },
- { &tlcs900h_device::_PAALR, _R, 0, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDLRI, p_R, p_I32, 6 },
+ { &tlcs900h_device::op_PUSHLR, p_R, 0, 7 }, { &tlcs900h_device::op_POPLR, p_R, 0, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LINK, p_R, p_I16, 10 }, { &tlcs900h_device::op_UNLK, p_R, 0, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_EXTZLR, p_R, 0, 4 }, { &tlcs900h_device::op_EXTSLR, p_R, 0, 5 },
+ { &tlcs900h_device::op_PAALR, p_R, 0, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDCLRR, _CR32, _R, 1 }, { &tlcs900h_device::_LDCLRR, _R, _CR32, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDCLRR, p_CR32, p_R, 1 }, { &tlcs900h_device::op_LDCLRR, p_R, p_CR32, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 40 - 5F */
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 60 - 7F */
- { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 },
- { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 },
- { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 },
- { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 80 - 9F */
- { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 },
- { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 },
- { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 },
- { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 },
- { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 },
- { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 },
- { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 },
- { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 },
+ { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 },
+ { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 },
+ { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 },
+ { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 },
/* A0 - BF */
- { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 },
- { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 },
- { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 },
- { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 },
- { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 },
- { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 },
+ { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 },
+ { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* C0 - DF */
- { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 },
- { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 },
- { &tlcs900h_device::_ADDLRI, _R, _I32, 7 }, { &tlcs900h_device::_ADCLRI, _R, _I32, 7 }, { &tlcs900h_device::_SUBLRI, _R, _I32, 7 }, { &tlcs900h_device::_SBCLRI, _R, _I32, 7 },
- { &tlcs900h_device::_ANDLRI, _R, _I32, 7 }, { &tlcs900h_device::_XORLRI, _R, _I32, 7 }, { &tlcs900h_device::_ORLRI, _R, _I32, 7 }, { &tlcs900h_device::_CPLRI, _R, _I32, 7 },
- { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 },
- { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 },
- { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 },
- { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 },
+ { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_ADDLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_ADCLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_SUBLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_SBCLRI, p_R, p_I32, 7 },
+ { &tlcs900h_device::op_ANDLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_XORLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_ORLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_CPLRI, p_R, p_I32, 7 },
+ { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 },
+ { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 },
/* E0 - FF */
- { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 },
- { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 },
- { &tlcs900h_device::_RLCLIR, _I8, _R, 8 }, { &tlcs900h_device::_RRCLIR, _I8, _R, 8 }, { &tlcs900h_device::_RLLIR, _I8, _R, 8 }, { &tlcs900h_device::_RRLIR, _I8, _R, 8 },
- { &tlcs900h_device::_SLALIR, _I8, _R, 8 }, { &tlcs900h_device::_SRALIR, _I8, _R, 8 }, { &tlcs900h_device::_SLLLIR, _I8, _R, 8 }, { &tlcs900h_device::_SRLLIR, _I8, _R, 8 },
- { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 },
- { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 },
- { &tlcs900h_device::_RLCLRR, _A, _R, 8 }, { &tlcs900h_device::_RRCLRR, _A, _R, 8 }, { &tlcs900h_device::_RLLRR, _A, _R, 8 }, { &tlcs900h_device::_RRLRR, _A, _R, 8 },
- { &tlcs900h_device::_SLALRR, _A, _R, 8 }, { &tlcs900h_device::_SRALRR, _A, _R, 8 }, { &tlcs900h_device::_SLLLRR, _A, _R, 8 }, { &tlcs900h_device::_SRLLRR, _A, _R, 8 }
+ { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_RLCLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_RRCLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_RLLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_RRLIR, p_I8, p_R, 8 },
+ { &tlcs900h_device::op_SLALIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_SRALIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_SLLLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_SRLLIR, p_I8, p_R, 8 },
+ { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 },
+ { &tlcs900h_device::op_RLCLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_RRCLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_RLLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_RRLRR, p_A, p_R, 8 },
+ { &tlcs900h_device::op_SLALRR, p_A, p_R, 8 }, { &tlcs900h_device::op_SRALRR, p_A, p_R, 8 }, { &tlcs900h_device::op_SLLLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_SRLLRR, p_A, p_R, 8 }
};
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_f0[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_LDBMI, _M, _I8, 5 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMI, _M, _I16, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_POPBM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_POPWM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LDBMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDBMI, p_M, p_I8, 5 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMI, p_M, p_I16, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_POPBM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_POPWM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDBMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 },
- { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 },
- { &tlcs900h_device::_ANDCFBRM, _A, _M, 4 }, { &tlcs900h_device::_ORCFBRM, _A, _M, 4 }, { &tlcs900h_device::_XORCFBRM, _A, _M, 4 }, { &tlcs900h_device::_LDCFBRM, _A, _M, 4 },
- { &tlcs900h_device::_STCFBRM, _A, _M, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 },
- { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 },
+ { &tlcs900h_device::op_ANDCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_ORCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_XORCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_LDCFBRM, p_A, p_M, 4 },
+ { &tlcs900h_device::op_STCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 },
+ { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 40 - 5F */
- { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 },
- { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 },
- { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 },
+ { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 },
+ { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 60 - 7F */
- { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 },
- { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 },
+ { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 80 - 9F */
- { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 },
- { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 },
- { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 },
- { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 },
- { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 },
- { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 },
- { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 },
- { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 },
+ { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 },
+ { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 },
+ { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 },
+ { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 },
+ { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 },
+ { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 },
+ { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 },
+ { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 },
/* A0 - BF */
- { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 },
- { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 },
- { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 },
- { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 },
- { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 },
- { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 },
- { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 },
- { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 },
+ { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 },
+ { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 },
+ { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 },
+ { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 },
+ { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 },
/* C0 - DF */
- { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 },
- { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 },
- { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 },
- { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
- { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 },
+ { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 },
+ { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 },
+ { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
+ { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 },
/* E0 - FF */
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }
};
/* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP) used as source in byte operations */
-void tlcs900h_device::_80()
+void tlcs900h_device::op_80()
{
const tlcs900inst *inst;
@@ -5349,7 +5349,7 @@ void tlcs900h_device::_80()
/* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as source in byte operations */
-void tlcs900h_device::_88()
+void tlcs900h_device::op_88()
{
const tlcs900inst *inst;
@@ -5370,7 +5370,7 @@ void tlcs900h_device::_88()
/* (XWA/XBC/XDE/XHL/XIXI/XIY/XIZ/XSP) used as source in word operations */
-void tlcs900h_device::_90()
+void tlcs900h_device::op_90()
{
const tlcs900inst *inst;
@@ -5388,7 +5388,7 @@ void tlcs900h_device::_90()
/* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as source in word operations */
-void tlcs900h_device::_98()
+void tlcs900h_device::op_98()
{
const tlcs900inst *inst;
@@ -5405,7 +5405,7 @@ void tlcs900h_device::_98()
/* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP) used as source in long word operations */
-void tlcs900h_device::_A0()
+void tlcs900h_device::op_A0()
{
const tlcs900inst *inst;
@@ -5419,7 +5419,7 @@ void tlcs900h_device::_A0()
/* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as source in long word operations */
-void tlcs900h_device::_A8()
+void tlcs900h_device::op_A8()
{
const tlcs900inst *inst;
@@ -5436,7 +5436,7 @@ void tlcs900h_device::_A8()
/* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP) used as destination in operations */
-void tlcs900h_device::_B0()
+void tlcs900h_device::op_B0()
{
const tlcs900inst *inst;
@@ -5450,7 +5450,7 @@ void tlcs900h_device::_B0()
/* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as destination in operations */
-void tlcs900h_device::_B8()
+void tlcs900h_device::op_B8()
{
const tlcs900inst *inst;
@@ -5467,7 +5467,7 @@ void tlcs900h_device::_B8()
/* memory used as source in byte operations */
-void tlcs900h_device::_C0()
+void tlcs900h_device::op_C0()
{
const tlcs900inst *inst;
uint32_t *reg = nullptr;
@@ -5596,7 +5596,7 @@ void tlcs900h_device::oC8()
/* memory used as source in word operations */
-void tlcs900h_device::_D0()
+void tlcs900h_device::op_D0()
{
const tlcs900inst *inst;
uint32_t *reg = nullptr;
@@ -5723,7 +5723,7 @@ void tlcs900h_device::oD8()
/* memory used as source in long word operations */
-void tlcs900h_device::_E0()
+void tlcs900h_device::op_E0()
{
const tlcs900inst *inst;
uint32_t *reg = nullptr;
@@ -5826,7 +5826,7 @@ void tlcs900h_device::_E0()
}
-void tlcs900h_device::_E8()
+void tlcs900h_device::op_E8()
{
const tlcs900inst *inst;
@@ -5848,7 +5848,7 @@ void tlcs900h_device::_E8()
/* memory used as destination operations */
-void tlcs900h_device::_F0()
+void tlcs900h_device::op_F0()
{
const tlcs900inst *inst;
uint32_t *reg = nullptr;
@@ -5955,82 +5955,82 @@ void tlcs900h_device::_F0()
const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic[256] =
{
/* 00 - 1F */
- { &tlcs900h_device::_NOP, 0, 0, 1 }, { &tlcs900h_device::_NORMAL, 0, 0, 4 }, { &tlcs900h_device::_PUSHWR, _SR, 0, 4 }, { &tlcs900h_device::_POPWSR, _SR, 0, 6 },
- { &tlcs900h_device::_MAX, 0, 0, 4 }, { &tlcs900h_device::_HALT, 0, 0, 8 }, { &tlcs900h_device::_EI, _I8, 0, 5 }, { &tlcs900h_device::_RETI, 0, 0, 12 },
- { &tlcs900h_device::_LDBMI, _M8, _I8, 5 }, { &tlcs900h_device::_PUSHBI, _I8, 0, 4 }, { &tlcs900h_device::_LDWMI, _M8, _I16, 6 }, { &tlcs900h_device::_PUSHWI, _I16, 0, 5 },
- { &tlcs900h_device::_INCF, 0, 0, 2 }, { &tlcs900h_device::_DECF, 0, 0, 2 }, { &tlcs900h_device::_RET, 0, 0, 9 }, { &tlcs900h_device::_RETD, _I16, 0, 9 },
- { &tlcs900h_device::_RCF, 0, 0, 2 }, { &tlcs900h_device::_SCF, 0, 0, 2 }, { &tlcs900h_device::_CCF, 0, 0, 2 }, { &tlcs900h_device::_ZCF, 0, 0, 2 },
- { &tlcs900h_device::_PUSHBR, _A, 0, 3 }, { &tlcs900h_device::_POPBR, _A, 0, 4 }, { &tlcs900h_device::_EXBRR, _F, _F, 2 }, { &tlcs900h_device::_LDF, _I8, 0, 2 },
- { &tlcs900h_device::_PUSHBR, _F, 0, 3 }, { &tlcs900h_device::_POPBR, _F, 0, 4 }, { &tlcs900h_device::_JPI, _I16, 0, 7 }, { &tlcs900h_device::_JPI, _I24, 0, 7 },
- { &tlcs900h_device::_CALLI, _I16, 0, 12 }, { &tlcs900h_device::_CALLI, _I24, 0, 12 }, { &tlcs900h_device::_CALR, _D16, 0, 12 }, { &tlcs900h_device::_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_NOP, 0, 0, 1 }, { &tlcs900h_device::op_NORMAL, 0, 0, 4 }, { &tlcs900h_device::op_PUSHWR, p_SR, 0, 4 }, { &tlcs900h_device::op_POPWSR, p_SR, 0, 6 },
+ { &tlcs900h_device::op_MAX, 0, 0, 4 }, { &tlcs900h_device::op_HALT, 0, 0, 8 }, { &tlcs900h_device::op_EI, p_I8, 0, 5 }, { &tlcs900h_device::op_RETI, 0, 0, 12 },
+ { &tlcs900h_device::op_LDBMI, p_M8, p_I8, 5 }, { &tlcs900h_device::op_PUSHBI, p_I8, 0, 4 }, { &tlcs900h_device::op_LDWMI, p_M8, p_I16, 6 }, { &tlcs900h_device::op_PUSHWI, p_I16, 0, 5 },
+ { &tlcs900h_device::op_INCF, 0, 0, 2 }, { &tlcs900h_device::op_DECF, 0, 0, 2 }, { &tlcs900h_device::op_RET, 0, 0, 9 }, { &tlcs900h_device::op_RETD, p_I16, 0, 9 },
+ { &tlcs900h_device::op_RCF, 0, 0, 2 }, { &tlcs900h_device::op_SCF, 0, 0, 2 }, { &tlcs900h_device::op_CCF, 0, 0, 2 }, { &tlcs900h_device::op_ZCF, 0, 0, 2 },
+ { &tlcs900h_device::op_PUSHBR, p_A, 0, 3 }, { &tlcs900h_device::op_POPBR, p_A, 0, 4 }, { &tlcs900h_device::op_EXBRR, p_F, p_F, 2 }, { &tlcs900h_device::op_LDF, p_I8, 0, 2 },
+ { &tlcs900h_device::op_PUSHBR, p_F, 0, 3 }, { &tlcs900h_device::op_POPBR, p_F, 0, 4 }, { &tlcs900h_device::op_JPI, p_I16, 0, 7 }, { &tlcs900h_device::op_JPI, p_I24, 0, 7 },
+ { &tlcs900h_device::op_CALLI, p_I16, 0, 12 }, { &tlcs900h_device::op_CALLI, p_I24, 0, 12 }, { &tlcs900h_device::op_CALR, p_D16, 0, 12 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
/* 20 - 3F */
- { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 },
- { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 },
- { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 },
- { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 },
- { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 },
- { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 },
- { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 },
- { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 },
+ { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 },
+ { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 },
+ { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 },
+ { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 },
+ { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 },
+ { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 },
+ { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 },
+ { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 },
/* 40 - 5F */
- { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 },
- { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 },
- { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 },
- { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 },
- { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 },
- { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 },
+ { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 },
+ { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 },
+ { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 },
+ { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 },
+ { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 },
+ { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 },
/* 60 - 7F */
- { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 },
- { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 },
- { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 },
- { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 },
- { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 },
- { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 },
- { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 },
- { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 },
+ { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 },
+ { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 },
+ { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 },
+ { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 },
+ { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 },
+ { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 },
+ { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 },
+ { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 },
/* 80 - 9F */
- { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 },
- { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 },
- { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 },
- { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 },
- { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 },
- { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 },
- { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 },
- { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 },
+ { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 },
+ { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 },
+ { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 },
+ { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 },
+ { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 },
+ { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 },
+ { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 },
+ { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 },
/* A0 - BF */
- { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 },
- { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 },
- { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 },
- { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 },
- { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 },
- { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 },
- { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 },
- { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 },
+ { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 },
+ { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 },
+ { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 },
+ { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 },
+ { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 },
+ { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 },
+ { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 },
+ { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 },
/* C0 - DF */
- { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 },
- { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 },
+ { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 },
+ { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 },
{ &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 },
{ &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 },
- { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 },
- { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 },
+ { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 },
+ { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 },
{ &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 },
{ &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 },
/* E0 - FF */
- { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 },
- { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 },
- { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 },
- { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 },
- { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 },
- { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::_LDX, 0, 0, 9 },
- { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 },
- { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }
+ { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 },
+ { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 },
+ { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 },
+ { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 },
+ { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 },
+ { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::op_LDX, 0, 0, 9 },
+ { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 },
+ { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }
};
diff --git a/src/devices/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h
index 536bc8f99a8..27c3ccdc689 100644
--- a/src/devices/cpu/tlcs900/tlcs900.h
+++ b/src/devices/cpu/tlcs900/tlcs900.h
@@ -44,13 +44,13 @@ DECLARE_DEVICE_TYPE(TMP95C061, tmp95c061_device)
DECLARE_DEVICE_TYPE(TMP95C063, tmp95c063_device)
-#define MCFG_TLCS900H_AM8_16( am8_16 ) tlcs900h_device::set_am8_16( *device, am8_16 );
+#define MCFG_TLCS900H_AM8_16( am8_16 ) downcast<tlcs900h_device &>(*device).set_am8_16(am8_16 );
class tlcs900h_device : public cpu_device
{
public:
- // static configuration helpers
- static void set_am8_16(device_t &device, int am8_16) { downcast<tlcs900h_device &>(device).m_am8_16 = am8_16; }
+ // configuration helpers
+ void set_am8_16(int am8_16) { m_am8_16 = am8_16; }
protected:
// construction/destruction
@@ -229,420 +229,420 @@ protected:
uint32_t div16( uint32_t a, uint16_t b );
uint16_t divs8( int16_t a, int8_t b );
uint32_t divs16( int32_t a, int16_t b );
- void _ADCBMI();
- void _ADCBMR();
- void _ADCBRI();
- void _ADCBRM();
- void _ADCBRR();
- void _ADCWMI();
- void _ADCWMR();
- void _ADCWRI();
- void _ADCWRM();
- void _ADCWRR();
- void _ADCLMR();
- void _ADCLRI();
- void _ADCLRM();
- void _ADCLRR();
- void _ADDBMI();
- void _ADDBMR();
- void _ADDBRI();
- void _ADDBRM();
- void _ADDBRR();
- void _ADDWMI();
- void _ADDWMR();
- void _ADDWRI();
- void _ADDWRM();
- void _ADDWRR();
- void _ADDLMR();
- void _ADDLRI();
- void _ADDLRM();
- void _ADDLRR();
- void _ANDBMI();
- void _ANDBMR();
- void _ANDBRI();
- void _ANDBRM();
- void _ANDBRR();
- void _ANDWMI();
- void _ANDWMR();
- void _ANDWRI();
- void _ANDWRM();
- void _ANDWRR();
- void _ANDLMR();
- void _ANDLRI();
- void _ANDLRM();
- void _ANDLRR();
- void _ANDCFBIM();
- void _ANDCFBIR();
- void _ANDCFBRM();
- void _ANDCFBRR();
- void _ANDCFWIR();
- void _ANDCFWRR();
- void _BITBIM();
- void _BITBIR();
- void _BITWIR();
- void _BS1BRR();
- void _BS1FRR();
- void _CALLI();
- void _CALLM();
- void _CALR();
- void _CCF();
- void _CHGBIM();
- void _CHGBIR();
- void _CHGWIR();
- void _CPBMI();
- void _CPBMR();
- void _CPBRI();
- void _CPBRM();
- void _CPBRR();
- void _CPWMI();
- void _CPWMR();
- void _CPWRI();
- void _CPWRM();
- void _CPWRR();
- void _CPLMR();
- void _CPLRI();
- void _CPLRM();
- void _CPLRR();
- void _CPD();
- void _CPDR();
- void _CPDW();
- void _CPDRW();
- void _CPI();
- void _CPIR();
- void _CPIW();
- void _CPIRW();
- void _CPLBR();
- void _CPLWR();
- void _DAABR();
- void _DB();
- void _DECBIM();
- void _DECBIR();
- void _DECWIM();
- void _DECWIR();
- void _DECLIR();
- void _DECF();
- void _DIVBRI();
- void _DIVBRM();
- void _DIVBRR();
- void _DIVWRI();
- void _DIVWRM();
- void _DIVWRR();
- void _DIVSBRI();
- void _DIVSBRM();
- void _DIVSBRR();
- void _DIVSWRI();
- void _DIVSWRM();
- void _DIVSWRR();
- void _DJNZB();
- void _DJNZW();
- void _EI();
- void _EXBMR();
- void _EXBRR();
- void _EXWMR();
- void _EXWRR();
- void _EXTSWR();
- void _EXTSLR();
- void _EXTZWR();
- void _EXTZLR();
- void _HALT();
- void _INCBIM();
- void _INCBIR();
- void _INCWIM();
- void _INCWIR();
- void _INCLIR();
- void _INCF();
- void _JPI();
- void _JPM();
- void _JR();
- void _JRL();
- void _LDBMI();
- void _LDBMM();
- void _LDBMR();
- void _LDBRI();
- void _LDBRM();
- void _LDBRR();
- void _LDWMI();
- void _LDWMM();
- void _LDWMR();
- void _LDWRI();
- void _LDWRM();
- void _LDWRR();
- void _LDLRI();
- void _LDLRM();
- void _LDLRR();
- void _LDLMR();
- void _LDAW();
- void _LDAL();
- void _LDCBRR();
- void _LDCWRR();
- void _LDCLRR();
- void _LDCFBIM();
- void _LDCFBIR();
- void _LDCFBRM();
- void _LDCFBRR();
- void _LDCFWIR();
- void _LDCFWRR();
- void _LDD();
- void _LDDR();
- void _LDDRW();
- void _LDDW();
- void _LDF();
- void _LDI();
- void _LDIR();
- void _LDIRW();
- void _LDIW();
- void _LDX();
- void _LINK();
- void _MAX();
- void _MDEC1();
- void _MDEC2();
- void _MDEC4();
- void _MINC1();
- void _MINC2();
- void _MINC4();
- void _MIRRW();
- void _MULBRI();
- void _MULBRM();
- void _MULBRR();
- void _MULWRI();
- void _MULWRM();
- void _MULWRR();
- void _MULAR();
- void _MULSBRI();
- void _MULSBRM();
- void _MULSBRR();
- void _MULSWRI();
- void _MULSWRM();
- void _MULSWRR();
- void _NEGBR();
- void _NEGWR();
- void _NOP();
- void _NORMAL();
- void _ORBMI();
- void _ORBMR();
- void _ORBRI();
- void _ORBRM();
- void _ORBRR();
- void _ORWMI();
- void _ORWMR();
- void _ORWRI();
- void _ORWRM();
- void _ORWRR();
- void _ORLMR();
- void _ORLRI();
- void _ORLRM();
- void _ORLRR();
- void _ORCFBIM();
- void _ORCFBIR();
- void _ORCFBRM();
- void _ORCFBRR();
- void _ORCFWIR();
- void _ORCFWRR();
- void _PAAWR();
- void _PAALR();
- void _POPBM();
- void _POPBR();
- void _POPWM();
- void _POPWR();
- void _POPWSR();
- void _POPLR();
- void _PUSHBI();
- void _PUSHBM();
- void _PUSHBR();
- void _PUSHWI();
- void _PUSHWM();
- void _PUSHWR();
- void _PUSHLR();
- void _RCF();
- void _RESBIM();
- void _RESBIR();
- void _RESWIR();
- void _RET();
- void _RETCC();
- void _RETD();
- void _RETI();
- void _RLBM();
- void _RLWM();
- void _RLBIR();
- void _RLBRR();
- void _RLWIR();
- void _RLWRR();
- void _RLLIR();
- void _RLLRR();
- void _RLCBM();
- void _RLCWM();
- void _RLCBIR();
- void _RLCBRR();
- void _RLCWIR();
- void _RLCWRR();
- void _RLCLIR();
- void _RLCLRR();
- void _RLDRM();
- void _RRBM();
- void _RRWM();
- void _RRBIR();
- void _RRBRR();
- void _RRWIR();
- void _RRWRR();
- void _RRLIR();
- void _RRLRR();
- void _RRCBM();
- void _RRCWM();
- void _RRCBIR();
- void _RRCBRR();
- void _RRCWIR();
- void _RRCWRR();
- void _RRCLIR();
- void _RRCLRR();
- void _RRDRM();
- void _SBCBMI();
- void _SBCBMR();
- void _SBCBRI();
- void _SBCBRM();
- void _SBCBRR();
- void _SBCWMI();
- void _SBCWMR();
- void _SBCWRI();
- void _SBCWRM();
- void _SBCWRR();
- void _SBCLMR();
- void _SBCLRI();
- void _SBCLRM();
- void _SBCLRR();
- void _SCCBR();
- void _SCCWR();
- void _SCF();
- void _SETBIM();
- void _SETBIR();
- void _SETWIR();
- void _SLABM();
- void _SLAWM();
- void _SLABIR();
- void _SLABRR();
- void _SLAWIR();
- void _SLAWRR();
- void _SLALIR();
- void _SLALRR();
- void _SLLBM();
- void _SLLWM();
- void _SLLBIR();
- void _SLLBRR();
- void _SLLWIR();
- void _SLLWRR();
- void _SLLLIR();
- void _SLLLRR();
- void _SRABM();
- void _SRAWM();
- void _SRABIR();
- void _SRABRR();
- void _SRAWIR();
- void _SRAWRR();
- void _SRALIR();
- void _SRALRR();
- void _SRLBM();
- void _SRLWM();
- void _SRLBIR();
- void _SRLBRR();
- void _SRLWIR();
- void _SRLWRR();
- void _SRLLIR();
- void _SRLLRR();
- void _STCFBIM();
- void _STCFBIR();
- void _STCFBRM();
- void _STCFBRR();
- void _STCFWIR();
- void _STCFWRR();
- void _SUBBMI();
- void _SUBBMR();
- void _SUBBRI();
- void _SUBBRM();
- void _SUBBRR();
- void _SUBWMI();
- void _SUBWMR();
- void _SUBWRI();
- void _SUBWRM();
- void _SUBWRR();
- void _SUBLMR();
- void _SUBLRI();
- void _SUBLRM();
- void _SUBLRR();
- void _SWI();
- void _TSETBIM();
- void _TSETBIR();
- void _TSETWIR();
- void _UNLK();
- void _XORBMI();
- void _XORBMR();
- void _XORBRI();
- void _XORBRM();
- void _XORBRR();
- void _XORWMI();
- void _XORWMR();
- void _XORWRI();
- void _XORWRM();
- void _XORWRR();
- void _XORLMR();
- void _XORLRI();
- void _XORLRM();
- void _XORLRR();
- void _XORCFBIM();
- void _XORCFBIR();
- void _XORCFBRM();
- void _XORCFBRR();
- void _XORCFWIR();
- void _XORCFWRR();
- void _ZCF();
+ void op_ADCBMI();
+ void op_ADCBMR();
+ void op_ADCBRI();
+ void op_ADCBRM();
+ void op_ADCBRR();
+ void op_ADCWMI();
+ void op_ADCWMR();
+ void op_ADCWRI();
+ void op_ADCWRM();
+ void op_ADCWRR();
+ void op_ADCLMR();
+ void op_ADCLRI();
+ void op_ADCLRM();
+ void op_ADCLRR();
+ void op_ADDBMI();
+ void op_ADDBMR();
+ void op_ADDBRI();
+ void op_ADDBRM();
+ void op_ADDBRR();
+ void op_ADDWMI();
+ void op_ADDWMR();
+ void op_ADDWRI();
+ void op_ADDWRM();
+ void op_ADDWRR();
+ void op_ADDLMR();
+ void op_ADDLRI();
+ void op_ADDLRM();
+ void op_ADDLRR();
+ void op_ANDBMI();
+ void op_ANDBMR();
+ void op_ANDBRI();
+ void op_ANDBRM();
+ void op_ANDBRR();
+ void op_ANDWMI();
+ void op_ANDWMR();
+ void op_ANDWRI();
+ void op_ANDWRM();
+ void op_ANDWRR();
+ void op_ANDLMR();
+ void op_ANDLRI();
+ void op_ANDLRM();
+ void op_ANDLRR();
+ void op_ANDCFBIM();
+ void op_ANDCFBIR();
+ void op_ANDCFBRM();
+ void op_ANDCFBRR();
+ void op_ANDCFWIR();
+ void op_ANDCFWRR();
+ void op_BITBIM();
+ void op_BITBIR();
+ void op_BITWIR();
+ void op_BS1BRR();
+ void op_BS1FRR();
+ void op_CALLI();
+ void op_CALLM();
+ void op_CALR();
+ void op_CCF();
+ void op_CHGBIM();
+ void op_CHGBIR();
+ void op_CHGWIR();
+ void op_CPBMI();
+ void op_CPBMR();
+ void op_CPBRI();
+ void op_CPBRM();
+ void op_CPBRR();
+ void op_CPWMI();
+ void op_CPWMR();
+ void op_CPWRI();
+ void op_CPWRM();
+ void op_CPWRR();
+ void op_CPLMR();
+ void op_CPLRI();
+ void op_CPLRM();
+ void op_CPLRR();
+ void op_CPD();
+ void op_CPDR();
+ void op_CPDW();
+ void op_CPDRW();
+ void op_CPI();
+ void op_CPIR();
+ void op_CPIW();
+ void op_CPIRW();
+ void op_CPLBR();
+ void op_CPLWR();
+ void op_DAABR();
+ void op_DB();
+ void op_DECBIM();
+ void op_DECBIR();
+ void op_DECWIM();
+ void op_DECWIR();
+ void op_DECLIR();
+ void op_DECF();
+ void op_DIVBRI();
+ void op_DIVBRM();
+ void op_DIVBRR();
+ void op_DIVWRI();
+ void op_DIVWRM();
+ void op_DIVWRR();
+ void op_DIVSBRI();
+ void op_DIVSBRM();
+ void op_DIVSBRR();
+ void op_DIVSWRI();
+ void op_DIVSWRM();
+ void op_DIVSWRR();
+ void op_DJNZB();
+ void op_DJNZW();
+ void op_EI();
+ void op_EXBMR();
+ void op_EXBRR();
+ void op_EXWMR();
+ void op_EXWRR();
+ void op_EXTSWR();
+ void op_EXTSLR();
+ void op_EXTZWR();
+ void op_EXTZLR();
+ void op_HALT();
+ void op_INCBIM();
+ void op_INCBIR();
+ void op_INCWIM();
+ void op_INCWIR();
+ void op_INCLIR();
+ void op_INCF();
+ void op_JPI();
+ void op_JPM();
+ void op_JR();
+ void op_JRL();
+ void op_LDBMI();
+ void op_LDBMM();
+ void op_LDBMR();
+ void op_LDBRI();
+ void op_LDBRM();
+ void op_LDBRR();
+ void op_LDWMI();
+ void op_LDWMM();
+ void op_LDWMR();
+ void op_LDWRI();
+ void op_LDWRM();
+ void op_LDWRR();
+ void op_LDLRI();
+ void op_LDLRM();
+ void op_LDLRR();
+ void op_LDLMR();
+ void op_LDAW();
+ void op_LDAL();
+ void op_LDCBRR();
+ void op_LDCWRR();
+ void op_LDCLRR();
+ void op_LDCFBIM();
+ void op_LDCFBIR();
+ void op_LDCFBRM();
+ void op_LDCFBRR();
+ void op_LDCFWIR();
+ void op_LDCFWRR();
+ void op_LDD();
+ void op_LDDR();
+ void op_LDDRW();
+ void op_LDDW();
+ void op_LDF();
+ void op_LDI();
+ void op_LDIR();
+ void op_LDIRW();
+ void op_LDIW();
+ void op_LDX();
+ void op_LINK();
+ void op_MAX();
+ void op_MDEC1();
+ void op_MDEC2();
+ void op_MDEC4();
+ void op_MINC1();
+ void op_MINC2();
+ void op_MINC4();
+ void op_MIRRW();
+ void op_MULBRI();
+ void op_MULBRM();
+ void op_MULBRR();
+ void op_MULWRI();
+ void op_MULWRM();
+ void op_MULWRR();
+ void op_MULAR();
+ void op_MULSBRI();
+ void op_MULSBRM();
+ void op_MULSBRR();
+ void op_MULSWRI();
+ void op_MULSWRM();
+ void op_MULSWRR();
+ void op_NEGBR();
+ void op_NEGWR();
+ void op_NOP();
+ void op_NORMAL();
+ void op_ORBMI();
+ void op_ORBMR();
+ void op_ORBRI();
+ void op_ORBRM();
+ void op_ORBRR();
+ void op_ORWMI();
+ void op_ORWMR();
+ void op_ORWRI();
+ void op_ORWRM();
+ void op_ORWRR();
+ void op_ORLMR();
+ void op_ORLRI();
+ void op_ORLRM();
+ void op_ORLRR();
+ void op_ORCFBIM();
+ void op_ORCFBIR();
+ void op_ORCFBRM();
+ void op_ORCFBRR();
+ void op_ORCFWIR();
+ void op_ORCFWRR();
+ void op_PAAWR();
+ void op_PAALR();
+ void op_POPBM();
+ void op_POPBR();
+ void op_POPWM();
+ void op_POPWR();
+ void op_POPWSR();
+ void op_POPLR();
+ void op_PUSHBI();
+ void op_PUSHBM();
+ void op_PUSHBR();
+ void op_PUSHWI();
+ void op_PUSHWM();
+ void op_PUSHWR();
+ void op_PUSHLR();
+ void op_RCF();
+ void op_RESBIM();
+ void op_RESBIR();
+ void op_RESWIR();
+ void op_RET();
+ void op_RETCC();
+ void op_RETD();
+ void op_RETI();
+ void op_RLBM();
+ void op_RLWM();
+ void op_RLBIR();
+ void op_RLBRR();
+ void op_RLWIR();
+ void op_RLWRR();
+ void op_RLLIR();
+ void op_RLLRR();
+ void op_RLCBM();
+ void op_RLCWM();
+ void op_RLCBIR();
+ void op_RLCBRR();
+ void op_RLCWIR();
+ void op_RLCWRR();
+ void op_RLCLIR();
+ void op_RLCLRR();
+ void op_RLDRM();
+ void op_RRBM();
+ void op_RRWM();
+ void op_RRBIR();
+ void op_RRBRR();
+ void op_RRWIR();
+ void op_RRWRR();
+ void op_RRLIR();
+ void op_RRLRR();
+ void op_RRCBM();
+ void op_RRCWM();
+ void op_RRCBIR();
+ void op_RRCBRR();
+ void op_RRCWIR();
+ void op_RRCWRR();
+ void op_RRCLIR();
+ void op_RRCLRR();
+ void op_RRDRM();
+ void op_SBCBMI();
+ void op_SBCBMR();
+ void op_SBCBRI();
+ void op_SBCBRM();
+ void op_SBCBRR();
+ void op_SBCWMI();
+ void op_SBCWMR();
+ void op_SBCWRI();
+ void op_SBCWRM();
+ void op_SBCWRR();
+ void op_SBCLMR();
+ void op_SBCLRI();
+ void op_SBCLRM();
+ void op_SBCLRR();
+ void op_SCCBR();
+ void op_SCCWR();
+ void op_SCF();
+ void op_SETBIM();
+ void op_SETBIR();
+ void op_SETWIR();
+ void op_SLABM();
+ void op_SLAWM();
+ void op_SLABIR();
+ void op_SLABRR();
+ void op_SLAWIR();
+ void op_SLAWRR();
+ void op_SLALIR();
+ void op_SLALRR();
+ void op_SLLBM();
+ void op_SLLWM();
+ void op_SLLBIR();
+ void op_SLLBRR();
+ void op_SLLWIR();
+ void op_SLLWRR();
+ void op_SLLLIR();
+ void op_SLLLRR();
+ void op_SRABM();
+ void op_SRAWM();
+ void op_SRABIR();
+ void op_SRABRR();
+ void op_SRAWIR();
+ void op_SRAWRR();
+ void op_SRALIR();
+ void op_SRALRR();
+ void op_SRLBM();
+ void op_SRLWM();
+ void op_SRLBIR();
+ void op_SRLBRR();
+ void op_SRLWIR();
+ void op_SRLWRR();
+ void op_SRLLIR();
+ void op_SRLLRR();
+ void op_STCFBIM();
+ void op_STCFBIR();
+ void op_STCFBRM();
+ void op_STCFBRR();
+ void op_STCFWIR();
+ void op_STCFWRR();
+ void op_SUBBMI();
+ void op_SUBBMR();
+ void op_SUBBRI();
+ void op_SUBBRM();
+ void op_SUBBRR();
+ void op_SUBWMI();
+ void op_SUBWMR();
+ void op_SUBWRI();
+ void op_SUBWRM();
+ void op_SUBWRR();
+ void op_SUBLMR();
+ void op_SUBLRI();
+ void op_SUBLRM();
+ void op_SUBLRR();
+ void op_SWI();
+ void op_TSETBIM();
+ void op_TSETBIR();
+ void op_TSETWIR();
+ void op_UNLK();
+ void op_XORBMI();
+ void op_XORBMR();
+ void op_XORBRI();
+ void op_XORBRM();
+ void op_XORBRR();
+ void op_XORWMI();
+ void op_XORWMR();
+ void op_XORWRI();
+ void op_XORWRM();
+ void op_XORWRR();
+ void op_XORLMR();
+ void op_XORLRI();
+ void op_XORLRM();
+ void op_XORLRR();
+ void op_XORCFBIM();
+ void op_XORCFBIR();
+ void op_XORCFBRM();
+ void op_XORCFBRR();
+ void op_XORCFWIR();
+ void op_XORCFWRR();
+ void op_ZCF();
void prepare_operands(const tlcs900inst *inst);
- void _80();
- void _88();
- void _90();
- void _98();
- void _A0();
- void _A8();
- void _B0();
- void _B8();
- void _C0();
+ void op_80();
+ void op_88();
+ void op_90();
+ void op_98();
+ void op_A0();
+ void op_A8();
+ void op_B0();
+ void op_B8();
+ void op_C0();
void oC8();
- void _D0();
+ void op_D0();
void oD8();
- void _E0();
- void _E8();
- void _F0();
+ void op_E0();
+ void op_E8();
+ void op_F0();
};
#define MCFG_TMP95C061_PORT1_READ( _port_read ) \
- devcb = &tmp95c061_device::set_port1_read( *device, DEVCB_##_port_read );
+ devcb = &downcast<tmp95c061_device &>(*device).set_port1_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORT1_WRITE( _port_write ) \
- devcb = &tmp95c061_device::set_port1_write( *device, DEVCB_##_port_write );
+ devcb = &downcast<tmp95c061_device &>(*device).set_port1_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT2_WRITE( _port_write ) \
- devcb = &tmp95c061_device::set_port2_write( *device, DEVCB_##_port_write );
+ devcb = &downcast<tmp95c061_device &>(*device).set_port2_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT5_READ( _port_read ) \
- devcb = &tmp95c061_device::set_port5_read( *device, DEVCB_##_port_read );
+ devcb = &downcast<tmp95c061_device &>(*device).set_port5_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORT5_WRITE( _port_write ) \
- devcb = &tmp95c061_device::set_port5_write( *device, DEVCB_##_port_write );
+ devcb = &downcast<tmp95c061_device &>(*device).set_port5_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT6_READ( _port_read ) \
- devcb = &tmp95c061_device::set_port6_read( *device, DEVCB_##_port_read );
+ devcb = &downcast<tmp95c061_device &>(*device).set_port6_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORT6_WRITE( _port_write ) \
- devcb = &tmp95c061_device::set_port6_write( *device, DEVCB_##_port_write );
+ devcb = &downcast<tmp95c061_device &>(*device).set_port6_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT7_READ( _port_read ) \
- devcb = &tmp95c061_device::set_port7_read( *device, DEVCB_##_port_read );
+ devcb = &downcast<tmp95c061_device &>(*device).set_port7_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORT7_WRITE( _port_write ) \
- devcb = &tmp95c061_device::set_port7_write( *device, DEVCB_##_port_write );
+ devcb = &downcast<tmp95c061_device &>(*device).set_port7_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT8_READ( _port_read ) \
- devcb = &tmp95c061_device::set_port8_read( *device, DEVCB_##_port_read );
+ devcb = &downcast<tmp95c061_device &>(*device).set_port8_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORT8_WRITE( _port_write ) \
- devcb = &mp95c061_device::set_port8_write( *device, DEVCB_##_port_write );
+ devcb = &downcast<mp95c061_device &>(*device).set_port8_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT9_READ( _port_read ) \
- devcb = &tmp95c061_device::set_port9_read( *device, DEVCB_##_port_read );
+ devcb = &downcast<tmp95c061_device &>(*device).set_port9_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORTA_READ( _port_read ) \
- devcb = &tmp95c061_device::set_porta_read( *device, DEVCB_##_port_read );
+ devcb = &downcast<tmp95c061_device &>(*device).set_porta_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORTA_WRITE( _port_write ) \
- devcb = &tmp95c061_device::set_porta_write( *device, DEVCB_##_port_write );
+ devcb = &downcast<tmp95c061_device &>(*device).set_porta_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORTB_READ( _port_read ) \
- devcb = &tmp95c061_device::set_portb_read( *device, DEVCB_##_port_read );
+ devcb = &downcast<tmp95c061_device &>(*device).set_portb_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORTB_WRITE( _port_write ) \
- devcb = &tmp95c061_device::set_portb_write( *device, DEVCB_##_port_write );
+ devcb = &downcast<tmp95c061_device &>(*device).set_portb_write(DEVCB_##_port_write);
class tmp95c061_device : public tlcs900h_device
{
@@ -650,22 +650,22 @@ public:
// construction/destruction
tmp95c061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_port1_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port1_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port1_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port1_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port2_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port2_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port5_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port5_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port5_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port5_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port6_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port6_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port7_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port7_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port7_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port7_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port8_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port8_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port8_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port8_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port9_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port9_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_porta_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_porta_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_porta_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_porta_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_portb_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_portb_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_portb_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_portb_write.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_port1_read(Object &&cb) { return m_port1_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port1_write(Object &&cb) { return m_port1_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port2_write(Object &&cb) { return m_port2_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port5_read(Object &&cb) { return m_port5_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port5_write(Object &&cb) { return m_port5_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port6_write(Object &&cb) { return m_port6_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port7_read(Object &&cb) { return m_port7_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port7_write(Object &&cb) { return m_port7_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port8_read(Object &&cb) { return m_port8_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port8_write(Object &&cb) { return m_port8_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port9_read(Object &&cb) { return m_port9_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_porta_read(Object &&cb) { return m_porta_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_porta_write(Object &&cb) { return m_porta_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_portb_read(Object &&cb) { return m_portb_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_portb_write(Object &&cb) { return m_portb_write.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( internal_r );
DECLARE_WRITE8_MEMBER( internal_w );
@@ -727,44 +727,44 @@ private:
};
-#define MCFG_TMP95C063_PORT0_READ( _port_read ) tmp95c063_device::set_port0_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORT0_WRITE( _port_write ) tmp95c063_device::set_port0_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORT1_READ( _port_read ) tmp95c063_device::set_port1_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORT1_WRITE( _port_write ) tmp95c063_device::set_port1_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORT2_READ( _port_read ) tmp95c063_device::set_port2_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORT2_WRITE( _port_write ) tmp95c063_device::set_port2_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORT3_READ( _port_read ) tmp95c063_device::set_port3_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORT3_WRITE( _port_write ) tmp95c063_device::set_port3_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORT4_READ( _port_read ) tmp95c063_device::set_port4_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORT4_WRITE( _port_write ) tmp95c063_device::set_port4_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORT5_READ( _port_read ) tmp95c063_device::set_port5_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORT5_WRITE( _port_write ) tmp95c063_device::set_port5_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORT6_READ( _port_read ) tmp95c063_device::set_port6_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORT6_WRITE( _port_write ) tmp95c063_device::set_port6_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORT7_READ( _port_read ) tmp95c063_device::set_port7_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORT7_WRITE( _port_write ) tmp95c063_device::set_port7_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORT8_READ( _port_read ) tmp95c063_device::set_port8_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORT8_WRITE( _port_write ) tmp95c063_device::set_port8_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORT9_READ( _port_read ) tmp95c063_device::set_port9_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORT9_WRITE( _port_write ) tmp95c063_device::set_port9_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORTA_READ( _port_read ) tmp95c063_device::set_porta_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORTA_WRITE( _port_write ) tmp95c063_device::set_porta_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORTB_READ( _port_read ) tmp95c063_device::set_portb_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORTB_WRITE( _port_write ) tmp95c063_device::set_portb_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORTC_READ( _port_read ) tmp95c063_device::set_portc_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORTC_WRITE( _port_write ) tmp95c063_device::set_portc_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORTD_READ( _port_read ) tmp95c063_device::set_portd_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORTD_WRITE( _port_write ) tmp95c063_device::set_portd_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_PORTE_READ( _port_read ) tmp95c063_device::set_porte_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_PORTE_WRITE( _port_write ) tmp95c063_device::set_porte_write( *device, DEVCB_##_port_write );
-#define MCFG_TMP95C063_AN0_READ( _port_read ) tmp95c063_device::set_an0_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_AN1_READ( _port_read ) tmp95c063_device::set_an1_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_AN2_READ( _port_read ) tmp95c063_device::set_an2_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_AN3_READ( _port_read ) tmp95c063_device::set_an3_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_AN4_READ( _port_read ) tmp95c063_device::set_an4_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_AN5_READ( _port_read ) tmp95c063_device::set_an5_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_AN6_READ( _port_read ) tmp95c063_device::set_an6_read( *device, DEVCB_##_port_read );
-#define MCFG_TMP95C063_AN7_READ( _port_read ) tmp95c063_device::set_an7_read( *device, DEVCB_##_port_read );
+#define MCFG_TMP95C063_PORT0_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port0_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT0_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port0_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT1_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port1_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT1_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port1_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT2_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port2_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT2_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port2_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT3_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port3_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT3_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port3_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT4_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port4_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT4_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port4_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT5_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port5_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT5_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port5_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT6_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port6_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT6_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port6_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT7_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port7_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT7_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port7_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT8_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port8_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT8_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port8_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT9_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port9_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT9_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port9_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORTA_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_porta_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORTA_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_porta_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORTB_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_portb_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORTB_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_portb_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORTC_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_portc_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORTC_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_portc_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORTD_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_portd_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORTD_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_portd_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORTE_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_porte_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORTE_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_porte_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_AN0_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an0_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN1_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an1_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN2_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an2_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN3_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an3_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN4_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an4_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN5_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an5_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN6_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an6_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN7_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an7_read(DEVCB_##_port_read);
class tmp95c063_device : public tlcs900h_device
{
@@ -775,37 +775,37 @@ public:
DECLARE_READ8_MEMBER( internal_r );
DECLARE_WRITE8_MEMBER( internal_w );
- // static configuration helpers
- template <class Object> static devcb_base &set_port1_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port1_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port1_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port1_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port2_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port2_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port5_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port5_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port5_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port5_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port6_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port6_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port6_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port6_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port7_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port7_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port7_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port7_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port8_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port8_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port8_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port8_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port9_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port9_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_port9_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port9_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_porta_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porta_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_porta_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porta_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_portb_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portb_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_portb_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portb_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_portc_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portc_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_portd_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portd_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_portd_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portd_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_porte_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porte_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_porte_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porte_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an0_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an0_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an1_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an1_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an2_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an2_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an3_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an3_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an4_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an4_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an5_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an5_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an6_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an6_read.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an7_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an7_read.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_port1_read(Object &&cb) { return m_port1_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port1_write(Object &&cb) { return m_port1_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port2_write(Object &&cb) { return m_port2_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port5_read(Object &&cb) { return m_port5_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port5_write(Object &&cb) { return m_port5_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port6_read(Object &&cb) { return m_port6_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port6_write(Object &&cb) { return m_port6_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port7_read(Object &&cb) { return m_port7_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port7_write(Object &&cb) { return m_port7_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port8_read(Object &&cb) { return m_port8_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port8_write(Object &&cb) { return m_port8_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port9_read(Object &&cb) { return m_port9_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_port9_write(Object &&cb) { return m_port9_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_porta_read(Object &&cb) { return m_porta_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_porta_write(Object &&cb) { return m_porta_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_portb_read(Object &&cb) { return m_portb_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_portb_write(Object &&cb) { return m_portb_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_portc_read(Object &&cb) { return m_portc_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_portd_read(Object &&cb) { return m_portd_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_portd_write(Object &&cb) { return m_portd_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_porte_read(Object &&cb) { return m_porte_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_porte_write(Object &&cb) { return m_porte_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an0_read(Object &&cb) { return m_an0_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an1_read(Object &&cb) { return m_an1_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an2_read(Object &&cb) { return m_an2_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an3_read(Object &&cb) { return m_an3_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an4_read(Object &&cb) { return m_an4_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an5_read(Object &&cb) { return m_an5_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an6_read(Object &&cb) { return m_an6_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an7_read(Object &&cb) { return m_an7_read.set_callback(std::forward<Object>(cb)); }
void tmp95c063_mem16(address_map &map);
void tmp95c063_mem8(address_map &map);
diff --git a/src/devices/cpu/tms1000/tms0270.h b/src/devices/cpu/tms1000/tms0270.h
index a4fa7108d59..64f28d4b544 100644
--- a/src/devices/cpu/tms1000/tms0270.h
+++ b/src/devices/cpu/tms1000/tms0270.h
@@ -16,13 +16,13 @@
// TMS0270 was designed to interface with TMS5100, set it up at driver level
#define MCFG_TMS0270_READ_CTL_CB(_devcb) \
- devcb = &tms0270_cpu_device::set_read_ctl_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tms0270_cpu_device &>(*device).set_read_ctl_callback(DEVCB_##_devcb);
#define MCFG_TMS0270_WRITE_CTL_CB(_devcb) \
- devcb = &tms0270_cpu_device::set_write_ctl_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tms0270_cpu_device &>(*device).set_write_ctl_callback(DEVCB_##_devcb);
#define MCFG_TMS0270_WRITE_PDC_CB(_devcb) \
- devcb = &tms0270_cpu_device::set_write_pdc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tms0270_cpu_device &>(*device).set_write_pdc_callback(DEVCB_##_devcb);
class tms0270_cpu_device : public tms0980_cpu_device
@@ -30,10 +30,10 @@ class tms0270_cpu_device : public tms0980_cpu_device
public:
tms0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_read_ctl_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_read_ctl.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_ctl_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_write_ctl.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_pdc_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_write_pdc.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_read_ctl_callback(Object &&cb) { return m_read_ctl.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_ctl_callback(Object &&cb) { return m_write_ctl.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_pdc_callback(Object &&cb) { return m_write_pdc.set_callback(std::forward<Object>(cb)); }
protected:
// overrides
diff --git a/src/devices/cpu/tms1000/tms1k_base.h b/src/devices/cpu/tms1000/tms1k_base.h
index e34e93e7d1c..ed7164f2d43 100644
--- a/src/devices/cpu/tms1000/tms1k_base.h
+++ b/src/devices/cpu/tms1000/tms1k_base.h
@@ -19,24 +19,24 @@
// K input pins
#define MCFG_TMS1XXX_READ_K_CB(_devcb) \
- devcb = &tms1k_base_device::set_read_k_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tms1k_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb);
// O/Segment output pins
#define MCFG_TMS1XXX_WRITE_O_CB(_devcb) \
- devcb = &tms1k_base_device::set_write_o_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tms1k_base_device &>(*device).set_write_o_callback(DEVCB_##_devcb);
// Use this if the output PLA is unknown:
// If the microinstructions (or other) PLA is unknown, try using one from another romset.
#define MCFG_TMS1XXX_OUTPUT_PLA(_pla) \
- tms1k_base_device::set_output_pla(*device, _pla);
+ downcast<tms1k_base_device &>(*device).set_output_pla(_pla);
// R output pins (also called D on some chips)
#define MCFG_TMS1XXX_WRITE_R_CB(_devcb) \
- devcb = &tms1k_base_device::set_write_r_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tms1k_base_device &>(*device).set_write_r_callback(DEVCB_##_devcb);
// OFF request on TMS0980 and up
#define MCFG_TMS1XXX_POWER_OFF_CB(_devcb) \
- devcb = &tms1k_base_device::set_power_off_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tms1k_base_device &>(*device).set_power_off_callback(DEVCB_##_devcb);
// HALT input pin on CMOS chips (use set_input_line)
#define TMS1XXX_INPUT_LINE_HALT 0
@@ -87,12 +87,12 @@
class tms1k_base_device : public cpu_device
{
public:
- // static configuration helpers
- template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_o_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_write_o.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_r_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_write_r.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_power_off_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_power_off.set_callback(std::forward<Object>(cb)); }
- static void set_output_pla(device_t &device, const u16 *output_pla) { downcast<tms1k_base_device &>(device).m_output_pla_table = output_pla; }
+ // configuration helpers
+ template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_o_callback(Object &&cb) { return m_write_o.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_r_callback(Object &&cb) { return m_write_r.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_power_off_callback(Object &&cb) { return m_power_off.set_callback(std::forward<Object>(cb)); }
+ void set_output_pla(const u16 *output_pla) { m_output_pla_table = output_pla; }
u8 debug_peek_o_index() { return m_o_index; } // get output PLA index, for debugging (don't use in emulation)
diff --git a/src/devices/cpu/tms32010/tms32010.h b/src/devices/cpu/tms32010/tms32010.h
index b7ed35d7853..1d1f60833c2 100644
--- a/src/devices/cpu/tms32010/tms32010.h
+++ b/src/devices/cpu/tms32010/tms32010.h
@@ -18,7 +18,7 @@
#define MCFG_TMS32010_BIO_IN_CB(_devcb) \
- devcb = &tms32010_device::set_bio_in_cb(*device, DEVCB_##_devcb); /* BIO input */
+ devcb = &downcast<tms32010_device &>(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */
#define TMS32010_INT_PENDING 0x80000000
@@ -44,8 +44,8 @@ public:
// construction/destruction
tms32010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base & set_bio_in_cb(device_t &device, Object &&cb) { return downcast<tms32010_device &>(device).m_bio_in.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_bio_in_cb(Object &&cb) { return m_bio_in.set_callback(std::forward<Object>(cb)); }
void tms32010_ram(address_map &map);
void tms32015_ram(address_map &map);
diff --git a/src/devices/cpu/tms32025/tms32025.h b/src/devices/cpu/tms32025/tms32025.h
index ade0a0289d6..c3576dacb50 100644
--- a/src/devices/cpu/tms32025/tms32025.h
+++ b/src/devices/cpu/tms32025/tms32025.h
@@ -24,22 +24,22 @@
#define MCFG_TMS32025_BIO_IN_CB(_devcb) \
- devcb = &tms32025_device::set_bio_in_cb(*device, DEVCB_##_devcb); /* BIO input */
+ devcb = &downcast<tms32025_device &>(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */
#define MCFG_TMS32025_HOLD_IN_CB(_devcb) \
- devcb = &tms32025_device::set_hold_in_cb(*device, DEVCB_##_devcb); /* HOLD input */
+ devcb = &downcast<tms32025_device &>(*device).set_hold_in_cb(DEVCB_##_devcb); /* HOLD input */
#define MCFG_TMS32025_HOLD_ACK_OUT_CB(_devcb) \
- devcb = &tms32025_device::set_hold_ack_out_cb(*device, DEVCB_##_devcb); /* HOLD Acknowledge output */
+ devcb = &downcast<tms32025_device &>(*device).set_hold_ack_out_cb(DEVCB_##_devcb); /* HOLD Acknowledge output */
#define MCFG_TMS32025_XF_OUT_CB(_devcb) \
- devcb = &tms32025_device::set_xf_out_cb(*device, DEVCB_##_devcb); /* XF output */
+ devcb = &downcast<tms32025_device &>(*device).set_xf_out_cb(DEVCB_##_devcb); /* XF output */
#define MCFG_TMS32025_DR_IN_CB(_devcb) \
- devcb = &tms32025_device::set_dr_in_cb(*device, DEVCB_##_devcb); /* Serial Data Receive input */
+ devcb = &downcast<tms32025_device &>(*device).set_dr_in_cb(DEVCB_##_devcb); /* Serial Data Receive input */
#define MCFG_TMS32025_DX_OUT_CB(_devcb) \
- devcb = &tms32025_device::set_dx_out_cb(*device, DEVCB_##_devcb); /* Serial Data Transmit output */
+ devcb = &downcast<tms32025_device &>(*device).set_dx_out_cb(DEVCB_##_devcb); /* Serial Data Transmit output */
/****************************************************************************
@@ -83,13 +83,13 @@ public:
// construction/destruction
tms32025_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template<class _Object> static devcb_base & set_bio_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_bio_in.set_callback(object); }
- template<class _Object> static devcb_base & set_hold_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_in.set_callback(object); }
- template<class _Object> static devcb_base & set_hold_ack_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_ack_out.set_callback(object); }
- template<class _Object> static devcb_base & set_xf_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_xf_out.set_callback(object); }
- template<class _Object> static devcb_base & set_dr_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dr_in.set_callback(object); }
- template<class _Object> static devcb_base & set_dx_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dx_out.set_callback(object); }
+ // configuration helpers
+ template<class Object> devcb_base &set_bio_in_cb(Object &&cb) { return m_bio_in.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_hold_in_cb(Object &&cb) { return m_hold_in.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_hold_ack_out_cb(Object &&cb) { return m_hold_ack_out.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_xf_out_cb(Object &&cb) { return m_xf_out.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_dr_in_cb(Object &&cb) { return m_dr_in.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_dx_out_cb(Object &&cb) { return m_dx_out.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER( drr_r);
DECLARE_WRITE16_MEMBER(drr_w);
diff --git a/src/devices/cpu/tms32031/tms32031.h b/src/devices/cpu/tms32031/tms32031.h
index be5ef8d3c42..4b6b3a8057b 100644
--- a/src/devices/cpu/tms32031/tms32031.h
+++ b/src/devices/cpu/tms32031/tms32031.h
@@ -91,16 +91,16 @@ enum
//**************************************************************************
#define MCFG_TMS3203X_MCBL(_mode) \
- tms3203x_device::set_mcbl_mode(*device, _mode);
+ downcast<tms3203x_device &>(*device).set_mcbl_mode(_mode);
#define MCFG_TMS3203X_XF0_CB(_devcb) \
- devcb = &tms3203x_device::set_xf0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tms3203x_device &>(*device).set_xf0_callback(DEVCB_##_devcb);
#define MCFG_TMS3203X_XF1_CB(_devcb) \
- devcb = &tms3203x_device::set_xf1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tms3203x_device &>(*device).set_xf1_callback(DEVCB_##_devcb);
#define MCFG_TMS3203X_IACK_CB(_devcb) \
- devcb = &tms3203x_device::set_iack_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tms3203x_device &>(*device).set_iack_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -139,10 +139,10 @@ public:
virtual ~tms3203x_device();
// inline configuration helpers
- static void set_mcbl_mode(device_t &device, bool mode) { downcast<tms3203x_device &>(device).m_mcbl_mode = mode; }
- template <class Object> static devcb_base &set_xf0_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_xf0_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_xf1_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_xf1_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_iack_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_iack_cb.set_callback(std::forward<Object>(cb)); }
+ void set_mcbl_mode(bool mode) { m_mcbl_mode = mode; }
+ template <class Object> devcb_base &set_xf0_callback(Object &&cb) { return m_xf0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_xf1_callback(Object &&cb) { return m_xf1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_iack_callback(Object &&cb) { return m_iack_cb.set_callback(std::forward<Object>(cb)); }
// public interfaces
static float fp_to_float(uint32_t floatdata);
diff --git a/src/devices/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h
index d1d1c35ca63..056f414d80a 100644
--- a/src/devices/cpu/tms34010/tms34010.h
+++ b/src/devices/cpu/tms34010/tms34010.h
@@ -104,40 +104,40 @@ enum
#define MCFG_TMS340X0_HALT_ON_RESET(_value) \
- tms340x0_device::set_halt_on_reset(*device, _value);
+ downcast<tms340x0_device &>(*device).set_halt_on_reset(_value);
#define MCFG_TMS340X0_PIXEL_CLOCK(_value) \
- tms340x0_device::set_pixel_clock(*device, _value);
+ downcast<tms340x0_device &>(*device).set_pixel_clock(_value);
#define MCFG_TMS340X0_PIXELS_PER_CLOCK(_value) \
- tms340x0_device::set_pixels_per_clock(*device, _value);
+ downcast<tms340x0_device &>(*device).set_pixels_per_clock(_value);
#define TMS340X0_SCANLINE_IND16_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms340x0_device::display_params *params)
#define MCFG_TMS340X0_SCANLINE_IND16_CB(_class, _method) \
- tms340x0_device::set_scanline_ind16_callback(*device, tms340x0_device::scanline_ind16_cb_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<tms340x0_device &>(*device).set_scanline_ind16_callback(tms340x0_device::scanline_ind16_cb_delegate(&_class::_method, #_class "::" #_method, this));
#define TMS340X0_SCANLINE_RGB32_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms340x0_device::display_params *params)
#define MCFG_TMS340X0_SCANLINE_RGB32_CB(_class, _method) \
- tms340x0_device::set_scanline_rgb32_callback(*device, tms340x0_device::scanline_rgb32_cb_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<tms340x0_device &>(*device).set_scanline_rgb32_callback(tms340x0_device::scanline_rgb32_cb_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_TMS340X0_OUTPUT_INT_CB(_devcb) \
- devcb = &tms340x0_device::set_output_int_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tms340x0_device &>(*device).set_output_int_callback(DEVCB_##_devcb);
#define TMS340X0_TO_SHIFTREG_CB_MEMBER(_name) void _name(address_space &space, offs_t address, uint16_t *shiftreg)
#define MCFG_TMS340X0_TO_SHIFTREG_CB(_class, _method) \
- tms340x0_device::set_to_shiftreg_callback(*device, tms340x0_device::to_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<tms340x0_device &>(*device).set_to_shiftreg_callback(tms340x0_device::to_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this));
#define TMS340X0_FROM_SHIFTREG_CB_MEMBER(_name) void _name(address_space &space, offs_t address, uint16_t *shiftreg)
#define MCFG_TMS340X0_FROM_SHIFTREG_CB(_class, _method) \
- tms340x0_device::set_from_shiftreg_callback(*device, tms340x0_device::from_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<tms340x0_device &>(*device).set_from_shiftreg_callback(tms340x0_device::from_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this));
class tms340x0_device : public cpu_device,
@@ -160,15 +160,15 @@ public:
typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> to_shiftreg_cb_delegate;
typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> from_shiftreg_cb_delegate;
- static void set_halt_on_reset(device_t &device, bool halt_on_reset) { downcast<tms340x0_device &>(device).m_halt_on_reset = halt_on_reset; }
- static void set_pixel_clock(device_t &device, uint32_t pixclock) { downcast<tms340x0_device &>(device).m_pixclock = pixclock; }
- static void set_pixel_clock(device_t &device, const XTAL &xtal) { set_pixel_clock(device, xtal.value()); }
- static void set_pixels_per_clock(device_t &device, int pixperclock) { downcast<tms340x0_device &>(device).m_pixperclock = pixperclock; }
- static void set_scanline_ind16_callback(device_t &device, scanline_ind16_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_ind16_cb = callback; }
- static void set_scanline_rgb32_callback(device_t &device, scanline_rgb32_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_rgb32_cb = callback; }
- template <class Object> static devcb_base &set_output_int_callback(device_t &device, Object &&cb) { return downcast<tms340x0_device &>(device).m_output_int_cb.set_callback(std::forward<Object>(cb)); }
- static void set_to_shiftreg_callback(device_t &device, to_shiftreg_cb_delegate callback) { downcast<tms340x0_device &>(device).m_to_shiftreg_cb = callback; }
- static void set_from_shiftreg_callback(device_t &device, from_shiftreg_cb_delegate callback) { downcast<tms340x0_device &>(device).m_from_shiftreg_cb = callback; }
+ void set_halt_on_reset(bool halt_on_reset) { m_halt_on_reset = halt_on_reset; }
+ void set_pixel_clock(uint32_t pixclock) { m_pixclock = pixclock; }
+ void set_pixel_clock(const XTAL &xtal) { set_pixel_clock(xtal.value()); }
+ void set_pixels_per_clock(int pixperclock) { m_pixperclock = pixperclock; }
+ template <typename Object> void set_scanline_ind16_callback(Object &&cb) { m_scanline_ind16_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_scanline_rgb32_callback(Object &&cb) { m_scanline_rgb32_cb = std::forward<Object>(cb); }
+ template <class Object> devcb_base &set_output_int_callback(Object &&cb) { return m_output_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <typename Object> void set_to_shiftreg_callback(Object &&cb) { m_to_shiftreg_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_from_shiftreg_callback(Object &&cb) { m_from_shiftreg_cb = std::forward<Object>(cb); }
void get_display_params(display_params *params);
void tms34010_state_postload();
diff --git a/src/devices/cpu/tms7000/tms7000.h b/src/devices/cpu/tms7000/tms7000.h
index 987aa8af543..2fdbf26af43 100644
--- a/src/devices/cpu/tms7000/tms7000.h
+++ b/src/devices/cpu/tms7000/tms7000.h
@@ -16,29 +16,29 @@
// read-only on 70x0
#define MCFG_TMS7000_IN_PORTA_CB(_devcb) \
- devcb = &tms7000_device::set_port_read_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTA_CB(_devcb) \
- devcb = &tms7000_device::set_port_write_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb);
// write-only
#define MCFG_TMS7000_OUT_PORTB_CB(_devcb) \
- devcb = &tms7000_device::set_port_write_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb);
#define MCFG_TMS7000_IN_PORTC_CB(_devcb) \
- devcb = &tms7000_device::set_port_read_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTC_CB(_devcb) \
- devcb = &tms7000_device::set_port_write_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb);
#define MCFG_TMS7000_IN_PORTD_CB(_devcb) \
- devcb = &tms7000_device::set_port_read_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTD_CB(_devcb) \
- devcb = &tms7000_device::set_port_write_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb);
// TMS70C46 only
#define MCFG_TMS7000_IN_PORTE_CB(_devcb) \
- devcb = &tms7000_device::set_port_read_cb(*device, 4, DEVCB_##_devcb);
+ devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTE_CB(_devcb) \
- devcb = &tms7000_device::set_port_write_cb(*device, 4, DEVCB_##_devcb);
+ devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb);
enum { TMS7000_PC=1, TMS7000_SP, TMS7000_ST };
@@ -57,11 +57,9 @@ public:
// construction/destruction
tms7000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration
- template<class Object>
- static devcb_base &set_port_read_cb(device_t &device, int p, Object &&object) { return downcast<tms7000_device &>(device).m_port_in_cb[p].set_callback(std::move(object)); }
- template<class Object>
- static devcb_base &set_port_write_cb(device_t &device, int p, Object &&object) { return downcast<tms7000_device &>(device).m_port_out_cb[p].set_callback(std::move(object)); }
+ // configuration
+ template<class Object> devcb_base &set_port_read_cb(int p, Object &&cb) { return m_port_in_cb[p].set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_port_write_cb(int p, Object &&cb) { return m_port_out_cb[p].set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(tms7000_unmapped_rf_r) { if (!machine().side_effects_disabled()) logerror("'%s' (%04X): unmapped_rf_r @ $%04x\n", tag(), m_pc, offset + 0x80); return 0; };
DECLARE_WRITE8_MEMBER(tms7000_unmapped_rf_w) { logerror("'%s' (%04X): unmapped_rf_w @ $%04x = $%02x\n", tag(), m_pc, offset + 0x80, data); };
diff --git a/src/devices/cpu/tms9900/tms9900.h b/src/devices/cpu/tms9900/tms9900.h
index 61a0fc46b69..7c320908937 100644
--- a/src/devices/cpu/tms9900/tms9900.h
+++ b/src/devices/cpu/tms9900/tms9900.h
@@ -54,13 +54,13 @@ public:
void set_hold(int state);
// Callbacks
- template<class _Object> static devcb_base &static_set_extop_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_external_operation.set_callback(object); }
- template<class _Object> static devcb_base &static_set_intlevel_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_get_intlevel.set_callback(object); }
- template<class _Object> static devcb_base &static_set_iaq_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_iaq_line.set_callback(object); }
- template<class _Object> static devcb_base &static_set_clkout_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_clock_out_line.set_callback(object); }
- template<class _Object> static devcb_base &static_set_wait_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_wait_line.set_callback(object); }
- template<class _Object> static devcb_base &static_set_holda_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_holda_line.set_callback(object); }
- template<class _Object> static devcb_base &static_set_dbin_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_dbin_line.set_callback(object); }
+ template<class Object> devcb_base &set_extop_callback(Object &&cb) { return m_external_operation.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_intlevel_callback(Object &&cb) { return m_get_intlevel.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_iaq_callback(Object &&cb) { return m_iaq_line.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_clkout_callback(Object &&cb) { return m_clock_out_line.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_wait_callback(Object &&cb) { return m_wait_line.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_holda_callback(Object &&cb) { return m_holda_line.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_dbin_callback(Object &&cb) { return m_dbin_line.set_callback(std::forward<Object>(cb)); }
protected:
tms99xx_device(const machine_config &mconfig, device_type type,
diff --git a/src/devices/cpu/tms9900/tms9995.h b/src/devices/cpu/tms9900/tms9995.h
index 9550cff94e4..e623c1573af 100644
--- a/src/devices/cpu/tms9900/tms9995.h
+++ b/src/devices/cpu/tms9900/tms9995.h
@@ -28,19 +28,19 @@ enum
};
#define MCFG_TMS9995_EXTOP_HANDLER( _extop) \
- devcb = &tms9995_device::static_set_extop_callback( *device, DEVCB_##_extop );
+ devcb = &downcast<tms9995_device &>(*device).set_extop_callback(DEVCB_##_extop);
#define MCFG_TMS9995_IAQ_HANDLER( _iaq ) \
- devcb = &tms9995_device::static_set_iaq_callback( *device, DEVCB_##_iaq );
+ devcb = &downcast<tms9995_device &>(*device).set_iaq_callback(DEVCB_##_iaq);
#define MCFG_TMS9995_CLKOUT_HANDLER( _clkout ) \
- devcb = &tms9995_device::static_set_clkout_callback( *device, DEVCB_##_clkout );
+ devcb = &downcast<tms9995_device &>(*device).set_clkout_callback(DEVCB_##_clkout);
#define MCFG_TMS9995_HOLDA_HANDLER( _holda ) \
- devcb = &tms9995_device::static_set_holda_callback( *device, DEVCB_##_holda );
+ devcb = &downcast<tms9995_device &>(*device).set_holda_callback(DEVCB_##_holda);
#define MCFG_TMS9995_DBIN_HANDLER( _dbin ) \
- devcb = &tms9995_device::static_set_dbin_callback( *device, DEVCB_##_dbin );
+ devcb = &downcast<tms9995_device &>(*device).set_dbin_callback(DEVCB_##_dbin);
#define MCFG_TMS9995_ENABLE_OVINT( _ovint ) \
downcast<tms9995_device*>(device)->set_overflow_interrupt( _ovint );
@@ -66,11 +66,11 @@ public:
DECLARE_WRITE_LINE_MEMBER( reset_line );
// Callbacks
- template<class _Object> static devcb_base &static_set_extop_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_external_operation.set_callback(object); }
- template<class _Object> static devcb_base &static_set_iaq_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_iaq_line.set_callback(object); }
- template<class _Object> static devcb_base &static_set_clkout_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_clock_out_line.set_callback(object); }
- template<class _Object> static devcb_base &static_set_holda_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_holda_line.set_callback(object); }
- template<class _Object> static devcb_base &static_set_dbin_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_dbin_line.set_callback(object); }
+ template<class Object> devcb_base &set_extop_callback(Object &&cb) { return m_external_operation.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_iaq_callback(Object &&cb) { return m_iaq_line.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_clkout_callback(Object &&cb) { return m_clock_out_line.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_holda_callback(Object &&cb) { return m_holda_line.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_dbin_callback(Object &&cb) { return m_dbin_line.set_callback(std::forward<Object>(cb)); }
// For debugger access
uint8_t debug_read_onchip_memory(offs_t addr) { return m_onchip_memory[addr & 0xff]; };
diff --git a/src/devices/cpu/tms9900/tms99com.h b/src/devices/cpu/tms9900/tms99com.h
index 3a1aeeb57ee..2ee65b3f2cc 100644
--- a/src/devices/cpu/tms9900/tms99com.h
+++ b/src/devices/cpu/tms9900/tms99com.h
@@ -47,25 +47,25 @@
MCFG_DEVICE_IO_MAP(_iomap)
#define MCFG_TMS99xx_EXTOP_HANDLER( _extop) \
- devcb = &tms99xx_device::static_set_extop_callback( *device, DEVCB_##_extop );
+ devcb = &downcast<tms99xx_device &>(*device).set_extop_callback(DEVCB_##_extop);
#define MCFG_TMS99xx_INTLEVEL_HANDLER( _intlevel ) \
- devcb = &tms99xx_device::static_set_intlevel_callback( *device, DEVCB_##_intlevel );
+ devcb = &downcast<tms99xx_device &>(*device).set_intlevel_callback(DEVCB_##_intlevel);
#define MCFG_TMS99xx_IAQ_HANDLER( _iaq ) \
- devcb = &tms99xx_device::static_set_iaq_callback( *device, DEVCB_##_iaq );
+ devcb = &downcast<tms99xx_device &>(*device).set_iaq_callback(DEVCB_##_iaq);
#define MCFG_TMS99xx_CLKOUT_HANDLER( _clkout ) \
- devcb = &tms99xx_device::static_set_clkout_callback( *device, DEVCB_##_clkout );
+ devcb = &downcast<tms99xx_device &>(*device).set_clkout_callback(DEVCB_##_clkout);
#define MCFG_TMS99xx_WAIT_HANDLER( _wait ) \
- devcb = &tms99xx_device::static_set_wait_callback( *device, DEVCB_##_wait );
+ devcb = &downcast<tms99xx_device &>(*device).set_wait_callback(DEVCB_##_wait);
#define MCFG_TMS99xx_HOLDA_HANDLER( _holda ) \
- devcb = &tms99xx_device::static_set_holda_callback( *device, DEVCB_##_holda );
+ devcb = &downcast<tms99xx_device &>(*device).set_holda_callback(DEVCB_##_holda);
#define MCFG_TMS99xx_DBIN_HANDLER( _dbin ) \
- devcb = &tms99xx_device::static_set_dbin_callback( *device, DEVCB_##_dbin );
+ devcb = &downcast<tms99xx_device &>(*device).set_dbin_callback(DEVCB_##_dbin);
enum
{
diff --git a/src/devices/cpu/ucom4/ucom4.h b/src/devices/cpu/ucom4/ucom4.h
index 3dcadb11e26..1b47c612e37 100644
--- a/src/devices/cpu/ucom4/ucom4.h
+++ b/src/devices/cpu/ucom4/ucom4.h
@@ -14,35 +14,35 @@
// I/O ports setup
#define MCFG_UCOM4_READ_A_CB(_devcb) \
- devcb = &ucom4_cpu_device::set_read_a_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ucom4_cpu_device &>(*device).set_read_a_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_READ_B_CB(_devcb) \
- devcb = &ucom4_cpu_device::set_read_b_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ucom4_cpu_device &>(*device).set_read_b_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_READ_C_CB(_devcb) \
- devcb = &ucom4_cpu_device::set_read_c_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ucom4_cpu_device &>(*device).set_read_c_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_C_CB(_devcb) \
- devcb = &ucom4_cpu_device::set_write_c_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ucom4_cpu_device &>(*device).set_write_c_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_READ_D_CB(_devcb) \
- devcb = &ucom4_cpu_device::set_read_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ucom4_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_D_CB(_devcb) \
- devcb = &ucom4_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ucom4_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_E_CB(_devcb) \
- devcb = &ucom4_cpu_device::set_write_e_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ucom4_cpu_device &>(*device).set_write_e_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_F_CB(_devcb) \
- devcb = &ucom4_cpu_device::set_write_f_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ucom4_cpu_device &>(*device).set_write_f_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_G_CB(_devcb) \
- devcb = &ucom4_cpu_device::set_write_g_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ucom4_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_H_CB(_devcb) \
- devcb = &ucom4_cpu_device::set_write_h_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ucom4_cpu_device &>(*device).set_write_h_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_I_CB(_devcb) \
- devcb = &ucom4_cpu_device::set_write_i_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ucom4_cpu_device &>(*device).set_write_i_callback(DEVCB_##_devcb);
enum
{
@@ -99,19 +99,19 @@ enum
class ucom4_cpu_device : public cpu_device
{
public:
- // static configuration helpers
- template <class Object> static devcb_base &set_read_a_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_a.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_c_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_c.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_write_c_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_c.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_e_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_e.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_g_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_g.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_h_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_h.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_i_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_i.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_read_a_callback(Object &&cb) { return m_read_a.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_b_callback(Object &&cb) { return m_read_b.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_c_callback(Object &&cb) { return m_read_c.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_read_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> devcb_base &set_write_c_callback(Object &&cb) { return m_write_c.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_e_callback(Object &&cb) { return m_write_e.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_f_callback(Object &&cb) { return m_write_f.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_g_callback(Object &&cb) { return m_write_g.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_h_callback(Object &&cb) { return m_write_h.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_i_callback(Object &&cb) { return m_write_i.set_callback(std::forward<Object>(cb)); }
protected:
// construction/destruction
diff --git a/src/devices/cpu/upd7725/upd7725.h b/src/devices/cpu/upd7725/upd7725.h
index ec00eb1e153..16c196c5a66 100644
--- a/src/devices/cpu/upd7725/upd7725.h
+++ b/src/devices/cpu/upd7725/upd7725.h
@@ -30,37 +30,37 @@ enum
#define MCFG_NECDSP_IN_INT_CB(_devcb) \
- devcb = &necdsp_device::set_in_int_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<necdsp_device &>(*device).set_in_int_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_IN_SI_CB(_devcb) \
- devcb = &necdsp_device::set_in_si_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<necdsp_device &>(*device).set_in_si_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_IN_SCK_CB(_devcb) \
- devcb = &necdsp_device::set_in_sck_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<necdsp_device &>(*device).set_in_sck_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_IN_SIEN_CB(_devcb) \
- devcb = &necdsp_device::set_in_sien_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<necdsp_device &>(*device).set_in_sien_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_IN_SOEN_CB(_devcb) \
- devcb = &necdsp_device::set_in_soen_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<necdsp_device &>(*device).set_in_soen_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_IN_DACK_CB(_devcb) \
- devcb = &necdsp_device::set_in_dack_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<necdsp_device &>(*device).set_in_dack_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_OUT_P0_CB(_devcb) \
- devcb = &necdsp_device::set_out_p0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<necdsp_device &>(*device).set_out_p0_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_OUT_P1_CB(_devcb) \
- devcb = &necdsp_device::set_out_p1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<necdsp_device &>(*device).set_out_p1_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_OUT_SO_CB(_devcb) \
- devcb = &necdsp_device::set_out_so_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<necdsp_device &>(*device).set_out_so_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_OUT_SORQ_CB(_devcb) \
- devcb = &necdsp_device::set_out_sorq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<necdsp_device &>(*device).set_out_sorq_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_OUT_DRQ_CB(_devcb) \
- devcb = &necdsp_device::set_out_drq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<necdsp_device &>(*device).set_out_drq_callback(DEVCB_##_devcb);
// ======================> necdsp_device
@@ -68,17 +68,17 @@ enum
class necdsp_device : public cpu_device
{
public:
- template <class Object> static devcb_base &set_in_int_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_int_cb.set_callback(std::forward<Object>(cb)); }
- //template <class Object> static devcb_base &set_in_si_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_si_cb.set_callback(std::forward<Object>(cb)); }
- //template <class Object> static devcb_base &set_in_sck_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_sck_cb.set_callback(std::forward<Object>(cb)); }
- //template <class Object> static devcb_base &set_in_sien_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_sien_cb.set_callback(std::forward<Object>(cb)); }
- //template <class Object> static devcb_base &set_in_soen_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_soen_cb.set_callback(std::forward<Object>(cb)); }
- //template <class Object> static devcb_base &set_in_dack_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_dack_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_p0_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_p0_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_p1_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_p1_cb.set_callback(std::forward<Object>(cb)); }
- //template <class Object> static devcb_base &set_out_so_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_so_cb.set_callback(std::forward<Object>(cb)); }
- //template <class Object> static devcb_base &set_out_sorq_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_sorq_cb.set_callback(std::forward<Object>(cb)); }
- //template <class Object> static devcb_base &set_out_drq_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_drq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_int_callback(Object &&cb) { return m_in_int_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> devcb_base &set_in_si_callback(Object &&cb) { return m_in_si_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> devcb_base &set_in_sck_callback(Object &&cb) { return m_in_sck_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> devcb_base &set_in_sien_callback(Object &&cb) { return m_in_sien_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> devcb_base &set_in_soen_callback(Object &&cb) { return m_in_soen_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> devcb_base &set_in_dack_callback(Object &&cb) { return m_in_dack_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_p0_callback(Object &&cb) { return m_out_p0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_p1_callback(Object &&cb) { return m_out_p1_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> devcb_base &set_out_so_callback(Object &&cb) { return m_out_so_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> devcb_base &set_out_sorq_callback(Object &&cb) { return m_out_sorq_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> devcb_base &set_out_drq_callback(Object &&cb) { return m_out_drq_cb.set_callback(std::forward<Object>(cb)); }
uint8_t snesdsp_read(bool mode);
void snesdsp_write(bool mode, uint8_t data);
diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h
index eb68f1b0537..1f0e12fcc85 100644
--- a/src/devices/cpu/upd7810/upd7810.h
+++ b/src/devices/cpu/upd7810/upd7810.h
@@ -39,74 +39,74 @@ enum
#define MCFG_UPD7810_TO(_devcb) \
- devcb = &upd7810_device::set_to_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_to_func(DEVCB_##_devcb);
#define MCFG_UPD7810_CO0(_devcb) \
- devcb = &upd7810_device::set_co0_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_co0_func(DEVCB_##_devcb);
#define MCFG_UPD7810_CO1(_devcb) \
- devcb = &upd7810_device::set_co1_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_co1_func(DEVCB_##_devcb);
#define MCFG_UPD7810_TXD(_devcb) \
- devcb = &upd7810_device::set_txd_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_txd_func(DEVCB_##_devcb);
#define MCFG_UPD7810_RXD(_devcb) \
- devcb = &upd7810_device::set_rxd_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_rxd_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN0(_devcb) \
- devcb = &upd7810_device::set_an0_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_an0_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN1(_devcb) \
- devcb = &upd7810_device::set_an1_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_an1_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN2(_devcb) \
- devcb = &upd7810_device::set_an2_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_an2_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN3(_devcb) \
- devcb = &upd7810_device::set_an3_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_an3_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN4(_devcb) \
- devcb = &upd7810_device::set_an4_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_an4_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN5(_devcb) \
- devcb = &upd7810_device::set_an5_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_an5_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN6(_devcb) \
- devcb = &upd7810_device::set_an6_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_an6_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN7(_devcb) \
- devcb = &upd7810_device::set_an7_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_an7_func(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTA_READ_CB(_devcb) \
- devcb = &upd7810_device::set_pa_in_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_pa_in_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTB_READ_CB(_devcb) \
- devcb = &upd7810_device::set_pb_in_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_pb_in_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTC_READ_CB(_devcb) \
- devcb = &upd7810_device::set_pc_in_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_pc_in_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTD_READ_CB(_devcb) \
- devcb = &upd7810_device::set_pd_in_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_pd_in_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTF_READ_CB(_devcb) \
- devcb = &upd7810_device::set_pf_in_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_pf_in_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTA_WRITE_CB(_devcb) \
- devcb = &upd7810_device::set_pa_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_pa_out_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTB_WRITE_CB(_devcb) \
- devcb = &upd7810_device::set_pb_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_pb_out_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTC_WRITE_CB(_devcb) \
- devcb = &upd7810_device::set_pc_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_pc_out_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTD_WRITE_CB(_devcb) \
- devcb = &upd7810_device::set_pd_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_pd_out_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTF_WRITE_CB(_devcb) \
- devcb = &upd7810_device::set_pf_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_pf_out_cb(DEVCB_##_devcb);
#define MCFG_UPD7807_PORTA_READ_CB MCFG_UPD7810_PORTA_READ_CB
@@ -121,7 +121,7 @@ enum
#define MCFG_UPD7807_PORTF_WRITE_CB MCFG_UPD7810_PORTF_WRITE_CB
#define MCFG_UPD7807_PORTT_READ_CB(_devcb) \
- devcb = &upd7810_device::set_pt_in_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<upd7810_device &>(*device).set_pt_in_cb(DEVCB_##_devcb);
class upd7810_device : public cpu_device
@@ -130,33 +130,33 @@ public:
// construction/destruction
upd7810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_to_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_to_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_co0_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_co0_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_co1_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_co1_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_txd_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_txd_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rxd_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_rxd_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an0_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an0_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an1_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an1_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an2_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an2_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an3_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an3_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an4_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an4_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an5_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an5_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an6_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an6_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_an7_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an7_func.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_pa_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pa_in_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pb_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pb_in_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pc_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pc_in_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pd_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pd_in_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pf_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pf_in_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pa_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pa_out_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pb_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pb_out_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pc_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pc_out_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pd_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pd_out_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pf_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pf_out_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_pt_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pt_in_cb.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_to_func(Object &&cb) { return m_to_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_co0_func(Object &&cb) { return m_co0_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_co1_func(Object &&cb) { return m_co1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txd_func(Object &&cb) { return m_txd_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rxd_func(Object &&cb) { return m_rxd_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an0_func(Object &&cb) { return m_an0_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an1_func(Object &&cb) { return m_an1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an2_func(Object &&cb) { return m_an2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an3_func(Object &&cb) { return m_an3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an4_func(Object &&cb) { return m_an4_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an5_func(Object &&cb) { return m_an5_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an6_func(Object &&cb) { return m_an6_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_an7_func(Object &&cb) { return m_an7_func.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> devcb_base &set_pa_in_cb(Object &&cb) { return m_pa_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pb_in_cb(Object &&cb) { return m_pb_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pc_in_cb(Object &&cb) { return m_pc_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pd_in_cb(Object &&cb) { return m_pd_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pf_in_cb(Object &&cb) { return m_pf_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pa_out_cb(Object &&cb) { return m_pa_out_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pb_out_cb(Object &&cb) { return m_pb_out_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pc_out_cb(Object &&cb) { return m_pc_out_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pd_out_cb(Object &&cb) { return m_pd_out_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pf_out_cb(Object &&cb) { return m_pf_out_cb.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> devcb_base &set_pt_in_cb(Object &&cb) { return m_pt_in_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(pa_w);
DECLARE_WRITE8_MEMBER(pb_w);
diff --git a/src/devices/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h
index ad5bf2a1c42..96654f1efc8 100644
--- a/src/devices/cpu/z8/z8.h
+++ b/src/devices/cpu/z8/z8.h
@@ -13,46 +13,44 @@
#define MCFG_Z8_PORT_P0_READ_CB(_devcb) \
- devcb = &z8_device::set_input_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<z8_device &>(*device).set_input_cb(0, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P1_READ_CB(_devcb) \
- devcb = &z8_device::set_input_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<z8_device &>(*device).set_input_cb(1, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P2_READ_CB(_devcb) \
- devcb = &z8_device::set_input_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<z8_device &>(*device).set_input_cb(2, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P3_READ_CB(_devcb) \
- devcb = &z8_device::set_input_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<z8_device &>(*device).set_input_cb(3, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P0_WRITE_CB(_devcb) \
- devcb = &z8_device::set_output_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<z8_device &>(*device).set_output_cb(0, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P1_WRITE_CB(_devcb) \
- devcb = &z8_device::set_output_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<z8_device &>(*device).set_output_cb(1, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P2_WRITE_CB(_devcb) \
- devcb = &z8_device::set_output_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<z8_device &>(*device).set_output_cb(2, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P3_WRITE_CB(_devcb) \
- devcb = &z8_device::set_output_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<z8_device &>(*device).set_output_cb(3, DEVCB_##_devcb);
class z8_device : public cpu_device
{
public:
- // static configuration
- template<class Object>
- static devcb_base &set_input_cb(device_t &device, int port, Object &&object)
+ // configuration
+ template<class Object> devcb_base &set_input_cb(int port, Object &&object)
{
assert(port >= 0 && port < 4);
- return downcast<z8_device &>(device).m_input_cb[port].set_callback(std::forward<Object>(object));
+ return m_input_cb[port].set_callback(std::forward<Object>(object));
}
- template<class Object>
- static devcb_base &set_output_cb(device_t &device, int port, Object &&object)
+ template<class Object> devcb_base &set_output_cb(int port, Object &&object)
{
assert(port >= 0 && port < 4);
- return downcast<z8_device &>(device).m_output_cb[port].set_callback(std::forward<Object>(object));
+ return m_output_cb[port].set_callback(std::forward<Object>(object));
}
protected:
diff --git a/src/devices/cpu/z80/kl5c80a12.h b/src/devices/cpu/z80/kl5c80a12.h
index c9dbf4b118e..d77dce279c5 100644
--- a/src/devices/cpu/z80/kl5c80a12.h
+++ b/src/devices/cpu/z80/kl5c80a12.h
@@ -36,8 +36,6 @@ class kl5c80a12_device : public z80_device
public:
kl5c80a12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
- // static configuration helpers
-
protected:
// device-level overrides
virtual void device_add_mconfig(machine_config &config) override;
diff --git a/src/devices/cpu/z80/tmpz84c011.h b/src/devices/cpu/z80/tmpz84c011.h
index f54b639a7f2..b210dbd1589 100644
--- a/src/devices/cpu/z80/tmpz84c011.h
+++ b/src/devices/cpu/z80/tmpz84c011.h
@@ -25,46 +25,46 @@
// CTC callbacks
#define MCFG_TMPZ84C011_ZC0_CB(_devcb) \
- devcb = &tmpz84c011_device::set_zc0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_zc0_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_ZC1_CB(_devcb) \
- devcb = &tmpz84c011_device::set_zc1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_zc1_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_ZC2_CB(_devcb) \
- devcb = &tmpz84c011_device::set_zc2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_zc2_callback(DEVCB_##_devcb);
// I/O callbacks
#define MCFG_TMPZ84C011_PORTA_READ_CB(_devcb) \
- devcb = &tmpz84c011_device::set_inportsa_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_inportsa_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTB_READ_CB(_devcb) \
- devcb = &tmpz84c011_device::set_inportsb_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_inportsb_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTC_READ_CB(_devcb) \
- devcb = &tmpz84c011_device::set_inportsc_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_inportsc_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTD_READ_CB(_devcb) \
- devcb = &tmpz84c011_device::set_inportsd_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_inportsd_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTE_READ_CB(_devcb) \
- devcb = &tmpz84c011_device::set_inportse_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_inportse_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTA_WRITE_CB(_devcb) \
- devcb = &tmpz84c011_device::set_outportsa_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_outportsa_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTB_WRITE_CB(_devcb) \
- devcb = &tmpz84c011_device::set_outportsb_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_outportsb_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTC_WRITE_CB(_devcb) \
- devcb = &tmpz84c011_device::set_outportsc_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_outportsc_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTD_WRITE_CB(_devcb) \
- devcb = &tmpz84c011_device::set_outportsd_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_outportsd_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTE_WRITE_CB(_devcb) \
- devcb = &tmpz84c011_device::set_outportse_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c011_device &>(*device).set_outportse_cb(DEVCB_##_devcb);
/***************************************************************************
@@ -76,22 +76,22 @@ class tmpz84c011_device : public z80_device
public:
tmpz84c011_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
- // static configuration helpers
- template<class _Object> static devcb_base &set_zc0_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_zc1_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_zc2_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc2_cb.set_callback(object); }
-
- template<class _Object> static devcb_base & set_outportsa_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsa.set_callback(object); }
- template<class _Object> static devcb_base & set_outportsb_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsb.set_callback(object); }
- template<class _Object> static devcb_base & set_outportsc_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsc.set_callback(object); }
- template<class _Object> static devcb_base & set_outportsd_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsd.set_callback(object); }
- template<class _Object> static devcb_base & set_outportse_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportse.set_callback(object); }
-
- template<class _Object> static devcb_base & set_inportsa_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsa.set_callback(object); }
- template<class _Object> static devcb_base & set_inportsb_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsb.set_callback(object); }
- template<class _Object> static devcb_base & set_inportsc_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsc.set_callback(object); }
- template<class _Object> static devcb_base & set_inportsd_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsd.set_callback(object); }
- template<class _Object> static devcb_base & set_inportse_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportse.set_callback(object); }
+ // configuration helpers
+ template<class Object> devcb_base &set_zc0_callback(Object &&cb) { return m_zc0_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_zc1_callback(Object &&cb) { return m_zc1_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_zc2_callback(Object &&cb) { return m_zc2_cb.set_callback(std::forward<Object>(cb)); }
+
+ template<class Object> devcb_base &set_outportsa_cb(Object &&cb) { return m_outportsa.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_outportsb_cb(Object &&cb) { return m_outportsb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_outportsc_cb(Object &&cb) { return m_outportsc.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_outportsd_cb(Object &&cb) { return m_outportsd.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_outportse_cb(Object &&cb) { return m_outportse.set_callback(std::forward<Object>(cb)); }
+
+ template<class Object> devcb_base &set_inportsa_cb(Object &&cb) { return m_inportsa.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_inportsb_cb(Object &&cb) { return m_inportsb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_inportsc_cb(Object &&cb) { return m_inportsc.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_inportsd_cb(Object &&cb) { return m_inportsd.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_inportse_cb(Object &&cb) { return m_inportse.set_callback(std::forward<Object>(cb)); }
// CTC public interface
DECLARE_WRITE_LINE_MEMBER( trg0 ) { m_ctc->trg0(state); }
diff --git a/src/devices/cpu/z80/tmpz84c015.h b/src/devices/cpu/z80/tmpz84c015.h
index f1729207674..c061b95efb1 100644
--- a/src/devices/cpu/z80/tmpz84c015.h
+++ b/src/devices/cpu/z80/tmpz84c015.h
@@ -24,77 +24,77 @@
// SIO callbacks
#define MCFG_TMPZ84C015_OUT_TXDA_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_txda_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_txda_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_DTRA_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_dtra_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_RTSA_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_rtsa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_WRDYA_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_wrdya_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_wrdya_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_SYNCA_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_synca_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_synca_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_TXDB_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_txdb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_DTRB_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_dtrb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_RTSB_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_rtsb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_WRDYB_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_wrdyb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_wrdyb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_SYNCB_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_syncb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_RXDRQA_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_rxdrqa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_rxdrqa_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_TXDRQA_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_txdrqa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdrqa_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_RXDRQB_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_rxdrqb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_rxdrqb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_TXDRQB_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_txdrqb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdrqb_callback(DEVCB_##_devcb);
// CTC callbacks
#define MCFG_TMPZ84C015_ZC0_CB(_devcb) \
- devcb = &tmpz84c015_device::set_zc0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_zc0_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_ZC1_CB(_devcb) \
- devcb = &tmpz84c015_device::set_zc1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_zc1_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_ZC2_CB(_devcb) \
- devcb = &tmpz84c015_device::set_zc2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_zc2_callback(DEVCB_##_devcb);
// PIO callbacks
#define MCFG_TMPZ84C015_IN_PA_CB(_devcb) \
- devcb = &tmpz84c015_device::set_in_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_PA_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_ARDY_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_ardy_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_ardy_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_IN_PB_CB(_devcb) \
- devcb = &tmpz84c015_device::set_in_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_PB_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_BRDY_CB(_devcb) \
- devcb = &tmpz84c015_device::set_out_brdy_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tmpz84c015_device &>(*device).set_out_brdy_callback(DEVCB_##_devcb);
/***************************************************************************
@@ -106,35 +106,35 @@ class tmpz84c015_device : public z80_device
public:
tmpz84c015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
- // static configuration helpers
- template<class _Object> static devcb_base &set_out_txda_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txda_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtra_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_dtra_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtsa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rtsa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_wrdya_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_wrdya_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_synca_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_synca_cb.set_callback(object); }
-
- template<class _Object> static devcb_base &set_out_txdb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txdb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtrb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_dtrb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtsb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rtsb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_wrdyb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_wrdyb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_syncb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_syncb_cb.set_callback(object); }
-
- template<class _Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rxdrqa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txdrqa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txdrqa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rxdrqb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txdrqb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txdrqb_cb.set_callback(object); }
-
- template<class _Object> static devcb_base &set_zc0_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_zc0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_zc1_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_zc1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_zc2_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_zc2_cb.set_callback(object); }
-
- template<class _Object> static devcb_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_in_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_ardy_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_ardy_cb.set_callback(object); }
-
- template<class _Object> static devcb_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_in_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_brdy_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_brdy_cb.set_callback(object); }
+ // configuration helpers
+ template<class Object> devcb_base &set_out_txda_callback(Object &&cb) { return m_out_txda_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_dtra_callback(Object &&cb) { return m_out_dtra_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_rtsa_callback(Object &&cb) { return m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_wrdya_callback(Object &&cb) { return m_out_wrdya_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_synca_callback(Object &&cb) { return m_out_synca_cb.set_callback(std::forward<Object>(cb)); }
+
+ template<class Object> devcb_base &set_out_txdb_callback(Object &&cb) { return m_out_txdb_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_dtrb_callback(Object &&cb) { return m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_rtsb_callback(Object &&cb) { return m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_wrdyb_callback(Object &&cb) { return m_out_wrdyb_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_syncb_callback(Object &&cb) { return m_out_syncb_cb.set_callback(std::forward<Object>(cb)); }
+
+ template<class Object> devcb_base &set_out_rxdrqa_callback(Object &&cb) { return m_out_rxdrqa_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_txdrqa_callback(Object &&cb) { return m_out_txdrqa_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_rxdrqb_callback(Object &&cb) { return m_out_rxdrqb_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_txdrqb_callback(Object &&cb) { return m_out_txdrqb_cb.set_callback(std::forward<Object>(cb)); }
+
+ template<class Object> devcb_base &set_zc0_callback(Object &&cb) { return m_zc0_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_zc1_callback(Object &&cb) { return m_zc1_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_zc2_callback(Object &&cb) { return m_zc2_cb.set_callback(std::forward<Object>(cb)); }
+
+ template<class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_ardy_callback(Object &&cb) { return m_out_ardy_cb.set_callback(std::forward<Object>(cb)); }
+
+ template<class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_brdy_callback(Object &&cb) { return m_out_brdy_cb.set_callback(std::forward<Object>(cb)); }
// SIO public interface
DECLARE_WRITE_LINE_MEMBER( rxa_w ) { m_sio->rxa_w(state); }
diff --git a/src/devices/cpu/z80/z80.h b/src/devices/cpu/z80/z80.h
index 19f89a3cc22..3acb54b2cf0 100644
--- a/src/devices/cpu/z80/z80.h
+++ b/src/devices/cpu/z80/z80.h
@@ -8,13 +8,13 @@
#include "z80daisy.h"
#define MCFG_Z80_SET_IRQACK_CALLBACK(_devcb) \
- devcb = &z80_device::set_irqack_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<z80_device &>(*device).set_irqack_cb(DEVCB_##_devcb);
#define MCFG_Z80_SET_REFRESH_CALLBACK(_devcb) \
- devcb = &z80_device::set_refresh_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<z80_device &>(*device).set_refresh_cb(DEVCB_##_devcb);
#define MCFG_Z80_SET_HALT_CALLBACK(_devcb) \
- devcb = &z80_device::set_halt_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<z80_device &>(*device).set_halt_cb(DEVCB_##_devcb);
enum
{
@@ -42,9 +42,9 @@ public:
z80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void z80_set_cycle_tables(const uint8_t *op, const uint8_t *cb, const uint8_t *ed, const uint8_t *xy, const uint8_t *xycb, const uint8_t *ex);
- template<class _Object> static devcb_base &set_irqack_cb(device_t &device, _Object object) { return downcast<z80_device &>(device).m_irqack_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_refresh_cb(device_t &device, _Object object) { return downcast<z80_device &>(device).m_refresh_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_halt_cb(device_t &device, _Object object) { return downcast<z80_device &>(device).m_halt_cb.set_callback(object); }
+ template<class Object> devcb_base &set_irqack_cb(Object &&cb) { return m_irqack_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_refresh_cb(Object &&cb) { return m_refresh_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_halt_cb(Object &&cb) { return m_halt_cb.set_callback(std::forward<Object>(cb)); }
protected:
z80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
diff --git a/src/devices/cpu/z80/z80daisy.cpp b/src/devices/cpu/z80/z80daisy.cpp
index 23169dd3600..094c97b851c 100644
--- a/src/devices/cpu/z80/z80daisy.cpp
+++ b/src/devices/cpu/z80/z80daisy.cpp
@@ -64,19 +64,6 @@ z80_daisy_chain_interface::~z80_daisy_chain_interface()
//-------------------------------------------------
-// static_set_daisy_config - configuration helper
-// to set up the daisy chain
-//-------------------------------------------------
-void z80_daisy_chain_interface::static_set_daisy_config(device_t &device, const z80_daisy_config *config)
-{
- z80_daisy_chain_interface *daisyintf;
- if (!device.interface(daisyintf))
- throw emu_fatalerror("MCFG_Z80_DAISY_CHAIN called on device '%s' with no daisy chain interface", device.tag());
- daisyintf->m_daisy_config = config;
-}
-
-
-//-------------------------------------------------
// interface_post_start - work to be done after
// actually starting a device
//-------------------------------------------------
diff --git a/src/devices/cpu/z80/z80daisy.h b/src/devices/cpu/z80/z80daisy.h
index 896285516ee..75a20a38316 100644
--- a/src/devices/cpu/z80/z80daisy.h
+++ b/src/devices/cpu/z80/z80daisy.h
@@ -31,7 +31,7 @@ const uint8_t Z80_DAISY_IEO = 0x02; // interrupt disable mask (IEO)
// configure devices
#define MCFG_Z80_DAISY_CHAIN(_config) \
- z80_daisy_chain_interface::static_set_daisy_config(*device, _config);
+ dynamic_cast<z80_daisy_chain_interface &>(*device).set_daisy_config(_config);
@@ -81,7 +81,7 @@ public:
virtual ~z80_daisy_chain_interface();
// configuration helpers
- static void static_set_daisy_config(device_t &device, const z80_daisy_config *config);
+ void set_daisy_config(const z80_daisy_config *config) { m_daisy_config = config; }
// getters
bool daisy_chain_present() const { return (m_chain != nullptr); }
diff --git a/src/devices/cpu/z80/z80daisy_generic.cpp b/src/devices/cpu/z80/z80daisy_generic.cpp
index 57d08c13066..3a5b6562f30 100644
--- a/src/devices/cpu/z80/z80daisy_generic.cpp
+++ b/src/devices/cpu/z80/z80daisy_generic.cpp
@@ -34,16 +34,6 @@ z80daisy_generic_device::z80daisy_generic_device(const machine_config &mconfig,
}
//-------------------------------------------------
-// static_set_vector - static configuration
-//-------------------------------------------------
-
-void z80daisy_generic_device::static_set_vector(device_t &device, uint8_t vector)
-{
- z80daisy_generic_device &dev = downcast<z80daisy_generic_device &>(device);
- dev.m_vector = vector;
-}
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/cpu/z80/z80daisy_generic.h b/src/devices/cpu/z80/z80daisy_generic.h
index 389c5eda43f..24fa5b98d90 100644
--- a/src/devices/cpu/z80/z80daisy_generic.h
+++ b/src/devices/cpu/z80/z80daisy_generic.h
@@ -20,10 +20,10 @@
#define MCFG_Z80DAISY_GENERIC_ADD(_tag, _vector) \
MCFG_DEVICE_ADD(_tag, Z80DAISY_GENERIC, 0) \
- z80daisy_generic_device::static_set_vector(*device, _vector); \
+ downcast<z80daisy_generic_device &>(*device).set_vector(_vector); \
#define MCFG_Z80DAISY_GENERIC_INT_CB(_devcb) \
- devcb = &z80daisy_generic_device::set_int_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<z80daisy_generic_device &>(*device).set_int_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -37,11 +37,10 @@ public:
z80daisy_generic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
- { return downcast<z80daisy_generic_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); }
// configuration
- static void static_set_vector(device_t &device, uint8_t vector);
+ void set_vector(uint8_t vector) { m_vector = vector; }
DECLARE_WRITE_LINE_MEMBER(int_w);
DECLARE_WRITE_LINE_MEMBER(mask_w);
diff --git a/src/devices/cpu/z8000/z8000.h b/src/devices/cpu/z8000/z8000.h
index 4e3f69e5858..bea1dfe9b5a 100644
--- a/src/devices/cpu/z8000/z8000.h
+++ b/src/devices/cpu/z8000/z8000.h
@@ -30,7 +30,7 @@ enum
#define Z8000_HALT 0x0100 /* halted flag */
#define MCFG_Z8000_MO(_devcb) \
- devcb = &z8002_device::set_mo_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<z8002_device &>(*device).set_mo_callback(DEVCB_##_devcb);
class z8002_device : public cpu_device, public z8000_disassembler::config
{
@@ -39,7 +39,7 @@ public:
z8002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~z8002_device();
- template <class Object> static devcb_base &set_mo_callback(device_t &device, Object &&cb) { return downcast<z8002_device &>(device).m_mo_out.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_mo_callback(Object &&cb) { return m_mo_out.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(mi_w) { m_mi = state; } // XXX: this has to apply in the middle of an insn for now
protected:
diff --git a/src/devices/imagedev/bitbngr.h b/src/devices/imagedev/bitbngr.h
index 2da3096d098..5bd7392f1d9 100644
--- a/src/devices/imagedev/bitbngr.h
+++ b/src/devices/imagedev/bitbngr.h
@@ -13,8 +13,8 @@ class bitbanger_device : public device_t,
public device_image_interface
{
public:
- static void static_set_interface(device_t &device, const char *_interface) { downcast<bitbanger_device &>(device).m_interface = _interface; }
- static void static_set_readonly(device_t &device, bool is_readonly) { downcast<bitbanger_device &>(device).m_is_readonly = is_readonly; }
+ void set_interface(const char *interface) { m_interface = interface; }
+ void set_readonly(bool is_readonly) { m_is_readonly = is_readonly; }
// construction/destruction
bitbanger_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -49,9 +49,9 @@ private:
};
#define MCFG_BITBANGER_INTERFACE(_interface) \
- bitbanger_device::static_set_interface(*device, _interface);
+ downcast<bitbanger_device &>(*device).set_interface(_interface);
#define MCFG_BITBANGER_READONLY(_readonly) \
- bitbanger_device::static_set_readonly(*device, _readonly);
+ downcast<bitbanger_device &>(*device).set_readonly(_readonly);
// device type definition
DECLARE_DEVICE_TYPE(BITBANGER, bitbanger_device)
diff --git a/src/devices/imagedev/cassette.h b/src/devices/imagedev/cassette.h
index 3825a806af2..8ca824c61ca 100644
--- a/src/devices/imagedev/cassette.h
+++ b/src/devices/imagedev/cassette.h
@@ -50,10 +50,10 @@ public:
cassette_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~cassette_image_device();
- static void static_set_formats(device_t &device, const struct CassetteFormat* const *formats) { downcast<cassette_image_device &>(device).m_formats = formats; }
- static void static_set_create_opts(device_t &device, const struct CassetteOptions *create_opts) { downcast<cassette_image_device &>(device).m_create_opts = create_opts; }
- static void static_set_default_state(device_t &device, cassette_state default_state) { downcast<cassette_image_device &>(device).m_default_state = default_state; }
- static void static_set_interface(device_t &device, const char *_interface) { downcast<cassette_image_device &>(device).m_interface = _interface; }
+ void set_formats(const struct CassetteFormat* const *formats) { m_formats = formats; }
+ void set_create_opts(const struct CassetteOptions *create_opts) { m_create_opts = create_opts; }
+ void set_default_state(cassette_state default_state) { m_default_state = default_state; }
+ void set_interface(const char *interface) { m_interface = interface; }
// image-level overrides
virtual image_init_result call_load() override;
@@ -132,15 +132,15 @@ typedef device_type_iterator<cassette_image_device> cassette_device_iterator;
MCFG_DEVICE_MODIFY(_tag)
#define MCFG_CASSETTE_FORMATS(_formats) \
- cassette_image_device::static_set_formats(*device, _formats);
+ downcast<cassette_image_device &>(*device).set_formats(_formats);
#define MCFG_CASSETTE_CREATE_OPTS(_create_opts) \
- cassette_image_device::static_set_create_opts(*device, _create_opts);
+ downcast<cassette_image_device &>(*device).set_create_opts(_create_opts);
#define MCFG_CASSETTE_DEFAULT_STATE(_state) \
- cassette_image_device::static_set_default_state(*device, (cassette_state) (_state));
+ downcast<cassette_image_device &>(*device).set_default_state((cassette_state) (_state));
#define MCFG_CASSETTE_INTERFACE(_interface) \
- cassette_image_device::static_set_interface(*device, _interface);
+ downcast<cassette_image_device &>(*device).set_interface(_interface);
#endif // MAME_DEVICES_IMAGEDEV_CASSETTE_H
diff --git a/src/devices/imagedev/chd_cd.h b/src/devices/imagedev/chd_cd.h
index e257ff67d3f..5de6f514293 100644
--- a/src/devices/imagedev/chd_cd.h
+++ b/src/devices/imagedev/chd_cd.h
@@ -30,7 +30,7 @@ public:
cdrom_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~cdrom_image_device();
- static void static_set_interface(device_t &device, const char *_interface) { downcast<cdrom_image_device &>(device).m_interface = _interface; }
+ void set_interface(const char *interface) { m_interface = interface; }
// image-level overrides
virtual image_init_result call_load() override;
@@ -76,6 +76,6 @@ DECLARE_DEVICE_TYPE(CDROM, cdrom_image_device)
MCFG_DEVICE_ADD(_tag, CDROM, 0)
#define MCFG_CDROM_INTERFACE(_interface) \
- cdrom_image_device::static_set_interface(*device, _interface);
+ downcast<cdrom_image_device &>(*device).set_interface(_interface);
#endif // MAME_DEVICES_IMAGEDEV_CHD_CD_H
diff --git a/src/devices/imagedev/diablo.h b/src/devices/imagedev/diablo.h
index 5f1ed1e141c..2acc293a359 100644
--- a/src/devices/imagedev/diablo.h
+++ b/src/devices/imagedev/diablo.h
@@ -27,9 +27,9 @@ public:
diablo_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~diablo_image_device();
- static void static_set_device_load(device_t &device, device_image_load_delegate callback) { downcast<diablo_image_device &>(device).m_device_image_load = callback; }
- static void static_set_device_unload(device_t &device, device_image_func_delegate callback) { downcast<diablo_image_device &>(device).m_device_image_unload = callback; }
- static void static_set_interface(device_t &device, const char *_interface) { downcast<diablo_image_device &>(device).m_interface = _interface; }
+ template <typename Object> void set_device_load(Object &&cb) { m_device_image_load = std::forward<Object>(cb); }
+ template <typename Object> void set_device_unload(Object &&cb) { m_device_image_unload = std::forward<Object>(cb); }
+ void set_interface(const char *interface) { m_interface = interface; }
// image-level overrides
virtual image_init_result call_load() override;
@@ -81,12 +81,12 @@ DECLARE_DEVICE_TYPE(DIABLO, diablo_image_device)
MCFG_DEVICE_ADD(_tag, DIABLO, 0)
#define MCFG_DIABLO_LOAD(_class,_method) \
- diablo_image_device::static_set_device_load(*device, device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this));
+ downcast<diablo_image_device &>(*device).set_device_load(device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this));
#define MCFG_DIABLO_UNLOAD(_class,_method) \
- diablo_image_device::static_set_device_unload(*device, device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this));
+ downcast<diablo_image_device &>(*device).set_device_unload(device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this));
#define MCFG_DIABLO_INTERFACE(_interface) \
- diablo_image_device::static_set_interface(*device, _interface);
+ downcast<diablo_image_device &>(*device).set_interface(_interface);
#endif // MAME_DEVICES_IMAGEDEV_DIABLO_H
diff --git a/src/devices/imagedev/flopdrv.h b/src/devices/imagedev/flopdrv.h
index 695bd81e6e6..1546eec8546 100644
--- a/src/devices/imagedev/flopdrv.h
+++ b/src/devices/imagedev/flopdrv.h
@@ -88,7 +88,7 @@ struct chrn_id
#define FLOPPY_DRIVE_INDEX 0x0020
#define MCFG_LEGACY_FLOPPY_IDX_CB(_devcb) \
- devcb = &legacy_floppy_image_device::set_out_idx_func(*device, DEVCB_##_devcb);
+ devcb = &downcast<legacy_floppy_image_device &>(*device).set_out_idx_func(DEVCB_##_devcb);
class legacy_floppy_image_device : public device_t,
public device_image_interface
@@ -98,8 +98,8 @@ public:
legacy_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~legacy_floppy_image_device();
- static void static_set_floppy_config(device_t &device, const floppy_interface *config) { downcast<legacy_floppy_image_device &>(device).m_config = config; }
- template<class _Object> static devcb_base &set_out_idx_func(device_t &device, _Object object) { return downcast<legacy_floppy_image_device &>(device).m_out_idx_func.set_callback(object); }
+ void set_floppy_config(const floppy_interface *config) { m_config = config; }
+ template<class Object> devcb_base &set_out_idx_func(Object &&cb) { return m_out_idx_func.set_callback(std::forward<Object>(cb)); }
virtual image_init_result call_load() override;
virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); }
@@ -247,7 +247,7 @@ int floppy_get_count(running_machine &machine);
#define MCFG_LEGACY_FLOPPY_CONFIG(_config) \
- legacy_floppy_image_device::static_set_floppy_config(*device, &(_config));
+ downcast<legacy_floppy_image_device &>(*device).set_floppy_config(&(_config));
#define MCFG_LEGACY_FLOPPY_DRIVE_ADD(_tag, _config) \
MCFG_DEVICE_ADD(_tag, LEGACY_FLOPPY, 0) \
diff --git a/src/devices/imagedev/harddriv.h b/src/devices/imagedev/harddriv.h
index 5c683e54fcf..674ff5c3570 100644
--- a/src/devices/imagedev/harddriv.h
+++ b/src/devices/imagedev/harddriv.h
@@ -28,9 +28,9 @@ public:
harddisk_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~harddisk_image_device();
- static void static_set_device_load(device_t &device, device_image_load_delegate callback) { downcast<harddisk_image_device &>(device).m_device_image_load = callback; }
- static void static_set_device_unload(device_t &device, device_image_func_delegate callback) { downcast<harddisk_image_device &>(device).m_device_image_unload = callback; }
- static void static_set_interface(device_t &device, const char *_interface) { downcast<harddisk_image_device &>(device).m_interface = _interface; }
+ template <typename Object> void set_device_load(Object &&cb) { m_device_image_load = std::forward<Object>(cb); }
+ template <typename Object> void set_device_unload(Object &&cb) { m_device_image_unload = std::forward<Object>(cb); }
+ void set_interface(const char *interface) { m_interface = interface; }
// image-level overrides
virtual image_init_result call_load() override;
@@ -84,12 +84,12 @@ DECLARE_DEVICE_TYPE(HARDDISK, harddisk_image_device)
MCFG_DEVICE_ADD(_tag, HARDDISK, 0)
#define MCFG_HARDDISK_LOAD(_class,_method) \
- harddisk_image_device::static_set_device_load(*device, device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this));
+ downcast<harddisk_image_device &>(*device).set_device_load(device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_method), this));
#define MCFG_HARDDISK_UNLOAD(_class,_method) \
- harddisk_image_device::static_set_device_unload(*device, device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this));
+ downcast<harddisk_image_device &>(*device).set_device_unload(device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_method), this));
#define MCFG_HARDDISK_INTERFACE(_interface) \
- harddisk_image_device::static_set_interface(*device, _interface);
+ downcast<harddisk_image_device &>(*device).set_interface(_interface);
#endif // MAME_DEVICES_IMAGEDEV_HARDDRIV_H
diff --git a/src/devices/imagedev/midiin.h b/src/devices/imagedev/midiin.h
index 581558bbe1b..d11339e7160 100644
--- a/src/devices/imagedev/midiin.h
+++ b/src/devices/imagedev/midiin.h
@@ -15,7 +15,7 @@
#define MCFG_MIDIIN_INPUT_CB(_devcb) \
- devcb = &midiin_device::set_input_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<midiin_device &>(*device).set_input_callback(DEVCB_##_devcb);
/***************************************************************************
@@ -30,7 +30,7 @@ public:
// construction/destruction
midiin_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_input_callback(device_t &device, _Object object) { return downcast<midiin_device &>(device).m_input_cb.set_callback(object); }
+ template<class _Object> devcb_base &set_input_callback(_Object object) { return m_input_cb.set_callback(object); }
// image-level overrides
virtual image_init_result call_load() override;
diff --git a/src/devices/imagedev/printer.h b/src/devices/imagedev/printer.h
index acf07296882..3ee9db01571 100644
--- a/src/devices/imagedev/printer.h
+++ b/src/devices/imagedev/printer.h
@@ -14,7 +14,7 @@
#pragma once
#define MCFG_PRINTER_ONLINE_CB(_devcb) \
- devcb = &printer_image_device::set_online_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<printer_image_device &>(*device).set_online_callback(DEVCB_##_devcb);
/***************************************************************************
TYPE DEFINITIONS
@@ -29,7 +29,7 @@ public:
// construction/destruction
printer_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_online_callback(device_t &device, _Object object) { return downcast<printer_image_device &>(device).m_online_cb.set_callback(object); }
+ template<class _Object> devcb_base &set_online_callback(_Object object) { return m_online_cb.set_callback(object); }
// image-level overrides
virtual image_init_result call_load() override;
diff --git a/src/devices/imagedev/snapquik.h b/src/devices/imagedev/snapquik.h
index dfe458979bb..921f0b2d4c3 100644
--- a/src/devices/imagedev/snapquik.h
+++ b/src/devices/imagedev/snapquik.h
@@ -24,7 +24,7 @@ public:
snapshot_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~snapshot_image_device();
- static void static_set_interface(device_t &device, const char *_interface) { downcast<snapshot_image_device &>(device).m_interface = _interface; }
+ void set_interface(const char *interface) { m_interface = interface; }
// image-level overrides
virtual image_init_result call_load() override;
@@ -93,13 +93,13 @@ DECLARE_DEVICE_TYPE(QUICKLOAD, quickload_image_device)
static_cast<snapshot_image_device *>(device)->set_handler(SNAPSHOT_LOAD_DELEGATE(_class,_load), _file_extensions, _delay);
#define MCFG_SNAPSHOT_INTERFACE(_interface) \
- snapshot_image_device::static_set_interface(*device, _interface);
+ downcast<snapshot_image_device &>(*device).set_interface(_interface);
#define MCFG_QUICKLOAD_ADD(_tag, _class, _load, _file_extensions, _delay) \
MCFG_DEVICE_ADD(_tag, QUICKLOAD, 0) \
static_cast<quickload_image_device *>(device)->set_handler(QUICKLOAD_LOAD_DELEGATE(_class,_load), _file_extensions, _delay);
#define MCFG_QUICKLOAD_INTERFACE(_interface) \
- quickload_image_device::static_set_interface(*device, _interface);
+ downcast<quickload_image_device &>(*device).set_interface(_interface);
#endif // MAME_DEVICES_IMAGEDEV_SNAPQUIK_H
diff --git a/src/devices/machine/1mb5.h b/src/devices/machine/1mb5.h
index 3350e4a968c..9c7c76eab3e 100644
--- a/src/devices/machine/1mb5.h
+++ b/src/devices/machine/1mb5.h
@@ -14,16 +14,16 @@
#pragma once
#define MCFG_1MB5_IRL_HANDLER(_devcb) \
- devcb = &hp_1mb5_device::set_irl_handler(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp_1mb5_device &>(*device).set_irl_handler(DEVCB_##_devcb);
#define MCFG_1MB5_HALT_HANDLER(_devcb) \
- devcb = &hp_1mb5_device::set_halt_handler(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp_1mb5_device &>(*device).set_halt_handler(DEVCB_##_devcb);
#define MCFG_1MB5_RESET_HANDLER(_devcb) \
- devcb = &hp_1mb5_device::set_reset_handler(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp_1mb5_device &>(*device).set_reset_handler(DEVCB_##_devcb);
#define MCFG_1MB5_INT_HANDLER(_devcb) \
- devcb = &hp_1mb5_device::set_int_handler(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp_1mb5_device &>(*device).set_int_handler(DEVCB_##_devcb);
class hp_1mb5_device : public device_t
{
@@ -32,10 +32,10 @@ public:
hp_1mb5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_irl_handler(device_t &device, Object &&cb) { return downcast<hp_1mb5_device &>(device).m_irl_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_halt_handler(device_t &device, Object &&cb) { return downcast<hp_1mb5_device &>(device).m_halt_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb) { return downcast<hp_1mb5_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) { return downcast<hp_1mb5_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irl_handler(Object &&cb) { return m_irl_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_halt_handler(Object &&cb) { return m_halt_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_reset_handler(Object &&cb) { return m_reset_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); }
// CPU access
DECLARE_READ8_MEMBER(cpu_r);
diff --git a/src/devices/machine/53c7xx.h b/src/devices/machine/53c7xx.h
index 7dff86c2256..f2af9e616f8 100644
--- a/src/devices/machine/53c7xx.h
+++ b/src/devices/machine/53c7xx.h
@@ -17,13 +17,13 @@
#define MCFG_NCR53C7XX_IRQ_HANDLER(_devcb) \
- devcb = &ncr53c7xx_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<ncr53c7xx_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_NCR53C7XX_HOST_WRITE(_devcb) \
- devcb = &ncr53c7xx_device::set_host_write(*device, DEVCB_##_devcb);
+ devcb = &downcast<ncr53c7xx_device &>(*device).set_host_write(DEVCB_##_devcb);
#define MCFG_NCR53C7XX_HOST_READ(_devcb) \
- devcb = &ncr53c7xx_device::set_host_read(*device, DEVCB_##_devcb);
+ devcb = &downcast<ncr53c7xx_device &>(*device).set_host_read(DEVCB_##_devcb);
class ncr53c7xx_device : public nscsi_device, public device_execute_interface
{
@@ -32,9 +32,9 @@ public:
ncr53c7xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ncr53c7xx_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_host_write(device_t &device, Object &&cb) { return downcast<ncr53c7xx_device &>(device).m_host_write.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_host_read(device_t &device, Object &&cb) { return downcast<ncr53c7xx_device &>(device).m_host_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_host_write(Object &&cb) { return m_host_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_host_read(Object &&cb) { return m_host_read.set_callback(std::forward<Object>(cb)); }
// our API
DECLARE_READ32_MEMBER(read);
diff --git a/src/devices/machine/53c810.h b/src/devices/machine/53c810.h
index 6ff69a4c606..0e0d0743b14 100644
--- a/src/devices/machine/53c810.h
+++ b/src/devices/machine/53c810.h
@@ -22,9 +22,9 @@ public:
// construction/destruction
lsi53c810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_irq_callback(device_t &device, irq_delegate &&callback) { downcast<lsi53c810_device &>(device).m_irq_cb = std::move(callback); }
- static void set_dma_callback(device_t &device, dma_delegate &&callback) { downcast<lsi53c810_device &>(device).m_dma_cb = std::move(callback); }
- static void set_fetch_callback(device_t &device, fetch_delegate &&callback) { downcast<lsi53c810_device &>(device).m_fetch_cb = std::move(callback); }
+ template <typename Object> void set_irq_callback(Object &&cb) { m_irq_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_dma_callback(Object &&cb) { m_dma_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_fetch_callback(Object &&cb) { m_fetch_cb = std::forward<Object>(cb); }
uint8_t reg_r(int offset);
void reg_w(int offset, uint8_t data);
@@ -103,12 +103,12 @@ DECLARE_DEVICE_TYPE(LSI53C810, lsi53c810_device)
#define MCFG_LSI53C810_IRQ_CB(_class, _method) \
- lsi53c810_device::set_irq_callback(*device, lsi53c810_device::irq_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<lsi53c810_device &>(*device).set_irq_callback(lsi53c810_device::irq_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_LSI53C810_DMA_CB(_class, _method) \
- lsi53c810_device::set_dma_callback(*device, lsi53c810_device::dma_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<lsi53c810_device &>(*device).set_dma_callback(lsi53c810_device::dma_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_LSI53C810_FETCH_CB(_class, _method) \
- lsi53c810_device::set_fetch_callback(*device, lsi53c810_device::fetch_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<lsi53c810_device &>(*device).set_fetch_callback(lsi53c810_device::fetch_delegate(&_class::_method, #_class "::" #_method, this));
#endif // MAME_MACHINE_53C810_H
diff --git a/src/devices/machine/64h156.h b/src/devices/machine/64h156.h
index 0964f85558a..62e1ccabff9 100644
--- a/src/devices/machine/64h156.h
+++ b/src/devices/machine/64h156.h
@@ -71,13 +71,13 @@
//**************************************************************************
#define MCFG_64H156_ATN_CALLBACK(_write) \
- devcb = &c64h156_device::set_atn_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c64h156_device &>(*device).set_atn_wr_callback(DEVCB_##_write);
#define MCFG_64H156_SYNC_CALLBACK(_write) \
- devcb = &c64h156_device::set_sync_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c64h156_device &>(*device).set_sync_wr_callback(DEVCB_##_write);
#define MCFG_64H156_BYTE_CALLBACK(_write) \
- devcb = &c64h156_device::set_byte_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<c64h156_device &>(*device).set_byte_wr_callback(DEVCB_##_write);
@@ -93,9 +93,9 @@ public:
// construction/destruction
c64h156_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_atn_wr_callback(device_t &device, Object &&cb) { return downcast<c64h156_device &>(device).m_write_atn.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sync_wr_callback(device_t &device, Object &&cb) { return downcast<c64h156_device &>(device).m_write_sync.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_byte_wr_callback(device_t &device, Object &&cb) { return downcast<c64h156_device &>(device).m_write_byte.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_atn_wr_callback(Object &&cb) { return m_write_atn.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sync_wr_callback(Object &&cb) { return m_write_sync.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_byte_wr_callback(Object &&cb) { return m_write_byte.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( yb_r );
DECLARE_WRITE8_MEMBER( yb_w );
diff --git a/src/devices/machine/6522via.h b/src/devices/machine/6522via.h
index a06f1977469..facb67b34a3 100644
--- a/src/devices/machine/6522via.h
+++ b/src/devices/machine/6522via.h
@@ -24,29 +24,29 @@
// TODO: REMOVE THESE
#define MCFG_VIA6522_READPA_HANDLER(_devcb) \
- devcb = &via6522_device::set_readpa_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<via6522_device &>(*device).set_readpa_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_READPB_HANDLER(_devcb) \
- devcb = &via6522_device::set_readpb_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<via6522_device &>(*device).set_readpb_handler(DEVCB_##_devcb);
// TODO: CONVERT THESE TO WRITE LINE
#define MCFG_VIA6522_WRITEPA_HANDLER(_devcb) \
- devcb = &via6522_device::set_writepa_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<via6522_device &>(*device).set_writepa_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_WRITEPB_HANDLER(_devcb) \
- devcb = &via6522_device::set_writepb_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<via6522_device &>(*device).set_writepb_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_CA2_HANDLER(_devcb) \
- devcb = &via6522_device::set_ca2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<via6522_device &>(*device).set_ca2_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_CB1_HANDLER(_devcb) \
- devcb = &via6522_device::set_cb1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<via6522_device &>(*device).set_cb1_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_CB2_HANDLER(_devcb) \
- devcb = &via6522_device::set_cb2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<via6522_device &>(*device).set_cb2_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_IRQ_HANDLER(_devcb) \
- devcb = &via6522_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<via6522_device &>(*device).set_irq_handler(DEVCB_##_devcb);
/***************************************************************************
@@ -83,17 +83,17 @@ public:
via6522_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// TODO: REMOVE THESE
- template <class Object> static devcb_base &set_readpa_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_in_a_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_readpb_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_in_b_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_readpa_handler(Object &&cb) { return m_in_a_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_readpb_handler(Object &&cb) { return m_in_b_handler.set_callback(std::forward<Object>(cb)); }
// TODO: CONVERT THESE TO WRITE LINE
- template <class Object> static devcb_base &set_writepa_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_out_a_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_writepb_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_out_b_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_writepa_handler(Object &&cb) { return m_out_a_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_writepb_handler(Object &&cb) { return m_out_b_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ca2_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_ca2_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cb1_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_cb1_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cb2_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_cb2_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ca2_handler(Object &&cb) { return m_ca2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cb1_handler(Object &&cb) { return m_cb1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cb2_handler(Object &&cb) { return m_cb2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
virtual void map(address_map &map);
diff --git a/src/devices/machine/6525tpi.h b/src/devices/machine/6525tpi.h
index 1164e3b31d5..a844de2ac0f 100644
--- a/src/devices/machine/6525tpi.h
+++ b/src/devices/machine/6525tpi.h
@@ -43,15 +43,15 @@ class tpi6525_device : public device_t
public:
tpi6525_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_pc_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_in_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pc_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_ca_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_ca_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_cb_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_cb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_pc_callback(Object &&cb) { return m_in_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pc_callback(Object &&cb) { return m_out_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_ca_callback(Object &&cb) { return m_out_ca_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_cb_callback(Object &&cb) { return m_out_cb_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -125,31 +125,31 @@ DECLARE_DEVICE_TYPE(TPI6525, tpi6525_device)
#define MCFG_TPI6525_OUT_IRQ_CB(_devcb) \
- devcb = &tpi6525_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tpi6525_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_IN_PA_CB(_devcb) \
- devcb = &tpi6525_device::set_in_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tpi6525_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_OUT_PA_CB(_devcb) \
- devcb = &tpi6525_device::set_out_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tpi6525_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_IN_PB_CB(_devcb) \
- devcb = &tpi6525_device::set_in_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tpi6525_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_OUT_PB_CB(_devcb) \
- devcb = &tpi6525_device::set_out_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tpi6525_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_IN_PC_CB(_devcb) \
- devcb = &tpi6525_device::set_in_pc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tpi6525_device &>(*device).set_in_pc_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_OUT_PC_CB(_devcb) \
- devcb = &tpi6525_device::set_out_pc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tpi6525_device &>(*device).set_out_pc_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_OUT_CA_CB(_devcb) \
- devcb = &tpi6525_device::set_out_ca_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tpi6525_device &>(*device).set_out_ca_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_OUT_CB_CB(_devcb) \
- devcb = &tpi6525_device::set_out_cb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<tpi6525_device &>(*device).set_out_cb_callback(DEVCB_##_devcb);
#endif // MAME_MACHINE_6525TPI_H
diff --git a/src/devices/machine/6532riot.h b/src/devices/machine/6532riot.h
index 2741334d9cd..a4b7d5b2608 100644
--- a/src/devices/machine/6532riot.h
+++ b/src/devices/machine/6532riot.h
@@ -18,19 +18,19 @@
//**************************************************************************
#define MCFG_RIOT6532_IN_PA_CB(_devcb) \
- devcb = &riot6532_device::set_in_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<riot6532_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_RIOT6532_OUT_PA_CB(_devcb) \
- devcb = &riot6532_device::set_out_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<riot6532_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_RIOT6532_IN_PB_CB(_devcb) \
- devcb = &riot6532_device::set_in_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<riot6532_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_RIOT6532_OUT_PB_CB(_devcb) \
- devcb = &riot6532_device::set_out_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<riot6532_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
#define MCFG_RIOT6532_IRQ_CB(_devcb) \
- devcb = &riot6532_device::set_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<riot6532_device &>(*device).set_irq_callback(DEVCB_##_devcb);
/***************************************************************************
@@ -46,11 +46,11 @@ public:
// construction/destruction
riot6532_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_in_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_out_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_in_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_out_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_irq_cb.set_callback(object); }
+ template<class _Object> devcb_base &set_in_pa_callback(_Object object) { return m_in_pa_cb.set_callback(object); }
+ template<class _Object> devcb_base &set_out_pa_callback(_Object object) { return m_out_pa_cb.set_callback(object); }
+ template<class _Object> devcb_base &set_in_pb_callback(_Object object) { return m_in_pb_cb.set_callback(object); }
+ template<class _Object> devcb_base &set_out_pb_callback(_Object object) { return m_out_pb_cb.set_callback(object); }
+ template<class _Object> devcb_base &set_irq_callback(_Object object) { return m_irq_cb.set_callback(object); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/68153bim.h b/src/devices/machine/68153bim.h
index 246048b4718..0a81715ca18 100644
--- a/src/devices/machine/68153bim.h
+++ b/src/devices/machine/68153bim.h
@@ -46,25 +46,25 @@
MCFG_DEVICE_ADD(_tag, EI68C153, _clock)
#define MCFG_BIM68153_OUT_INT_CB(_devcb) \
- devcb = &bim68153_device::set_out_int_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<bim68153_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
// These callback sets INTAL0 and INTAL1 but is probably not needed as the
// shorthand OUT_IACK0..OUT_IACK3 below embedd the channel information
#define MCFG_BIM68153_OUT_INTAL0_CB(_devcb) \
- devcb = &bim68153_device::set_out_intal0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<bim68153_device &>(*device).set_out_intal0_callback(DEVCB_##_devcb);
#define MCFG_BIM68153_OUT_INTAL1_CB(_devcb) \
- devcb = &bim68153_device::set_out_intal1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<bim68153_device &>(*device).set_out_intal1_callback(DEVCB_##_devcb);
// LOCAL IACK callbacks emulating the INTAL0 and INTAL1 outputs for INTAE requesting a vector from a sub device
#define MCFG_BIM68153_OUT_IACK0_CB(_devcb) \
- devcb = &bim68153_device::set_out_iack0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<bim68153_device &>(*device).set_out_iack0_callback(DEVCB_##_devcb);
#define MCFG_BIM68153_OUT_IACK1_CB(_devcb) \
- devcb = &bim68153_device::set_out_iack1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<bim68153_device &>(*device).set_out_iack1_callback(DEVCB_##_devcb);
#define MCFG_BIM68153_OUT_IACK2_CB(_devcb) \
- devcb = &bim68153_device::set_out_iack2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<bim68153_device &>(*device).set_out_iack2_callback(DEVCB_##_devcb);
#define MCFG_BIM68153_OUT_IACK3_CB(_devcb) \
- devcb = &bim68153_device::set_out_iack3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<bim68153_device &>(*device).set_out_iack3_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -140,14 +140,14 @@ public:
int acknowledge();
int get_irq_level();
- template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_intal0_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_out_intal0_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_intal1_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_out_intal1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_intal0_callback(Object &&cb) { return m_out_intal0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_intal1_callback(Object &&cb) { return m_out_intal1_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_iack0_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_0]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_iack1_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_1]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_iack2_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_2]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_iack4_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_3]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_iack0_callback(Object &&cb) { return m_chn[CHN_0]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_iack1_callback(Object &&cb) { return m_chn[CHN_1]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_iack2_callback(Object &&cb) { return m_chn[CHN_2]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_iack4_callback(Object &&cb) { return m_chn[CHN_3]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/6821pia.h b/src/devices/machine/6821pia.h
index a7838451a1a..084ae4c1402 100644
--- a/src/devices/machine/6821pia.h
+++ b/src/devices/machine/6821pia.h
@@ -33,38 +33,38 @@
// TODO: REMOVE THESE
#define MCFG_PIA_READPA_HANDLER(_devcb) \
- devcb = &pia6821_device::set_readpa_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pia6821_device &>(*device).set_readpa_handler(DEVCB_##_devcb);
#define MCFG_PIA_READPB_HANDLER(_devcb) \
- devcb = &pia6821_device::set_readpb_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pia6821_device &>(*device).set_readpb_handler(DEVCB_##_devcb);
#define MCFG_PIA_READCA1_HANDLER(_devcb) \
- devcb = &pia6821_device::set_readca1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pia6821_device &>(*device).set_readca1_handler(DEVCB_##_devcb);
#define MCFG_PIA_READCA2_HANDLER(_devcb) \
- devcb = &pia6821_device::set_readca2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pia6821_device &>(*device).set_readca2_handler(DEVCB_##_devcb);
#define MCFG_PIA_READCB1_HANDLER(_devcb) \
- devcb = &pia6821_device::set_readcb1_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pia6821_device &>(*device).set_readcb1_handler(DEVCB_##_devcb);
// TODO: CONVERT THESE TO WRITE LINE
#define MCFG_PIA_WRITEPA_HANDLER(_devcb) \
- devcb = &pia6821_device::set_writepa_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pia6821_device &>(*device).set_writepa_handler(DEVCB_##_devcb);
#define MCFG_PIA_WRITEPB_HANDLER(_devcb) \
- devcb = &pia6821_device::set_writepb_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pia6821_device &>(*device).set_writepb_handler(DEVCB_##_devcb);
#define MCFG_PIA_CA2_HANDLER(_devcb) \
- devcb = &pia6821_device::set_ca2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pia6821_device &>(*device).set_ca2_handler(DEVCB_##_devcb);
#define MCFG_PIA_CB2_HANDLER(_devcb) \
- devcb = &pia6821_device::set_cb2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pia6821_device &>(*device).set_cb2_handler(DEVCB_##_devcb);
#define MCFG_PIA_IRQA_HANDLER(_devcb) \
- devcb = &pia6821_device::set_irqa_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pia6821_device &>(*device).set_irqa_handler(DEVCB_##_devcb);
#define MCFG_PIA_IRQB_HANDLER(_devcb) \
- devcb = &pia6821_device::set_irqb_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<pia6821_device &>(*device).set_irqb_handler(DEVCB_##_devcb);
/***************************************************************************
@@ -81,20 +81,20 @@ public:
// static configuration helpers
// TODO: REMOVE THESE
- template<class Obj> static devcb_base &set_readpa_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_in_a_handler.set_callback(std::forward<Obj>(object)); }
- template<class Obj> static devcb_base &set_readpb_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_in_b_handler.set_callback(std::forward<Obj>(object)); }
- template<class Obj> static devcb_base &set_readca1_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_in_ca1_handler.set_callback(std::forward<Obj>(object)); }
- template<class Obj> static devcb_base &set_readca2_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_in_ca2_handler.set_callback(std::forward<Obj>(object)); }
- template<class Obj> static devcb_base &set_readcb1_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_in_cb1_handler.set_callback(std::forward<Obj>(object)); }
+ template<class Obj> devcb_base &set_readpa_handler(Obj &&object) { return m_in_a_handler.set_callback(std::forward<Obj>(object)); }
+ template<class Obj> devcb_base &set_readpb_handler(Obj &&object) { return m_in_b_handler.set_callback(std::forward<Obj>(object)); }
+ template<class Obj> devcb_base &set_readca1_handler(Obj &&object) { return m_in_ca1_handler.set_callback(std::forward<Obj>(object)); }
+ template<class Obj> devcb_base &set_readca2_handler(Obj &&object) { return m_in_ca2_handler.set_callback(std::forward<Obj>(object)); }
+ template<class Obj> devcb_base &set_readcb1_handler(Obj &&object) { return m_in_cb1_handler.set_callback(std::forward<Obj>(object)); }
// TODO: CONVERT THESE TO WRITE LINE
- template<class Obj> static devcb_base &set_writepa_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_out_a_handler.set_callback(std::forward<Obj>(object)); }
- template<class Obj> static devcb_base &set_writepb_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_out_b_handler.set_callback(std::forward<Obj>(object)); }
+ template<class Obj> devcb_base &set_writepa_handler(Obj &&object) { return m_out_a_handler.set_callback(std::forward<Obj>(object)); }
+ template<class Obj> devcb_base &set_writepb_handler(Obj &&object) { return m_out_b_handler.set_callback(std::forward<Obj>(object)); }
- template<class Obj> static devcb_base &set_ca2_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_ca2_handler.set_callback(std::forward<Obj>(object)); }
- template<class Obj> static devcb_base &set_cb2_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_cb2_handler.set_callback(std::forward<Obj>(object)); }
- template<class Obj> static devcb_base &set_irqa_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_irqa_handler.set_callback(std::forward<Obj>(object)); }
- template<class Obj> static devcb_base &set_irqb_handler(device_t &device, Obj &&object) { return downcast<pia6821_device &>(device).m_irqb_handler.set_callback(std::forward<Obj>(object)); }
+ template<class Obj> devcb_base &set_ca2_handler(Obj &&object) { return m_ca2_handler.set_callback(std::forward<Obj>(object)); }
+ template<class Obj> devcb_base &set_cb2_handler(Obj &&object) { return m_cb2_handler.set_callback(std::forward<Obj>(object)); }
+ template<class Obj> devcb_base &set_irqa_handler(Obj &&object) { return m_irqa_handler.set_callback(std::forward<Obj>(object)); }
+ template<class Obj> devcb_base &set_irqb_handler(Obj &&object) { return m_irqb_handler.set_callback(std::forward<Obj>(object)); }
uint8_t reg_r(uint8_t offset);
void reg_w(uint8_t offset, uint8_t data);
diff --git a/src/devices/machine/68230pit.h b/src/devices/machine/68230pit.h
index 14b71943cd6..23c1af3bb09 100644
--- a/src/devices/machine/68230pit.h
+++ b/src/devices/machine/68230pit.h
@@ -43,40 +43,40 @@
//**************************************************************************
#define MCFG_PIT68230_PA_INPUT_CB(_devcb) \
- devcb = &pit68230_device::set_pa_in_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_pa_in_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PA_OUTPUT_CB(_devcb) \
- devcb = &pit68230_device::set_pa_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_pa_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PB_INPUT_CB(_devcb) \
- devcb = &pit68230_device::set_pb_in_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_pb_in_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PB_OUTPUT_CB(_devcb) \
- devcb = &pit68230_device::set_pb_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_pb_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PC_INPUT_CB(_devcb) \
- devcb = &pit68230_device::set_pc_in_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_pc_in_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PC_OUTPUT_CB(_devcb) \
- devcb = &pit68230_device::set_pc_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_pc_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_H1_CB(_devcb) \
- devcb = &pit68230_device::set_h1_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_h1_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_H2_CB(_devcb) \
- devcb = &pit68230_device::set_h2_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_h2_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_H3_CB(_devcb) \
- devcb = &pit68230_device::set_h3_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_h3_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_H4_CB(_devcb) \
- devcb = &pit68230_device::set_h4_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_h4_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_TIMER_IRQ_CB(_devcb) \
- devcb = &pit68230_device::set_tirq_out_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_tirq_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PORT_IRQ_CB(_devcb) \
- devcb = &pit68230_device::set_pirq_out_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<pit68230_device &>(*device).set_pirq_out_callback(DEVCB_##_devcb);
/*-----------------------------------------------------------------------
* Registers RS1-RS5 R/W Description
@@ -114,18 +114,18 @@ public:
// construction/destruction
pit68230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_pa_in_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pa_in_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pa_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pa_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pb_in_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pb_in_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pb_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pb_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pc_in_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pc_in_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pc_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pc_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_h1_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h1_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_h2_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h2_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_h3_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h3_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_h4_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h4_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tirq_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_tirq_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pirq_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pirq_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pa_in_callback(Object &&cb){ return m_pa_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pa_out_callback(Object &&cb){ return m_pa_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pb_in_callback(Object &&cb){ return m_pb_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pb_out_callback(Object &&cb){ return m_pb_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pc_in_callback(Object &&cb){ return m_pc_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pc_out_callback(Object &&cb){ return m_pc_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_h1_out_callback(Object &&cb){ return m_h1_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_h2_out_callback(Object &&cb){ return m_h2_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_h3_out_callback(Object &&cb){ return m_h3_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_h4_out_callback(Object &&cb){ return m_h4_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tirq_out_callback(Object &&cb){ return m_tirq_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pirq_out_callback(Object &&cb){ return m_pirq_out_cb.set_callback (std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER (write);
DECLARE_READ8_MEMBER (read);
diff --git a/src/devices/machine/68307.h b/src/devices/machine/68307.h
index 98b7cf475fa..184603fdfa1 100644
--- a/src/devices/machine/68307.h
+++ b/src/devices/machine/68307.h
@@ -12,17 +12,17 @@
/* trampolines so we can specify the 68681 serial configuration when adding the CPU */
#define MCFG_MC68307_SERIAL_A_TX_CALLBACK(_cb) \
- devcb = &m68307_cpu_device::set_a_tx_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<m68307_cpu_device &>(*device).set_a_tx_cb(DEVCB_##_cb);
#define MCFG_MC68307_SERIAL_B_TX_CALLBACK(_cb) \
- devcb = &m68307_cpu_device::set_b_tx_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<m68307_cpu_device &>(*device).set_b_tx_cb(DEVCB_##_cb);
// deprecated: use ipX_w() instead
#define MCFG_MC68307_SERIAL_INPORT_CALLBACK(_cb) \
- devcb = &m68307_cpu_device::set_inport_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<m68307_cpu_device &>(*device).set_inport_cb(DEVCB_##_cb);
#define MCFG_MC68307_SERIAL_OUTPORT_CALLBACK(_cb) \
- devcb = &m68307_cpu_device::set_outport_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<m68307_cpu_device &>(*device).set_outport_cb(DEVCB_##_cb);
class m68307_cpu_device : public m68000_device
@@ -36,11 +36,11 @@ public:
m68307_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
/* trampolines so we can specify the 68681 serial configuration when adding the CPU */
- template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_a_tx_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_a_tx.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_b_tx_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_b_tx.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_inport_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_read_inport.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_outport_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_outport.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_cb(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_a_tx_cb(Object &&cb) { return m_write_a_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_b_tx_cb(Object &&cb) { return m_write_b_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_inport_cb(Object &&cb) { return m_read_inport.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_outport_cb(Object &&cb) { return m_write_outport.set_callback(std::forward<Object>(cb)); }
/* callbacks for internal ports */
void set_port_callbacks(porta_read_delegate &&porta_r, porta_write_delegate &&porta_w, portb_read_delegate &&portb_r, portb_write_delegate &&portb_w);
diff --git a/src/devices/machine/68340.h b/src/devices/machine/68340.h
index 903745cfa16..fcec19e453d 100644
--- a/src/devices/machine/68340.h
+++ b/src/devices/machine/68340.h
@@ -17,37 +17,37 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_MC68340_PA_INPUT_CB(_devcb) \
- devcb = &m68340_cpu_device::set_pa_in_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<m68340_cpu_device &>(*device).set_pa_in_callback(DEVCB_##_devcb);
#define MCFG_MC68340_PA_OUTPUT_CB(_devcb) \
- devcb = &m68340_cpu_device::set_pa_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<m68340_cpu_device &>(*device).set_pa_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_PB_INPUT_CB(_devcb) \
- devcb = &m68340_cpu_device::set_pb_in_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<m68340_cpu_device &>(*device).set_pb_in_callback(DEVCB_##_devcb);
#define MCFG_MC68340_PB_OUTPUT_CB(_devcb) \
- devcb = &m68340_cpu_device::set_pb_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<m68340_cpu_device &>(*device).set_pb_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_ADD_CRYSTAL(_crystal) \
- m68340_cpu_device::set_crystal(*device, _crystal);
+ downcast<m68340_cpu_device &>(*device).set_crystal(_crystal);
#define MCFG_MC68340_TOUT1_OUTPUT_CB(_devcb) \
- devcb = &m68340_cpu_device::set_tout1_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<m68340_cpu_device &>(*device).set_tout1_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_TIN1_INPUT_CB(_devcb) \
- devcb = &m68340_cpu_device::set_tin1_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<m68340_cpu_device &>(*device).set_tin1_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_TGATE1_INPUT_CB(_devcb) \
- devcb = &m68340_cpu_device::set_tgate1_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<m68340_cpu_device &>(*device).set_tgate1_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_TOUT2_OUTPUT_CB(_devcb) \
- devcb = &m68340_cpu_device::set_tout2_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<m68340_cpu_device &>(*device).set_tout2_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_TIN2_INPUT_CB(_devcb) \
- devcb = &m68340_cpu_device::set_tin2_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<m68340_cpu_device &>(*device).set_tin2_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_TGATE2_INPUT_CB(_devcb) \
- devcb = &m68340_cpu_device::set_tgate2_out_callback (*device, DEVCB_##_devcb);
+ devcb = &downcast<m68340_cpu_device &>(*device).set_tgate2_out_callback(DEVCB_##_devcb);
class m68340_cpu_device : public fscpu32_device
{
@@ -57,21 +57,21 @@ class m68340_cpu_device : public fscpu32_device
public:
m68340_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_pa_in_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_pa_in_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pa_out_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_pa_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pb_in_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_pb_in_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pb_out_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_pb_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pa_in_callback(Object &&cb){ return m_pa_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pa_out_callback(Object &&cb){ return m_pa_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pb_in_callback(Object &&cb){ return m_pb_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pb_out_callback(Object &&cb){ return m_pb_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tout1_out_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_timer1->m_tout_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tin1_in_callback (device_t &device, Object &&cb) { return downcast<m68340_cpu_device &>(device).m_timer1->m_tin_in_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tgate1_in_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_timer1->m_tgate_in_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tout2_out_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_timer2->m_tout_out_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tin2_in_callback (device_t &device, Object &&cb) { return downcast<m68340_cpu_device &>(device).m_timer2->m_tin_in_cb.set_callback (std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tgate2_in_callback (device_t &device, Object &&cb){ return downcast<m68340_cpu_device &>(device).m_timer2->m_tgate_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tout1_out_callback(Object &&cb){ return m_timer1->m_tout_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tin1_in_callback(Object &&cb) { return m_timer1->m_tin_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tgate1_in_callback(Object &&cb){ return m_timer1->m_tgate_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tout2_out_callback(Object &&cb){ return m_timer2->m_tout_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tin2_in_callback(Object &&cb) { return m_timer2->m_tin_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tgate2_in_callback(Object &&cb){ return m_timer2->m_tgate_in_cb.set_callback (std::forward<Object>(cb)); }
uint16_t get_cs(offs_t address);
- static void set_crystal(device_t &device, const XTAL &crystal) { set_crystal(device, crystal.value()); }
+ void set_crystal(const XTAL &crystal) { set_crystal(crystal.value()); }
// Timer input methods, can be used instead of the corresponding polling MCFG callbacks
DECLARE_WRITE_LINE_MEMBER( tin1_w ) { m_timer1->tin_w(state); }
@@ -105,11 +105,10 @@ private:
uint32_t m_extal;
// TODO: Support Limp mode and external clock with no PLL
- static void set_crystal(device_t &device, int crystal)
+ void set_crystal(int crystal)
{
- m68340_cpu_device &dev = downcast<m68340_cpu_device &>(device);
- dev.m_crystal = crystal;
- dev.m_clock_mode |= (m68340_sim::CLOCK_MODCK | m68340_sim::CLOCK_PLL);
+ m_crystal = crystal;
+ m_clock_mode |= (m68340_sim::CLOCK_MODCK | m68340_sim::CLOCK_PLL);
}
READ32_MEMBER( m68340_internal_base_r );
diff --git a/src/devices/machine/6840ptm.h b/src/devices/machine/6840ptm.h
index 1210d480694..26bc0ab1543 100644
--- a/src/devices/machine/6840ptm.h
+++ b/src/devices/machine/6840ptm.h
@@ -20,19 +20,19 @@
//**************************************************************************
#define MCFG_PTM6840_EXTERNAL_CLOCKS(_clk0, _clk1, _clk2) \
- ptm6840_device::set_external_clocks(*device, _clk0, _clk1, _clk2);
+ downcast<ptm6840_device &>(*device).set_external_clocks(_clk0, _clk1, _clk2);
#define MCFG_PTM6840_O1_CB(_devcb) \
- devcb = &ptm6840_device::set_out_callback(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<ptm6840_device &>(*device).set_out_callback(0, DEVCB_##_devcb);
#define MCFG_PTM6840_O2_CB(_devcb) \
- devcb = &ptm6840_device::set_out_callback(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<ptm6840_device &>(*device).set_out_callback(1, DEVCB_##_devcb);
#define MCFG_PTM6840_O3_CB(_devcb) \
- devcb = &ptm6840_device::set_out_callback(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<ptm6840_device &>(*device).set_out_callback(2, DEVCB_##_devcb);
#define MCFG_PTM6840_IRQ_CB(_devcb) \
- devcb = &ptm6840_device::set_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ptm6840_device &>(*device).set_irq_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -46,10 +46,10 @@ public:
// construction/destruction
ptm6840_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_external_clocks(device_t &device, double clock0, double clock1, double clock2) { downcast<ptm6840_device &>(device).m_external_clock[0] = clock0; downcast<ptm6840_device &>(device).m_external_clock[1] = clock1; downcast<ptm6840_device &>(device).m_external_clock[2] = clock2; }
- static void set_external_clocks(device_t &device, const XTAL &clock0, const XTAL &clock1, const XTAL &clock2) { set_external_clocks(device, clock0.dvalue(), clock1.dvalue(), clock2.dvalue()); }
- template <class Object> static devcb_base &set_out_callback(device_t &device, int index, Object &&cb) { return downcast<ptm6840_device &>(device).m_out_cb[index].set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<ptm6840_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ void set_external_clocks(double clock0, double clock1, double clock2) { m_external_clock[0] = clock0; m_external_clock[1] = clock1; m_external_clock[2] = clock2; }
+ void set_external_clocks(const XTAL &clock0, const XTAL &clock1, const XTAL &clock2) { set_external_clocks(clock0.dvalue(), clock1.dvalue(), clock2.dvalue()); }
+ template <class Object> devcb_base &set_out_callback(int index, Object &&cb) { return m_out_cb[index].set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); }
int status(int clock) const { return m_enabled[clock]; } // get whether timer is enabled
int irq_state() const { return m_irq; } // get IRQ state
diff --git a/src/devices/machine/6850acia.h b/src/devices/machine/6850acia.h
index 119dc330ceb..5f78bc932b3 100644
--- a/src/devices/machine/6850acia.h
+++ b/src/devices/machine/6850acia.h
@@ -15,13 +15,13 @@
#define MCFG_ACIA6850_TXD_HANDLER(_devcb) \
- devcb = &acia6850_device::set_txd_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<acia6850_device &>(*device).set_txd_handler(DEVCB_##_devcb);
#define MCFG_ACIA6850_RTS_HANDLER(_devcb) \
- devcb = &acia6850_device::set_rts_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<acia6850_device &>(*device).set_rts_handler(DEVCB_##_devcb);
#define MCFG_ACIA6850_IRQ_HANDLER(_devcb) \
- devcb = &acia6850_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<acia6850_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class acia6850_device : public device_t
{
@@ -30,9 +30,9 @@ public:
acia6850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<acia6850_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<acia6850_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<acia6850_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( control_w );
DECLARE_READ8_MEMBER( status_r );
diff --git a/src/devices/machine/68561mpcc.h b/src/devices/machine/68561mpcc.h
index 50efa5dd39e..a91a5221e56 100644
--- a/src/devices/machine/68561mpcc.h
+++ b/src/devices/machine/68561mpcc.h
@@ -63,26 +63,26 @@
/* Generic macros */
#define MCFG_MPCC_CLOCK(_rx, _tx) \
- mpcc_device::configure_clocks(*device, _rx, _tx);
+ downcast<mpcc_device &>(*device).configure_clocks(_rx, _tx);
/* Callbacks to be called by us for signals driven by the MPCC */
#define MCFG_MPCC_OUT_TXD_CB(_devcb) \
- devcb = &mpcc_device::set_out_txd_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mpcc_device &>(*device).set_out_txd_callback(DEVCB_##_devcb);
#define MCFG_MPCC_OUT_DTR_CB(_devcb) \
- devcb = &mpcc_device::set_out_dtr_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mpcc_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
#define MCFG_MPCC_OUT_RTS_CB(_devcb) \
- devcb = &mpcc_device::set_out_rts_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mpcc_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
#define MCFG_MPCC_OUT_TRXC_CB(_devcb) \
- devcb = &mpcc_device::set_out_trxc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mpcc_device &>(*device).set_out_trxc_callback(DEVCB_##_devcb);
#define MCFG_MPCC_OUT_RTXC_CB(_devcb) \
- devcb = &mpcc_device::set_out_rtxc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mpcc_device &>(*device).set_out_rtxc_callback(DEVCB_##_devcb);
#define MCFG_MPCC_OUT_INT_CB(_devcb) \
- devcb = &mpcc_device::set_out_int_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mpcc_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
@@ -95,19 +95,18 @@ public:
// construction/destruction
mpcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_txd_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_txd_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_dtr_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_dtr_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_rts_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_rts_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_rtxc_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_rtxc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_trxc_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_trxc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_txd_callback(Object &&cb) { return m_out_txd_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_dtr_callback(Object &&cb) { return m_out_dtr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_rts_callback(Object &&cb) { return m_out_rts_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_rtxc_callback(Object &&cb) { return m_out_rtxc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_trxc_callback(Object &&cb) { return m_out_trxc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); }
- static void configure_clocks(device_t &device, int rxc, int txc)
+ void configure_clocks(int rxc, int txc)
{
- mpcc_device &dev = downcast<mpcc_device &>(device);
- dev.m_rxc = rxc;
- dev.m_txc = txc;
+ m_rxc = rxc;
+ m_txc = txc;
}
DECLARE_READ8_MEMBER( read );
diff --git a/src/devices/machine/7200fifo.h b/src/devices/machine/7200fifo.h
index b9d2a01009c..1b89b53406b 100644
--- a/src/devices/machine/7200fifo.h
+++ b/src/devices/machine/7200fifo.h
@@ -58,16 +58,16 @@ The following chips are functionally equivalent and pin-compatible.
#define MCFG_FIFO7200_ADD(_tag, _ramsize) \
MCFG_DEVICE_ADD(_tag, FIFO7200, 0) \
- fifo7200_device::set_ram_size(*device, _ramsize);
+ downcast<fifo7200_device &>(*device).set_ram_size(_ramsize);
#define MCFG_FIFO7200_EF_HANDLER(_devcb) \
- devcb = &fifo7200_device::set_ef_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<fifo7200_device &>(*device).set_ef_handler(DEVCB_##_devcb);
#define MCFG_FIFO7200_FF_HANDLER(_devcb) \
- devcb = &fifo7200_device::set_ff_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<fifo7200_device &>(*device).set_ff_handler(DEVCB_##_devcb);
#define MCFG_FIFO7200_HF_HANDLER(_devcb) \
- devcb = &fifo7200_device::set_hf_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<fifo7200_device &>(*device).set_hf_handler(DEVCB_##_devcb);
@@ -83,10 +83,10 @@ public:
fifo7200_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_ef_handler(device_t &device, Object &&cb) { return downcast<fifo7200_device &>(device).m_ef_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ff_handler(device_t &device, Object &&cb) { return downcast<fifo7200_device &>(device).m_ff_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_hf_handler(device_t &device, Object &&cb) { return downcast<fifo7200_device &>(device).m_hf_handler.set_callback(std::forward<Object>(cb)); }
- static void set_ram_size(device_t &device, int size) { downcast<fifo7200_device &>(device).m_ram_size = size; }
+ template <class Object> devcb_base &set_ef_handler(Object &&cb) { return m_ef_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ff_handler(Object &&cb) { return m_ff_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_hf_handler(Object &&cb) { return m_hf_handler.set_callback(std::forward<Object>(cb)); }
+ void set_ram_size(int size) { m_ram_size = size; }
DECLARE_READ_LINE_MEMBER( ef_r ) { return !m_ef; } // _EF
DECLARE_READ_LINE_MEMBER( ff_r ) { return !m_ff; } // _FF
diff --git a/src/devices/machine/7400.h b/src/devices/machine/7400.h
index a202a85d466..3761f468b7b 100644
--- a/src/devices/machine/7400.h
+++ b/src/devices/machine/7400.h
@@ -35,16 +35,16 @@
#define MCFG_7400_Y1_CB(_devcb) \
- devcb = &ttl7400_device::set_y1_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7400_device &>(*device).set_y1_cb(DEVCB_##_devcb);
#define MCFG_7400_Y2_CB(_devcb) \
- devcb = &ttl7400_device::set_y2_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7400_device &>(*device).set_y2_cb(DEVCB_##_devcb);
#define MCFG_7400_Y3_CB(_devcb) \
- devcb = &ttl7400_device::set_y3_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7400_device &>(*device).set_y3_cb(DEVCB_##_devcb);
#define MCFG_7400_Y4_CB(_devcb) \
- devcb = &ttl7400_device::set_y4_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7400_device &>(*device).set_y4_cb(DEVCB_##_devcb);
#define MCFG_7400_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, TTL7400, 0)
@@ -56,10 +56,10 @@ public:
ttl7400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_y1_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y1_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_y2_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y2_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_y3_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y3_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_y4_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y4_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_y1_cb(Object &&cb) { return m_y1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_y2_cb(Object &&cb) { return m_y2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_y3_cb(Object &&cb) { return m_y3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_y4_cb(Object &&cb) { return m_y4_func.set_callback(std::forward<Object>(cb)); }
// public interfaces
DECLARE_WRITE_LINE_MEMBER( a1_w );
diff --git a/src/devices/machine/7404.h b/src/devices/machine/7404.h
index b2be5e5182c..bc4401f936b 100644
--- a/src/devices/machine/7404.h
+++ b/src/devices/machine/7404.h
@@ -62,22 +62,22 @@
#define MCFG_7404_Y1_CB(_devcb) \
- devcb = &ttl7404_device::set_y1_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7404_device &>(*device).set_y1_cb(DEVCB_##_devcb);
#define MCFG_7404_Y2_CB(_devcb) \
- devcb = &ttl7404_device::set_y2_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7404_device &>(*device).set_y2_cb(DEVCB_##_devcb);
#define MCFG_7404_Y3_CB(_devcb) \
- devcb = &ttl7404_device::set_y3_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7404_device &>(*device).set_y3_cb(DEVCB_##_devcb);
#define MCFG_7404_Y4_CB(_devcb) \
- devcb = &ttl7404_device::set_y4_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7404_device &>(*device).set_y4_cb(DEVCB_##_devcb);
#define MCFG_7404_Y5_CB(_devcb) \
- devcb = &ttl7404_device::set_y5_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7404_device &>(*device).set_y5_cb(DEVCB_##_devcb);
#define MCFG_7404_Y6_CB(_devcb) \
- devcb = &ttl7404_device::set_y6_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7404_device &>(*device).set_y6_cb(DEVCB_##_devcb);
#define MCFG_7404_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, TTL7404, 0)
@@ -89,12 +89,12 @@ public:
ttl7404_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_y1_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y1_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_y2_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y2_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_y3_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y3_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_y4_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y4_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_y5_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y5_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_y6_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y6_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_y1_cb(Object &&cb) { return m_y1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_y2_cb(Object &&cb) { return m_y2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_y3_cb(Object &&cb) { return m_y3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_y4_cb(Object &&cb) { return m_y4_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_y5_cb(Object &&cb) { return m_y5_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_y6_cb(Object &&cb) { return m_y6_func.set_callback(std::forward<Object>(cb)); }
// public interfaces
DECLARE_WRITE_LINE_MEMBER( a1_w );
diff --git a/src/devices/machine/74123.h b/src/devices/machine/74123.h
index 1316249070b..075e56c8206 100644
--- a/src/devices/machine/74123.h
+++ b/src/devices/machine/74123.h
@@ -58,25 +58,25 @@
***************************************************************************/
#define MCFG_TTL74123_CONNECTION_TYPE(_ctype) \
- ttl74123_device::set_connection_type(*device, _ctype);
+ downcast<ttl74123_device &>(*device).set_connection_type(_ctype);
#define MCFG_TTL74123_RESISTOR_VALUE(_value) \
- ttl74123_device::set_resistor_value(*device, _value);
+ downcast<ttl74123_device &>(*device).set_resistor_value(_value);
#define MCFG_TTL74123_CAPACITOR_VALUE(_value) \
- ttl74123_device::set_capacitor_value(*device, _value);
+ downcast<ttl74123_device &>(*device).set_capacitor_value(_value);
#define MCFG_TTL74123_A_PIN_VALUE(_value) \
- ttl74123_device::set_a_pin_value(*device, _value);
+ downcast<ttl74123_device &>(*device).set_a_pin_value(_value);
#define MCFG_TTL74123_B_PIN_VALUE(_value) \
- ttl74123_device::set_b_pin_value(*device, _value);
+ downcast<ttl74123_device &>(*device).set_b_pin_value(_value);
#define MCFG_TTL74123_CLEAR_PIN_VALUE(_value) \
- ttl74123_device::set_clear_pin_value(*device, _value);
+ downcast<ttl74123_device &>(*device).set_clear_pin_value(_value);
#define MCFG_TTL74123_OUTPUT_CHANGED_CB(_devcb) \
- devcb = &ttl74123_device::set_output_changed_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74123_device &>(*device).set_output_changed_callback(DEVCB_##_devcb);
/* constants for the different ways the cap/res can be connected.
This determines the formula for calculating the pulse width */
@@ -97,13 +97,13 @@ public:
// construction/destruction
ttl74123_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_connection_type(device_t &device, int type) { downcast<ttl74123_device &>(device).m_connection_type = type; }
- static void set_resistor_value(device_t &device, double value) { downcast<ttl74123_device &>(device).m_res = value; }
- static void set_capacitor_value(device_t &device, double value) { downcast<ttl74123_device &>(device).m_cap = value; }
- static void set_a_pin_value(device_t &device, int value) { downcast<ttl74123_device &>(device).m_a = value; }
- static void set_b_pin_value(device_t &device, int value) { downcast<ttl74123_device &>(device).m_b = value; }
- static void set_clear_pin_value(device_t &device, int value) { downcast<ttl74123_device &>(device).m_clear = value; }
- template <class Object> static devcb_base &set_output_changed_callback(device_t &device, Object &&cb) { return downcast<ttl74123_device &>(device).m_output_changed_cb.set_callback(std::forward<Object>(cb)); }
+ void set_connection_type(int type) { m_connection_type = type; }
+ void set_resistor_value(double value) { m_res = value; }
+ void set_capacitor_value(double value) { m_cap = value; }
+ void set_a_pin_value(int value) { m_a = value; }
+ void set_b_pin_value(int value) { m_b = value; }
+ void set_clear_pin_value(int value) { m_clear = value; }
+ template <class Object> devcb_base &set_output_changed_callback(Object &&cb) { return m_output_changed_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(a_w);
DECLARE_WRITE_LINE_MEMBER(b_w);
diff --git a/src/devices/machine/74145.h b/src/devices/machine/74145.h
index d7747b66707..553d4ee86db 100644
--- a/src/devices/machine/74145.h
+++ b/src/devices/machine/74145.h
@@ -18,34 +18,34 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_TTL74145_OUTPUT_LINE_0_CB(_devcb) \
- devcb = &ttl74145_device::set_output_line_0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74145_device &>(*device).set_output_line_0_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_1_CB(_devcb) \
- devcb = &ttl74145_device::set_output_line_1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74145_device &>(*device).set_output_line_1_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_2_CB(_devcb) \
- devcb = &ttl74145_device::set_output_line_2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74145_device &>(*device).set_output_line_2_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_3_CB(_devcb) \
- devcb = &ttl74145_device::set_output_line_3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74145_device &>(*device).set_output_line_3_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_4_CB(_devcb) \
- devcb = &ttl74145_device::set_output_line_4_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74145_device &>(*device).set_output_line_4_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_5_CB(_devcb) \
- devcb = &ttl74145_device::set_output_line_5_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74145_device &>(*device).set_output_line_5_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_6_CB(_devcb) \
- devcb = &ttl74145_device::set_output_line_6_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74145_device &>(*device).set_output_line_6_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_7_CB(_devcb) \
- devcb = &ttl74145_device::set_output_line_7_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74145_device &>(*device).set_output_line_7_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_8_CB(_devcb) \
- devcb = &ttl74145_device::set_output_line_8_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74145_device &>(*device).set_output_line_8_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_9_CB(_devcb) \
- devcb = &ttl74145_device::set_output_line_9_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74145_device &>(*device).set_output_line_9_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -59,16 +59,16 @@ public:
// construction/destruction
ttl74145_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_output_line_0_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_0_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_line_1_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_1_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_line_2_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_2_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_line_3_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_3_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_line_4_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_4_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_line_5_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_5_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_line_6_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_6_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_line_7_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_7_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_line_8_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_8_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_line_9_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_9_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_line_0_callback(Object &&cb) { return m_output_line_0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_line_1_callback(Object &&cb) { return m_output_line_1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_line_2_callback(Object &&cb) { return m_output_line_2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_line_3_callback(Object &&cb) { return m_output_line_3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_line_4_callback(Object &&cb) { return m_output_line_4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_line_5_callback(Object &&cb) { return m_output_line_5_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_line_6_callback(Object &&cb) { return m_output_line_6_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_line_7_callback(Object &&cb) { return m_output_line_7_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_line_8_callback(Object &&cb) { return m_output_line_8_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_line_9_callback(Object &&cb) { return m_output_line_9_cb.set_callback(std::forward<Object>(cb)); }
uint16_t read();
void write(uint8_t data);
diff --git a/src/devices/machine/74148.h b/src/devices/machine/74148.h
index ffef3a75e07..bc1a52cf64c 100644
--- a/src/devices/machine/74148.h
+++ b/src/devices/machine/74148.h
@@ -57,7 +57,7 @@ public:
ttl74148_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~ttl74148_device() {}
- static void set_output_callback(device_t &device, ttl74148_output_delegate callback) { downcast<ttl74148_device &>(device).m_output_cb = callback; }
+ template <typename Object> void set_output_callback(Object &&cb) { m_output_cb = std::forward<Object>(cb); }
/* must call update() after setting the inputs */
void update();
@@ -95,7 +95,7 @@ DECLARE_DEVICE_TYPE(TTL74148, ttl74148_device)
#define MCFG_74148_OUTPUT_CB(_class, _method) \
- ttl74148_device::set_output_callback(*device, ttl74148_output_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<ttl74148_device &>(*device).set_output_callback(ttl74148_output_delegate(&_class::_method, #_class "::" #_method, this));
#endif // MAME_DEVICES_MACHINE_74148_H
diff --git a/src/devices/machine/74153.h b/src/devices/machine/74153.h
index 8325d819233..3418d8b852f 100644
--- a/src/devices/machine/74153.h
+++ b/src/devices/machine/74153.h
@@ -33,10 +33,10 @@
MCFG_DEVICE_ADD(_tag, TTL153, 0)
#define MCFG_TTL153_ZA_CB(_devcb) \
- devcb = &ttl153_device::set_za_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl153_device &>(*device).set_za_callback(DEVCB_##_devcb);
#define MCFG_TTL153_ZB_CB(_devcb) \
- devcb = &ttl153_device::set_zb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl153_device &>(*device).set_zb_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -50,11 +50,8 @@ public:
ttl153_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
- template <class Object> static devcb_base &set_za_callback(device_t &device, Object &&cb)
- { return downcast<ttl153_device &>(device).m_za_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_zb_callback(device_t &device, Object &&cb)
- { return downcast<ttl153_device &>(device).m_zb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_za_callback(Object &&cb) { return m_za_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_zb_callback(Object &&cb) { return m_zb_cb.set_callback(std::forward<Object>(cb)); }
// select
DECLARE_WRITE_LINE_MEMBER(s0_w);
diff --git a/src/devices/machine/74157.h b/src/devices/machine/74157.h
index 788c52fe41f..0db679c9c8f 100644
--- a/src/devices/machine/74157.h
+++ b/src/devices/machine/74157.h
@@ -30,13 +30,13 @@
//**************************************************************************
#define MCFG_74157_A_IN_CB(_devcb) \
- devcb = &ls157_device::set_a_in_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ls157_device &>(*device).set_a_in_callback(DEVCB_##_devcb);
#define MCFG_74157_B_IN_CB(_devcb) \
- devcb = &ls157_device::set_b_in_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ls157_device &>(*device).set_b_in_callback(DEVCB_##_devcb);
#define MCFG_74157_OUT_CB(_devcb) \
- devcb = &ls157_device::set_out_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ls157_device &>(*device).set_out_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -52,9 +52,9 @@ public:
ls157_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// static configuration
- template <class Object> static devcb_base &set_a_in_callback(device_t &device, Object &&cb) { return downcast<ls157_device &>(device).m_a_in_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_b_in_callback(device_t &device, Object &&cb) { return downcast<ls157_device &>(device).m_b_in_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_callback(device_t &device, Object &&cb) { return downcast<ls157_device &>(device).m_out_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_a_in_callback(Object &&cb) { return m_a_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_b_in_callback(Object &&cb) { return m_b_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_callback(Object &&cb) { return m_out_cb.set_callback(std::forward<Object>(cb)); }
// data writes
DECLARE_WRITE8_MEMBER(a_w);
diff --git a/src/devices/machine/74161.h b/src/devices/machine/74161.h
index f73be684edc..9ba767af9ad 100644
--- a/src/devices/machine/74161.h
+++ b/src/devices/machine/74161.h
@@ -59,22 +59,22 @@
#define MCFG_7416x_QA_CB(_devcb) \
- devcb = &ttl7416x_device::set_qa_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7416x_device &>(*device).set_qa_cb(DEVCB_##_devcb);
#define MCFG_7416x_QB_CB(_devcb) \
- devcb = &ttl7416x_device::set_qb_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7416x_device &>(*device).set_qb_cb(DEVCB_##_devcb);
#define MCFG_7416x_QC_CB(_devcb) \
- devcb = &ttl7416x_device::set_qc_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7416x_device &>(*device).set_qc_cb(DEVCB_##_devcb);
#define MCFG_7416x_QD_CB(_devcb) \
- devcb = &ttl7416x_device::set_qd_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7416x_device &>(*device).set_qd_cb(DEVCB_##_devcb);
#define MCFG_7416x_OUTPUT_CB(_devcb) \
- devcb = &ttl7416x_device::set_output_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7416x_device &>(*device).set_output_cb(DEVCB_##_devcb);
#define MCFG_7416x_TC_CB(_devcb) \
- devcb = &ttl7416x_device::set_tc_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7416x_device &>(*device).set_tc_cb(DEVCB_##_devcb);
#define MCFG_74160_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, TTL74160, 0)
@@ -92,12 +92,12 @@ class ttl7416x_device : public device_t
{
public:
// static configuration helpers
- template <class Object> static devcb_base &set_qa_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qa_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_qb_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qb_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_qc_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qc_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_qd_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qd_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_output_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tc_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_tc_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_qa_cb(Object &&cb) { return m_qa_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_qb_cb(Object &&cb) { return m_qb_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_qc_cb(Object &&cb) { return m_qc_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_qd_cb(Object &&cb) { return m_qd_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_cb(Object &&cb) { return m_output_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tc_cb(Object &&cb) { return m_tc_func.set_callback(std::forward<Object>(cb)); }
// public interfaces
DECLARE_WRITE_LINE_MEMBER( clear_w );
diff --git a/src/devices/machine/74165.h b/src/devices/machine/74165.h
index 4d3b7ed31de..f59d69e25dd 100644
--- a/src/devices/machine/74165.h
+++ b/src/devices/machine/74165.h
@@ -34,10 +34,10 @@
MCFG_DEVICE_ADD(_tag, TTL165, 0)
#define MCFG_TTL165_DATA_CB(_devcb) \
- devcb = &ttl165_device::set_data_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl165_device &>(*device).set_data_callback(DEVCB_##_devcb);
#define MCFG_TTL165_QH_CB(_devcb) \
- devcb = &ttl165_device::set_qh_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl165_device &>(*device).set_qh_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -51,11 +51,11 @@ public:
ttl165_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
- template <class Object> static devcb_base &set_data_callback(device_t &device, Object &&cb)
- { return downcast<ttl165_device &>(device).m_data_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data_callback(Object &&cb)
+ { return m_data_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_qh_callback(device_t &device, Object &&cb)
- { return downcast<ttl165_device &>(device).m_qh_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_qh_callback(Object &&cb)
+ { return m_qh_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(serial_w);
DECLARE_WRITE_LINE_MEMBER(clock_w);
diff --git a/src/devices/machine/74166.h b/src/devices/machine/74166.h
index 44642fec20a..d1a240084ad 100644
--- a/src/devices/machine/74166.h
+++ b/src/devices/machine/74166.h
@@ -34,10 +34,10 @@
MCFG_DEVICE_ADD(_tag, TTL166, 0)
#define MCFG_TTL166_DATA_CB(_devcb) \
- devcb = &ttl166_device::set_data_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl166_device &>(*device).set_data_callback(DEVCB_##_devcb);
#define MCFG_TTL166_QH_CB(_devcb) \
- devcb = &ttl166_device::set_qh_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl166_device &>(*device).set_qh_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -51,11 +51,8 @@ public:
ttl166_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
- template <class Object> static devcb_base &set_data_callback(device_t &device, Object &&cb)
- { return downcast<ttl166_device &>(device).m_data_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_qh_callback(device_t &device, Object &&cb)
- { return downcast<ttl166_device &>(device).m_qh_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data_callback(Object &&cb) { return m_data_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_qh_callback(Object &&cb) { return m_qh_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(serial_w);
DECLARE_WRITE_LINE_MEMBER(clock_w);
diff --git a/src/devices/machine/74175.h b/src/devices/machine/74175.h
index a5f019c3298..fb0c68bbeda 100644
--- a/src/devices/machine/74175.h
+++ b/src/devices/machine/74175.h
@@ -49,46 +49,46 @@
#define MCFG_74174_Q1_CB(_devcb) \
- devcb = &ttl741745_device::set_q1_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl741745_device &>(*device).set_q1_cb(DEVCB_##_devcb);
#define MCFG_74174_Q2_CB(_devcb) \
- devcb = &ttl741745_device::set_q2_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl741745_device &>(*device).set_q2_cb(DEVCB_##_devcb);
#define MCFG_74174_Q3_CB(_devcb) \
- devcb = &ttl741745_device::set_q3_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl741745_device &>(*device).set_q3_cb(DEVCB_##_devcb);
#define MCFG_74174_Q4_CB(_devcb) \
- devcb = &ttl741745_device::set_q4_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl741745_device &>(*device).set_q4_cb(DEVCB_##_devcb);
#define MCFG_74175_Q1_CB(_devcb) \
- devcb = &ttl741745_device::set_q1_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl741745_device &>(*device).set_q1_cb(DEVCB_##_devcb);
#define MCFG_74175_Q2_CB(_devcb) \
- devcb = &ttl741745_device::set_q2_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl741745_device &>(*device).set_q2_cb(DEVCB_##_devcb);
#define MCFG_74175_Q3_CB(_devcb) \
- devcb = &ttl741745_device::set_q3_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl741745_device &>(*device).set_q3_cb(DEVCB_##_devcb);
#define MCFG_74175_Q4_CB(_devcb) \
- devcb = &ttl741745_device::set_q4_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl741745_device &>(*device).set_q4_cb(DEVCB_##_devcb);
#define MCFG_74174_Q5_CB(_devcb) \
- devcb = &ttl74174_device::set_q5_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74174_device &>(*device).set_q5_cb(DEVCB_##_devcb);
#define MCFG_74174_Q6_CB(_devcb) \
- devcb = &ttl74174_device::set_q6_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74174_device &>(*device).set_q6_cb(DEVCB_##_devcb);
#define MCFG_74175_NOT_Q1_CB(_devcb) \
- devcb = &ttl74175_device::set_not_q1_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74175_device &>(*device).set_not_q1_cb(DEVCB_##_devcb);
#define MCFG_74175_NOT_Q2_CB(_devcb) \
- devcb = &ttl74175_device::set_not_q2_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74175_device &>(*device).set_not_q2_cb(DEVCB_##_devcb);
#define MCFG_74175_NOT_Q3_CB(_devcb) \
- devcb = &ttl74175_device::set_not_q3_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74175_device &>(*device).set_not_q3_cb(DEVCB_##_devcb);
#define MCFG_74175_NOT_Q4_CB(_devcb) \
- devcb = &ttl74175_device::set_not_q1_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl74175_device &>(*device).set_not_q1_cb(DEVCB_##_devcb);
#define MCFG_74174_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, TTL74174, 0)
@@ -99,10 +99,10 @@
class ttl741745_device : public device_t
{
public:
- template <class Object> static devcb_base &set_q1_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q1_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_q2_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q2_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_q3_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q3_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_q4_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q4_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_q1_cb(Object &&cb) { return m_q1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_q2_cb(Object &&cb) { return m_q2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_q3_cb(Object &&cb) { return m_q3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_q4_cb(Object &&cb) { return m_q4_func.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( clear_w );
DECLARE_WRITE_LINE_MEMBER( d1_w );
@@ -146,8 +146,8 @@ class ttl74174_device : public ttl741745_device
public:
ttl74174_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_q5_cb(device_t &device, Object &&cb) { return downcast<ttl74174_device &>(device).m_q5_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_q6_cb(device_t &device, Object &&cb) { return downcast<ttl74174_device &>(device).m_q6_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_q5_cb(Object &&cb) { return m_q5_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_q6_cb(Object &&cb) { return m_q6_func.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( d5_w );
DECLARE_WRITE_LINE_MEMBER( d6_w );
@@ -174,10 +174,10 @@ class ttl74175_device : public ttl741745_device
public:
ttl74175_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_not_q1_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q1_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_not_q2_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q2_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_not_q3_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q3_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_not_q4_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q4_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_not_q1_cb(Object &&cb) { return m_not_q1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_not_q2_cb(Object &&cb) { return m_not_q2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_not_q3_cb(Object &&cb) { return m_not_q3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_not_q4_cb(Object &&cb) { return m_not_q4_func.set_callback(std::forward<Object>(cb)); }
protected:
virtual void device_start() override;
diff --git a/src/devices/machine/74259.h b/src/devices/machine/74259.h
index 0805537d06b..7b2b853bdb2 100644
--- a/src/devices/machine/74259.h
+++ b/src/devices/machine/74259.h
@@ -37,24 +37,24 @@
//**************************************************************************
#define MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(_devcb) \
- devcb = &addressable_latch_device::set_q_out_cb<0>(*device, DEVCB_##_devcb);
+ devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<0>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(_devcb) \
- devcb = &addressable_latch_device::set_q_out_cb<1>(*device, DEVCB_##_devcb);
+ devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<1>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(_devcb) \
- devcb = &addressable_latch_device::set_q_out_cb<2>(*device, DEVCB_##_devcb);
+ devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<2>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(_devcb) \
- devcb = &addressable_latch_device::set_q_out_cb<3>(*device, DEVCB_##_devcb);
+ devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<3>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(_devcb) \
- devcb = &addressable_latch_device::set_q_out_cb<4>(*device, DEVCB_##_devcb);
+ devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<4>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(_devcb) \
- devcb = &addressable_latch_device::set_q_out_cb<5>(*device, DEVCB_##_devcb);
+ devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<5>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(_devcb) \
- devcb = &addressable_latch_device::set_q_out_cb<6>(*device, DEVCB_##_devcb);
+ devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<6>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(_devcb) \
- devcb = &addressable_latch_device::set_q_out_cb<7>(*device, DEVCB_##_devcb);
+ devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<7>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_PARALLEL_OUT_CB(_devcb) \
- devcb = &addressable_latch_device::set_parallel_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<addressable_latch_device &>(*device).set_parallel_out_cb(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -66,8 +66,8 @@ class addressable_latch_device : public device_t
{
public:
// static configuration
- template<unsigned Bit, class Object> static devcb_base &set_q_out_cb(device_t &device, Object &&cb) { return downcast<addressable_latch_device &>(device).m_q_out_cb[Bit].set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_parallel_out_cb(device_t &device, Object &&cb) { return downcast<addressable_latch_device &>(device).m_parallel_out_cb.set_callback(std::forward<Object>(cb)); }
+ template<unsigned Bit, class Object> devcb_base &set_q_out_cb(Object &&cb) { return m_q_out_cb[Bit].set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_parallel_out_cb(Object &&cb) { return m_parallel_out_cb.set_callback(std::forward<Object>(cb)); }
// data write handlers
void write_bit(offs_t offset, bool d);
diff --git a/src/devices/machine/7474.h b/src/devices/machine/7474.h
index 3b0b604958d..2d4cab1a9df 100644
--- a/src/devices/machine/7474.h
+++ b/src/devices/machine/7474.h
@@ -52,10 +52,10 @@
//**************************************************************************
#define MCFG_7474_OUTPUT_CB(_devcb) \
- devcb = &ttl7474_device::set_output_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7474_device &>(*device).set_output_cb(DEVCB_##_devcb);
#define MCFG_7474_COMP_OUTPUT_CB(_devcb) \
- devcb = &ttl7474_device::set_comp_output_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ttl7474_device &>(*device).set_comp_output_cb(DEVCB_##_devcb);
//**************************************************************************
@@ -71,8 +71,8 @@ public:
ttl7474_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_output_cb(device_t &device, Object &&cb) { return downcast<ttl7474_device &>(device).m_output_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_comp_output_cb(device_t &device, Object &&cb) { return downcast<ttl7474_device &>(device).m_comp_output_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_cb(Object &&cb) { return m_output_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_comp_output_cb(Object &&cb) { return m_comp_output_func.set_callback(std::forward<Object>(cb)); }
// public interfaces
DECLARE_WRITE_LINE_MEMBER( clear_w );
diff --git a/src/devices/machine/8042kbdc.h b/src/devices/machine/8042kbdc.h
index 14eeb013296..2166b2141b8 100644
--- a/src/devices/machine/8042kbdc.h
+++ b/src/devices/machine/8042kbdc.h
@@ -21,22 +21,22 @@
//**************************************************************************
#define MCFG_KBDC8042_KEYBOARD_TYPE(_kbdt) \
- kbdc8042_device::set_keyboard_type(*device, kbdc8042_device::_kbdt);
+ downcast<kbdc8042_device &>(*device).set_keyboard_type(kbdc8042_device::_kbdt);
#define MCFG_KBDC8042_SYSTEM_RESET_CB(_devcb) \
- devcb = &kbdc8042_device::set_system_reset_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<kbdc8042_device &>(*device).set_system_reset_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_GATE_A20_CB(_devcb) \
- devcb = &kbdc8042_device::set_gate_a20_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<kbdc8042_device &>(*device).set_gate_a20_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(_devcb) \
- devcb = &kbdc8042_device::set_input_buffer_full_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<kbdc8042_device &>(*device).set_input_buffer_full_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_OUTPUT_BUFFER_EMPTY_CB(_devcb) \
- devcb = &kbdc8042_device::set_output_buffer_empty_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<kbdc8042_device &>(*device).set_output_buffer_empty_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_SPEAKER_CB(_devcb) \
- devcb = &kbdc8042_device::set_speaker_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<kbdc8042_device &>(*device).set_speaker_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -57,12 +57,12 @@ public:
// construction/destruction
kbdc8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_keyboard_type(device_t &device, kbdc8042_type_t keybtype) { downcast<kbdc8042_device &>(device).m_keybtype = keybtype; }
- template <class Object> static devcb_base &set_system_reset_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_system_reset_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_gate_a20_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_gate_a20_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_input_buffer_full_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_buffer_empty_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_speaker_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_speaker_cb.set_callback(std::forward<Object>(cb)); }
+ void set_keyboard_type(kbdc8042_type_t keybtype) { m_keybtype = keybtype; }
+ template <class Object> devcb_base &set_system_reset_callback(Object &&cb) { return m_system_reset_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_gate_a20_callback(Object &&cb) { return m_gate_a20_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_input_buffer_full_callback(Object &&cb) { return m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_buffer_empty_callback(Object &&cb) { return m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_speaker_callback(Object &&cb) { return m_speaker_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( data_w );
diff --git a/src/devices/machine/82s129.h b/src/devices/machine/82s129.h
index b8ba6424f7f..1eb79166a30 100644
--- a/src/devices/machine/82s129.h
+++ b/src/devices/machine/82s129.h
@@ -47,34 +47,34 @@
#define MCFG_82S126_OUTPUT_CB(_devcb) \
- devcb = &prom82s129_base_device::set_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<prom82s129_base_device &>(*device).set_out_cb(DEVCB_##_devcb);
#define MCFG_82S126_O1_CB(_devcb) \
- devcb = &prom82s129_base_device::set_o1_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<prom82s129_base_device &>(*device).set_o1_cb(DEVCB_##_devcb);
#define MCFG_82S126_O2_CB(_devcb) \
- devcb = &prom82s129_base_device::set_o2_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<prom82s129_base_device &>(*device).set_o2_cb(DEVCB_##_devcb);
#define MCFG_82S126_O3_CB(_devcb) \
- devcb = &prom82s129_base_device::set_o3_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<prom82s129_base_device &>(*device).set_o3_cb(DEVCB_##_devcb);
#define MCFG_82S126_O4_CB(_devcb) \
- devcb = &prom82s129_base_device::set_o4_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<prom82s129_base_device &>(*device).set_o4_cb(DEVCB_##_devcb);
#define MCFG_82S129_OUTPUT_CB(_devcb) \
- devcb = &prom82s129_base_device::set_out_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<prom82s129_base_device &>(*device).set_out_cb(DEVCB_##_devcb);
#define MCFG_82S129_O1_CB(_devcb) \
- devcb = &prom82s129_base_device::set_o1_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<prom82s129_base_device &>(*device).set_o1_cb(DEVCB_##_devcb);
#define MCFG_82S129_O2_CB(_devcb) \
- devcb = &prom82s129_base_device::set_o2_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<prom82s129_base_device &>(*device).set_o2_cb(DEVCB_##_devcb);
#define MCFG_82S129_O3_CB(_devcb) \
- devcb = &prom82s129_base_device::set_o3_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<prom82s129_base_device &>(*device).set_o3_cb(DEVCB_##_devcb);
#define MCFG_82S129_O4_CB(_devcb) \
- devcb = &prom82s129_base_device::set_o4_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<prom82s129_base_device &>(*device).set_o4_cb(DEVCB_##_devcb);
#define MCFG_82S129_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, PROM82S129, 0)
@@ -86,11 +86,11 @@ class prom82s129_base_device : public device_t
{
public:
// static configuration helpers
- template <class Object> static devcb_base &set_out_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_out_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_o1_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o1_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_o2_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o2_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_o3_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o3_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_o4_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o4_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_cb(Object &&cb) { return m_out_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_o1_cb(Object &&cb) { return m_o1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_o2_cb(Object &&cb) { return m_o2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_o3_cb(Object &&cb) { return m_o3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_o4_cb(Object &&cb) { return m_o4_func.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( ce1_w );
DECLARE_WRITE_LINE_MEMBER( ce2_w );
diff --git a/src/devices/machine/8364_paula.h b/src/devices/machine/8364_paula.h
index 8e20b6f813a..db9ed3727c0 100644
--- a/src/devices/machine/8364_paula.h
+++ b/src/devices/machine/8364_paula.h
@@ -49,10 +49,10 @@
//**************************************************************************
#define MCFG_PAULA_MEM_READ_CB(_devcb) \
- devcb = &paula_8364_device::set_mem_r_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<paula_8364_device &>(*device).set_mem_r_callback(DEVCB_##_devcb);
#define MCFG_PAULA_INT_CB(_devcb) \
- devcb = &paula_8364_device::set_int_w_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<paula_8364_device &>(*device).set_int_w_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -67,11 +67,8 @@ public:
paula_8364_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
- template <class Object> static devcb_base &set_mem_r_callback(device_t &device, Object &&cb)
- { return downcast<paula_8364_device &>(device).m_mem_r.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_int_w_callback(device_t &device, Object &&cb)
- { return downcast<paula_8364_device &>(device).m_int_w.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_mem_r_callback(Object &&cb) { return m_mem_r.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_w_callback(Object &&cb) { return m_int_w.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER(reg_r);
DECLARE_WRITE16_MEMBER(reg_w);
diff --git a/src/devices/machine/8530scc.h b/src/devices/machine/8530scc.h
index 7a8a5cf107e..5333fda0060 100644
--- a/src/devices/machine/8530scc.h
+++ b/src/devices/machine/8530scc.h
@@ -12,7 +12,7 @@
#define MAME_MACHINE_8530SCC_H
#define MCFG_Z8530_INTRQ_CALLBACK(_write) \
- devcb = &scc8530_t::set_intrq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<scc8530_t &>(*device).set_intrq_wr_callback(DEVCB_##_write);
class scc8530_t : public device_t
{
@@ -31,7 +31,7 @@ public:
scc8530_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<scc8530_t &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward<Object>(cb)); }
uint8_t get_reg_a(int reg);
uint8_t get_reg_b(int reg);
diff --git a/src/devices/machine/aakart.h b/src/devices/machine/aakart.h
index 7d5ba02eecf..f432055f59c 100644
--- a/src/devices/machine/aakart.h
+++ b/src/devices/machine/aakart.h
@@ -18,10 +18,10 @@ Acorn Archimedes KART interface
//**************************************************************************
#define MCFG_AAKART_OUT_TX_CB(_devcb) \
- devcb = &aakart_device::set_out_tx_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<aakart_device &>(*device).set_out_tx_callback(DEVCB_##_devcb);
#define MCFG_AAKART_OUT_RX_CB(_devcb) \
- devcb = &aakart_device::set_out_rx_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<aakart_device &>(*device).set_out_rx_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -36,8 +36,8 @@ public:
// construction/destruction
aakart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_tx_callback(device_t &device, Object &&cb) { return downcast<aakart_device &>(device).m_out_tx_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_rx_callback(device_t &device, Object &&cb) { return downcast<aakart_device &>(device).m_out_rx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_tx_callback(Object &&cb) { return m_out_tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_rx_callback(Object &&cb) { return m_out_rx_cb.set_callback(std::forward<Object>(cb)); }
// I/O operations
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/adc0808.h b/src/devices/machine/adc0808.h
index bc28d912f20..21fc32fa085 100644
--- a/src/devices/machine/adc0808.h
+++ b/src/devices/machine/adc0808.h
@@ -40,37 +40,37 @@
#define MCFG_ADC0808_OUT_EOC_CB(_devcb) \
- devcb = &adc0808_device::set_out_eoc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adc0808_device &>(*device).set_out_eoc_callback(DEVCB_##_devcb);
#define MCFG_ADC0808_IN_VREF_POS_CB(_class, _method) \
- adc0808_device::set_in_vref_pos_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc0808_device &>(*device).set_in_vref_pos_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_ADC0808_IN_VREF_NEG_CB(_class, _method) \
- adc0808_device::set_in_vref_neg_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc0808_device &>(*device).set_in_vref_neg_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_ADC0808_IN_IN_0_CB(_class, _method) \
- adc0808_device::set_in_in_0_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc0808_device &>(*device).set_in_in_0_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_ADC0808_IN_IN_1_CB(_class, _method) \
- adc0808_device::set_in_in_1_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc0808_device &>(*device).set_in_in_1_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_ADC0808_IN_IN_2_CB(_class, _method) \
- adc0808_device::set_in_in_2_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc0808_device &>(*device).set_in_in_2_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_ADC0808_IN_IN_3_CB(_class, _method) \
- adc0808_device::set_in_in_3_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc0808_device &>(*device).set_in_in_3_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_ADC0808_IN_IN_4_CB(_class, _method) \
- adc0808_device::set_in_in_4_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc0808_device &>(*device).set_in_in_4_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_ADC0808_IN_IN_5_CB(_class, _method) \
- adc0808_device::set_in_in_5_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc0808_device &>(*device).set_in_in_5_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_ADC0808_IN_IN_6_CB(_class, _method) \
- adc0808_device::set_in_in_6_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc0808_device &>(*device).set_in_in_6_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_ADC0808_IN_IN_7_CB(_class, _method) \
- adc0808_device::set_in_in_7_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc0808_device &>(*device).set_in_in_7_callback(adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, this));
// ======================> adc0808_device
@@ -82,17 +82,17 @@ public:
// construction/destruction
adc0808_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_eoc_callback(device_t &device, Object &&cb) { return downcast<adc0808_device &>(device).m_out_eoc_cb.set_callback(std::forward<Object>(cb)); }
- static void set_in_vref_pos_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_vref_pos_cb = std::move(cb); }
- static void set_in_vref_neg_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_vref_neg_cb = std::move(cb); }
- static void set_in_in_0_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_0_cb = std::move(cb); }
- static void set_in_in_1_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_1_cb = std::move(cb); }
- static void set_in_in_2_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_2_cb = std::move(cb); }
- static void set_in_in_3_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_3_cb = std::move(cb); }
- static void set_in_in_4_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_4_cb = std::move(cb); }
- static void set_in_in_5_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_5_cb = std::move(cb); }
- static void set_in_in_6_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_6_cb = std::move(cb); }
- static void set_in_in_7_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_7_cb = std::move(cb); }
+ template <class Object> devcb_base &set_out_eoc_callback(Object &&cb) { return m_out_eoc_cb.set_callback(std::forward<Object>(cb)); }
+ template <typename Object> void set_in_vref_pos_callback(Object &&cb) { m_in_vref_pos_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_in_vref_neg_callback(Object &&cb) { m_in_vref_neg_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_in_in_0_callback(Object &&cb) { m_in_in_0_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_in_in_1_callback(Object &&cb) { m_in_in_1_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_in_in_2_callback(Object &&cb) { m_in_in_2_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_in_in_3_callback(Object &&cb) { m_in_in_3_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_in_in_4_callback(Object &&cb) { m_in_in_4_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_in_in_5_callback(Object &&cb) { m_in_in_5_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_in_in_6_callback(Object &&cb) { m_in_in_6_cb = std::forward<Object>(cb); }
+ template <typename Object> void set_in_in_7_callback(Object &&cb) { m_in_in_7_cb = std::forward<Object>(cb); }
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( ale_w );
diff --git a/src/devices/machine/adc083x.h b/src/devices/machine/adc083x.h
index 35e98621f92..9d7012a2b27 100644
--- a/src/devices/machine/adc083x.h
+++ b/src/devices/machine/adc083x.h
@@ -21,7 +21,7 @@
#define ADC083X_INPUT_CB(name) double name(uint8_t input)
#define MCFG_ADC083X_INPUT_CB(_class, _method) \
- adc083x_device::set_input_callback(*device, adc083x_device::input_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc083x_device &>(*device).set_input_callback(adc083x_device::input_delegate(&_class::_method, #_class "::" #_method, this));
/***************************************************************************
CONSTANTS
@@ -48,8 +48,8 @@ class adc083x_device : public device_t
public:
typedef device_delegate<double (uint8_t input)> input_delegate;
- // static configuration helpers
- static void set_input_callback(device_t &device, input_delegate &&cb) { downcast<adc083x_device &>(device).m_input_callback = std::move(cb); }
+ // configuration helpers
+ template <typename Object> void set_input_callback(Object &&cb) { m_input_callback = std::forward<Object>(cb); }
DECLARE_WRITE_LINE_MEMBER( cs_write );
DECLARE_WRITE_LINE_MEMBER( clk_write );
diff --git a/src/devices/machine/adc0844.h b/src/devices/machine/adc0844.h
index 404a4cfa7a4..e31740b3d09 100644
--- a/src/devices/machine/adc0844.h
+++ b/src/devices/machine/adc0844.h
@@ -34,19 +34,19 @@
MCFG_DEVICE_ADD(_tag, ADC0844, 0)
#define MCFG_ADC0844_INTR_CB(_devcb) \
- devcb = &adc0844_device::set_intr_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adc0844_device &>(*device).set_intr_callback(DEVCB_##_devcb);
#define MCFG_ADC0844_CH1_CB(_devcb) \
- devcb = &adc0844_device::set_ch1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adc0844_device &>(*device).set_ch1_callback(DEVCB_##_devcb);
#define MCFG_ADC0844_CH2_CB(_devcb) \
- devcb = &adc0844_device::set_ch2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adc0844_device &>(*device).set_ch2_callback(DEVCB_##_devcb);
#define MCFG_ADC0844_CH3_CB(_devcb) \
- devcb = &adc0844_device::set_ch3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adc0844_device &>(*device).set_ch3_callback(DEVCB_##_devcb);
#define MCFG_ADC0844_CH4_CB(_devcb) \
- devcb = &adc0844_device::set_ch4_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adc0844_device &>(*device).set_ch4_callback(DEVCB_##_devcb);
#define MCFG_ADC0848_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, ADC0848, 0)
@@ -58,16 +58,16 @@
#define MCFG_ADC0848_CH4_CB MCFG_ADC0844_CH4_CB
#define MCFG_ADC0848_CH5_CB(_devcb) \
- devcb = &adc0848_device::set_ch5_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adc0848_device &>(*device).set_ch5_callback(DEVCB_##_devcb);
#define MCFG_ADC0848_CH6_CB(_devcb) \
- devcb = &adc0848_device::set_ch6_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adc0848_device &>(*device).set_ch6_callback(DEVCB_##_devcb);
#define MCFG_ADC0848_CH7_CB(_devcb) \
- devcb = &adc0848_device::set_ch7_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adc0848_device &>(*device).set_ch7_callback(DEVCB_##_devcb);
#define MCFG_ADC0848_CH8_CB(_devcb) \
- devcb = &adc0848_device::set_ch8_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<adc0848_device &>(*device).set_ch8_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -81,20 +81,11 @@ public:
adc0844_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
- template <class Object> static devcb_base &set_intr_callback(device_t &device, Object &&cb)
- { return downcast<adc0844_device &>(device).m_intr_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ch1_callback(device_t &device, Object &&cb)
- { return downcast<adc0844_device &>(device).m_ch1_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ch2_callback(device_t &device, Object &&cb)
- { return downcast<adc0844_device &>(device).m_ch2_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ch3_callback(device_t &device, Object &&cb)
- { return downcast<adc0844_device &>(device).m_ch3_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ch4_callback(device_t &device, Object &&cb)
- { return downcast<adc0844_device &>(device).m_ch4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_intr_callback(Object &&cb) { return m_intr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ch1_callback(Object &&cb) { return m_ch1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ch2_callback(Object &&cb) { return m_ch2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ch3_callback(Object &&cb) { return m_ch3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ch4_callback(Object &&cb) { return m_ch4_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
virtual DECLARE_WRITE8_MEMBER(write);
@@ -126,17 +117,10 @@ public:
adc0848_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
- template <class Object> static devcb_base &set_ch5_callback(device_t &device, Object &&cb)
- { return downcast<adc0848_device &>(device).m_ch5_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ch6_callback(device_t &device, Object &&cb)
- { return downcast<adc0848_device &>(device).m_ch6_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ch7_callback(device_t &device, Object &&cb)
- { return downcast<adc0848_device &>(device).m_ch7_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_ch8_callback(device_t &device, Object &&cb)
- { return downcast<adc0848_device &>(device).m_ch8_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ch5_callback(Object &&cb) { return m_ch5_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ch6_callback(Object &&cb) { return m_ch6_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ch7_callback(Object &&cb) { return m_ch7_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ch8_callback(Object &&cb) { return m_ch8_cb.set_callback(std::forward<Object>(cb)); }
virtual DECLARE_WRITE8_MEMBER(write) override;
diff --git a/src/devices/machine/adc1038.h b/src/devices/machine/adc1038.h
index 1d843d63321..968d3fb933f 100644
--- a/src/devices/machine/adc1038.h
+++ b/src/devices/machine/adc1038.h
@@ -32,8 +32,8 @@ public:
adc1038_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_input_callback(device_t &device, input_delegate &&callback) { downcast<adc1038_device &>(device).m_input_cb = std::move(callback); }
- static void set_gti_club_hack(device_t &device, int hack) { downcast<adc1038_device &>(device).m_gticlub_hack = hack; }
+ template <typename Object> void set_input_callback(Object &&cb) { m_input_cb = std::forward<Object>(cb); }
+ void set_gti_club_hack(int hack) { m_gticlub_hack = hack; }
DECLARE_READ_LINE_MEMBER( do_read );
DECLARE_READ_LINE_MEMBER( sars_read );
@@ -63,9 +63,9 @@ DECLARE_DEVICE_TYPE(ADC1038, adc1038_device)
#define MCFG_ADC1038_INPUT_CB(_class, _method) \
- adc1038_device::set_input_callback(*device, adc1038_device::input_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc1038_device &>(*device).set_input_callback(adc1038_device::input_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_ADC1038_GTIHACK(_hack) \
- adc1038_device::set_gti_club_hack(*device, _hack);
+ downcast<adc1038_device &>(*device).set_gti_club_hack(_hack);
#endif // MAME_MACHINE_ADC1038_H
diff --git a/src/devices/machine/adc1213x.h b/src/devices/machine/adc1213x.h
index d6c5cb7cefc..ce65e9fb60a 100644
--- a/src/devices/machine/adc1213x.h
+++ b/src/devices/machine/adc1213x.h
@@ -32,7 +32,7 @@ public:
adc12138_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_ipt_convert_callback(device_t &device, ipt_convert_delegate &&cb) { downcast<adc12138_device &>(device).m_ipt_read_cb = std::move(cb); }
+ template <typename Object> void set_ipt_convert_callback(Object &&cb) { m_ipt_read_cb = std::forward<Object>(cb); }
DECLARE_WRITE8_MEMBER( di_w );
DECLARE_WRITE8_MEMBER( cs_w );
@@ -88,6 +88,6 @@ DECLARE_DEVICE_TYPE(ADC12132, adc12132_device)
#define MCFG_ADC1213X_IPT_CONVERT_CB(_class, _method) \
- adc12138_device::set_ipt_convert_callback(*device, adc12138_device::ipt_convert_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<adc12138_device &>(*device).set_ipt_convert_callback(adc12138_device::ipt_convert_delegate(&_class::_method, #_class "::" #_method, this));
#endif // MAME_MACHINE_ADC1213X_H
diff --git a/src/devices/machine/akiko.h b/src/devices/machine/akiko.h
index 1087fe32552..d72b5b58ce5 100644
--- a/src/devices/machine/akiko.h
+++ b/src/devices/machine/akiko.h
@@ -29,22 +29,22 @@
MCFG_DEVICE_ADD(_tag, AKIKO, 0)
#define MCFG_AKIKO_MEM_READ_CB(_devcb) \
- devcb = &akiko_device::set_mem_r_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<akiko_device &>(*device).set_mem_r_callback(DEVCB_##_devcb);
#define MCFG_AKIKO_MEM_WRITE_CB(_devcb) \
- devcb = &akiko_device::set_mem_w_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<akiko_device &>(*device).set_mem_w_callback(DEVCB_##_devcb);
#define MCFG_AKIKO_INT_CB(_devcb) \
- devcb = &akiko_device::set_int_w_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<akiko_device &>(*device).set_int_w_callback(DEVCB_##_devcb);
#define MCFG_AKIKO_SCL_HANDLER(_devcb) \
- devcb = &akiko_device::set_scl_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<akiko_device &>(*device).set_scl_handler(DEVCB_##_devcb);
#define MCFG_AKIKO_SDA_READ_HANDLER(_devcb) \
- devcb = &akiko_device::set_sda_read_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<akiko_device &>(*device).set_sda_read_handler(DEVCB_##_devcb);
#define MCFG_AKIKO_SDA_WRITE_HANDLER(_devcb) \
- devcb = &akiko_device::set_sda_write_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<akiko_device &>(*device).set_sda_write_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -59,23 +59,12 @@ public:
akiko_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template <class Object> static devcb_base &set_mem_r_callback(device_t &device, Object &&cb)
- { return downcast<akiko_device &>(device).m_mem_r.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_mem_w_callback(device_t &device, Object &&cb)
- { return downcast<akiko_device &>(device).m_mem_w.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_int_w_callback(device_t &device, Object &&cb)
- { return downcast<akiko_device &>(device).m_int_w.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_scl_handler(device_t &device, Object &&cb)
- { return downcast<akiko_device &>(device).m_scl_w.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_sda_read_handler(device_t &device, Object &&cb)
- { return downcast<akiko_device &>(device).m_sda_r.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_sda_write_handler(device_t &device, Object &&cb)
- { return downcast<akiko_device &>(device).m_sda_w.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_mem_r_callback(Object &&cb) { return m_mem_r.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_mem_w_callback(Object &&cb) { return m_mem_w.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_w_callback(Object &&cb) { return m_int_w.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_scl_handler(Object &&cb) { return m_scl_w.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sda_read_handler(Object &&cb) { return m_sda_r.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sda_write_handler(Object &&cb) { return m_sda_w.set_callback(std::forward<Object>(cb)); }
DECLARE_READ32_MEMBER( read );
DECLARE_WRITE32_MEMBER( write );
diff --git a/src/devices/machine/am53cf96.h b/src/devices/machine/am53cf96.h
index f269ec34384..ba7b46ab2c7 100644
--- a/src/devices/machine/am53cf96.h
+++ b/src/devices/machine/am53cf96.h
@@ -13,7 +13,7 @@
#include "legscsi.h"
#define MCFG_AM53CF96_IRQ_HANDLER(_devcb) \
- devcb = &am53cf96_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<am53cf96_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class am53cf96_device : public legacy_scsi_host_adapter
{
@@ -22,7 +22,7 @@ public:
am53cf96_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<am53cf96_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
diff --git a/src/devices/machine/am9513.h b/src/devices/machine/am9513.h
index a13ab9135ca..c11a659624f 100644
--- a/src/devices/machine/am9513.h
+++ b/src/devices/machine/am9513.h
@@ -39,17 +39,17 @@
//**************************************************************************
#define MCFG_AM9513_OUT1_CALLBACK(_devcb) \
- devcb = &am9513_device::set_out_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<am9513_device &>(*device).set_out_cb(0, DEVCB_##_devcb);
#define MCFG_AM9513_OUT2_CALLBACK(_devcb) \
- devcb = &am9513_device::set_out_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<am9513_device &>(*device).set_out_cb(1, DEVCB_##_devcb);
#define MCFG_AM9513_OUT3_CALLBACK(_devcb) \
- devcb = &am9513_device::set_out_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<am9513_device &>(*device).set_out_cb(2, DEVCB_##_devcb);
#define MCFG_AM9513_OUT4_CALLBACK(_devcb) \
- devcb = &am9513_device::set_out_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<am9513_device &>(*device).set_out_cb(3, DEVCB_##_devcb);
#define MCFG_AM9513_OUT5_CALLBACK(_devcb) \
- devcb = &am9513_device::set_out_cb(*device, 4, DEVCB_##_devcb);
+ devcb = &downcast<am9513_device &>(*device).set_out_cb(4, DEVCB_##_devcb);
#define MCFG_AM9513_FOUT_CALLBACK(_devcb) \
- devcb = &am9513_device::set_fout_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9513_device &>(*device).set_fout_cb(DEVCB_##_devcb);
@@ -66,10 +66,8 @@ public:
am9513_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// static configuration
- template<class Object> static devcb_base &set_out_cb(device_t &device, int c, Object &&cb)
- { assert(c >= 0 && c < 5); return downcast<am9513_device &>(device).m_out_cb[c].set_callback(std::forward<Object>(cb)); }
- template<class Object> static devcb_base &set_fout_cb(device_t &device, Object &&cb)
- { return downcast<am9513_device &>(device).m_fout_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_out_cb(int c, Object &&cb) { assert(c >= 0 && c < 5); return m_out_cb[c].set_callback(std::forward<Object>(cb)); }
+ template<class Object> devcb_base &set_fout_cb(Object &&cb) { return m_fout_cb.set_callback(std::forward<Object>(cb)); }
// 8-bit data bus interface
DECLARE_READ8_MEMBER(read8);
diff --git a/src/devices/machine/am9517a.h b/src/devices/machine/am9517a.h
index 7e92a5ed38e..8527dfaa42f 100644
--- a/src/devices/machine/am9517a.h
+++ b/src/devices/machine/am9517a.h
@@ -51,15 +51,15 @@ public:
// construction/destruction
am9517a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_hreq_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_hreq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_eop_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_eop_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_hreq_callback(Object &&cb) { return m_out_hreq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_eop_callback(Object &&cb) { return m_out_eop_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_memr_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_in_memr_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_memw_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_memw_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_memr_callback(Object &&cb) { return m_in_memr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_memw_callback(Object &&cb) { return m_out_memw_cb.set_callback(std::forward<Object>(cb)); }
- template <unsigned C, class Object> static devcb_base &set_in_ior_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_in_ior_cb[C].set_callback(std::forward<Object>(cb)); }
- template <unsigned C, class Object> static devcb_base &set_out_iow_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_iow_cb[C].set_callback(std::forward<Object>(cb)); }
- template <unsigned C, class Object> static devcb_base &set_out_dack_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_dack_cb[C].set_callback(std::forward<Object>(cb)); }
+ template <unsigned C, class Object> devcb_base &set_in_ior_callback(Object &&cb) { return m_in_ior_cb[C].set_callback(std::forward<Object>(cb)); }
+ template <unsigned C, class Object> devcb_base &set_out_iow_callback(Object &&cb) { return m_out_iow_cb[C].set_callback(std::forward<Object>(cb)); }
+ template <unsigned C, class Object> devcb_base &set_out_dack_callback(Object &&cb) { return m_out_dack_cb[C].set_callback(std::forward<Object>(cb)); }
virtual DECLARE_READ8_MEMBER( read );
virtual DECLARE_WRITE8_MEMBER( write );
@@ -179,52 +179,52 @@ DECLARE_DEVICE_TYPE(PCXPORT_DMAC, pcxport_dmac_device)
***************************************************************************/
#define MCFG_AM9517A_OUT_HREQ_CB(_devcb) \
- devcb = &am9517a_device::set_out_hreq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_out_hreq_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_EOP_CB(_devcb) \
- devcb = &am9517a_device::set_out_eop_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_out_eop_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_MEMR_CB(_devcb) \
- devcb = &am9517a_device::set_in_memr_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_in_memr_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_MEMW_CB(_devcb) \
- devcb = &am9517a_device::set_out_memw_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_out_memw_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_0_CB(_devcb) \
- devcb = &am9517a_device::set_in_ior_callback<0>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<0>(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_1_CB(_devcb) \
- devcb = &am9517a_device::set_in_ior_callback<1>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<1>(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_2_CB(_devcb) \
- devcb = &am9517a_device::set_in_ior_callback<2>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<2>(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_3_CB(_devcb) \
- devcb = &am9517a_device::set_in_ior_callback<3>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<3>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_0_CB(_devcb) \
- devcb = &am9517a_device::set_out_iow_callback<0>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<0>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_1_CB(_devcb) \
- devcb = &am9517a_device::set_out_iow_callback<1>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<1>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_2_CB(_devcb) \
- devcb = &am9517a_device::set_out_iow_callback<2>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<2>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_3_CB(_devcb) \
- devcb = &am9517a_device::set_out_iow_callback<3>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<3>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_0_CB(_devcb) \
- devcb = &am9517a_device::set_out_dack_callback<0>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<0>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_1_CB(_devcb) \
- devcb = &am9517a_device::set_out_dack_callback<1>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<1>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_2_CB(_devcb) \
- devcb = &am9517a_device::set_out_dack_callback<2>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<2>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_3_CB(_devcb) \
- devcb = &am9517a_device::set_out_dack_callback<3>(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<3>(DEVCB_##_devcb);
#define MCFG_I8237_OUT_HREQ_CB MCFG_AM9517A_OUT_HREQ_CB
#define MCFG_I8237_OUT_EOP_CB MCFG_AM9517A_OUT_EOP_CB
diff --git a/src/devices/machine/am9519.h b/src/devices/machine/am9519.h
index 2bfa9e89fe8..27ac1e9a46e 100644
--- a/src/devices/machine/am9519.h
+++ b/src/devices/machine/am9519.h
@@ -33,7 +33,7 @@
***************************************************************************/
#define MCFG_AM9519_OUT_INT_CB(_devcb) \
- devcb = &am9519_device::static_set_out_int_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<am9519_device &>(*device).static_set_out_int_callback(DEVCB_##_devcb);
class am9519_device : public device_t
@@ -41,7 +41,7 @@ class am9519_device : public device_t
public:
am9519_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- template <class Object> static devcb_base &static_set_out_int_callback(device_t &device, Object &&cb) { return downcast<am9519_device &>(device).m_out_int_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &static_set_out_int_callback(Object &&cb) { return m_out_int_func.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( stat_r );
DECLARE_READ8_MEMBER( data_r );
diff --git a/src/devices/machine/amigafdc.h b/src/devices/machine/amigafdc.h
index 065ed590176..732a024785a 100644
--- a/src/devices/machine/amigafdc.h
+++ b/src/devices/machine/amigafdc.h
@@ -8,29 +8,29 @@
#include "imagedev/floppy.h"
#define MCFG_AMIGA_FDC_INDEX_CALLBACK(_write) \
- devcb = &amiga_fdc_device::set_index_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<amiga_fdc_device &>(*device).set_index_wr_callback(DEVCB_##_write);
#define MCFG_AMIGA_FDC_READ_DMA_CALLBACK(_read) \
- devcb = &amiga_fdc_device::set_dma_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<amiga_fdc_device &>(*device).set_dma_rd_callback(DEVCB_##_read);
#define MCFG_AMIGA_FDC_WRITE_DMA_CALLBACK(_write) \
- devcb = &amiga_fdc_device::set_dma_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<amiga_fdc_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
#define MCFG_AMIGA_FDC_DSKBLK_CALLBACK(_write) \
- devcb = &amiga_fdc_device::set_dskblk_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<amiga_fdc_device &>(*device).set_dskblk_wr_callback(DEVCB_##_write);
#define MCFG_AMIGA_FDC_DSKSYN_CALLBACK(_write) \
- devcb = &amiga_fdc_device::set_dsksyn_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<amiga_fdc_device &>(*device).set_dsksyn_wr_callback(DEVCB_##_write);
class amiga_fdc_device : public device_t {
public:
amiga_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_index_wr_callback(device_t &device, Object &&cb) { return downcast<amiga_fdc_device &>(device).m_write_index.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_rd_callback(device_t &device, Object &&cb) { return downcast<amiga_fdc_device &>(device).m_read_dma.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<amiga_fdc_device &>(device).m_write_dma.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dskblk_wr_callback(device_t &device, Object &&cb) { return downcast<amiga_fdc_device &>(device).m_write_dskblk.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dsksyn_wr_callback(device_t &device, Object &&cb) { return downcast<amiga_fdc_device &>(device).m_write_dsksyn.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_index_wr_callback(Object &&cb) { return m_write_index.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_rd_callback(Object &&cb) { return m_read_dma.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_wr_callback(Object &&cb) { return m_write_dma.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dskblk_wr_callback(Object &&cb) { return m_write_dskblk.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dsksyn_wr_callback(Object &&cb) { return m_write_dsksyn.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(ciaaprb_w);
diff --git a/src/devices/machine/applefdc.h b/src/devices/machine/applefdc.h
index f6f9f05fcf9..79495a8a141 100644
--- a/src/devices/machine/applefdc.h
+++ b/src/devices/machine/applefdc.h
@@ -59,7 +59,7 @@ class applefdc_base_device : public device_t
{
public:
// configuration helpers
- static void static_set_config(device_t &device, const applefdc_interface *intrf) { downcast<applefdc_base_device &>(device).m_interface = intrf; }
+ void set_config(const applefdc_interface *intrf) { m_interface = intrf; }
// read/write handlers
virtual uint8_t read(uint8_t offset);
@@ -147,7 +147,7 @@ public:
***************************************************************************/
#define MCFG_APPLEFDC_CONFIG(_intrf) \
- applefdc_base_device::static_set_config(*device, &(_intrf));
+ downcast<applefdc_base_device &>(*device).set_config(&(_intrf));
#define MCFG_APPLEFDC_ADD(_tag, _intrf) \
MCFG_DEVICE_ADD(_tag, APPLEFDC, 0) \
diff --git a/src/devices/machine/at45dbxx.h b/src/devices/machine/at45dbxx.h
index 2c26916d2e5..f215a22c7fe 100644
--- a/src/devices/machine/at45dbxx.h
+++ b/src/devices/machine/at45dbxx.h
@@ -32,7 +32,7 @@
MCFG_DEVICE_ADD(_tag, AT45DB161, 0)
#define MCFG_AT45DBXXX_SO_CALLBACK(_cb) \
- devcb = &at45db041_device::set_so_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<at45db041_device &>(*device).set_so_cb(DEVCB_##_cb);
// ======================> at45db041_device
@@ -50,7 +50,7 @@ public:
uint8_t *get_ptr() { return &m_data[0]; }
- template <class Object> static devcb_base &set_so_cb(device_t &device, Object &&cb) { return downcast<at45db041_device &>(device).write_so.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_so_cb(Object &&cb) { return write_so.set_callback(std::forward<Object>(cb)); }
protected:
at45db041_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
diff --git a/src/devices/machine/at_keybc.h b/src/devices/machine/at_keybc.h
index 03bb9b6459f..b32a85286d1 100644
--- a/src/devices/machine/at_keybc.h
+++ b/src/devices/machine/at_keybc.h
@@ -19,22 +19,22 @@
//**************************************************************************
#define MCFG_AT_KEYBOARD_CONTROLLER_SYSTEM_RESET_CB(_devcb) \
- devcb = &at_keyboard_controller_device::set_system_reset_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<at_keyboard_controller_device &>(*device).set_system_reset_callback(DEVCB_##_devcb);
#define MCFG_AT_KEYBOARD_CONTROLLER_GATE_A20_CB(_devcb) \
- devcb = &at_keyboard_controller_device::set_gate_a20_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<at_keyboard_controller_device &>(*device).set_gate_a20_callback(DEVCB_##_devcb);
#define MCFG_AT_KEYBOARD_CONTROLLER_INPUT_BUFFER_FULL_CB(_devcb) \
- devcb = &at_keyboard_controller_device::set_input_buffer_full_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<at_keyboard_controller_device &>(*device).set_input_buffer_full_callback(DEVCB_##_devcb);
#define MCFG_AT_KEYBOARD_CONTROLLER_OUTPUT_BUFFER_EMPTY_CB(_devcb) \
- devcb = &at_keyboard_controller_device::set_output_buffer_empty_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<at_keyboard_controller_device &>(*device).set_output_buffer_empty_callback(DEVCB_##_devcb);
#define MCFG_AT_KEYBOARD_CONTROLLER_KEYBOARD_CLOCK_CB(_devcb) \
- devcb = &at_keyboard_controller_device::set_keyboard_clock_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<at_keyboard_controller_device &>(*device).set_keyboard_clock_callback(DEVCB_##_devcb);
#define MCFG_AT_KEYBOARD_CONTROLLER_KEYBOARD_DATA_CB(_devcb) \
- devcb = &at_keyboard_controller_device::set_keyboard_data_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<at_keyboard_controller_device &>(*device).set_keyboard_data_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -48,12 +48,12 @@ public:
// construction/destruction
at_keyboard_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_system_reset_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_system_reset_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_gate_a20_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_gate_a20_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_input_buffer_full_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_output_buffer_empty_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_keyboard_clock_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_keyboard_clock_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_keyboard_data_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_keyboard_data_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_system_reset_callback(Object &&cb) { return m_system_reset_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_gate_a20_callback(Object &&cb) { return m_gate_a20_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_input_buffer_full_callback(Object &&cb) { return m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_buffer_empty_callback(Object &&cb) { return m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_keyboard_clock_callback(Object &&cb) { return m_keyboard_clock_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_keyboard_data_callback(Object &&cb) { return m_keyboard_data_cb.set_callback(std::forward<Object>(cb)); }
// interface to the host pc
DECLARE_READ8_MEMBER( data_r );
diff --git a/src/devices/machine/ataintf.h b/src/devices/machine/ataintf.h
index c9626af52db..d68e4d78340 100644
--- a/src/devices/machine/ataintf.h
+++ b/src/devices/machine/ataintf.h
@@ -47,13 +47,13 @@ DECLARE_DEVICE_TYPE(ATA_SLOT, ata_slot_device)
***************************************************************************/
#define MCFG_ATA_INTERFACE_IRQ_HANDLER(_devcb) \
- devcb = &abstract_ata_interface_device::set_irq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<abstract_ata_interface_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_ATA_INTERFACE_DMARQ_HANDLER(_devcb) \
- devcb = &abstract_ata_interface_device::set_dmarq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<abstract_ata_interface_device &>(*device).set_dmarq_handler(DEVCB_##_devcb);
#define MCFG_ATA_INTERFACE_DASP_HANDLER(_devcb) \
- devcb = &abstract_ata_interface_device::set_dasp_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<abstract_ata_interface_device &>(*device).set_dasp_handler(DEVCB_##_devcb);
SLOT_INTERFACE_EXTERN(ata_devices);
@@ -79,9 +79,9 @@ class abstract_ata_interface_device : public device_t
{
public:
// static configuration helpers
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<abstract_ata_interface_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dmarq_handler(device_t &device, Object &&cb) { return downcast<abstract_ata_interface_device &>(device).m_dmarq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dasp_handler(device_t &device, Object &&cb) { return downcast<abstract_ata_interface_device &>(device).m_dasp_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dmarq_handler(Object &&cb) { return m_dmarq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dasp_handler(Object &&cb) { return m_dasp_handler.set_callback(std::forward<Object>(cb)); }
uint16_t read_dma();
void write_dma(uint16_t data);
diff --git a/src/devices/machine/atmel_arm_aic.h b/src/devices/machine/atmel_arm_aic.h
index 28fa4434d5e..db30986bb2d 100644
--- a/src/devices/machine/atmel_arm_aic.h
+++ b/src/devices/machine/atmel_arm_aic.h
@@ -12,7 +12,7 @@ DECLARE_DEVICE_TYPE(ARM_AIC, arm_aic_device)
MCFG_DEVICE_ADD(_tag, ARM_AIC, 0)
#define MCFG_IRQ_LINE_CB(_devcb) \
- devcb = &arm_aic_device::set_line_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<arm_aic_device &>(*device).set_line_callback(DEVCB_##_devcb);
class arm_aic_device : public device_t
{
@@ -25,7 +25,7 @@ public:
}
// configuration
- template <class Object> static devcb_base &set_line_callback(device_t &device, Object &&cb) { return downcast<arm_aic_device &>(device).m_irq_out.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_line_callback(Object &&cb) { return m_irq_out.set_callback(std::forward<Object>(cb)); }
void regs_map(address_map &map);
diff --git a/src/devices/machine/ay31015.h b/src/devices/machine/ay31015.h
index 7f75e0297fd..d5dcebbdc5a 100644
--- a/src/devices/machine/ay31015.h
+++ b/src/devices/machine/ay31015.h
@@ -20,18 +20,18 @@ class ay31015_device : public device_t
public:
ay31015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_tx_clock(device_t &device, double tx_clock) { downcast<ay31015_device &>(device).m_tx_clock = tx_clock; }
- static void set_tx_clock(device_t &device, const XTAL &xtal) { set_tx_clock(device, xtal.dvalue()); }
- static void set_rx_clock(device_t &device, double rx_clock) { downcast<ay31015_device &>(device).m_rx_clock = rx_clock; }
- static void set_rx_clock(device_t &device, const XTAL &xtal) { set_rx_clock(device, xtal.dvalue()); }
- template <class Object> static devcb_base &set_read_si_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_read_si_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_so_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_so_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_pe_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_pe_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_fe_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_fe_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_or_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_or_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_dav_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_dav_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_tbmt_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_tbmt_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_eoc_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_eoc_cb.set_callback(std::forward<Object>(cb)); }
+ void set_tx_clock(double tx_clock) { m_tx_clock = tx_clock; }
+ void set_tx_clock(const XTAL &xtal) { set_tx_clock(xtal.dvalue()); }
+ void set_rx_clock(double rx_clock) { m_rx_clock = rx_clock; }
+ void set_rx_clock(const XTAL &xtal) { set_rx_clock(xtal.dvalue()); }
+ template <class Object> devcb_base &set_read_si_callback(Object &&cb) { return m_read_si_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_so_callback(Object &&cb) { return m_write_so_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_pe_callback(Object &&cb) { return m_write_pe_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_fe_callback(Object &&cb) { return m_write_fe_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_or_callback(Object &&cb) { return m_write_or_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_dav_callback(Object &&cb) { return m_write_dav_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_tbmt_callback(Object &&cb) { return m_write_tbmt_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_eoc_callback(Object &&cb) { return m_write_eoc_cb.set_callback(std::forward<Object>(cb)); }
/* Set an input pin */
DECLARE_WRITE_LINE_MEMBER(write_swe) { set_input_pin(SWE, state); }
@@ -193,64 +193,64 @@ DECLARE_DEVICE_TYPE(AY51013, ay51013_device) // For AY-3-1014, AY-5-1013 and A
#define MCFG_AY31015_TX_CLOCK(_txclk) \
- ay31015_device::set_tx_clock(*device, _txclk);
+ downcast<ay31015_device &>(*device).set_tx_clock(_txclk);
#define MCFG_AY31015_RX_CLOCK(_rxclk) \
- ay31015_device::set_rx_clock(*device, _rxclk);
+ downcast<ay31015_device &>(*device).set_rx_clock(_rxclk);
#define MCFG_AY31015_READ_SI_CB(_devcb) \
- devcb = &ay31015_device::set_read_si_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay31015_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_SO_CB(_devcb) \
- devcb = &ay31015_device::set_write_so_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay31015_device &>(*device).set_write_so_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_PE_CB(_devcb) \
- devcb = &ay31015_device::set_write_pe_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay31015_device &>(*device).set_write_pe_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_FE_CB(_devcb) \
- devcb = &ay31015_device::set_write_fe_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay31015_device &>(*device).set_write_fe_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_OR_CB(_devcb) \
- devcb = &ay31015_device::set_write_or_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay31015_device &>(*device).set_write_or_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_DAV_CB(_devcb) \
- devcb = &ay31015_device::set_write_dav_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay31015_device &>(*device).set_write_dav_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_TBMT_CB(_devcb) \
- devcb = &ay31015_device::set_write_tbmt_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay31015_device &>(*device).set_write_tbmt_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_EOC_CB(_devcb) \
- devcb = &ay31015_device::set_write_eoc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay31015_device &>(*device).set_write_eoc_callback(DEVCB_##_devcb);
#define MCFG_AY51013_TX_CLOCK(_txclk) \
- ay51013_device::set_tx_clock(*device, _txclk);
+ downcast<ay51013_device &>(*device).set_tx_clock(_txclk);
#define MCFG_AY51013_RX_CLOCK(_rxclk) \
- ay51013_device::set_rx_clock(*device, _rxclk);
+ downcast<ay51013_device &>(*device).set_rx_clock(_rxclk);
#define MCFG_AY51013_READ_SI_CB(_devcb) \
- devcb = &ay51013_device::set_read_si_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay51013_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_SO_CB(_devcb) \
- devcb = &ay51013_device::set_write_so_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay51013_device &>(*device).set_write_so_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_PE_CB(_devcb) \
- devcb = &ay51013_device::set_write_pe_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay51013_device &>(*device).set_write_pe_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_FE_CB(_devcb) \
- devcb = &ay51013_device::set_write_fe_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay51013_device &>(*device).set_write_fe_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_OR_CB(_devcb) \
- devcb = &ay51013_device::set_write_or_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay51013_device &>(*device).set_write_or_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_DAV_CB(_devcb) \
- devcb = &ay51013_device::set_write_dav_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay51013_device &>(*device).set_write_dav_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_TBMT_CB(_devcb) \
- devcb = &ay51013_device::set_write_tbmt_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay51013_device &>(*device).set_write_tbmt_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_EOC_CB(_devcb) \
- devcb = &ay51013_device::set_write_eoc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ay51013_device &>(*device).set_write_eoc_callback(DEVCB_##_devcb);
#endif // MAME_MACHINE_AY31015_H
diff --git a/src/devices/machine/bankdev.h b/src/devices/machine/bankdev.h
index 162326a493a..1a40a8f390d 100644
--- a/src/devices/machine/bankdev.h
+++ b/src/devices/machine/bankdev.h
@@ -7,16 +7,16 @@
#define MCFG_ADDRESS_MAP_BANK_ENDIANNESS(_endianness) \
- address_map_bank_device::set_endianness(*device, _endianness);
+ downcast<address_map_bank_device &>(*device).set_endianness(_endianness);
#define MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(_data_width) \
- address_map_bank_device::set_data_width(*device, _data_width);
+ downcast<address_map_bank_device &>(*device).set_data_width(_data_width);
#define MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(_addr_width) \
- address_map_bank_device::set_addr_width(*device, _addr_width);
+ downcast<address_map_bank_device &>(*device).set_addr_width(_addr_width);
#define MCFG_ADDRESS_MAP_BANK_STRIDE(_stride) \
- address_map_bank_device::set_stride(*device, _stride);
+ downcast<address_map_bank_device &>(*device).set_stride(_stride);
class address_map_bank_device :
public device_t,
@@ -26,11 +26,11 @@ public:
// construction/destruction
address_map_bank_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- static void set_endianness(device_t &device, endianness_t endianness) { downcast<address_map_bank_device &>(device).m_endianness = endianness; }
- static void set_data_width(device_t &device, uint8_t data_width) { downcast<address_map_bank_device &>(device).m_data_width = data_width; }
- static void set_addr_width(device_t &device, uint8_t addr_width) { downcast<address_map_bank_device &>(device).m_addr_width = addr_width; }
- static void set_stride(device_t &device, uint32_t stride) { downcast<address_map_bank_device &>(device).m_stride = stride; }
+ // configuration helpers
+ void set_endianness(endianness_t endianness) { m_endianness = endianness; }
+ void set_data_width(uint8_t data_width) { m_data_width = data_width; }
+ void set_addr_width(uint8_t addr_width) { m_addr_width = addr_width; }
+ void set_stride(uint32_t stride) { m_stride = stride; }
void amap8(address_map &map);
void amap16(address_map &map);
diff --git a/src/devices/machine/cdp1852.h b/src/devices/machine/cdp1852.h
index ba63cd2efb8..70562f85e7e 100644
--- a/src/devices/machine/cdp1852.h
+++ b/src/devices/machine/cdp1852.h
@@ -34,16 +34,16 @@
//**************************************************************************
#define MCFG_CDP1852_MODE_CALLBACK(_read) \
- devcb = &cdp1852_device::set_mode_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1852_device &>(*device).set_mode_rd_callback(DEVCB_##_read);
#define MCFG_CDP1852_SR_CALLBACK(_write) \
- devcb = &cdp1852_device::set_sr_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<cdp1852_device &>(*device).set_sr_wr_callback(DEVCB_##_write);
#define MCFG_CDP1852_DI_CALLBACK(_read) \
- devcb = &cdp1852_device::set_data_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1852_device &>(*device).set_data_rd_callback(DEVCB_##_read);
#define MCFG_CDP1852_DO_CALLBACK(_write) \
- devcb = &cdp1852_device::set_data_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<cdp1852_device &>(*device).set_data_wr_callback(DEVCB_##_write);
@@ -59,10 +59,10 @@ public:
// construction/destruction
cdp1852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_mode_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_read_mode.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sr_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_write_sr.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_read_data.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_write_data.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_mode_rd_callback(Object &&cb) { return m_read_mode.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sr_wr_callback(Object &&cb) { return m_write_sr.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data_rd_callback(Object &&cb) { return m_read_data.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data_wr_callback(Object &&cb) { return m_write_data.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/cdp1871.h b/src/devices/machine/cdp1871.h
index b83ca6d3166..74ce06d4b9a 100644
--- a/src/devices/machine/cdp1871.h
+++ b/src/devices/machine/cdp1871.h
@@ -42,43 +42,43 @@
//**************************************************************************
#define MCFG_CDP1871_D1_CALLBACK(_read) \
- devcb = &cdp1871_device::set_d1_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1871_device &>(*device).set_d1_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D2_CALLBACK(_read) \
- devcb = &cdp1871_device::set_d2_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1871_device &>(*device).set_d2_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D3_CALLBACK(_read) \
- devcb = &cdp1871_device::set_d3_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1871_device &>(*device).set_d3_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D4_CALLBACK(_read) \
- devcb = &cdp1871_device::set_d4_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1871_device &>(*device).set_d4_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D5_CALLBACK(_read) \
- devcb = &cdp1871_device::set_d5_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1871_device &>(*device).set_d5_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D6_CALLBACK(_read) \
- devcb = &cdp1871_device::set_d6_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1871_device &>(*device).set_d6_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D7_CALLBACK(_read) \
- devcb = &cdp1871_device::set_d7_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1871_device &>(*device).set_d7_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D8_CALLBACK(_read) \
- devcb = &cdp1871_device::set_d8_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1871_device &>(*device).set_d8_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D9_CALLBACK(_read) \
- devcb = &cdp1871_device::set_d9_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1871_device &>(*device).set_d9_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D10_CALLBACK(_read) \
- devcb = &cdp1871_device::set_d10_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1871_device &>(*device).set_d10_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D11_CALLBACK(_read) \
- devcb = &cdp1871_device::set_d11_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<cdp1871_device &>(*device).set_d11_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_DA_CALLBACK(_write) \
- devcb = &cdp1871_device::set_da_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<cdp1871_device &>(*device).set_da_wr_callback(DEVCB_##_write);
#define MCFG_CDP1871_RPT_CALLBACK(_write) \
- devcb = &cdp1871_device::set_rpt_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<cdp1871_device &>(*device).set_rpt_wr_callback(DEVCB_##_write);
@@ -94,19 +94,19 @@ public:
// construction/destruction
cdp1871_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_d1_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d2_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d3_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d4_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d4.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d5_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d5.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d6_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d6.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d7_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d7.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d8_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d8.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d9_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d9.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d10_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d10.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d11_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d11.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_da_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_write_da.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rpt_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_write_rpt.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d1_rd_callback(Object &&cb) { return m_read_d1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d2_rd_callback(Object &&cb) { return m_read_d2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d3_rd_callback(Object &&cb) { return m_read_d3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d4_rd_callback(Object &&cb) { return m_read_d4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d5_rd_callback(Object &&cb) { return m_read_d5.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d6_rd_callback(Object &&cb) { return m_read_d6.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d7_rd_callback(Object &&cb) { return m_read_d7.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d8_rd_callback(Object &&cb) { return m_read_d8.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d9_rd_callback(Object &&cb) { return m_read_d9.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d10_rd_callback(Object &&cb) { return m_read_d10.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d11_rd_callback(Object &&cb) { return m_read_d11.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_da_wr_callback(Object &&cb) { return m_write_da.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rpt_wr_callback(Object &&cb) { return m_write_rpt.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
diff --git a/src/devices/machine/cdp1879.h b/src/devices/machine/cdp1879.h
index ec34704e20f..6a3a1faaa36 100644
--- a/src/devices/machine/cdp1879.h
+++ b/src/devices/machine/cdp1879.h
@@ -19,7 +19,7 @@
//**************************************************************************
#define MCFG_CDP1879_IRQ_CALLBACK(_cb) \
- devcb = &cdp1879_device::set_irq_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<cdp1879_device &>(*device).set_irq_cb(DEVCB_##_cb);
//**************************************************************************
@@ -38,7 +38,7 @@ public:
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
- template<class _Object> static devcb_base &set_irq_cb(device_t &device, _Object wr) { return downcast<cdp1879_device &>(device).m_irq_w.set_callback(wr); }
+ template<class Object> devcb_base &set_irq_cb(Object &&cb) { return m_irq_w.set_callback(std::forward<Object>(cb)); }
devcb_write_line m_irq_w;
diff --git a/src/devices/machine/clock.h b/src/devices/machine/clock.h
index 3d361cd0d75..dc87e7a4f60 100644
--- a/src/devices/machine/clock.h
+++ b/src/devices/machine/clock.h
@@ -10,14 +10,14 @@
MCFG_DEVICE_ADD(_tag, CLOCK, _clock)
#define MCFG_CLOCK_SIGNAL_HANDLER(_devcb) \
- devcb = &clock_device::set_signal_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<clock_device &>(*device).set_signal_handler(DEVCB_##_devcb);
class clock_device : public device_t
{
public:
clock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_signal_handler(device_t &device, Object &&cb) { return downcast<clock_device &>(device).m_signal_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_signal_handler(Object &&cb) { return m_signal_handler.set_callback(std::forward<Object>(cb)); }
protected:
virtual void device_start() override;
diff --git a/src/devices/machine/com8116.h b/src/devices/machine/com8116.h
index b36200d53b4..46d4b42c022 100644
--- a/src/devices/machine/com8116.h
+++ b/src/devices/machine/com8116.h
@@ -34,13 +34,13 @@
///*************************************************************************
#define MCFG_COM8116_FX4_HANDLER(_devcb) \
- devcb = &com8116_device::set_fx4_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<com8116_device &>(*device).set_fx4_handler(DEVCB_##_devcb);
#define MCFG_COM8116_FR_HANDLER(_devcb) \
- devcb = &com8116_device::set_fr_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<com8116_device &>(*device).set_fr_handler(DEVCB_##_devcb);
#define MCFG_COM8116_FT_HANDLER(_devcb) \
- devcb = &com8116_device::set_ft_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<com8116_device &>(*device).set_ft_handler(DEVCB_##_devcb);
///*************************************************************************
@@ -55,9 +55,9 @@ public:
// construction/destruction
com8116_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_fx4_handler(device_t &device, Object &&cb) { return downcast<com8116_device &>(device).m_fx4_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_fr_handler(device_t &device, Object &&cb) { return downcast<com8116_device &>(device).m_fr_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ft_handler(device_t &device, Object &&cb) { return downcast<com8116_device &>(device).m_ft_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_fx4_handler(Object &&cb) { return m_fx4_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_fr_handler(Object &&cb) { return m_fr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ft_handler(Object &&cb) { return m_ft_handler.set_callback(std::forward<Object>(cb)); }
void str_w(uint8_t data);
DECLARE_WRITE8_MEMBER( str_w );
diff --git a/src/devices/machine/cr511b.h b/src/devices/machine/cr511b.h
index 361466ff2c8..d305880a87c 100644
--- a/src/devices/machine/cr511b.h
+++ b/src/devices/machine/cr511b.h
@@ -46,22 +46,22 @@
#define MCFG_CR511B_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, CR511B, 0)
#define MCFG_CR511B_STCH_HANDLER(_devcb) \
- devcb = &cr511b_device::set_stch_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<cr511b_device &>(*device).set_stch_handler(DEVCB_##_devcb);
#define MCFG_CR511B_STEN_HANDLER(_devcb) \
- devcb = &cr511b_device::set_sten_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<cr511b_device &>(*device).set_sten_handler(DEVCB_##_devcb);
#define MCFG_CR511B_DRQ_HANDLER(_devcb) \
- devcb = &cr511b_device::set_drq_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<cr511b_device &>(*device).set_drq_handler(DEVCB_##_devcb);
#define MCFG_CR511B_DTEN_HANDLER(_devcb) \
- devcb = &cr511b_device::set_dten_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<cr511b_device &>(*device).set_dten_handler(DEVCB_##_devcb);
#define MCFG_CR511B_SCOR_HANDLER(_devcb) \
- devcb = &cr511b_device::set_scor_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<cr511b_device &>(*device).set_scor_handler(DEVCB_##_devcb);
#define MCFG_CR511B_XAEN_HANDLER(_devcb) \
- devcb = &cr511b_device::set_xaen_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<cr511b_device &>(*device).set_xaen_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -77,23 +77,12 @@ public:
cr511b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template <class Object> static devcb_base &set_stch_handler(device_t &device, Object &&cb)
- { return downcast<cr511b_device &>(device).m_stch_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_sten_handler(device_t &device, Object &&cb)
- { return downcast<cr511b_device &>(device).m_sten_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb)
- { return downcast<cr511b_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_dten_handler(device_t &device, Object &&cb)
- { return downcast<cr511b_device &>(device).m_dten_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_scor_handler(device_t &device, Object &&cb)
- { return downcast<cr511b_device &>(device).m_scor_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_xaen_handler(device_t &device, Object &&cb)
- { return downcast<cr511b_device &>(device).m_xaen_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_stch_handler(Object &&cb) { return m_stch_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sten_handler(Object &&cb) { return m_sten_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_drq_handler(Object &&cb) { return m_drq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dten_handler(Object &&cb) { return m_dten_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_scor_handler(Object &&cb) { return m_scor_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_xaen_handler(Object &&cb) { return m_xaen_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER ( write );
diff --git a/src/devices/machine/cs4031.cpp b/src/devices/machine/cs4031.cpp
index b7c31322e0d..6d69229b50e 100644
--- a/src/devices/machine/cs4031.cpp
+++ b/src/devices/machine/cs4031.cpp
@@ -196,30 +196,6 @@ cs4031_device::cs4031_device(const machine_config &mconfig, const char *tag, dev
{
}
-void cs4031_device::static_set_cputag(device_t &device, const char *tag)
-{
- cs4031_device &cs4031 = downcast<cs4031_device &>(device);
- cs4031.m_cputag = tag;
-}
-
-void cs4031_device::static_set_isatag(device_t &device, const char *tag)
-{
- cs4031_device &cs4031 = downcast<cs4031_device &>(device);
- cs4031.m_isatag = tag;
-}
-
-void cs4031_device::static_set_biostag(device_t &device, const char *tag)
-{
- cs4031_device &cs4031 = downcast<cs4031_device &>(device);
- cs4031.m_biostag = tag;
-}
-
-void cs4031_device::static_set_keybctag(device_t &device, const char *tag)
-{
- cs4031_device &cs4031 = downcast<cs4031_device &>(device);
- cs4031.m_keybctag = tag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/machine/cs4031.h b/src/devices/machine/cs4031.h
index b307d6da831..21b37e218fe 100644
--- a/src/devices/machine/cs4031.h
+++ b/src/devices/machine/cs4031.h
@@ -38,10 +38,10 @@
#define MCFG_CS4031_ADD(_tag, _clock, _cputag, _isatag, _biostag, _keybctag) \
MCFG_DEVICE_ADD(_tag, CS4031, _clock) \
- cs4031_device::static_set_cputag(*device, _cputag); \
- cs4031_device::static_set_isatag(*device, _isatag); \
- cs4031_device::static_set_biostag(*device, _biostag); \
- cs4031_device::static_set_keybctag(*device, _keybctag);
+ downcast<cs4031_device &>(*device).set_cputag(_cputag); \
+ downcast<cs4031_device &>(*device).set_isatag(_isatag); \
+ downcast<cs4031_device &>(*device).set_biostag(_biostag); \
+ downcast<cs4031_device &>(*device).set_keybctag(_keybctag);
#define MCFG_CS4031_IOR(_ior) \
devcb = &downcast<cs4031_device *>(device)->set_ior_callback(DEVCB_##_ior);
@@ -142,10 +142,10 @@ public:
IRQ_CALLBACK_MEMBER(int_ack_r) { return m_intc1->acknowledge(); }
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
- static void static_set_isatag(device_t &device, const char *tag);
- static void static_set_biostag(device_t &device, const char *tag);
- static void static_set_keybctag(device_t &device, const char *tag);
+ void set_cputag(const char *tag) { m_cputag = tag; }
+ void set_isatag(const char *tag) { m_isatag = tag; }
+ void set_biostag(const char *tag) { m_biostag = tag; }
+ void set_keybctag(const char *tag) { m_keybctag = tag; }
protected:
// device-level overrides
diff --git a/src/devices/machine/cs8221.cpp b/src/devices/machine/cs8221.cpp
index 476a68af212..6e6cfb44545 100644
--- a/src/devices/machine/cs8221.cpp
+++ b/src/devices/machine/cs8221.cpp
@@ -68,24 +68,6 @@ cs8221_device::cs8221_device(const machine_config &mconfig, const char *tag, dev
{
}
-void cs8221_device::static_set_cputag(device_t &device, const char *tag)
-{
- cs8221_device &cs8221 = downcast<cs8221_device &>(device);
- cs8221.m_cputag = tag;
-}
-
-void cs8221_device::static_set_isatag(device_t &device, const char *tag)
-{
- cs8221_device &cs8221 = downcast<cs8221_device &>(device);
- cs8221.m_isatag = tag;
-}
-
-void cs8221_device::static_set_biostag(device_t &device, const char *tag)
-{
- cs8221_device &cs8221 = downcast<cs8221_device &>(device);
- cs8221.m_biostag = tag;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/machine/cs8221.h b/src/devices/machine/cs8221.h
index 9eb932ce09c..f93b2a50c58 100644
--- a/src/devices/machine/cs8221.h
+++ b/src/devices/machine/cs8221.h
@@ -28,9 +28,9 @@
#define MCFG_CS8221_ADD(_tag, _cputag, _isatag, _biostag) \
MCFG_DEVICE_ADD(_tag, CS8221, 0) \
- cs8221_device::static_set_cputag(*device, _cputag); \
- cs8221_device::static_set_isatag(*device, _isatag); \
- cs8221_device::static_set_biostag(*device, _biostag);
+ downcast<cs8221_device &>(*device).set_cputag(_cputag); \
+ downcast<cs8221_device &>(*device).set_isatag(_isatag); \
+ downcast<cs8221_device &>(*device).set_biostag(_biostag);
//**************************************************************************
@@ -46,9 +46,9 @@ public:
cs8221_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
- static void static_set_isatag(device_t &device, const char *tag);
- static void static_set_biostag(device_t &device, const char *tag);
+ void set_cputag(const char *tag) { m_cputag = tag; }
+ void set_isatag(const char *tag) { m_isatag = tag; }
+ void set_biostag(const char *tag) { m_biostag = tag; }
void map(address_map &map);
diff --git a/src/devices/machine/cxd1095.h b/src/devices/machine/cxd1095.h
index ddc4d7f46bd..83b04b6b98e 100644
--- a/src/devices/machine/cxd1095.h
+++ b/src/devices/machine/cxd1095.h
@@ -49,26 +49,26 @@
//**************************************************************************
#define MCFG_CXD1095_IN_PORTA_CB(_devcb) \
- devcb = &cxd1095_device::set_input_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<cxd1095_device &>(*device).set_input_cb(0, DEVCB_##_devcb);
#define MCFG_CXD1095_IN_PORTB_CB(_devcb) \
- devcb = &cxd1095_device::set_input_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<cxd1095_device &>(*device).set_input_cb(1, DEVCB_##_devcb);
#define MCFG_CXD1095_IN_PORTC_CB(_devcb) \
- devcb = &cxd1095_device::set_input_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<cxd1095_device &>(*device).set_input_cb(2, DEVCB_##_devcb);
#define MCFG_CXD1095_IN_PORTD_CB(_devcb) \
- devcb = &cxd1095_device::set_input_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<cxd1095_device &>(*device).set_input_cb(3, DEVCB_##_devcb);
#define MCFG_CXD1095_IN_PORTE_CB(_devcb) \
- devcb = &cxd1095_device::set_input_cb(*device, 4, DEVCB_##_devcb);
+ devcb = &downcast<cxd1095_device &>(*device).set_input_cb(4, DEVCB_##_devcb);
#define MCFG_CXD1095_OUT_PORTA_CB(_devcb) \
- devcb = &cxd1095_device::set_output_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &downcast<cxd1095_device &>(*device).set_output_cb(0, DEVCB_##_devcb);
#define MCFG_CXD1095_OUT_PORTB_CB(_devcb) \
- devcb = &cxd1095_device::set_output_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &downcast<cxd1095_device &>(*device).set_output_cb(1, DEVCB_##_devcb);
#define MCFG_CXD1095_OUT_PORTC_CB(_devcb) \
- devcb = &cxd1095_device::set_output_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &downcast<cxd1095_device &>(*device).set_output_cb(2, DEVCB_##_devcb);
#define MCFG_CXD1095_OUT_PORTD_CB(_devcb) \
- devcb = &cxd1095_device::set_output_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &downcast<cxd1095_device &>(*device).set_output_cb(3, DEVCB_##_devcb);
#define MCFG_CXD1095_OUT_PORTE_CB(_devcb) \
- devcb = &cxd1095_device::set_output_cb(*device, 4, DEVCB_##_devcb);
+ devcb = &downcast<cxd1095_device &>(*device).set_output_cb(4, DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -82,19 +82,9 @@ public:
// construction/destruction
cxd1095_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- // static configuration
- template <class Object>
- static devcb_base &set_input_cb(device_t &device, int p, Object &&obj)
- {
- assert(p >= 0 && p < 5);
- return downcast<cxd1095_device &>(device).m_input_cb[p].set_callback(std::forward<Object>(obj));
- }
- template <class Object>
- static devcb_base &set_output_cb(device_t &device, int p, Object &&obj)
- {
- assert(p >= 0 && p < 5);
- return downcast<cxd1095_device &>(device).m_output_cb[p].set_callback(std::forward<Object>(obj));
- }
+ // configuration
+ template <class Object> devcb_base &set_input_cb(int p, Object &&cb) { assert(p >= 0 && p < 5); return m_input_cb[p].set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_cb(int p, Object &&cb) { assert(p >= 0 && p < 5); return m_output_cb[p].set_callback(std::forward<Object>(cb)); }
// memory handlers
DECLARE_READ8_MEMBER(read);
diff --git a/src/devices/machine/dmac.h b/src/devices/machine/dmac.h
index f9f06e3d85c..7fad643c69b 100644
--- a/src/devices/machine/dmac.h
+++ b/src/devices/machine/dmac.h
@@ -23,25 +23,25 @@
#define MCFG_DMAC_ADD(_tag, _clock) \
MCFG_DEVICE_ADD(_tag, AMIGA_DMAC, _clock)
#define MCFG_DMAC_CFGOUT_HANDLER(_devcb) \
- devcb = &amiga_dmac_device::set_cfgout_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<amiga_dmac_device &>(*device).set_cfgout_handler(DEVCB_##_devcb);
#define MCFG_DMAC_INT_HANDLER(_devcb) \
- devcb = &amiga_dmac_device::set_int_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<amiga_dmac_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_DMAC_XDACK_HANDLER(_devcb) \
- devcb = &amiga_dmac_device::set_xdack_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<amiga_dmac_device &>(*device).set_xdack_handler(DEVCB_##_devcb);
#define MCFG_DMAC_SCSI_READ_HANDLER(_devcb) \
- devcb = &amiga_dmac_device::set_scsi_read_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<amiga_dmac_device &>(*device).set_scsi_read_handler(DEVCB_##_devcb);
#define MCFG_DMAC_SCSI_WRITE_HANDLER(_devcb) \
- devcb = &amiga_dmac_device::set_scsi_write_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<amiga_dmac_device &>(*device).set_scsi_write_handler(DEVCB_##_devcb);
#define MCFG_DMAC_IO_READ_HANDLER(_devcb) \
- devcb = &amiga_dmac_device::set_io_read_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<amiga_dmac_device &>(*device).set_io_read_handler(DEVCB_##_devcb);
#define MCFG_DMAC_IO_WRITE_HANDLER(_devcb) \
- devcb = &amiga_dmac_device::set_io_write_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<amiga_dmac_device &>(*device).set_io_write_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -57,26 +57,13 @@ public:
amiga_dmac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template <class Object> static devcb_base &set_cfgout_handler(device_t &device, Object &&cb)
- { return downcast<amiga_dmac_device &>(device).m_cfgout_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
- { return downcast<amiga_dmac_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_xdack_handler(device_t &device, Object &&cb)
- { return downcast<amiga_dmac_device &>(device).m_xdack_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_scsi_read_handler(device_t &device, Object &&cb)
- { return downcast<amiga_dmac_device &>(device).m_scsi_read_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_scsi_write_handler(device_t &device, Object &&cb)
- { return downcast<amiga_dmac_device &>(device).m_scsi_write_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_io_read_handler(device_t &device, Object &&cb)
- { return downcast<amiga_dmac_device &>(device).m_io_read_handler.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_io_write_handler(device_t &device, Object &&cb)
- { return downcast<amiga_dmac_device &>(device).m_io_write_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cfgout_handler(Object &&cb) { return m_cfgout_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_xdack_handler(Object &&cb) { return m_xdack_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_scsi_read_handler(Object &&cb) { return m_scsi_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_scsi_write_handler(Object &&cb) { return m_scsi_write_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_io_read_handler(Object &&cb) { return m_io_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_io_write_handler(Object &&cb) { return m_io_write_handler.set_callback(std::forward<Object>(cb)); }
void set_address_space(address_space *space) { m_space = space; }
void set_rom(uint8_t *rom) { m_rom = rom; }
diff --git a/src/devices/machine/dp8390.h b/src/devices/machine/dp8390.h
index b7794e43903..da1bf993833 100644
--- a/src/devices/machine/dp8390.h
+++ b/src/devices/machine/dp8390.h
@@ -9,37 +9,37 @@
// device stuff
#define MCFG_DP8390D_IRQ_CB(_devcb) \
- devcb = &dp8390d_device::set_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<dp8390_device &>(*device).set_irq_callback(DEVCB_##_devcb);
#define MCFG_DP8390D_BREQ_CB(_devcb) \
- devcb = &dp8390d_device::set_breq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<dp8390_device &>(*device).set_breq_callback(DEVCB_##_devcb);
#define MCFG_DP8390D_MEM_READ_CB(_devcb) \
- devcb = &dp8390d_device::set_mem_read_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<dp8390_device &>(*device).set_mem_read_callback(DEVCB_##_devcb);
#define MCFG_DP8390D_MEM_WRITE_CB(_devcb) \
- devcb = &dp8390d_device::set_mem_write_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<dp8390_device &>(*device).set_mem_write_callback(DEVCB_##_devcb);
#define MCFG_RTL8019A_IRQ_CB(_devcb) \
- devcb = &rtl8019a_device::set_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<rtl8019a_device &>(*device).set_irq_callback(DEVCB_##_devcb);
#define MCFG_RTL8019A_BREQ_CB(_devcb) \
- devcb = &rtl8019a_device::set_breq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<rtl8019a_device &>(*device).set_breq_callback(DEVCB_##_devcb);
#define MCFG_RTL8019A_MEM_READ_CB(_devcb) \
- devcb = &rtl8019a_device::set_mem_read_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<rtl8019a_device &>(*device).set_mem_read_callback(DEVCB_##_devcb);
#define MCFG_RTL8019A_MEM_WRITE_CB(_devcb) \
- devcb = &rtl8019a_device::set_mem_write_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<rtl8019a_device &>(*device).set_mem_write_callback(DEVCB_##_devcb);
class dp8390_device : public device_t, public device_network_interface
{
public:
- template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_breq_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_breq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_mem_read_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_mem_read_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_mem_write_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_mem_write_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_breq_callback(Object &&cb) { return m_breq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_mem_read_callback(Object &&cb) { return m_mem_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_mem_write_callback(Object &&cb) { return m_mem_write_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE16_MEMBER( dp8390_w );
DECLARE_READ16_MEMBER( dp8390_r );
diff --git a/src/devices/machine/ds1315.h b/src/devices/machine/ds1315.h
index 132056e46b3..b1f8b11b399 100644
--- a/src/devices/machine/ds1315.h
+++ b/src/devices/machine/ds1315.h
@@ -23,7 +23,7 @@
MCFG_DEVICE_ADD(_tag, DS1315, 0)
#define MCFG_DS1315_BACKING_HANDLER(_devcb) \
- devcb = &ds1315_device::set_backing_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds1315_device &>(*device).set_backing_handler(DEVCB_##_devcb);
/***************************************************************************
MACROS
@@ -46,8 +46,7 @@ public:
bool chip_enable();
void chip_reset();
- template <class Object> static devcb_base &set_backing_handler(device_t &device, Object &&cb)
- { return downcast<ds1315_device &>(device).m_backing_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_backing_handler(Object &&cb) { return m_backing_read.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
diff --git a/src/devices/machine/ds1386.h b/src/devices/machine/ds1386.h
index 12f2ad11016..06d84484c77 100644
--- a/src/devices/machine/ds1386.h
+++ b/src/devices/machine/ds1386.h
@@ -60,13 +60,13 @@
// handlers
#define MCFG_DS1386_INTA_HANDLER(_devcb) \
- devcb = &ds1386_device::set_inta_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds1386_device &>(*device).set_inta_cb(DEVCB_##_devcb);
#define MCFG_DS1386_INTB_HANDLER(_devcb) \
- devcb = &ds1386_device::set_inta_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds1386_device &>(*device).set_inta_cb(DEVCB_##_devcb);
#define MCFG_DS1386_SQW_HANDLER(_devcb) \
- devcb = &ds1386_device::set_sqw_cb(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds1386_device &>(*device).set_sqw_cb(DEVCB_##_devcb);
// devices
@@ -87,9 +87,9 @@ public:
DECLARE_WRITE_LINE_MEMBER( oe_w );
DECLARE_WRITE_LINE_MEMBER( we_w );
- template <class Object> static devcb_base &set_inta_cb(device_t &device, Object &&cb) { return downcast<ds1386_device &>(device).m_inta_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_intb_cb(device_t &device, Object &&cb) { return downcast<ds1386_device &>(device).m_intb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sqw_cb(device_t &device, Object &&cb) { return downcast<ds1386_device &>(device).m_sqw_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_inta_cb(Object &&cb) { return m_inta_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_intb_cb(Object &&cb) { return m_intb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sqw_cb(Object &&cb) { return m_sqw_cb.set_callback(std::forward<Object>(cb)); }
protected:
enum
diff --git a/src/devices/machine/ds2404.cpp b/src/devices/machine/ds2404.cpp
index b5f41d36f25..4a28b7f7d38 100644
--- a/src/devices/machine/ds2404.cpp
+++ b/src/devices/machine/ds2404.cpp
@@ -39,42 +39,6 @@ ds2404_device::ds2404_device(const machine_config &mconfig, const char *tag, dev
//-------------------------------------------------
-// static_set_ref_year - configuration helper
-// to set the reference year
-//-------------------------------------------------
-
-void ds2404_device::static_set_ref_year(device_t &device, uint32_t year)
-{
- ds2404_device &ds2404 = downcast<ds2404_device &>(device);
- ds2404.m_ref_year = year;
-}
-
-
-//-------------------------------------------------
-// static_set_ref_month - configuration helper
-// to set the reference month
-//-------------------------------------------------
-
-void ds2404_device::static_set_ref_month(device_t &device, uint8_t month)
-{
- ds2404_device &ds2404 = downcast<ds2404_device &>(device);
- ds2404.m_ref_month = month;
-}
-
-
-//-------------------------------------------------
-// static_set_ref_day - configuration helper
-// to set the reference day
-//-------------------------------------------------
-
-void ds2404_device::static_set_ref_day(device_t &device, uint8_t day)
-{
- ds2404_device &ds2404 = downcast<ds2404_device &>(device);
- ds2404.m_ref_day = day;
-}
-
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/machine/ds2404.h b/src/devices/machine/ds2404.h
index 55d9f63776c..43fbe93ad15 100644
--- a/src/devices/machine/ds2404.h
+++ b/src/devices/machine/ds2404.h
@@ -27,13 +27,13 @@
MCFG_DS2404_REF_DAY(_ref_day)
#define MCFG_DS2404_REF_YEAR(_ref_year) \
- ds2404_device::static_set_ref_year(*device, _ref_year);
+ downcast<ds2404_device &>(*device).set_ref_year(_ref_year);
#define MCFG_DS2404_REF_MONTH(_ref_month) \
- ds2404_device::static_set_ref_month(*device, _ref_month);
+ downcast<ds2404_device &>(*device).set_ref_month(_ref_month);
#define MCFG_DS2404_REF_DAY(_ref_day) \
- ds2404_device::static_set_ref_day(*device, _ref_day);
+ downcast<ds2404_device &>(*device).set_ref_day(_ref_day);
//**************************************************************************
@@ -50,9 +50,9 @@ public:
ds2404_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration helpers
- static void static_set_ref_year(device_t &device, uint32_t m_ref_year);
- static void static_set_ref_month(device_t &device, uint8_t m_ref_month);
- static void static_set_ref_day(device_t &device, uint8_t m_ref_day);
+ void set_ref_year(uint32_t year) { m_ref_year = year; }
+ void set_ref_month(uint8_t month) { m_ref_month = month; }
+ void set_ref_day(uint8_t day) { m_ref_day = day; }
/* 1-wire interface reset */
DECLARE_WRITE8_MEMBER(ds2404_1w_reset_w);
diff --git a/src/devices/machine/ds75161a.h b/src/devices/machine/ds75161a.h
index 7a51ef8a81f..71c93dc2b6b 100644
--- a/src/devices/machine/ds75161a.h
+++ b/src/devices/machine/ds75161a.h
@@ -32,52 +32,52 @@
///*************************************************************************
#define MCFG_DS75161A_IN_REN_CB(_devcb) \
- devcb = &ds75161a_device::set_in_ren_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_in_ren_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_IFC_CB(_devcb) \
- devcb = &ds75161a_device::set_in_ifc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_in_ifc_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_NDAC_CB(_devcb) \
- devcb = &ds75161a_device::set_in_ndac_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_in_ndac_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_NRFD_CB(_devcb) \
- devcb = &ds75161a_device::set_in_nrfd_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_in_nrfd_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_DAV_CB(_devcb) \
- devcb = &ds75161a_device::set_in_dav_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_in_dav_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_EOI_CB(_devcb) \
- devcb = &ds75161a_device::set_in_eoi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_in_eoi_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_ATN_CB(_devcb) \
- devcb = &ds75161a_device::set_in_atn_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_in_atn_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_SRQ_CB(_devcb) \
- devcb = &ds75161a_device::set_in_srq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_in_srq_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_REN_CB(_devcb) \
- devcb = &ds75161a_device::set_out_ren_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_out_ren_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_IFC_CB(_devcb) \
- devcb = &ds75161a_device::set_out_ifc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_out_ifc_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_NDAC_CB(_devcb) \
- devcb = &ds75161a_device::set_out_ndac_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_out_ndac_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_NRFD_CB(_devcb) \
- devcb = &ds75161a_device::set_out_nrfd_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_out_nrfd_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_DAV_CB(_devcb) \
- devcb = &ds75161a_device::set_out_dav_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_out_dav_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_EOI_CB(_devcb) \
- devcb = &ds75161a_device::set_out_eoi_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_out_eoi_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_ATN_CB(_devcb) \
- devcb = &ds75161a_device::set_out_atn_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_out_atn_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_SRQ_CB(_devcb) \
- devcb = &ds75161a_device::set_out_srq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ds75161a_device &>(*device).set_out_srq_callback(DEVCB_##_devcb);
///*************************************************************************
// TYPE DEFINITIONS
@@ -91,22 +91,22 @@ public:
// construction/destruction
ds75161a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_in_ren_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_ren_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_ifc_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_ifc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_ndac_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_ndac_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_nrfd_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_nrfd_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_dav_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_dav_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_eoi_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_eoi_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_atn_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_atn_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_srq_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_srq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_ren_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_ren_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_ifc_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_ifc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_ndac_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_ndac_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_nrfd_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_nrfd_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_dav_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_dav_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_eoi_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_eoi_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_atn_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_atn_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_srq_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_srq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_ren_callback(Object &&cb) { return m_in_ren_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_ifc_callback(Object &&cb) { return m_in_ifc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_ndac_callback(Object &&cb) { return m_in_ndac_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_nrfd_callback(Object &&cb) { return m_in_nrfd_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_dav_callback(Object &&cb) { return m_in_dav_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_eoi_callback(Object &&cb) { return m_in_eoi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_atn_callback(Object &&cb) { return m_in_atn_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_srq_callback(Object &&cb) { return m_in_srq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_ren_callback(Object &&cb) { return m_out_ren_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_ifc_callback(Object &&cb) { return m_out_ifc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_ndac_callback(Object &&cb) { return m_out_ndac_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_nrfd_callback(Object &&cb) { return m_out_nrfd_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_dav_callback(Object &&cb) { return m_out_dav_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_eoi_callback(Object &&cb) { return m_out_eoi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_atn_callback(Object &&cb) { return m_out_atn_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_srq_callback(Object &&cb) { return m_out_srq_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( te_w );
DECLARE_WRITE_LINE_MEMBER( dc_w );
diff --git a/src/devices/machine/e05a03.h b/src/devices/machine/e05a03.h
index 5e8fbd28e92..fccb187b085 100644
--- a/src/devices/machine/e05a03.h
+++ b/src/devices/machine/e05a03.h
@@ -16,19 +16,19 @@
***************************************************************************/
#define MCFG_E05A03_NLQ_LP_CALLBACK(_write) \
- devcb = &e05a03_device::set_nlq_lp_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a03_device &>(*device).set_nlq_lp_wr_callback(DEVCB_##_write);
#define MCFG_E05A03_PE_LP_CALLBACK(_write) \
- devcb = &e05a03_device::set_pe_lp_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a03_device &>(*device).set_pe_lp_wr_callback(DEVCB_##_write);
#define MCFG_E05A03_RESO_CALLBACK(_write) \
- devcb = &e05a03_device::set_reso_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a03_device &>(*device).set_reso_wr_callback(DEVCB_##_write);
#define MCFG_E05A03_PE_CALLBACK(_write) \
- devcb = &e05a03_device::set_pe_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a03_device &>(*device).set_pe_wr_callback(DEVCB_##_write);
#define MCFG_E05A03_DATA_CALLBACK(_read) \
- devcb = &e05a03_device::set_data_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<e05a03_device &>(*device).set_data_rd_callback(DEVCB_##_read);
/***************************************************************************
@@ -40,11 +40,11 @@ class e05a03_device : public device_t
public:
e05a03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_nlq_lp_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_nlq_lp.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pe_lp_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_pe_lp.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_reso_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_reso.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pe_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_pe.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_data_rd_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_read_data.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nlq_lp_wr_callback(Object &&cb) { return m_write_nlq_lp.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pe_lp_wr_callback(Object &&cb) { return m_write_pe_lp.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_reso_wr_callback(Object &&cb) { return m_write_reso.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pe_wr_callback(Object &&cb) { return m_write_pe.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_data_rd_callback(Object &&cb) { return m_read_data.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( read );
diff --git a/src/devices/machine/e05a30.h b/src/devices/machine/e05a30.h
index 66ec9c92ed0..0f79a2fe491 100644
--- a/src/devices/machine/e05a30.h
+++ b/src/devices/machine/e05a30.h
@@ -13,31 +13,31 @@
***************************************************************************/
#define MCFG_E05A30_PRINTHEAD_CALLBACK(_write) \
- devcb = &e05a30_device::set_printhead_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a30_device &>(*device).set_printhead_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_PF_STEPPER_CALLBACK(_write) \
- devcb = &e05a30_device::set_pf_stepper_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a30_device &>(*device).set_pf_stepper_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CR_STEPPER_CALLBACK(_write) \
- devcb = &e05a30_device::set_cr_stepper_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a30_device &>(*device).set_cr_stepper_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_READY_CALLBACK(_write) \
- devcb = &e05a30_device::set_ready_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a30_device &>(*device).set_ready_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CENTRONICS_ACK_CALLBACK(_write) \
- devcb = &e05a30_device::set_centronics_ack_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a30_device &>(*device).set_centronics_ack_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CENTRONICS_BUSY_CALLBACK(_write) \
- devcb = &e05a30_device::set_centronics_busy_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a30_device &>(*device).set_centronics_busy_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CENTRONICS_PERROR_CALLBACK(_write) \
- devcb = &e05a30_device::set_centronics_perror_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a30_device &>(*device).set_centronics_perror_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CENTRONICS_FAULT_CALLBACK(_write) \
- devcb = &e05a30_device::set_centronics_fault_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a30_device &>(*device).set_centronics_fault_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CENTRONICS_SELECT_CALLBACK(_write) \
- devcb = &e05a30_device::set_centronics_select_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<e05a30_device &>(*device).set_centronics_select_wr_callback(DEVCB_##_write);
/***************************************************************************
TYPE DEFINITIONS
@@ -48,15 +48,15 @@ class e05a30_device : public device_t
public:
e05a30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_printhead_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_printhead.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pf_stepper_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_pf_stepper.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_cr_stepper_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_cr_stepper.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ready_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_ready.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_centronics_ack_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_ack.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_centronics_busy_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_busy.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_centronics_perror_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_perror.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_centronics_fault_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_fault.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_centronics_select_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_select.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_printhead_wr_callback(Object &&cb) { return m_write_printhead.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pf_stepper_wr_callback(Object &&cb) { return m_write_pf_stepper.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cr_stepper_wr_callback(Object &&cb) { return m_write_cr_stepper.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ready_wr_callback(Object &&cb) { return m_write_ready.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_centronics_ack_wr_callback(Object &&cb) { return m_write_centronics_ack.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_centronics_busy_wr_callback(Object &&cb) { return m_write_centronics_busy.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_centronics_perror_wr_callback(Object &&cb) { return m_write_centronics_perror.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_centronics_fault_wr_callback(Object &&cb) { return m_write_centronics_fault.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_centronics_select_wr_callback(Object &&cb) { return m_write_centronics_select.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( read );
diff --git a/src/devices/machine/eeprom.cpp b/src/devices/machine/eeprom.cpp
index 2ed8e3fa65c..02ec231478a 100644
--- a/src/devices/machine/eeprom.cpp
+++ b/src/devices/machine/eeprom.cpp
@@ -45,70 +45,43 @@ eeprom_base_device::eeprom_base_device(const machine_config &mconfig, device_typ
//-------------------------------------------------
-// static_set_default_data - configuration helpers
+// set_default_data - configuration helpers
// to set the default data
//-------------------------------------------------
-void eeprom_base_device::static_set_size(device_t &device, int cells, int cellbits)
+void eeprom_base_device::set_size(int cells, int cellbits)
{
- eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device);
- eeprom.m_cells = cells;
- eeprom.m_data_bits = cellbits;
+ m_cells = cells;
+ m_data_bits = cellbits;
// compute address bits (validation checks verify cells was an even power of 2)
cells--;
- eeprom.m_address_bits = 0;
+ m_address_bits = 0;
while (cells != 0)
{
cells >>= 1;
- eeprom.m_address_bits++;
+ m_address_bits++;
}
}
//-------------------------------------------------
-// static_set_default_data - configuration helpers
+// set_default_data - configuration helpers
// to set the default data
//-------------------------------------------------
-void eeprom_base_device::static_set_default_data(device_t &device, const uint8_t *data, uint32_t size)
+void eeprom_base_device::set_default_data(const uint8_t *data, uint32_t size)
{
- eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device);
- assert(eeprom.m_data_bits == 8);
- eeprom.m_default_data = data;
- eeprom.m_default_data_size = size;
+ assert(m_data_bits == 8);
+ m_default_data = data;
+ m_default_data_size = size;
}
-void eeprom_base_device::static_set_default_data(device_t &device, const uint16_t *data, uint32_t size)
+void eeprom_base_device::set_default_data(const uint16_t *data, uint32_t size)
{
- eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device);
- assert(eeprom.m_data_bits == 16);
- eeprom.m_default_data = data;
- eeprom.m_default_data_size = size / 2;
-}
-
-
-//-------------------------------------------------
-// static_set_default_value - configuration helper
-// to set the default value
-//-------------------------------------------------
-
-void eeprom_base_device::static_set_default_value(device_t &device, uint32_t value)
-{
- eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device);
- eeprom.m_default_value = value;
- eeprom.m_default_value_set = true;
-}
-
-
-//-------------------------------------------------
-// static_set_timing - configuration helper
-// to set timing constants for various operations
-//-------------------------------------------------
-
-void eeprom_base_device::static_set_timing(device_t &device, timing_type type, const attotime &duration)
-{
- downcast<eeprom_base_device &>(device).m_operation_time[type] = duration;
+ assert(m_data_bits == 16);
+ m_default_data = data;
+ m_default_data_size = size / 2;
}
diff --git a/src/devices/machine/eeprom.h b/src/devices/machine/eeprom.h
index 2c2fb68f7d1..0cf280d6441 100644
--- a/src/devices/machine/eeprom.h
+++ b/src/devices/machine/eeprom.h
@@ -20,20 +20,20 @@
//**************************************************************************
#define MCFG_EEPROM_SIZE(_cells, _cellbits) \
- eeprom_base_device::static_set_size(*device, _cells, _cellbits);
+ downcast<eeprom_base_device &>(*device).set_size(_cells, _cellbits);
#define MCFG_EEPROM_DATA(_data, _size) \
- eeprom_base_device::static_set_default_data(*device, _data, _size);
+ downcast<eeprom_base_device &>(*device).set_default_data(_data, _size);
#define MCFG_EEPROM_DEFAULT_VALUE(_value) \
- eeprom_base_device::static_set_default_value(*device, _value);
+ downcast<eeprom_base_device &>(*device).set_default_value(_value);
#define MCFG_EEPROM_WRITE_TIME(_value) \
- eeprom_base_device::static_set_timing(*device, eeprom_base_device::WRITE_TIME, _value);
+ downcast<eeprom_base_device &>(*device).set_timing(eeprom_base_device::WRITE_TIME, _value);
#define MCFG_EEPROM_WRITE_ALL_TIME(_value) \
- eeprom_base_device::static_set_timing(*device, eeprom_base_device::WRITE_ALL_TIME, _value);
+ downcast<eeprom_base_device &>(*device).set_timing(eeprom_base_device::WRITE_ALL_TIME, _value);
#define MCFG_EEPROM_ERASE_TIME(_value) \
- eeprom_base_device::static_set_timing(*device, eeprom_base_device::ERASE_TIME, _value);
+ downcast<eeprom_base_device &>(*device).set_timing(eeprom_base_device::ERASE_TIME, _value);
#define MCFG_EEPROM_ERASE_ALL_TIME(_value) \
- eeprom_base_device::static_set_timing(*device, eeprom_base_device::ERASE_ALL_TIME, _value);
+ downcast<eeprom_base_device &>(*device).set_timing(eeprom_base_device::ERASE_ALL_TIME, _value);
@@ -58,11 +58,11 @@ public:
};
// inline configuration helpers
- static void static_set_size(device_t &device, int cells, int cellbits);
- static void static_set_default_data(device_t &device, const uint8_t *data, uint32_t size);
- static void static_set_default_data(device_t &device, const uint16_t *data, uint32_t size);
- static void static_set_default_value(device_t &device, uint32_t value);
- static void static_set_timing(device_t &device, timing_type type, const attotime &duration);
+ void set_size(int cells, int cellbits);
+ void set_default_data(const uint8_t *data, uint32_t size);
+ void set_default_data(const uint16_t *data, uint32_t size);
+ void set_default_value(uint32_t value) { m_default_value = value; m_default_value_set = true; }
+ void set_timing(timing_type type, const attotime &duration) { m_operation_time[type] = duration; }
// read/write/erase data
uint32_t read(offs_t address);
diff --git a/src/devices/machine/eeprompar.cpp b/src/devices/machine/eeprompar.cpp
index ee717972f07..3be7298afc7 100644
--- a/src/devices/machine/eeprompar.cpp
+++ b/src/devices/machine/eeprompar.cpp
@@ -110,18 +110,6 @@ eeprom_parallel_28xx_device::eeprom_parallel_28xx_device(const machine_config &m
//-------------------------------------------------
-// static_set_lock_after_write - configuration
-// helper to enable simulation of external
-// flip-flop hooked to lock EEPROM after writes
-//-------------------------------------------------
-
-void eeprom_parallel_28xx_device::static_set_lock_after_write(device_t &device, bool lock)
-{
- downcast<eeprom_parallel_28xx_device &>(device).m_lock_after_write = lock;
-}
-
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -218,7 +206,7 @@ WRITE32_MEMBER(eeprom_parallel_28xx_device::unlock_write32) { oe_w(1); }
eeprom_parallel_##_lowercase##_device::eeprom_parallel_##_lowercase##_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) \
: eeprom_parallel_##_baseclass##_device(mconfig, EEPROM_PARALLEL_##_uppercase, tag, owner) \
{ \
- static_set_size(*this, _cells, _bits); \
+ set_size(_cells, _bits); \
} \
DEFINE_DEVICE_TYPE(EEPROM_PARALLEL_##_uppercase, eeprom_parallel_##_lowercase##_device, #_lowercase, "Parallel EEPROM " #_uppercase " (" #_cells "x" #_bits ")")
diff --git a/src/devices/machine/eeprompar.h b/src/devices/machine/eeprompar.h
index 9803d1556bb..12f42e55b87 100644
--- a/src/devices/machine/eeprompar.h
+++ b/src/devices/machine/eeprompar.h
@@ -40,7 +40,7 @@
// true when external circuit is used to lock EEPROM after every write
#define MCFG_EEPROM_28XX_LOCK_AFTER_WRITE(_lock) \
- eeprom_parallel_28xx_device::static_set_lock_after_write(*device, _lock);
+ downcast<eeprom_parallel_28xx_device &>(*device).set_lock_after_write(_lock);
//**************************************************************************
@@ -68,8 +68,8 @@ protected:
class eeprom_parallel_28xx_device : public eeprom_parallel_base_device
{
public:
- // static configuration helpers
- static void static_set_lock_after_write(device_t &device, bool lock);
+ // configuration helpers
+ void set_lock_after_write(bool lock) { m_lock_after_write = lock; }
// read/write data lines
DECLARE_WRITE8_MEMBER(write);
diff --git a/src/devices/machine/eepromser.cpp b/src/devices/machine/eepromser.cpp
index d97ea318407..48214a74291 100644
--- a/src/devices/machine/eepromser.cpp
+++ b/src/devices/machine/eepromser.cpp
@@ -178,40 +178,6 @@ eeprom_serial_base_device::eeprom_serial_base_device(const machine_config &mconf
//-------------------------------------------------
-// static_set_address_bits - configuration helper
-// to set the number of address bits in the
-// serial commands
-//-------------------------------------------------
-
-void eeprom_serial_base_device::static_set_address_bits(device_t &device, int addrbits)
-{
- downcast<eeprom_serial_base_device &>(device).m_command_address_bits = addrbits;
-}
-
-
-//-------------------------------------------------
-// static_enable_streaming - configuration helper
-// to enable streaming data
-//-------------------------------------------------
-
-void eeprom_serial_base_device::static_enable_streaming(device_t &device)
-{
- downcast<eeprom_serial_base_device &>(device).m_streaming_enabled = true;
-}
-
-
-//-----------------------------------------------------------------
-// static_enable_output_on_falling_clock - configuration helper
-// to enable updating the output on the falling edge of the clock
-//-----------------------------------------------------------------
-
-void eeprom_serial_base_device::static_enable_output_on_falling_clock(device_t &device)
-{
- downcast<eeprom_serial_base_device &>(device).m_output_on_falling_clock_enabled = true;
-}
-
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -1160,8 +1126,8 @@ WRITE_LINE_MEMBER(eeprom_serial_x24c44_device::di_write) { base_di_write(state);
eeprom_serial_##_lowercase##_##_bits##bit_device::eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) \
: eeprom_serial_##_baseclass##_device(mconfig, EEPROM_SERIAL_##_uppercase##_##_bits##BIT, tag, owner) \
{ \
- static_set_size(*this, _cells, _bits); \
- static_set_address_bits(*this, _addrbits); \
+ set_size(_cells, _bits); \
+ set_address_bits(_addrbits); \
} \
DEFINE_DEVICE_TYPE(EEPROM_SERIAL_##_uppercase##_##_bits##BIT, eeprom_serial_##_lowercase##_##_bits##bit_device, #_lowercase "_" #_bits, "Serial EEPROM " #_uppercase " (" #_cells "x" #_bits ")")
diff --git a/src/devices/machine/eepromser.h b/src/devices/machine/eepromser.h
index d0d662948d8..2a68f1ea1bc 100644
--- a/src/devices/machine/eepromser.h
+++ b/src/devices/machine/eepromser.h
@@ -22,10 +22,10 @@
// optional enable for streaming reads
#define MCFG_EEPROM_SERIAL_ENABLE_STREAMING() \
- eeprom_serial_base_device::static_enable_streaming(*device);
+ downcast<eeprom_serial_base_device &>(*device).enable_streaming(true);
// optional enable for output on falling clock
#define MCFG_EEPROM_SERIAL_ENABLE_OUTPUT_ON_FALLING_CLOCK() \
- eeprom_serial_base_device::static_enable_output_on_falling_clock(*device);
+ downcast<eeprom_serial_base_device &>(*device).enable_output_on_falling_clock(true);
// standard 93CX6 class of 16-bit EEPROMs
#define MCFG_EEPROM_SERIAL_93C06_ADD(_tag) \
@@ -92,7 +92,7 @@
#define MCFG_EEPROM_SERIAL_DEFAULT_VALUE MCFG_EEPROM_DEFAULT_VALUE
#define MCFG_EEPROM_SERIAL_DO_CALLBACK(_devcb) \
- devcb = &eeprom_serial_base_device::static_set_do_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<eeprom_serial_base_device &>(*device).set_do_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -106,13 +106,10 @@ class eeprom_serial_base_device : public eeprom_base_device
{
public:
// inline configuration helpers
- static void static_set_address_bits(device_t &device, int addrbits);
- static void static_enable_streaming(device_t &device);
- static void static_enable_output_on_falling_clock(device_t &device);
- template<class Object> static devcb_base &static_set_do_callback(device_t &device, Object &&object)
- {
- return downcast<eeprom_serial_base_device &>(device).m_do_cb.set_callback(std::forward<Object>(object));
- }
+ void set_address_bits(int addrbits) { m_command_address_bits = addrbits; }
+ void enable_streaming(bool enable) { m_streaming_enabled = enable; }
+ void enable_output_on_falling_clock(bool enable) { m_output_on_falling_clock_enabled = enable; }
+ template<class Object> devcb_base &set_do_callback(Object &&cb) { return m_do_cb.set_callback(std::forward<Object>(cb)); }
protected:
// construction/destruction
diff --git a/src/devices/machine/f3853.h b/src/devices/machine/f3853.h
index 3cc3b07b524..657a073bb1a 100644
--- a/src/devices/machine/f3853.h
+++ b/src/devices/machine/f3853.h
@@ -44,7 +44,7 @@
//**************************************************************************
#define MCFG_F3853_EXT_INPUT_CB(_class, _method) \
- f3853_device::set_interrupt_req_callback(*device, f3853_device::interrupt_req_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<f3853_device &>(*device).set_interrupt_req_callback(f3853_device::interrupt_req_delegate(&_class::_method, #_class "::" #_method, this));
/***************************************************************************
TYPE DEFINITIONS
@@ -63,7 +63,7 @@ public:
// construction/destruction
f3853_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_interrupt_req_callback(device_t &device, interrupt_req_delegate &&callback) { downcast<f3853_device &>(device).m_interrupt_req_cb = std::move(callback); }
+ template <typename Object> void set_interrupt_req_callback(Object &&cb) { m_interrupt_req_cb = std::forward<Object>(cb); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
diff --git a/src/devices/machine/fga002.h b/src/devices/machine/fga002.h
index 2be2e889ec6..01372e41231 100644
--- a/src/devices/machine/fga002.h
+++ b/src/devices/machine/fga002.h
@@ -9,19 +9,19 @@
// LOCAL IRQ callbacks
#define MCFG_FGA002_OUT_INT_CB(_devcb) \
- devcb = &fga002_device::set_out_int_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<fga002_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
#define MCFG_FGA002_OUT_LIACK4_CB(_devcb) \
- devcb = &fga002_device::set_liack4_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<fga002_device &>(*device).set_liack4_callback(DEVCB_##_devcb);
#define MCFG_FGA002_OUT_LIACK5_CB(_devcb) \
- devcb = &fga002_device::set_liack5_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<fga002_device &>(*device).set_liack5_callback(DEVCB_##_devcb);
#define MCFG_FGA002_OUT_LIACK6_CB(_devcb) \
- devcb = &fga002_device::set_liack6_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<fga002_device &>(*device).set_liack6_callback(DEVCB_##_devcb);
#define MCFG_FGA002_OUT_LIACK7_CB(_devcb) \
- devcb = &fga002_device::set_liack7_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<fga002_device &>(*device).set_liack7_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -53,11 +53,11 @@ class fga002_device : public device_t
int acknowledge();
int get_irq_level();
- template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_liack4_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack4_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_liack5_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack5_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_liack6_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack6_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_liack7_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack7_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_liack4_callback(Object &&cb) { return m_liack4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_liack5_callback(Object &&cb) { return m_liack5_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_liack6_callback(Object &&cb) { return m_liack6_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_liack7_callback(Object &&cb) { return m_liack7_cb.set_callback(std::forward<Object>(cb)); }
protected:
// type for array of mapping of FGA registers that assembles an IRQ source
diff --git a/src/devices/machine/gayle.cpp b/src/devices/machine/gayle.cpp
index c0369cddc4f..1c0326b0ae6 100644
--- a/src/devices/machine/gayle.cpp
+++ b/src/devices/machine/gayle.cpp
@@ -47,16 +47,6 @@ gayle_device::gayle_device(const machine_config &mconfig, const char *tag, devic
}
//-------------------------------------------------
-// set_id - set gayle id
-//-------------------------------------------------
-
-void gayle_device::set_id(device_t &device, uint8_t id)
-{
- gayle_device &gayle = downcast<gayle_device &>(device);
- gayle.m_gayle_id = id;
-}
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/machine/gayle.h b/src/devices/machine/gayle.h
index 07158185e96..81b0f6bafaa 100644
--- a/src/devices/machine/gayle.h
+++ b/src/devices/machine/gayle.h
@@ -21,22 +21,22 @@
#define MCFG_GAYLE_ADD(_tag, _clock, _id) \
MCFG_DEVICE_ADD(_tag, GAYLE, _clock) \
- gayle_device::set_id(*device, _id);
+ downcast<gayle_device &>(*device).set_id(_id);
#define MCFG_GAYLE_INT2_HANDLER(_devcb) \
- devcb = &gayle_device::set_int2_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gayle_device &>(*device).set_int2_handler(DEVCB_##_devcb);
#define MCFG_GAYLE_CS0_READ_HANDLER(_devcb) \
- devcb = &gayle_device::set_cs0_read_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gayle_device &>(*device).set_cs0_read_handler(DEVCB_##_devcb);
#define MCFG_GAYLE_CS0_WRITE_HANDLER(_devcb) \
- devcb = &gayle_device::set_cs0_write_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gayle_device &>(*device).set_cs0_write_handler(DEVCB_##_devcb);
#define MCFG_GAYLE_CS1_READ_HANDLER(_devcb) \
- devcb = &gayle_device::set_cs1_read_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gayle_device &>(*device).set_cs1_read_handler(DEVCB_##_devcb);
#define MCFG_GAYLE_CS1_WRITE_HANDLER(_devcb) \
- devcb = &gayle_device::set_cs1_write_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<gayle_device &>(*device).set_cs1_write_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -52,20 +52,11 @@ public:
gayle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template <class Object> static devcb_base &set_int2_handler(device_t &device, Object &&cb)
- { return downcast<gayle_device &>(device).m_int2_w.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_cs0_read_handler(device_t &device, Object &&cb)
- { return downcast<gayle_device &>(device).m_cs0_read.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_cs0_write_handler(device_t &device, Object &&cb)
- { return downcast<gayle_device &>(device).m_cs0_write.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_cs1_read_handler(device_t &device, Object &&cb)
- { return downcast<gayle_device &>(device).m_cs1_read.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_cs1_write_handler(device_t &device, Object &&cb)
- { return downcast<gayle_device &>(device).m_cs1_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int2_handler(Object &&cb) { return m_int2_w.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cs0_read_handler(Object &&cb) { return m_cs0_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cs0_write_handler(Object &&cb) { return m_cs0_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cs1_read_handler(Object &&cb) { return m_cs1_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_cs1_write_handler(Object &&cb) { return m_cs1_write.set_callback(std::forward<Object>(cb)); }
// interface
DECLARE_WRITE_LINE_MEMBER( ide_interrupt_w );
@@ -76,7 +67,7 @@ public:
DECLARE_WRITE16_MEMBER( gayle_id_w );
// inline configuration
- static void set_id(device_t &device, uint8_t id);
+ void set_id(uint8_t id) { m_gayle_id = id; }
protected:
virtual void device_start() override;
diff --git a/src/devices/machine/gen_latch.h b/src/devices/machine/gen_latch.h
index 4e7aecf791c..ca3309133ef 100644
--- a/src/devices/machine/gen_latch.h
+++ b/src/devices/machine/gen_latch.h
@@ -32,10 +32,10 @@ DECLARE_DEVICE_TYPE(GENERIC_LATCH_16, generic_latch_16_device)
MCFG_DEVICE_ADD(_tag, GENERIC_LATCH_16, 0)
#define MCFG_GENERIC_LATCH_DATA_PENDING_CB(_devcb) \
- devcb = &generic_latch_base_device::set_data_pending_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<generic_latch_base_device &>(*device).set_data_pending_callback(DEVCB_##_devcb);
#define MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(_ack) \
- generic_latch_base_device::set_separate_acknowledge(*device, _ack);
+ downcast<generic_latch_base_device &>(*device).set_separate_acknowledge(_ack);
//**************************************************************************
@@ -51,10 +51,9 @@ protected:
generic_latch_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
public:
- // static configuration
- template <class Object> static devcb_base &set_data_pending_callback(device_t &device, Object &&cb)
- { return downcast<generic_latch_base_device &>(device).m_data_pending_cb.set_callback(std::forward<Object>(cb)); }
- static void set_separate_acknowledge(device_t &device, bool ack) { downcast<generic_latch_base_device &>(device).m_separate_acknowledge = ack; }
+ // configuration
+ template <class Object> devcb_base &set_data_pending_callback(Object &&cb) { return m_data_pending_cb.set_callback(std::forward<Object>(cb)); }
+ void set_separate_acknowledge(bool ack) { m_separate_acknowledge = ack; }
DECLARE_READ_LINE_MEMBER(pending_r);
diff --git a/src/devices/machine/genpc.cpp b/src/devices/machine/genpc.cpp
index 66d46d81ebd..65a25896392 100644
--- a/src/devices/machine/genpc.cpp
+++ b/src/devices/machine/genpc.cpp
@@ -496,12 +496,6 @@ ioport_constructor ibm5160_mb_device::device_input_ports() const
}
-void ibm5160_mb_device::static_set_cputag(device_t &device, const char *tag)
-{
- ibm5160_mb_device &board = downcast<ibm5160_mb_device &>(device);
- board.m_maincpu.set_tag(tag);
-}
-
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
diff --git a/src/devices/machine/genpc.h b/src/devices/machine/genpc.h
index f6242f0a2ca..1c94244e6ff 100644
--- a/src/devices/machine/genpc.h
+++ b/src/devices/machine/genpc.h
@@ -25,8 +25,8 @@
#define MCFG_IBM5160_MOTHERBOARD_ADD(_tag, _cputag) \
MCFG_DEVICE_ADD(_tag, IBM5160_MOTHERBOARD, 0) \
- ibm5160_mb_device::static_set_cputag(*device, "^" _cputag); \
- isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag);
+ downcast<ibm5160_mb_device &>(*device).set_cputag("^" _cputag); \
+ (*device->subdevice<isa8_device>("isa")).set_cputag("^^" _cputag);
// ======================> ibm5160_mb_device
class ibm5160_mb_device : public device_t
@@ -36,7 +36,7 @@ public:
ibm5160_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- static void static_set_cputag(device_t &device, const char *tag);
+ void set_cputag(const char *tag) { m_maincpu.set_tag(tag); }
void map(address_map &map);
@@ -130,8 +130,8 @@ DECLARE_DEVICE_TYPE(IBM5160_MOTHERBOARD, ibm5160_mb_device)
#define MCFG_IBM5150_MOTHERBOARD_ADD(_tag, _cputag) \
MCFG_DEVICE_ADD(_tag, IBM5150_MOTHERBOARD, 0) \
- ibm5150_mb_device::static_set_cputag(*device, "^" _cputag); \
- isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag);
+ downcast<ibm5150_mb_device &>(*device).set_cputag("^" _cputag); \
+ (*device->subdevice<isa8_device>("isa")).set_cputag("^^" _cputag);
// ======================> ibm5150_mb_device
class ibm5150_mb_device : public ibm5160_mb_device
@@ -163,8 +163,8 @@ DECLARE_DEVICE_TYPE(IBM5150_MOTHERBOARD, ibm5150_mb_device)
#define MCFG_EC1841_MOTHERBOARD_ADD(_tag, _cputag) \
MCFG_DEVICE_ADD(_tag, EC1841_MOTHERBOARD, 0) \
- ec1841_mb_device::static_set_cputag(*device, "^" _cputag); \
- isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag);
+ downcast<ec1841_mb_device &>(*device).set_cputag("^" _cputag); \
+ (*device->subdevice<isa8_device>("isa")).set_cputag("^^" _cputag);
class ec1841_mb_device : public ibm5160_mb_device
{
@@ -189,8 +189,8 @@ DECLARE_DEVICE_TYPE(EC1841_MOTHERBOARD, ec1841_mb_device)
#define MCFG_PCNOPPI_MOTHERBOARD_ADD(_tag, _cputag) \
MCFG_DEVICE_ADD(_tag, PCNOPPI_MOTHERBOARD, 0) \
- pc_noppi_mb_device::static_set_cputag(*device, "^" _cputag); \
- isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag);
+ downcast<pc_noppi_mb_device &>(*device).set_cputag("^" _cputag); \
+ (*device->subdevice<isa8_device>("isa")).set_cputag("^^" _cputag);
class pc_noppi_mb_device : public ibm5160_mb_device
{
diff --git a/src/devices/machine/hd63450.h b/src/devices/machine/hd63450.h
index 2e525cabf70..794c2ec91da 100644
--- a/src/devices/machine/hd63450.h
+++ b/src/devices/machine/hd63450.h
@@ -11,76 +11,74 @@
#define MCFG_HD63450_DMA_END_CB(_devcb) \
- devcb = &hd63450_device::set_dma_end_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd63450_device &>(*device).set_dma_end_callback(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_ERROR_CB(_devcb) \
- devcb = &hd63450_device::set_dma_error_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd63450_device &>(*device).set_dma_error_callback(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_READ_0_CB(_devcb) \
- devcb = &hd63450_device::set_dma_read_0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd63450_device &>(*device).set_dma_read_0_callback(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_READ_1_CB(_devcb) \
- devcb = &hd63450_device::set_dma_read_1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd63450_device &>(*device).set_dma_read_1_callback(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_READ_2_CB(_devcb) \
- devcb = &hd63450_device::set_dma_read_2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd63450_device &>(*device).set_dma_read_2_callback(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_READ_3_CB(_devcb) \
- devcb = &hd63450_device::set_dma_read_3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd63450_device &>(*device).set_dma_read_3_callback(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_WRITE_0_CB(_devcb) \
- devcb = &hd63450_device::set_dma_write_0_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd63450_device &>(*device).set_dma_write_0_callback(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_WRITE_1_CB(_devcb) \
- devcb = &hd63450_device::set_dma_write_1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd63450_device &>(*device).set_dma_write_1_callback(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_WRITE_2_CB(_devcb) \
- devcb = &hd63450_device::set_dma_write_2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd63450_device &>(*device).set_dma_write_2_callback(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_WRITE_3_CB(_devcb) \
- devcb = &hd63450_device::set_dma_write_3_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd63450_device &>(*device).set_dma_write_3_callback(DEVCB_##_devcb);
#define MCFG_HD63450_CPU(_tag) \
- hd63450_device::set_cpu_tag(*device, _tag);
+ downcast<hd63450_device &>(*device).set_cpu_tag(_tag);
#define MCFG_HD63450_CLOCKS(_clk1, _clk2, _clk3, _clk4) \
- hd63450_device::set_our_clocks(*device, _clk1, _clk2, _clk3, _clk4);
+ downcast<hd63450_device &>(*device).set_our_clocks(_clk1, _clk2, _clk3, _clk4);
#define MCFG_HD63450_BURST_CLOCKS(_clk1, _clk2, _clk3, _clk4) \
- hd63450_device::set_burst_clocks(*device, _clk1, _clk2, _clk3, _clk4);
+ downcast<hd63450_device &>(*device).set_burst_clocks(_clk1, _clk2, _clk3, _clk4);
class hd63450_device : public device_t
{
public:
hd63450_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_dma_end_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_end.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_error_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_error.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_read_0_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_0.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_read_1_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_read_2_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_read_3_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_3.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_write_0_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_0.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_write_1_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_1.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_write_2_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_2.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_write_3_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_3.set_callback(std::forward<Object>(cb)); }
-
- static void set_cpu_tag(device_t &device, const char *tag) { downcast<hd63450_device &>(device).m_cpu_tag = tag; }
- static void set_our_clocks(device_t &device, const attotime &clk1, const attotime &clk2, const attotime &clk3, const attotime &clk4)
+ template <class Object> devcb_base &set_dma_end_callback(Object &&cb) { return m_dma_end.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_error_callback(Object &&cb) { return m_dma_error.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_read_0_callback(Object &&cb) { return m_dma_read_0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_read_1_callback(Object &&cb) { return m_dma_read_1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_read_2_callback(Object &&cb) { return m_dma_read_2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_read_3_callback(Object &&cb) { return m_dma_read_3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_write_0_callback(Object &&cb) { return m_dma_write_0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_write_1_callback(Object &&cb) { return m_dma_write_1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_write_2_callback(Object &&cb) { return m_dma_write_2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_write_3_callback(Object &&cb) { return m_dma_write_3.set_callback(std::forward<Object>(cb)); }
+
+ void set_cpu_tag(const char *tag) { m_cpu_tag = tag; }
+ void set_our_clocks(const attotime &clk1, const attotime &clk2, const attotime &clk3, const attotime &clk4)
{
- hd63450_device &dev = downcast<hd63450_device &>(device);
- dev.m_our_clock[0] = clk1;
- dev.m_our_clock[1] = clk2;
- dev.m_our_clock[2] = clk3;
- dev.m_our_clock[3] = clk4;
+ m_our_clock[0] = clk1;
+ m_our_clock[1] = clk2;
+ m_our_clock[2] = clk3;
+ m_our_clock[3] = clk4;
}
- static void set_burst_clocks(device_t &device, const attotime &clk1, const attotime &clk2, const attotime &clk3, const attotime &clk4)
+ void set_burst_clocks(const attotime &clk1, const attotime &clk2, const attotime &clk3, const attotime &clk4)
{
- hd63450_device &dev = downcast<hd63450_device &>(device);
- dev.m_burst_clock[0] = clk1;
- dev.m_burst_clock[1] = clk2;
- dev.m_burst_clock[2] = clk3;
- dev.m_burst_clock[3] = clk4;
+ m_burst_clock[0] = clk1;
+ m_burst_clock[1] = clk2;
+ m_burst_clock[2] = clk3;
+ m_burst_clock[3] = clk4;
}
DECLARE_READ16_MEMBER( read );
diff --git a/src/devices/machine/hd64610.h b/src/devices/machine/hd64610.h
index edaa7a70c16..948f6b4e549 100644
--- a/src/devices/machine/hd64610.h
+++ b/src/devices/machine/hd64610.h
@@ -35,10 +35,10 @@
//**************************************************************************
#define MCFG_HD64610_OUT_IRQ_CB(_devcb) \
- devcb = &hd64610_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd64610_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_HD64610_OUT_1HZ_CB(_devcb) \
- devcb = &hd64610_device::set_out_1hz_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<hd64610_device &>(*device).set_out_1hz_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -55,8 +55,8 @@ public:
// construction/destruction
hd64610_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<hd64610_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_1hz_callback(device_t &device, Object &&cb) { return downcast<hd64610_device &>(device).m_out_1hz_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_1hz_callback(Object &&cb) { return m_out_1hz_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/hdc92x4.h b/src/devices/machine/hdc92x4.h
index 0555099e132..9eb2e6f827b 100644
--- a/src/devices/machine/hdc92x4.h
+++ b/src/devices/machine/hdc92x4.h
@@ -18,33 +18,33 @@ DECLARE_DEVICE_TYPE(HDC9234, hdc9234_device)
/* Interrupt line. To be connected with the controller PCB. */
#define MCFG_HDC92X4_INTRQ_CALLBACK(_write) \
- devcb = &hdc92x4_device::set_intrq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<hdc92x4_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
/* DMA request line. To be connected with the controller PCB. */
#define MCFG_HDC92X4_DMARQ_CALLBACK(_write) \
- devcb = &hdc92x4_device::set_dmarq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<hdc92x4_device &>(*device).set_dmarq_wr_callback(DEVCB_##_write);
/* DMA in progress line. To be connected with the controller PCB. */
#define MCFG_HDC92X4_DIP_CALLBACK(_write) \
- devcb = &hdc92x4_device::set_dip_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<hdc92x4_device &>(*device).set_dip_wr_callback(DEVCB_##_write);
/* Auxiliary Bus. These 8 lines need to be connected to external latches
and to a counter circuitry which works together with the external RAM.
We use the S0/S1 lines as address lines. */
#define MCFG_HDC92X4_AUXBUS_OUT_CALLBACK(_write) \
- devcb = &hdc92x4_device::set_auxbus_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<hdc92x4_device &>(*device).set_auxbus_wr_callback(DEVCB_##_write);
/* Callback to read the contents of the external RAM via the data bus.
Note that the address must be set and automatically increased
by external circuitry. */
#define MCFG_HDC92X4_DMA_IN_CALLBACK(_read) \
- devcb = &hdc92x4_device::set_dma_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<hdc92x4_device &>(*device).set_dma_rd_callback(DEVCB_##_read);
/* Callback to write the contents of the external RAM via the data bus.
Note that the address must be set and automatically increased
by external circuitry. */
#define MCFG_HDC92X4_DMA_OUT_CALLBACK(_write) \
- devcb = &hdc92x4_device::set_dma_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<hdc92x4_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
//===================================================================
@@ -85,12 +85,12 @@ public:
DECLARE_WRITE_LINE_MEMBER( dmaack );
// Callbacks
- template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_intrq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dmarq_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_dmarq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dip_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_dip.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_auxbus_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_auxbus.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_rd_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_in_dma.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_dma.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_intrq_wr_callback(Object &&cb) { return m_out_intrq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dmarq_wr_callback(Object &&cb) { return m_out_dmarq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dip_wr_callback(Object &&cb) { return m_out_dip.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_auxbus_wr_callback(Object &&cb) { return m_out_auxbus.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_rd_callback(Object &&cb) { return m_in_dma.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dma_wr_callback(Object &&cb) { return m_out_dma.set_callback(std::forward<Object>(cb)); }
// auxbus_in is intended to read events from the drives
// In the real chip the status is polled; to avoid unnecessary load
diff --git a/src/devices/machine/hp_taco.h b/src/devices/machine/hp_taco.h
index d5fe4fb9b23..3b926a0946a 100644
--- a/src/devices/machine/hp_taco.h
+++ b/src/devices/machine/hp_taco.h
@@ -16,13 +16,13 @@
#include "formats/hti_tape.h"
#define MCFG_TACO_IRQ_HANDLER(_devcb) \
- devcb = &hp_taco_device::set_irq_handler(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp_taco_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_TACO_FLG_HANDLER(_devcb) \
- devcb = &hp_taco_device::set_flg_handler(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp_taco_device &>(*device).set_flg_handler(DEVCB_##_devcb);
#define MCFG_TACO_STS_HANDLER(_devcb) \
- devcb = &hp_taco_device::set_sts_handler(*device , DEVCB_##_devcb);
+ devcb = &downcast<hp_taco_device &>(*device).set_sts_handler(DEVCB_##_devcb);
class hp_taco_device : public device_t ,
public device_image_interface
@@ -31,10 +31,10 @@ public:
// construction/destruction
hp_taco_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<hp_taco_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_flg_handler(device_t &device, Object &&cb) { return downcast<hp_taco_device &>(device).m_flg_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sts_handler(device_t &device, Object &&cb) { return downcast<hp_taco_device &>(device).m_sts_handler.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_flg_handler(Object &&cb) { return m_flg_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sts_handler(Object &&cb) { return m_sts_handler.set_callback(std::forward<Object>(cb)); }
// Register read/write
DECLARE_WRITE16_MEMBER(reg_w);
diff --git a/src/devices/machine/i2cmem.h b/src/devices/machine/i2cmem.h
index b0061f2759b..68bef6dde2f 100644
--- a/src/devices/machine/i2cmem.h
+++ b/src/devices/machine/i2cmem.h
@@ -30,19 +30,19 @@
MCFG_DEVICE_ADD( _tag, I2CMEM, 0 )
#define MCFG_I2CMEM_ADDRESS( address ) \
- i2cmem_device::set_address(*device, address);
+ downcast<i2cmem_device &>(*device).set_address(address);
#define MCFG_I2CMEM_PAGE_SIZE( page_size ) \
- i2cmem_device::set_page_size(*device, page_size);
+ downcast<i2cmem_device &>(*device).set_page_size(page_size);
#define MCFG_I2CMEM_DATA_SIZE(data_size) \
- i2cmem_device::set_data_size(*device, data_size);
+ downcast<i2cmem_device &>(*device).set_data_size(data_size);
#define MCFG_I2CMEM_E0(e0) \
- i2cmem_device::set_e0(*device, e0);
+ downcast<i2cmem_device &>(*device).set_e0(e0);
#define MCFG_I2CMEM_E1(e1) \
- i2cmem_device::set_e1(*device, e1);
+ downcast<i2cmem_device &>(*device).set_e1(e1);
#define MCFG_I2CMEM_E2(e2) \
- i2cmem_device::set_e2(*device, e2);
+ downcast<i2cmem_device &>(*device).set_e2(e2);
#define MCFG_I2CMEM_WC(wc) \
- i2cmem_device::set_wc(*device, wc);
+ downcast<i2cmem_device &>(*device).set_wc(wc);
#define MCFG_X2404P_ADD( _tag ) \
MCFG_I2CMEM_ADD( _tag ) \
@@ -91,13 +91,13 @@ public:
// construction/destruction
i2cmem_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock );
- static void set_address(device_t &device, int address) { downcast<i2cmem_device &>(device).m_slave_address = address; }
- static void set_page_size(device_t &device, int page_size) { downcast<i2cmem_device &>(device).m_page_size = page_size; }
- static void set_data_size(device_t &device, int data_size) { downcast<i2cmem_device &>(device).m_data_size = data_size; }
- static void set_e0(device_t &device, int e0) { downcast<i2cmem_device &>(device).m_e0 = e0; }
- static void set_e1(device_t &device, int e1) { downcast<i2cmem_device &>(device).m_e1 = e1; }
- static void set_e2(device_t &device, int e2) { downcast<i2cmem_device &>(device).m_e2 = e2; }
- static void set_wc(device_t &device, int wc) { downcast<i2cmem_device &>(device).m_wc = wc; }
+ void set_address(int address) { m_slave_address = address; }
+ void set_page_size(int page_size) { m_page_size = page_size; }
+ void set_data_size(int data_size) { m_data_size = data_size; }
+ void set_e0(int e0) { m_e0 = e0; }
+ void set_e1(int e1) { m_e1 = e1; }
+ void set_e2(int e2) { m_e2 = e2; }
+ void set_wc(int wc) { m_wc = wc; }
// I/O operations
DECLARE_WRITE_LINE_MEMBER( write_e0 );
diff --git a/src/devices/machine/i7220.h b/src/devices/machine/i7220.h
index d681695a455..78aef97bdab 100644
--- a/src/devices/machine/i7220.h
+++ b/src/devices/machine/i7220.h
@@ -43,13 +43,13 @@
///*************************************************************************
#define MCFG_I7220_IRQ_CALLBACK(_write) \
- devcb = &i7220_device::set_intrq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i7220_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
#define MCFG_I7220_DRQ_CALLBACK(_write) \
- devcb = &i7220_device::set_drq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i7220_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
#define MCFG_I7220_DATA_SIZE(data_size) \
- i7220_device::set_data_size(*device, data_size);
+ downcast<i7220_device &>(*device).set_data_size(data_size);
@@ -66,10 +66,10 @@ public:
// construction/destruction
i7220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<i7220_device &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<i7220_device &>(device).drq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_drq_wr_callback(Object &&cb) { return drq_cb.set_callback(std::forward<Object>(cb)); }
- static void set_data_size(device_t &device, int data_size) { downcast<i7220_device &>(device).m_data_size = data_size; }
+ void set_data_size(int data_size) { m_data_size = data_size; }
// image-level overrides
virtual image_init_result call_load() override;
diff --git a/src/devices/machine/i80130.h b/src/devices/machine/i80130.h
index b876041b89d..385d361c423 100644
--- a/src/devices/machine/i80130.h
+++ b/src/devices/machine/i80130.h
@@ -21,22 +21,22 @@
///*************************************************************************
#define MCFG_I80130_IRQ_CALLBACK(_write) \
- devcb = &i80130_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i80130_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_I80130_ACK_CALLBACK(_write) \
- devcb = &i80130_device::set_ack_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i80130_device &>(*device).set_ack_wr_callback(DEVCB_##_write);
#define MCFG_I80130_LIR_CALLBACK(_write) \
- devcb = &i80130_device::set_lir_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i80130_device &>(*device).set_lir_wr_callback(DEVCB_##_write);
#define MCFG_I80130_SYSTICK_CALLBACK(_write) \
- devcb = &i80130_device::set_systick_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i80130_device &>(*device).set_systick_wr_callback(DEVCB_##_write);
#define MCFG_I80130_DELAY_CALLBACK(_write) \
- devcb = &i80130_device::set_delay_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i80130_device &>(*device).set_delay_wr_callback(DEVCB_##_write);
#define MCFG_I80130_BAUD_CALLBACK(_write) \
- devcb = &i80130_device::set_baud_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i80130_device &>(*device).set_baud_wr_callback(DEVCB_##_write);
@@ -52,12 +52,12 @@ public:
// construction/destruction
i80130_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_ack_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_ack.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_lir_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_lir.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_systick_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_systick.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_delay_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_delay.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_baud_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_baud.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ack_wr_callback(Object &&cb) { return m_write_ack.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_lir_wr_callback(Object &&cb) { return m_write_lir.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_systick_wr_callback(Object &&cb) { return m_write_systick.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_delay_wr_callback(Object &&cb) { return m_write_delay.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_baud_wr_callback(Object &&cb) { return m_write_baud.set_callback(std::forward<Object>(cb)); }
virtual void rom_map(address_map &map);
virtual void io_map(address_map &map);
diff --git a/src/devices/machine/i8087.h b/src/devices/machine/i8087.h
index 25d52aeabba..62c847e2cbf 100644
--- a/src/devices/machine/i8087.h
+++ b/src/devices/machine/i8087.h
@@ -9,13 +9,13 @@
#endif
#define MCFG_I8087_DATA_WIDTH(_data_width) \
- i8087_device::set_data_width(*device, _data_width);
+ downcast<i8087_device &>(*device).set_data_width(_data_width);
#define MCFG_I8087_INT_HANDLER(_devcb) \
- devcb = &i8087_device::set_int(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8087_device &>(*device).set_int(DEVCB_##_devcb);
#define MCFG_I8087_BUSY_HANDLER(_devcb) \
- devcb = &i8087_device::set_busy(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8087_device &>(*device).set_busy(DEVCB_##_devcb);
DECLARE_DEVICE_TYPE(I8087, i8087_device)
@@ -24,9 +24,9 @@ class i8087_device : public device_t,
{
public:
i8087_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- static void set_data_width(device_t &device, u8 data_width) { downcast<i8087_device &>(device).m_data_width = data_width; }
- template <class Object> static devcb_base &set_int(device_t &device, Object &&cb) { return downcast<i8087_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_busy(device_t &device, Object &&cb) { return downcast<i8087_device &>(device).m_busy_handler.set_callback(std::forward<Object>(cb)); }
+ void set_data_width(u8 data_width) { m_data_width = data_width; }
+ template <class Object> devcb_base &set_int(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_busy(Object &&cb) { return m_busy_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE32_MEMBER(insn_w); // the real 8087 sniffs the bus watching for esc, can't do that here so provide a poke spot
DECLARE_WRITE32_MEMBER(addr_w);
diff --git a/src/devices/machine/i8155.h b/src/devices/machine/i8155.h
index a6c1a8e5c4b..0c1f387ea2b 100644
--- a/src/devices/machine/i8155.h
+++ b/src/devices/machine/i8155.h
@@ -41,25 +41,25 @@
//**************************************************************************
#define MCFG_I8155_IN_PORTA_CB(_devcb) \
- devcb = &i8155_device::set_in_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8155_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_I8155_IN_PORTB_CB(_devcb) \
- devcb = &i8155_device::set_in_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8155_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_I8155_IN_PORTC_CB(_devcb) \
- devcb = &i8155_device::set_in_pc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8155_device &>(*device).set_in_pc_callback(DEVCB_##_devcb);
#define MCFG_I8155_OUT_PORTA_CB(_devcb) \
- devcb = &i8155_device::set_out_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8155_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_I8155_OUT_PORTB_CB(_devcb) \
- devcb = &i8155_device::set_out_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8155_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
#define MCFG_I8155_OUT_PORTC_CB(_devcb) \
- devcb = &i8155_device::set_out_pc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8155_device &>(*device).set_out_pc_callback(DEVCB_##_devcb);
#define MCFG_I8155_OUT_TIMEROUT_CB(_devcb) \
- devcb = &i8155_device::set_out_to_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8155_device &>(*device).set_out_to_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -75,13 +75,13 @@ public:
// construction/destruction
i8155_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_pc_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_in_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pc_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_to_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_to_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_pc_callback(Object &&cb) { return m_in_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pc_callback(Object &&cb) { return m_out_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_to_callback(Object &&cb) { return m_out_to_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( io_r );
DECLARE_WRITE8_MEMBER( io_w );
diff --git a/src/devices/machine/i8212.h b/src/devices/machine/i8212.h
index 4f871420128..b98ab2c0c55 100644
--- a/src/devices/machine/i8212.h
+++ b/src/devices/machine/i8212.h
@@ -34,16 +34,16 @@
///*************************************************************************
#define MCFG_I8212_INT_CALLBACK(_write) \
- devcb = &i8212_device::set_int_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i8212_device &>(*device).set_int_wr_callback(DEVCB_##_write);
#define MCFG_I8212_DI_CALLBACK(_read) \
- devcb = &i8212_device::set_di_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<i8212_device &>(*device).set_di_rd_callback(DEVCB_##_read);
#define MCFG_I8212_DO_CALLBACK(_write) \
- devcb = &i8212_device::set_do_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i8212_device &>(*device).set_do_wr_callback(DEVCB_##_write);
#define MCFG_I8212_MD_CALLBACK(_read) \
- devcb = &i8212_device::set_md_rd_callback(*device, DEVCB_##_read);
+ devcb = &downcast<i8212_device &>(*device).set_md_rd_callback(DEVCB_##_read);
@@ -65,10 +65,10 @@ public:
// construction/destruction
i8212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<i8212_device &>(device).m_write_int.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_di_rd_callback(device_t &device, Object &&cb) { return downcast<i8212_device &>(device).m_read_di.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_do_wr_callback(device_t &device, Object &&cb) { return downcast<i8212_device &>(device).m_write_do.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_md_rd_callback(device_t &device, Object &&cb) { return downcast<i8212_device &>(device).m_read_md.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_di_rd_callback(Object &&cb) { return m_read_di.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_do_wr_callback(Object &&cb) { return m_write_do.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_md_rd_callback(Object &&cb) { return m_read_md.set_callback(std::forward<Object>(cb)); }
// data read handlers
DECLARE_READ8_MEMBER(read);
diff --git a/src/devices/machine/i8214.h b/src/devices/machine/i8214.h
index be29f0e787e..aafcde5f908 100644
--- a/src/devices/machine/i8214.h
+++ b/src/devices/machine/i8214.h
@@ -33,10 +33,10 @@
///*************************************************************************
#define MCFG_I8214_INT_CALLBACK(_write) \
- devcb = &i8214_device::set_int_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i8214_device &>(*device).set_int_wr_callback(DEVCB_##_write);
#define MCFG_I8214_ENLG_CALLBACK(_write) \
- devcb = &i8214_device::set_enlg_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i8214_device &>(*device).set_enlg_wr_callback(DEVCB_##_write);
@@ -52,8 +52,8 @@ public:
// construction/destruction
i8214_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<i8214_device &>(device).m_write_int.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_enlg_wr_callback(device_t &device, Object &&cb) { return downcast<i8214_device &>(device).m_write_enlg.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_enlg_wr_callback(Object &&cb) { return m_write_enlg.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( sgs_w );
DECLARE_WRITE_LINE_MEMBER( etlg_w );
diff --git a/src/devices/machine/i82371sb.h b/src/devices/machine/i82371sb.h
index 23af8b89352..ba0ba296e96 100644
--- a/src/devices/machine/i82371sb.h
+++ b/src/devices/machine/i82371sb.h
@@ -31,13 +31,13 @@
MCFG_PCI_DEVICE_ADD(_tag, I82371SB_ISA, 0x80867000, 0x03, 0x060100, 0x00000000)
#define MCFG_I82371SB_BOOT_STATE_HOOK(_devcb) \
- devcb = &i82371sb_isa_device::set_boot_state_hook(*device, DEVCB_##_devcb);
+ devcb = &downcast<i82371sb_isa_device &>(*device).set_boot_state_hook(DEVCB_##_devcb);
class i82371sb_isa_device : public pci_device {
public:
i82371sb_isa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_boot_state_hook(device_t &device, Object &&cb) { return downcast<i82371sb_isa_device &>(device).m_boot_state_hook.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_boot_state_hook(Object &&cb) { return m_boot_state_hook.set_callback(std::forward<Object>(cb)); }
protected:
virtual void device_start() override;
diff --git a/src/devices/machine/i8243.h b/src/devices/machine/i8243.h
index e2dd1968050..fef950ffacb 100644
--- a/src/devices/machine/i8243.h
+++ b/src/devices/machine/i8243.h
@@ -24,9 +24,9 @@
MCFG_I8243_READHANDLER(_read) \
MCFG_I8243_WRITEHANDLER(_write)
#define MCFG_I8243_READHANDLER(_devcb) \
- devcb = &i8243_device::set_read_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8243_device &>(*device).set_read_handler(DEVCB_##_devcb);
#define MCFG_I8243_WRITEHANDLER(_devcb) \
- devcb = &i8243_device::set_write_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8243_device &>(*device).set_write_handler(DEVCB_##_devcb);
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
@@ -40,9 +40,9 @@ public:
// construction/destruction
i8243_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_read_handler(device_t &device, Object &&cb) { return downcast<i8243_device &>(device).m_readhandler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_write_handler(device_t &device, Object &&cb) { return downcast<i8243_device &>(device).m_writehandler.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_read_handler(Object &&cb) { return m_readhandler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_write_handler(Object &&cb) { return m_writehandler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(p2_r);
DECLARE_WRITE8_MEMBER(p2_w);
diff --git a/src/devices/machine/i8251.h b/src/devices/machine/i8251.h
index d3df46df789..ed10716dc02 100644
--- a/src/devices/machine/i8251.h
+++ b/src/devices/machine/i8251.h
@@ -19,25 +19,25 @@
//**************************************************************************
#define MCFG_I8251_TXD_HANDLER(_devcb) \
- devcb = &i8251_device::set_txd_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8251_device &>(*device).set_txd_handler(DEVCB_##_devcb);
#define MCFG_I8251_DTR_HANDLER(_devcb) \
- devcb = &i8251_device::set_dtr_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8251_device &>(*device).set_dtr_handler(DEVCB_##_devcb);
#define MCFG_I8251_RTS_HANDLER(_devcb) \
- devcb = &i8251_device::set_rts_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8251_device &>(*device).set_rts_handler(DEVCB_##_devcb);
#define MCFG_I8251_RXRDY_HANDLER(_devcb) \
- devcb = &i8251_device::set_rxrdy_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8251_device &>(*device).set_rxrdy_handler(DEVCB_##_devcb);
#define MCFG_I8251_TXRDY_HANDLER(_devcb) \
- devcb = &i8251_device::set_txrdy_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8251_device &>(*device).set_txrdy_handler(DEVCB_##_devcb);
#define MCFG_I8251_TXEMPTY_HANDLER(_devcb) \
- devcb = &i8251_device::set_txempty_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8251_device &>(*device).set_txempty_handler(DEVCB_##_devcb);
#define MCFG_I8251_SYNDET_HANDLER(_devcb) \
- devcb = &i8251_device::set_syndet_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8251_device &>(*device).set_syndet_handler(DEVCB_##_devcb);
class i8251_device : public device_t,
public device_serial_interface
@@ -46,14 +46,14 @@ public:
// construction/destruction
i8251_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // static configuration helpers
- template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rxrdy_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_rxrdy_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_txrdy_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_txrdy_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_txempty_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_txempty_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_syndet_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_syndet_handler.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dtr_handler(Object &&cb) { return m_dtr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rxrdy_handler(Object &&cb) { return m_rxrdy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txrdy_handler(Object &&cb) { return m_txrdy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txempty_handler(Object &&cb) { return m_txempty_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_syndet_handler(Object &&cb) { return m_syndet_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(data_r);
DECLARE_WRITE8_MEMBER(data_w);
diff --git a/src/devices/machine/i8255.h b/src/devices/machine/i8255.h
index 93e1c07ee0e..80b0cfbe1fb 100644
--- a/src/devices/machine/i8255.h
+++ b/src/devices/machine/i8255.h
@@ -40,29 +40,29 @@
//**************************************************************************
#define MCFG_I8255_IN_PORTA_CB(_devcb) \
- devcb = &i8255_device::set_in_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8255_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_I8255_IN_PORTB_CB(_devcb) \
- devcb = &i8255_device::set_in_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8255_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_I8255_IN_PORTC_CB(_devcb) \
- devcb = &i8255_device::set_in_pc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8255_device &>(*device).set_in_pc_callback(DEVCB_##_devcb);
#define MCFG_I8255_OUT_PORTA_CB(_devcb) \
- devcb = &i8255_device::set_out_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8255_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_I8255_OUT_PORTB_CB(_devcb) \
- devcb = &i8255_device::set_out_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8255_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
#define MCFG_I8255_OUT_PORTC_CB(_devcb) \
- devcb = &i8255_device::set_out_pc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8255_device &>(*device).set_out_pc_callback(DEVCB_##_devcb);
// output state when pins are in tri-state, default 0xff
#define MCFG_I8255_TRISTATE_PORTA_CB(_devcb) \
- devcb = &i8255_device::set_tri_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8255_device &>(*device).set_tri_pa_callback(DEVCB_##_devcb);
#define MCFG_I8255_TRISTATE_PORTB_CB(_devcb) \
- devcb = &i8255_device::set_tri_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8255_device &>(*device).set_tri_pb_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -76,14 +76,14 @@ public:
// construction/destruction
i8255_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_pc_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_in_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pc_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_out_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tri_pa_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_tri_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tri_pb_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_tri_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_pc_callback(Object &&cb) { return m_in_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pc_callback(Object &&cb) { return m_out_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tri_pa_callback(Object &&cb) { return m_tri_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tri_pb_callback(Object &&cb) { return m_tri_pb_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/i82586.h b/src/devices/machine/i82586.h
index 60ee47bd936..dfd073190ae 100644
--- a/src/devices/machine/i82586.h
+++ b/src/devices/machine/i82586.h
@@ -7,7 +7,7 @@
#pragma once
#define MCFG_I82586_IRQ_CB(_out_irq) \
- devcb = &i82586_base_device::static_set_out_irq_callback(*device, DEVCB_##_out_irq);
+ devcb = &downcast<i82586_base_device &>(*device).set_out_irq_callback(DEVCB_##_out_irq);
class i82586_base_device :
public device_t,
@@ -157,7 +157,7 @@ public:
static const u32 FCS_RESIDUE = 0xdebb20e3; // the residue after computing the fcs over a complete frame (including fcs)
- template <class Object> static devcb_base &static_set_out_irq_callback(device_t &device, Object &&cb) { return downcast<i82586_base_device &>(device).m_out_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(ca);
virtual void recv_cb(u8 *buf, int length) override;
diff --git a/src/devices/machine/i8271.h b/src/devices/machine/i8271.h
index 6881bbe6e4c..3db17379760 100644
--- a/src/devices/machine/i8271.h
+++ b/src/devices/machine/i8271.h
@@ -9,16 +9,16 @@
#include "fdc_pll.h"
#define MCFG_I8271_IRQ_CALLBACK(_write) \
- devcb = &i8271_device::set_intrq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i8271_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
#define MCFG_I8271_DRQ_CALLBACK(_write) \
- devcb = &i8271_device::set_drq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i8271_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
#define MCFG_I8271_HDL_CALLBACK(_write) \
- devcb = &i8271_device::set_hdl_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i8271_device &>(*device).set_hdl_wr_callback(DEVCB_##_write);
#define MCFG_I8271_OPT_CALLBACK(_write) \
- devcb = &i8271_device::set_opt_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<i8271_device &>(*device).set_opt_wr_callback(DEVCB_##_write);
/***************************************************************************
MACROS
@@ -29,10 +29,10 @@ class i8271_device : public device_t
public:
i8271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).drq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_hdl_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).hdl_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_opt_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).opt_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_drq_wr_callback(Object &&cb) { return drq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_hdl_wr_callback(Object &&cb) { return hdl_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_opt_wr_callback(Object &&cb) { return opt_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER (data_r);
DECLARE_WRITE8_MEMBER(data_w);
diff --git a/src/devices/machine/i8279.h b/src/devices/machine/i8279.h
index 458c9732b8d..c50dfd1d54d 100644
--- a/src/devices/machine/i8279.h
+++ b/src/devices/machine/i8279.h
@@ -43,25 +43,25 @@
***************************************************************************/
#define MCFG_I8279_OUT_IRQ_CB(_devcb) \
- devcb = &i8279_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8279_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_I8279_OUT_SL_CB(_devcb) \
- devcb = &i8279_device::set_out_sl_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8279_device &>(*device).set_out_sl_callback(DEVCB_##_devcb);
#define MCFG_I8279_OUT_DISP_CB(_devcb) \
- devcb = &i8279_device::set_out_disp_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8279_device &>(*device).set_out_disp_callback(DEVCB_##_devcb);
#define MCFG_I8279_OUT_BD_CB(_devcb) \
- devcb = &i8279_device::set_out_bd_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8279_device &>(*device).set_out_bd_callback(DEVCB_##_devcb);
#define MCFG_I8279_IN_RL_CB(_devcb) \
- devcb = &i8279_device::set_in_rl_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8279_device &>(*device).set_in_rl_callback(DEVCB_##_devcb);
#define MCFG_I8279_IN_SHIFT_CB(_devcb) \
- devcb = &i8279_device::set_in_shift_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8279_device &>(*device).set_in_shift_callback(DEVCB_##_devcb);
#define MCFG_I8279_IN_CTRL_CB(_devcb) \
- devcb = &i8279_device::set_in_ctrl_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8279_device &>(*device).set_in_ctrl_callback(DEVCB_##_devcb);
/***************************************************************************
TYPE DEFINITIONS
@@ -75,13 +75,13 @@ public:
// construction/destruction
i8279_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_sl_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_sl_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_disp_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_disp_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_bd_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_bd_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_rl_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_in_rl_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_shift_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_in_shift_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_ctrl_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_in_ctrl_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_sl_callback(Object &&cb) { return m_out_sl_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_disp_callback(Object &&cb) { return m_out_disp_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_bd_callback(Object &&cb) { return m_out_bd_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_rl_callback(Object &&cb) { return m_in_rl_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_shift_callback(Object &&cb) { return m_in_shift_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_ctrl_callback(Object &&cb) { return m_in_ctrl_cb.set_callback(std::forward<Object>(cb)); }
// read & write handlers
DECLARE_READ8_MEMBER(read);
diff --git a/src/devices/machine/i8355.h b/src/devices/machine/i8355.h
index 58ea5b4b9d3..a9d5297bc26 100644
--- a/src/devices/machine/i8355.h
+++ b/src/devices/machine/i8355.h
@@ -49,16 +49,16 @@
///*************************************************************************
#define MCFG_I8355_IN_PA_CB(_devcb) \
- devcb = &i8355_device::set_in_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8355_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_I8355_OUT_PA_CB(_devcb) \
- devcb = &i8355_device::set_out_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8355_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_I8355_IN_PB_CB(_devcb) \
- devcb = &i8355_device::set_in_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8355_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_I8355_OUT_PB_CB(_devcb) \
- devcb = &i8355_device::set_out_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<i8355_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
///*************************************************************************
@@ -73,10 +73,10 @@ public:
// construction/destruction
i8355_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( io_r );
DECLARE_WRITE8_MEMBER( io_w );
diff --git a/src/devices/machine/idectrl.h b/src/devices/machine/idectrl.h
index b8f065f6443..6ba5882202c 100644
--- a/src/devices/machine/idectrl.h
+++ b/src/devices/machine/idectrl.h
@@ -20,12 +20,12 @@
***************************************************************************/
#define MCFG_IDE_CONTROLLER_ADD(_tag, _slot_intf, _master, _slave, _fixed) \
- MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER, 0) \
- MCFG_DEVICE_MODIFY(_tag ":0") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
- MCFG_DEVICE_MODIFY(_tag ":1") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
- MCFG_DEVICE_MODIFY(_tag)
+ MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER, 0) \
+ MCFG_DEVICE_MODIFY(_tag ":0") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag ":1") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag)
class ide_controller_device : public abstract_ata_interface_device
{
@@ -50,12 +50,12 @@ DECLARE_DEVICE_TYPE(IDE_CONTROLLER, ide_controller_device)
#define MCFG_IDE_CONTROLLER_32_ADD(_tag, _slot_intf, _master, _slave, _fixed) \
- MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER_32, 0) \
- MCFG_DEVICE_MODIFY(_tag ":0") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
- MCFG_DEVICE_MODIFY(_tag ":1") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
- MCFG_DEVICE_MODIFY(_tag)
+ MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER_32, 0) \
+ MCFG_DEVICE_MODIFY(_tag ":0") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag ":1") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag)
class ide_controller_32_device : public abstract_ata_interface_device
{
@@ -80,21 +80,21 @@ DECLARE_DEVICE_TYPE(IDE_CONTROLLER_32, ide_controller_32_device)
#define MCFG_BUS_MASTER_IDE_CONTROLLER_ADD(_tag, _slot_intf, _master, _slave, _fixed) \
- MCFG_DEVICE_ADD(_tag, BUS_MASTER_IDE_CONTROLLER, 0) \
- MCFG_DEVICE_MODIFY(_tag ":0") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
- MCFG_DEVICE_MODIFY(_tag ":1") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
- MCFG_DEVICE_MODIFY(_tag)
+ MCFG_DEVICE_ADD(_tag, BUS_MASTER_IDE_CONTROLLER, 0) \
+ MCFG_DEVICE_MODIFY(_tag ":0") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag ":1") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag)
#define MCFG_BUS_MASTER_IDE_CONTROLLER_SPACE(bmcpu, bmspace) \
- bus_master_ide_controller_device::set_bus_master_space(*device, bmcpu, bmspace);
+ downcast<bus_master_ide_controller_device &>(*device).set_bus_master_space(bmcpu, bmspace);
class bus_master_ide_controller_device : public ide_controller_32_device
{
public:
bus_master_ide_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_bus_master_space(device_t &device, const char *bmcpu, uint32_t bmspace) { bus_master_ide_controller_device &ide = downcast<bus_master_ide_controller_device &>(device); ide.m_bmcpu = bmcpu; ide.m_bmspace = bmspace; }
+ void set_bus_master_space(const char *bmcpu, uint32_t bmspace) { m_bmcpu = bmcpu; m_bmspace = bmspace; }
DECLARE_READ32_MEMBER( bmdma_r );
DECLARE_WRITE32_MEMBER( bmdma_w );
diff --git a/src/devices/machine/ie15_kbd.h b/src/devices/machine/ie15_kbd.h
index 4ba7fe30821..4d5c7370160 100644
--- a/src/devices/machine/ie15_kbd.h
+++ b/src/devices/machine/ie15_kbd.h
@@ -11,7 +11,7 @@
***************************************************************************/
#define MCFG_IE15_KEYBOARD_CB(_devcb) \
- devcb = &ie15_keyboard_device::set_keyboard_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ie15_keyboard_device &>(*device).set_keyboard_callback(DEVCB_##_devcb);
/***************************************************************************
FUNCTION PROTOTYPES
@@ -47,7 +47,7 @@ public:
ie15_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_keyboard_callback(device_t &device, Object &&cb) { return downcast<ie15_keyboard_device &>(device).m_keyboard_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_keyboard_callback(Object &&cb) { return m_keyboard_cb.set_callback(std::forward<Object>(cb)); }
protected:
ie15_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
diff --git a/src/devices/machine/im6402.h b/src/devices/machine/im6402.h
index 1dd485a6eec..b2ea2fc4441 100644
--- a/src/devices/machine/im6402.h
+++ b/src/devices/machine/im6402.h
@@ -50,20 +50,20 @@
#define MCFG_IM6402_ADD(_tag, _rrc, _trc) \
MCFG_DEVICE_ADD(_tag, IM6402, 0) \
- im6402_device::set_rrc(*device, _rrc); \
- im6402_device::set_trc(*device, _trc);
+ downcast<im6402_device &>(*device).set_rrc(_rrc); \
+ downcast<im6402_device &>(*device).set_trc(_trc);
#define MCFG_IM6402_TRO_CALLBACK(_write) \
- devcb = &im6402_device::set_tro_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<im6402_device &>(*device).set_tro_wr_callback(DEVCB_##_write);
#define MCFG_IM6402_DR_CALLBACK(_write) \
- devcb = &im6402_device::set_dr_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<im6402_device &>(*device).set_dr_wr_callback(DEVCB_##_write);
#define MCFG_IM6402_TBRE_CALLBACK(_write) \
- devcb = &im6402_device::set_tbre_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<im6402_device &>(*device).set_tbre_wr_callback(DEVCB_##_write);
#define MCFG_IM6402_TRE_CALLBACK(_write) \
- devcb = &im6402_device::set_tre_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<im6402_device &>(*device).set_tre_wr_callback(DEVCB_##_write);
@@ -79,12 +79,12 @@ public:
// construction/destruction
im6402_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_rrc(device_t &device, int rrc) { downcast<im6402_device &>(device).m_rrc = rrc; }
- static void set_trc(device_t &device, int trc) { downcast<im6402_device &>(device).m_trc = trc; }
- template <class Object> static devcb_base &set_tro_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_tro.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dr_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_dr.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tbre_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_tbre.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tre_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_tre.set_callback(std::forward<Object>(cb)); }
+ void set_rrc(int rrc) { m_rrc = rrc; }
+ void set_trc(int trc) { m_trc = trc; }
+ template <class Object> devcb_base &set_tro_wr_callback(Object &&cb) { return m_write_tro.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dr_wr_callback(Object &&cb) { return m_write_dr.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tbre_wr_callback(Object &&cb) { return m_write_tbre.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tre_wr_callback(Object &&cb) { return m_write_tre.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read ) { return m_rbr; }
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/input_merger.h b/src/devices/machine/input_merger.h
index 0ce9eb2ef62..3f2e1c884e7 100644
--- a/src/devices/machine/input_merger.h
+++ b/src/devices/machine/input_merger.h
@@ -33,7 +33,7 @@
MCFG_DEVICE_ADD(_tag, INPUT_MERGER_ALL_LOW, 0)
#define MCFG_INPUT_MERGER_OUTPUT_HANDLER(_devcb) \
- devcb = &input_merger_device::set_output_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<input_merger_device &>(*device).set_output_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -44,8 +44,7 @@ class input_merger_device : public device_t
{
public:
// callback
- template <class Object> static devcb_base &set_output_handler(device_t &device, Object &&cb)
- { return downcast<input_merger_device &>(device).m_output_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_output_handler(Object &&cb) { return m_output_handler.set_callback(std::forward<Object>(cb)); }
// input lines
template <unsigned Bit> DECLARE_WRITE_LINE_MEMBER(in_w) { static_assert(Bit < 32, "invalid bit"); machine().scheduler().synchronize(timer_expired_delegate(FUNC(input_merger_device::update_state), this), (Bit << 1) | (state ? 1U : 0U)); }
diff --git a/src/devices/machine/ins8154.h b/src/devices/machine/ins8154.h
index b87ff329675..1c6596ccc13 100644
--- a/src/devices/machine/ins8154.h
+++ b/src/devices/machine/ins8154.h
@@ -43,19 +43,19 @@
***************************************************************************/
#define MCFG_INS8154_IN_A_CB(_devcb) \
- devcb = &ins8154_device::set_in_a_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ins8154_device &>(*device).set_in_a_callback(DEVCB_##_devcb);
#define MCFG_INS8154_OUT_A_CB(_devcb) \
- devcb = &ins8154_device::set_out_a_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ins8154_device &>(*device).set_out_a_callback(DEVCB_##_devcb);
#define MCFG_INS8154_IN_B_CB(_devcb) \
- devcb = &ins8154_device::set_in_b_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ins8154_device &>(*device).set_in_b_callback(DEVCB_##_devcb);
#define MCFG_INS8154_OUT_B_CB(_devcb) \
- devcb = &ins8154_device::set_out_b_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ins8154_device &>(*device).set_out_b_callback(DEVCB_##_devcb);
#define MCFG_INS8154_OUT_IRQ_CB(_devcb) \
- devcb = &ins8154_device::set_out_irq_callback(*device, DEVCB_##_devcb); //currently unused
+ devcb = &downcast<ins8154_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); //currently unused
/***************************************************************************
TYPE DEFINITIONS
@@ -69,11 +69,11 @@ public:
// construction/destruction
ins8154_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_in_a_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_in_a_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_a_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_out_a_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_b_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_in_b_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_b_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_out_b_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_a_callback(Object &&cb) { return m_in_a_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_a_callback(Object &&cb) { return m_out_a_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_b_callback(Object &&cb) { return m_in_b_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_b_callback(Object &&cb) { return m_out_b_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( ins8154_r );
DECLARE_WRITE8_MEMBER( ins8154_w );
diff --git a/src/devices/machine/ins8250.h b/src/devices/machine/ins8250.h
index d9ab726cf18..997b7090654 100644
--- a/src/devices/machine/ins8250.h
+++ b/src/devices/machine/ins8250.h
@@ -20,12 +20,12 @@ class ins8250_uart_device : public device_t,
public device_serial_interface
{
public:
- template <class Object> static devcb_base &set_out_tx_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_tx_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_dtr_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_dtr_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_rts_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_rts_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_out1_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_out1_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_out2_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_out2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_tx_callback(Object &&cb) { return m_out_tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_dtr_callback(Object &&cb) { return m_out_dtr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_rts_callback(Object &&cb) { return m_out_rts_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_out1_callback(Object &&cb) { return m_out_out1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_out2_callback(Object &&cb) { return m_out_out2_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( ins8250_w );
DECLARE_READ8_MEMBER( ins8250_r );
@@ -156,21 +156,21 @@ DECLARE_DEVICE_TYPE(NS16550, ns16550_device)
***************************************************************************/
#define MCFG_INS8250_OUT_TX_CB(_devcb) \
- devcb = &ins8250_uart_device::set_out_tx_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ins8250_uart_device &>(*device).set_out_tx_callback(DEVCB_##_devcb);
#define MCFG_INS8250_OUT_DTR_CB(_devcb) \
- devcb = &ins8250_uart_device::set_out_dtr_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ins8250_uart_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
#define MCFG_INS8250_OUT_RTS_CB(_devcb) \
- devcb = &ins8250_uart_device::set_out_rts_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ins8250_uart_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
#define MCFG_INS8250_OUT_INT_CB(_devcb) \
- devcb = &ins8250_uart_device::set_out_int_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ins8250_uart_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
#define MCFG_INS8250_OUT_OUT1_CB(_devcb) \
- devcb = &ins8250_uart_device::set_out_out1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ins8250_uart_device &>(*device).set_out_out1_callback(DEVCB_##_devcb);
#define MCFG_INS8250_OUT_OUT2_CB(_devcb) \
- devcb = &ins8250_uart_device::set_out_out2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<ins8250_uart_device &>(*device).set_out_out2_callback(DEVCB_##_devcb);
#endif // MAME_MACHINE_INS8250_H
diff --git a/src/devices/machine/jvsdev.cpp b/src/devices/machine/jvsdev.cpp
index f248e40d71d..20c3e538c5a 100644
--- a/src/devices/machine/jvsdev.cpp
+++ b/src/devices/machine/jvsdev.cpp
@@ -4,12 +4,6 @@
#include "jvsdev.h"
#include "jvshost.h"
-void jvs_device::static_set_jvs_host_tag(device_t &device, const char *jvs_host_tag)
-{
- jvs_device &jvsdev = downcast<jvs_device &>(device);
- jvsdev.jvs_host_tag = jvs_host_tag;
-}
-
jvs_device::jvs_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, type, tag, owner, clock), jvs_outputs(0), jvs_address(0), jvs_reset_counter(0)
{
diff --git a/src/devices/machine/jvsdev.h b/src/devices/machine/jvsdev.h
index 6fc47cf739a..5002d807252 100644
--- a/src/devices/machine/jvsdev.h
+++ b/src/devices/machine/jvsdev.h
@@ -8,14 +8,14 @@
#define MCFG_JVS_DEVICE_ADD(_tag, _type, _host) \
MCFG_DEVICE_ADD(_tag, _type, 0) \
- jvs_device::static_set_jvs_host_tag(*device, _host);
+ downcast<jvs_device &>(*device).set_jvs_host_tag(_host);
class jvs_host;
class jvs_device : public device_t
{
public:
- static void static_set_jvs_host_tag(device_t &device, const char *jvs_host_tag);
+ void set_jvs_host_tag(const char *host_tag) { jvs_host_tag = host_tag; }
void chain(jvs_device *dev);
void message(uint8_t dest, const uint8_t *send_buffer, uint32_t send_size, uint8_t *recv_buffer, uint32_t &recv_size);
diff --git a/src/devices/machine/k033906.h b/src/devices/machine/k033906.h
index c8dea1471b4..4f46c7f7dc8 100644
--- a/src/devices/machine/k033906.h
+++ b/src/devices/machine/k033906.h
@@ -19,7 +19,7 @@
***************************************************************************/
#define MCFG_K033906_VOODOO(_tag) \
- k033906_device::set_voodoo_tag(*device, "^" _tag);
+ downcast<k033906_device &>(*device).set_voodoo_tag("^" _tag);
/***************************************************************************
TYPE DEFINITIONS
@@ -34,7 +34,7 @@ public:
// construction/destruction
k033906_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_voodoo_tag(device_t &device, const char *tag) { downcast<k033906_device &>(device).m_voodoo.set_tag(tag); }
+ void set_voodoo_tag(const char *tag) { m_voodoo.set_tag(tag); }
DECLARE_READ32_MEMBER( read );
DECLARE_WRITE32_MEMBER( write );
diff --git a/src/devices/machine/k053252.cpp b/src/devices/machine/k053252.cpp
index f219c26f3cb..050a7faea90 100644
--- a/src/devices/machine/k053252.cpp
+++ b/src/devices/machine/k053252.cpp
@@ -249,10 +249,3 @@ WRITE8_MEMBER( k053252_device::write )
case 0x0f: m_int2_ack_cb(1); break;
}
}
-
-
-void k053252_device::static_set_slave_screen(device_t &device, const char *tag)
-{
- k053252_device &dev = downcast<k053252_device &>(device);
- dev.m_slave_screen.set_tag(tag);
-}
diff --git a/src/devices/machine/k053252.h b/src/devices/machine/k053252.h
index 725a8ae34d5..917fd5e96d5 100644
--- a/src/devices/machine/k053252.h
+++ b/src/devices/machine/k053252.h
@@ -11,25 +11,25 @@
#include "screen.h"
#define MCFG_K053252_INT1_EN_CB(_devcb) \
- devcb = &k053252_device::set_int1_en_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<k053252_device &>(*device).set_int1_en_callback(DEVCB_##_devcb);
#define MCFG_K053252_INT2_EN_CB(_devcb) \
- devcb = &k053252_device::set_int2_en_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<k053252_device &>(*device).set_int2_en_callback(DEVCB_##_devcb);
#define MCFG_K053252_INT1_ACK_CB(_devcb) \
- devcb = &k053252_device::set_int1_ack_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<k053252_device &>(*device).set_int1_ack_callback(DEVCB_##_devcb);
#define MCFG_K053252_INT2_ACK_CB(_devcb) \
- devcb = &k053252_device::set_int2_ack_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<k053252_device &>(*device).set_int2_ack_callback(DEVCB_##_devcb);
#define MCFG_K053252_INT_TIME_CB(_devcb) \
- devcb = &k053252_device::set_int_time_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<k053252_device &>(*device).set_int_time_callback(DEVCB_##_devcb);
#define MCFG_K053252_OFFSETS(_offsx, _offsy) \
- k053252_device::set_offsets(*device, _offsx, _offsy);
+ downcast<k053252_device &>(*device).set_offsets(_offsx, _offsy);
#define MCFG_K053252_SET_SLAVE_SCREEN(_tag) \
- k053252_device::static_set_slave_screen(*device, "^" _tag);
+ downcast<k053252_device &>(*device).set_slave_screen("^" _tag);
class k053252_device : public device_t, public device_video_interface
@@ -37,19 +37,19 @@ class k053252_device : public device_t, public device_video_interface
public:
k053252_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_int1_en_callback(device_t &device, Object &&obj) { return downcast<k053252_device &>(device).m_int1_en_cb.set_callback(std::forward<Object>(obj)); }
- template <class Object> static devcb_base &set_int2_en_callback(device_t &device, Object &&obj) { return downcast<k053252_device &>(device).m_int2_en_cb.set_callback(std::forward<Object>(obj)); }
- template <class Object> static devcb_base &set_int1_ack_callback(device_t &device, Object &&obj) { return downcast<k053252_device &>(device).m_int1_ack_cb.set_callback(std::forward<Object>(obj)); }
- template <class Object> static devcb_base &set_int2_ack_callback(device_t &device, Object &&obj) { return downcast<k053252_device &>(device).m_int2_ack_cb.set_callback(std::forward<Object>(obj)); }
- template <class Object> static devcb_base &set_int_time_callback(device_t &device, Object &&obj) { return downcast<k053252_device &>(device).m_int_time_cb.set_callback(std::forward<Object>(obj)); }
- static void set_offsets(device_t &device, int offsx, int offsy) { downcast<k053252_device &>(device).m_offsx = offsx; downcast<k053252_device &>(device).m_offsy = offsy; }
+ template <class Object> devcb_base &set_int1_en_callback(Object &&obj) { return m_int1_en_cb.set_callback(std::forward<Object>(obj)); }
+ template <class Object> devcb_base &set_int2_en_callback(Object &&obj) { return m_int2_en_cb.set_callback(std::forward<Object>(obj)); }
+ template <class Object> devcb_base &set_int1_ack_callback(Object &&obj) { return m_int1_ack_cb.set_callback(std::forward<Object>(obj)); }
+ template <class Object> devcb_base &set_int2_ack_callback(Object &&obj) { return m_int2_ack_cb.set_callback(std::forward<Object>(obj)); }
+ template <class Object> devcb_base &set_int_time_callback(Object &&obj) { return m_int_time_cb.set_callback(std::forward<Object>(obj)); }
+ void set_offsets(int offsx, int offsy) { m_offsx = offsx; m_offsy = offsy; }
DECLARE_READ8_MEMBER( read ); // CCU registers
DECLARE_WRITE8_MEMBER( write );
void res_change();
- static void static_set_slave_screen(device_t &device, const char *tag);
+ void set_slave_screen(const char *tag) { m_slave_screen.set_tag(tag); }
protected:
// device-level overrides
diff --git a/src/devices/machine/k056230.h b/src/devices/machine/k056230.h
index 9a6e4bbd061..98f1326541e 100644
--- a/src/devices/machine/k056230.h
+++ b/src/devices/machine/k056230.h
@@ -19,10 +19,10 @@
***************************************************************************/
#define MCFG_K056230_CPU(_tag) \
- k056230_device::set_cpu_tag(*device, "^" _tag);
+ downcast<k056230_device &>(*device).set_cpu_tag("^" _tag);
#define MCFG_K056230_HACK(_region) \
- k056230_device::set_thunderh_hack(*device, _region);
+ downcast<k056230_device &>(*device).set_thunderh_hack(_region);
/***************************************************************************
@@ -37,8 +37,8 @@ public:
// construction/destruction
k056230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_cpu_tag(device_t &device, const char *tag) { downcast<k056230_device &>(device).m_cpu.set_tag(tag); }
- static void set_thunderh_hack(device_t &device, int thunderh) { downcast<k056230_device &>(device).m_is_thunderh = thunderh; }
+ void set_cpu_tag(const char *tag) { m_cpu.set_tag(tag); }
+ void set_thunderh_hack(int thunderh) { m_is_thunderh = thunderh; }
DECLARE_READ32_MEMBER(lanc_ram_r);
DECLARE_WRITE32_MEMBER(lanc_ram_w);
diff --git a/src/devices/machine/kb3600.h b/src/devices/machine/kb3600.h
index 50a4095b516..14c738d9f22 100644
--- a/src/devices/machine/kb3600.h
+++ b/src/devices/machine/kb3600.h
@@ -64,31 +64,31 @@
//**************************************************************************
#define MCFG_AY3600_MATRIX_X0(_cb) \
- devcb = &ay3600_device::set_x0_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_x0_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X1(_cb) \
- devcb = &ay3600_device::set_x1_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_x1_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X2(_cb) \
- devcb = &ay3600_device::set_x2_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_x2_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X3(_cb) \
- devcb = &ay3600_device::set_x3_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_x3_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X4(_cb) \
- devcb = &ay3600_device::set_x4_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_x4_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X5(_cb) \
- devcb = &ay3600_device::set_x5_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_x5_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X6(_cb) \
- devcb = &ay3600_device::set_x6_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_x6_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X7(_cb) \
- devcb = &ay3600_device::set_x7_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_x7_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X8(_cb) \
- devcb = &ay3600_device::set_x8_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_x8_cb(DEVCB_##_cb);
#define MCFG_AY3600_SHIFT_CB(_cb) \
- devcb = &ay3600_device::set_shift_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_shift_cb(DEVCB_##_cb);
#define MCFG_AY3600_CONTROL_CB(_cb) \
- devcb = &ay3600_device::set_control_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_control_cb(DEVCB_##_cb);
#define MCFG_AY3600_DATA_READY_CB(_cb) \
- devcb = &ay3600_device::set_data_ready_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_data_ready_cb(DEVCB_##_cb);
#define MCFG_AY3600_AKO_CB(_cb) \
- devcb = &ay3600_device::set_ako_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<ay3600_device &>(*device).set_ako_cb(DEVCB_##_cb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -105,19 +105,19 @@ public:
// public interface
uint16_t b_r();
- template <class Object> static devcb_base &set_x0_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x0.set_callback(std::forward<Object>(rd)); }
- template <class Object> static devcb_base &set_x1_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x1.set_callback(std::forward<Object>(rd)); }
- template <class Object> static devcb_base &set_x2_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x2.set_callback(std::forward<Object>(rd)); }
- template <class Object> static devcb_base &set_x3_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x3.set_callback(std::forward<Object>(rd)); }
- template <class Object> static devcb_base &set_x4_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x4.set_callback(std::forward<Object>(rd)); }
- template <class Object> static devcb_base &set_x5_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x5.set_callback(std::forward<Object>(rd)); }
- template <class Object> static devcb_base &set_x6_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x6.set_callback(std::forward<Object>(rd)); }
- template <class Object> static devcb_base &set_x7_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x7.set_callback(std::forward<Object>(rd)); }
- template <class Object> static devcb_base &set_x8_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x8.set_callback(std::forward<Object>(rd)); }
- template <class Object> static devcb_base &set_shift_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_shift.set_callback(std::forward<Object>(rd)); }
- template <class Object> static devcb_base &set_control_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_control.set_callback(std::forward<Object>(rd)); }
- template <class Object> static devcb_base &set_data_ready_cb(device_t &device, Object &&wr) { return downcast<ay3600_device &>(device).m_write_data_ready.set_callback(std::forward<Object>(wr)); }
- template <class Object> static devcb_base &set_ako_cb(device_t &device, Object &&wr) { return downcast<ay3600_device &>(device).m_write_ako.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_x0_cb(Object &&rd) { return m_read_x0.set_callback(std::forward<Object>(rd)); }
+ template <class Object> devcb_base &set_x1_cb(Object &&rd) { return m_read_x1.set_callback(std::forward<Object>(rd)); }
+ template <class Object> devcb_base &set_x2_cb(Object &&rd) { return m_read_x2.set_callback(std::forward<Object>(rd)); }
+ template <class Object> devcb_base &set_x3_cb(Object &&rd) { return m_read_x3.set_callback(std::forward<Object>(rd)); }
+ template <class Object> devcb_base &set_x4_cb(Object &&rd) { return m_read_x4.set_callback(std::forward<Object>(rd)); }
+ template <class Object> devcb_base &set_x5_cb(Object &&rd) { return m_read_x5.set_callback(std::forward<Object>(rd)); }
+ template <class Object> devcb_base &set_x6_cb(Object &&rd) { return m_read_x6.set_callback(std::forward<Object>(rd)); }
+ template <class Object> devcb_base &set_x7_cb(Object &&rd) { return m_read_x7.set_callback(std::forward<Object>(rd)); }
+ template <class Object> devcb_base &set_x8_cb(Object &&rd) { return m_read_x8.set_callback(std::forward<Object>(rd)); }
+ template <class Object> devcb_base &set_shift_cb(Object &&rd) { return m_read_shift.set_callback(std::forward<Object>(rd)); }
+ template <class Object> devcb_base &set_control_cb(Object &&rd) { return m_read_control.set_callback(std::forward<Object>(rd)); }
+ template <class Object> devcb_base &set_data_ready_cb(Object &&wr) { return m_write_data_ready.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_ako_cb(Object &&wr) { return m_write_ako.set_callback(std::forward<Object>(wr)); }
protected:
// device-level overrides
diff --git a/src/devices/machine/keyboard.h b/src/devices/machine/keyboard.h
index a2ebd3e8672..661f8319ecf 100644
--- a/src/devices/machine/keyboard.h
+++ b/src/devices/machine/keyboard.h
@@ -14,7 +14,7 @@
#define KEYBOARDCB_DEVPUT(tag, cls, fnc) generic_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), (tag), ((cls *)nullptr))
#define MCFG_GENERIC_KEYBOARD_CB(cb) \
- generic_keyboard_device::set_keyboard_callback(*device, (KEYBOARDCB_##cb));
+ downcast<generic_keyboard_device &>(*device).set_keyboard_callback((KEYBOARDCB_##cb));
@@ -90,7 +90,7 @@ public:
device_t *owner,
u32 clock);
- template <class Object> static void set_keyboard_callback(device_t &device, Object &&cb) { downcast<generic_keyboard_device &>(device).m_keyboard_cb = std::forward<Object>(cb); }
+ template <class Object> void set_keyboard_callback(Object &&cb) { m_keyboard_cb = std::forward<Object>(cb); }
virtual ioport_constructor device_input_ports() const override;
diff --git a/src/devices/machine/kr2376.h b/src/devices/machine/kr2376.h
index 6206e82ba2c..3b25d0c527c 100644
--- a/src/devices/machine/kr2376.h
+++ b/src/devices/machine/kr2376.h
@@ -36,7 +36,7 @@
#define MCFG_KR2376_STROBE_CALLBACK(_write) \
- devcb = &kr2376_device::set_strobe_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<kr2376_device &>(*device).set_strobe_wr_callback(DEVCB_##_write);
class kr2376_device : public device_t
{
@@ -58,7 +58,7 @@ public:
kr2376_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_strobe_wr_callback(device_t &device, Object &&cb) { return downcast<kr2376_device &>(device).m_write_strobe.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_strobe_wr_callback(Object &&cb) { return m_write_strobe.set_callback(std::forward<Object>(cb)); }
/* keyboard data */
DECLARE_READ8_MEMBER( data_r );
diff --git a/src/devices/machine/laserdsc.cpp b/src/devices/machine/laserdsc.cpp
index 72ac3d42ab4..301eb39b2d3 100644
--- a/src/devices/machine/laserdsc.cpp
+++ b/src/devices/machine/laserdsc.cpp
@@ -207,100 +207,6 @@ uint32_t laserdisc_device::screen_update(screen_device &screen, bitmap_rgb32 &bi
}
-//-------------------------------------------------
-// static_set_get_disc - set the get disc
-// delegate
-//-------------------------------------------------
-
-void laserdisc_device::static_set_get_disc(device_t &device, get_disc_delegate &&callback)
-{
- downcast<laserdisc_device &>(device).m_getdisc_callback = std::move(callback);
-}
-
-
-//-------------------------------------------------
-// static_set_get_disc - set the audio interceptor
-// delegate
-//-------------------------------------------------
-
-void laserdisc_device::static_set_audio(device_t &device, audio_delegate &&callback)
-{
- downcast<laserdisc_device &>(device).m_audio_callback = std::move(callback);
-}
-
-
-//-------------------------------------------------
-// static_set_overlay - set the overlay parameters
-//-------------------------------------------------
-
-void laserdisc_device::static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_ind16_delegate &&update)
-{
- laserdisc_device &ld = downcast<laserdisc_device &>(device);
- ld.m_overwidth = width;
- ld.m_overheight = height;
- ld.m_overclip.set(0, width - 1, 0, height - 1);
- ld.m_overupdate_ind16 = std::move(update);
- ld.m_overupdate_rgb32 = screen_update_rgb32_delegate();
-}
-
-void laserdisc_device::static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_rgb32_delegate &&update)
-{
- laserdisc_device &ld = downcast<laserdisc_device &>(device);
- ld.m_overwidth = width;
- ld.m_overheight = height;
- ld.m_overclip.set(0, width - 1, 0, height - 1);
- ld.m_overupdate_ind16 = screen_update_ind16_delegate();
- ld.m_overupdate_rgb32 = std::move(update);
-}
-
-
-//-------------------------------------------------
-// static_set_overlay - set the overlay visible
-// memregion
-//-------------------------------------------------
-
-void laserdisc_device::static_set_overlay_clip(device_t &device, int32_t minx, int32_t maxx, int32_t miny, int32_t maxy)
-{
- downcast<laserdisc_device &>(device).m_overclip.set(minx, maxx, miny, maxy);
-}
-
-
-//-------------------------------------------------
-// static_set_overlay_position - set the overlay
-// position parameters
-//-------------------------------------------------
-
-void laserdisc_device::static_set_overlay_position(device_t &device, float posx, float posy)
-{
- laserdisc_device &ld = downcast<laserdisc_device &>(device);
- ld.m_orig_config.m_overposx = ld.m_overposx = posx;
- ld.m_orig_config.m_overposy = ld.m_overposy = posy;
-}
-
-
-//-------------------------------------------------
-// static_set_overlay_scale - set the overlay
-// scale parameters
-//-------------------------------------------------
-
-void laserdisc_device::static_set_overlay_scale(device_t &device, float scalex, float scaley)
-{
- laserdisc_device &ld = downcast<laserdisc_device &>(device);
- ld.m_orig_config.m_overscalex = ld.m_overscalex = scalex;
- ld.m_orig_config.m_overscaley = ld.m_overscaley = scaley;
-
-}
-
-//-------------------------------------------------
-// static_set_overlay_palette - set the screen palette
-// configuration
-//-------------------------------------------------
-
-void laserdisc_device::static_set_overlay_palette(device_t &device, const char *tag)
-{
- downcast<laserdisc_device &>(device).m_overlay_palette.set_tag(tag);
-}
-
//**************************************************************************
// DEVICE INTERFACE
//**************************************************************************
diff --git a/src/devices/machine/laserdsc.h b/src/devices/machine/laserdsc.h
index e2f8f9ebd41..157009f865d 100644
--- a/src/devices/machine/laserdsc.h
+++ b/src/devices/machine/laserdsc.h
@@ -59,32 +59,32 @@ enum laserdisc_field_code
//**************************************************************************
#define MCFG_LASERDISC_GET_DISC(_func) \
- laserdisc_device::static_set_get_disc(*device, _func);
+ downcast<laserdisc_device &>(*device).set_get_disc(_func);
#define MCFG_LASERDISC_AUDIO(_func) \
- laserdisc_device::static_set_audio(*device, _func);
+ downcast<laserdisc_device &>(*device).set_audio(_func);
#define MCFG_LASERDISC_SCREEN(_tag) \
- laserdisc_device::static_set_screen(*device, _tag);
+ downcast<laserdisc_device &>(*device).set_screen(_tag);
#define MCFG_LASERDISC_OVERLAY_STATIC(_width, _height, _func) \
- laserdisc_device::static_set_overlay(*device, _width, _height, screen_update_delegate_smart(&screen_update_##_func, "screen_update_" #_func));
+ downcast<laserdisc_device &>(*device).set_overlay(_width, _height, screen_update_delegate_smart(&screen_update_##_func, "screen_update_" #_func));
#define MCFG_LASERDISC_OVERLAY_DRIVER(_width, _height, _class, _method) \
- laserdisc_device::static_set_overlay(*device, _width, _height, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, nullptr));
+ downcast<laserdisc_device &>(*device).set_overlay(_width, _height, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, nullptr));
#define MCFG_LASERDISC_OVERLAY_DEVICE(_width, _height, _device, _class, _method) \
- laserdisc_device::static_set_overlay(*device, _width, _height, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, _device));
+ downcast<laserdisc_device &>(*device).set_overlay(_width, _height, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, _device));
#define MCFG_LASERDISC_OVERLAY_CLIP(_minx, _maxx, _miny, _maxy) \
- laserdisc_device::static_set_overlay_clip(*device, _minx, _maxx, _miny, _maxy);
+ downcast<laserdisc_device &>(*device).set_overlay_clip(_minx, _maxx, _miny, _maxy);
#define MCFG_LASERDISC_OVERLAY_POSITION(_posx, _posy) \
- laserdisc_device::static_set_overlay_position(*device, _posx, _posy);
+ downcast<laserdisc_device &>(*device).set_overlay_position(_posx, _posy);
#define MCFG_LASERDISC_OVERLAY_SCALE(_scalex, _scaley) \
- laserdisc_device::static_set_overlay_scale(*device, _scalex, _scaley);
+ downcast<laserdisc_device &>(*device).set_overlay_scale(_scalex, _scaley);
#define MCFG_LASERDISC_OVERLAY_PALETTE(_palette_tag) \
- laserdisc_device::static_set_overlay_palette(*device, "^" _palette_tag);
+ downcast<laserdisc_device &>(*device).set_overlay_palette("^" _palette_tag);
// use these to add laserdisc screens with proper video update parameters
// TODO: actually move these SCREEN_RAW_PARAMS to a common screen info header
// TODO: someday we'll kill the pixel clock hack ...
#define MCFG_LASERDISC_SCREEN_ADD_NTSC(_tag, _ldtag) \
MCFG_DEVICE_MODIFY(_ldtag) \
- laserdisc_device::static_set_screen(*device, _tag); \
+ downcast<laserdisc_device &>(*device).set_screen(_tag); \
MCFG_SCREEN_ADD(_tag, RASTER) \
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_SELF_RENDER) \
MCFG_SCREEN_RAW_PARAMS(XTAL(14'318'181)*2, 910, 0, 704, 525, 44, 524) \
@@ -92,7 +92,7 @@ enum laserdisc_field_code
#define MCFG_LASERDISC_SCREEN_ADD_PAL(_tag, _ldtag) \
MCFG_DEVICE_MODIFY(_ldtag) \
- laserdisc_device::static_set_screen(*device, _tag); \
+ downcast<laserdisc_device &>(*device).set_screen(_tag); \
MCFG_SCREEN_ADD(_tag, RASTER) \
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_SELF_RENDER) \
MCFG_SCREEN_RAW_PARAMS(XTAL(17'734'470)*2, 1135, 0, 768, 625, 48, 624) \
@@ -162,15 +162,37 @@ public:
void get_overlay_config(laserdisc_overlay_config &config) { config = static_cast<laserdisc_overlay_config &>(*this); }
void set_overlay_config(const laserdisc_overlay_config &config) { static_cast<laserdisc_overlay_config &>(*this) = config; }
- // static configuration helpers
- static void static_set_get_disc(device_t &device, get_disc_delegate &&callback);
- static void static_set_audio(device_t &device, audio_delegate &&callback);
- static void static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_ind16_delegate &&update);
- static void static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_rgb32_delegate &&update);
- static void static_set_overlay_clip(device_t &device, int32_t minx, int32_t maxx, int32_t miny, int32_t maxy);
- static void static_set_overlay_position(device_t &device, float posx, float posy);
- static void static_set_overlay_scale(device_t &device, float scalex, float scaley);
- static void static_set_overlay_palette(device_t &device, const char *tag);
+ // configuration helpers
+ void set_get_disc(get_disc_delegate &&callback) { m_getdisc_callback = std::move(callback); }
+ void set_audio(audio_delegate &&callback) { m_audio_callback = std::move(callback); }
+ void set_overlay(uint32_t width, uint32_t height, screen_update_ind16_delegate &&update)
+ {
+ m_overwidth = width;
+ m_overheight = height;
+ m_overclip.set(0, width - 1, 0, height - 1);
+ m_overupdate_ind16 = std::move(update);
+ m_overupdate_rgb32 = screen_update_rgb32_delegate();
+ }
+ void set_overlay(uint32_t width, uint32_t height, screen_update_rgb32_delegate &&update)
+ {
+ m_overwidth = width;
+ m_overheight = height;
+ m_overclip.set(0, width - 1, 0, height - 1);
+ m_overupdate_ind16 = screen_update_ind16_delegate();
+ m_overupdate_rgb32 = std::move(update);
+ }
+ void set_overlay_clip(int32_t minx, int32_t maxx, int32_t miny, int32_t maxy) { m_overclip.set(minx, maxx, miny, maxy); }
+ void set_overlay_position(float posx, float posy)
+ {
+ m_orig_config.m_overposx = m_overposx = posx;
+ m_orig_config.m_overposy = m_overposy = posy;
+ }
+ void set_overlay_scale(float scalex, float scaley)
+ {
+ m_orig_config.m_overscalex = m_overscalex = scalex;
+ m_orig_config.m_overscaley = m_overscaley = scaley;
+ }
+ void set_overlay_palette(const char *tag) { m_overlay_palette.set_tag(tag); }
protected:
// timer IDs
diff --git a/src/devices/machine/latch.h b/src/devices/machine/latch.h
index 8c93a40f8b0..edc87eefd1c 100644
--- a/src/devices/machine/latch.h
+++ b/src/devices/machine/latch.h
@@ -7,36 +7,35 @@
#define MCFG_OUTPUT_LATCH_BIT0_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit_handler<0>(*device, DEVCB_##_devcb);
+ devcb = &downcast<output_latch_device &>(*device).set_bit_handler<0>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT1_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit_handler<1>(*device, DEVCB_##_devcb);
+ devcb = &downcast<output_latch_device &>(*device).set_bit_handler<1>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT2_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit_handler<2>(*device, DEVCB_##_devcb);
+ devcb = &downcast<output_latch_device &>(*device).set_bit_handler<2>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT3_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit_handler<3>(*device, DEVCB_##_devcb);
+ devcb = &downcast<output_latch_device &>(*device).set_bit_handler<3>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT4_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit_handler<4>(*device, DEVCB_##_devcb);
+ devcb = &downcast<output_latch_device &>(*device).set_bit_handler<4>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT5_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit_handler<5>(*device, DEVCB_##_devcb);
+ devcb = &downcast<output_latch_device &>(*device).set_bit_handler<5>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT6_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit_handler<6>(*device, DEVCB_##_devcb);
+ devcb = &downcast<output_latch_device &>(*device).set_bit_handler<6>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT7_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit_handler<7>(*device, DEVCB_##_devcb);
+ devcb = &downcast<output_latch_device &>(*device).set_bit_handler<7>(DEVCB_##_devcb);
class output_latch_device : public device_t
{
public:
output_latch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <unsigned Bit, class Object> static devcb_base &set_bit_handler(device_t &device, Object &&cb)
- { return downcast<output_latch_device &>(device).m_bit_handlers[Bit].set_callback(std::forward<Object>(cb)); }
+ template <unsigned Bit, class Object> devcb_base &set_bit_handler(Object &&cb) { return m_bit_handlers[Bit].set_callback(std::forward<Object>(cb)); }
void write(uint8_t data);
DECLARE_WRITE8_MEMBER(write) { write(data); }
diff --git a/src/devices/machine/latch8.h b/src/devices/machine/latch8.h
index 6acb1b54903..e7d3e0bb006 100644
--- a/src/devices/machine/latch8.h
+++ b/src/devices/machine/latch8.h
@@ -74,13 +74,13 @@ public:
DECLARE_WRITE8_MEMBER( bit6_w );
DECLARE_WRITE8_MEMBER( bit7_w );
- static void set_maskout(device_t &device, uint32_t maskout) { downcast<latch8_device &>(device).m_maskout = maskout; }
- static void set_xorvalue(device_t &device, uint32_t xorvalue) { downcast<latch8_device &>(device).m_xorvalue = xorvalue; }
- static void set_nosync(device_t &device, uint32_t nosync) { downcast<latch8_device &>(device).m_nosync = nosync; }
+ void set_maskout(uint32_t maskout) { m_maskout = maskout; }
+ void set_xorvalue(uint32_t xorvalue) { m_xorvalue = xorvalue; }
+ void set_nosync(uint32_t nosync) { m_nosync = nosync; }
- template <unsigned N, class Object> static devcb_base &set_write_cb(device_t &device, Object &&cb) { return downcast<latch8_device &>(device).m_write_cb[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N, class Object> devcb_base &set_write_cb(Object &&cb) { return m_write_cb[N].set_callback(std::forward<Object>(cb)); }
- template <unsigned N, class Object> static devcb_base &set_read_cb(device_t &device, Object &&cb) { return downcast<latch8_device &>(device).m_read_cb[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N, class Object> devcb_base &set_read_cb(Object &&cb) { return m_read_cb[N].set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
@@ -119,65 +119,65 @@ DECLARE_DEVICE_TYPE(LATCH8, latch8_device)
/* Bit mask specifying bits to be masked *out* */
#define MCFG_LATCH8_MASKOUT(_maskout) \
- latch8_device::set_maskout(*device, _maskout);
+ downcast<latch8_device &>(*device).set_maskout(_maskout);
/* Bit mask specifying bits to be inverted */
#define MCFG_LATCH8_INVERT(_xor) \
- latch8_device::set_xorvalue(*device, _xor);
+ downcast<latch8_device &>(*device).set_xorvalue(_xor);
/* Bit mask specifying bits not needing cpu synchronization. */
#define MCFG_LATCH8_NOSYNC(_nosync) \
- latch8_device::set_nosync(*device, _nosync);
+ downcast<latch8_device &>(*device).set_nosync(_nosync);
/* Write bit to discrete node */
#define MCFG_LATCH8_WRITE_0(_devcb) \
- devcb = &latch8_device::set_write_cb<0>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_write_cb<0>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_1(_devcb) \
- devcb = &latch8_device::set_write_cb<1>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_write_cb<1>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_2(_devcb) \
- devcb = &latch8_device::set_write_cb<2>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_write_cb<2>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_3(_devcb) \
- devcb = &latch8_device::set_write_cb<3>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_write_cb<3>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_4(_devcb) \
- devcb = &latch8_device::set_write_cb<4>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_write_cb<4>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_5(_devcb) \
- devcb = &latch8_device::set_write_cb<5>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_write_cb<5>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_6(_devcb) \
- devcb = &latch8_device::set_write_cb<6>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_write_cb<6>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_7(_devcb) \
- devcb = &latch8_device::set_write_cb<7>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_write_cb<7>(DEVCB_##_devcb);
/* Upon read, replace bits by reading from another device handler */
#define MCFG_LATCH8_READ_0(_devcb) \
- devcb = &latch8_device::set_read_cb<0>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_read_cb<0>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_1(_devcb) \
- devcb = &latch8_device::set_read_cb<1>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_read_cb<1>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_2(_devcb) \
- devcb = &latch8_device::set_read_cb<2>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_read_cb<2>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_3(_devcb) \
- devcb = &latch8_device::set_read_cb<3>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_read_cb<3>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_4(_devcb) \
- devcb = &latch8_device::set_read_cb<4>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_read_cb<4>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_5(_devcb) \
- devcb = &latch8_device::set_read_cb<5>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_read_cb<5>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_6(_devcb) \
- devcb = &latch8_device::set_read_cb<6>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_read_cb<6>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_7(_devcb) \
- devcb = &latch8_device::set_read_cb<7>(*device, DEVCB_##_devcb);
+ devcb = &downcast<latch8_device &>(*device).set_read_cb<7>(DEVCB_##_devcb);
#endif // MAME_MACHINE_LATCH8_H
diff --git a/src/devices/machine/legscsi.h b/src/devices/machine/legscsi.h
index cf6482f0067..d00cdd9ef38 100644
--- a/src/devices/machine/legscsi.h
+++ b/src/devices/machine/legscsi.h
@@ -8,12 +8,12 @@
#include "bus/scsi/scsihle.h"
#define MCFG_LEGACY_SCSI_PORT(_tag) \
- legacy_scsi_host_adapter::set_scsi_port(*device, "^" _tag);
+ downcast<legacy_scsi_host_adapter &>(*device).set_scsi_port("^" _tag);
class legacy_scsi_host_adapter : public device_t
{
public:
- static void set_scsi_port(device_t &device, const char *tag) { downcast<legacy_scsi_host_adapter &>(device).m_scsi_port.set_tag(tag); }
+ void set_scsi_port(const char *tag) { m_scsi_port.set_tag(tag); }
protected:
legacy_scsi_host_adapter(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
diff --git a/src/devices/machine/lh5810.h b/src/devices/machine/lh5810.h
index 8e105a01f2e..51b288be8e3 100644
--- a/src/devices/machine/lh5810.h
+++ b/src/devices/machine/lh5810.h
@@ -17,22 +17,22 @@
//*************************************************************************
#define MCFG_LH5810_PORTA_R_CB(_devcb) \
- devcb = &lh5810_device::set_porta_r_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<lh5810_device &>(*device).set_porta_r_callback(DEVCB_##_devcb);
#define MCFG_LH5810_PORTA_W_CB(_devcb) \
- devcb = &lh5810_device::set_porta_w_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<lh5810_device &>(*device).set_porta_w_callback(DEVCB_##_devcb);
#define MCFG_LH5810_PORTB_R_CB(_devcb) \
- devcb = &lh5810_device::set_portb_r_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<lh5810_device &>(*device).set_portb_r_callback(DEVCB_##_devcb);
#define MCFG_LH5810_PORTB_W_CB(_devcb) \
- devcb = &lh5810_device::set_portb_w_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<lh5810_device &>(*device).set_portb_w_callback(DEVCB_##_devcb);
#define MCFG_LH5810_PORTC_W_CB(_devcb) \
- devcb = &lh5810_device::set_portc_w_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<lh5810_device &>(*device).set_portc_w_callback(DEVCB_##_devcb);
#define MCFG_LH5810_OUT_INT_CB(_devcb) \
- devcb = &lh5810_device::set_out_int_callback(*device, DEVCB_##_devcb); //currently unused
+ devcb = &downcast<lh5810_device &>(*device).set_out_int_callback(DEVCB_##_devcb); //currently unused
@@ -48,12 +48,12 @@ public:
// construction/destruction
lh5810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_porta_r_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_porta_r_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_porta_w_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_porta_w_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_portb_r_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_portb_r_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_portb_w_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_portb_w_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_portc_w_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_portc_w_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_porta_r_callback(Object &&cb) { return m_porta_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_porta_w_callback(Object &&cb) { return m_porta_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_portb_r_callback(Object &&cb) { return m_portb_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_portb_w_callback(Object &&cb) { return m_portb_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_portc_w_callback(Object &&cb) { return m_portc_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( data_w );
diff --git a/src/devices/machine/mb8421.h b/src/devices/machine/mb8421.h
index 2d6a31ae85c..705e4c0c1e7 100644
--- a/src/devices/machine/mb8421.h
+++ b/src/devices/machine/mb8421.h
@@ -20,10 +20,10 @@
// note: INT pins are only available on MB84x1
// INTL is for the CPU on the left side, INTR for the one on the right
#define MCFG_MB8421_INTL_HANDLER(_devcb) \
- devcb = &mb8421_master_device::set_intl_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb8421_master_device &>(*device).set_intl_handler(DEVCB_##_devcb);
#define MCFG_MB8421_INTR_HANDLER(_devcb) \
- devcb = &mb8421_master_device::set_intr_handler(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb8421_master_device &>(*device).set_intr_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -35,9 +35,9 @@
class mb8421_master_device : public device_t
{
public:
- // static configuration helpers
- template <class Object> static devcb_base &set_intl_handler(device_t &device, Object &&cb) { return downcast<mb8421_master_device &>(device).m_intl_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_intr_handler(device_t &device, Object &&cb) { return downcast<mb8421_master_device &>(device).m_intr_handler.set_callback(std::forward<Object>(cb)); }
+ // configuration helpers
+ template <class Object> devcb_base &set_intl_handler(Object &&cb) { return m_intl_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_intr_handler(Object &&cb) { return m_intr_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ_LINE_MEMBER(busy_r) { return 0; } // _BUSY pin - not emulated
diff --git a/src/devices/machine/mb87078.h b/src/devices/machine/mb87078.h
index a82225ebc23..bb7700bbfcf 100644
--- a/src/devices/machine/mb87078.h
+++ b/src/devices/machine/mb87078.h
@@ -18,7 +18,7 @@
***************************************************************************/
#define MCFG_MB87078_GAIN_CHANGED_CB(_devcb) \
- devcb = &mb87078_device::set_gain_changed_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb87078_device &>(*device).set_gain_changed_callback(DEVCB_##_devcb);
/***************************************************************************
TYPE DEFINITIONS
@@ -29,7 +29,7 @@ class mb87078_device : public device_t
public:
mb87078_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_gain_changed_callback(device_t &device, Object &&cb) { return downcast<mb87078_device &>(device).m_gain_changed_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_gain_changed_callback(Object &&cb) { return m_gain_changed_cb.set_callback(std::forward<Object>(cb)); }
void data_w(int data, int dsel);
void reset_comp_w(int level);
diff --git a/src/devices/machine/mb8795.h b/src/devices/machine/mb8795.h
index 3f0d9efa466..018ef6ef1e6 100644
--- a/src/devices/machine/mb8795.h
+++ b/src/devices/machine/mb8795.h
@@ -9,16 +9,16 @@
downcast<mb8795_device *>(device)->set_drq_cb(_tx_drq, _rx_drq);
#define MCFG_MB8795_TX_IRQ_CALLBACK(_write) \
- devcb = &mb8795_device::set_tx_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mb8795_device &>(*device).set_tx_irq_wr_callback(DEVCB_##_write);
#define MCFG_MB8795_RX_IRQ_CALLBACK(_write) \
- devcb = &mb8795_device::set_rx_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mb8795_device &>(*device).set_rx_irq_wr_callback(DEVCB_##_write);
#define MCFG_MB8795_TX_DRQ_CALLBACK(_write) \
- devcb = &mb8795_device::set_tx_drq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mb8795_device &>(*device).set_tx_drq_wr_callback(DEVCB_##_write);
#define MCFG_MB8795_RX_DRQ_CALLBACK(_write) \
- devcb = &mb8795_device::set_rx_drq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mb8795_device &>(*device).set_rx_drq_wr_callback(DEVCB_##_write);
class mb8795_device : public device_t,
public device_network_interface
@@ -26,10 +26,10 @@ class mb8795_device : public device_t,
public:
mb8795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_tx_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).irq_tx_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rx_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).irq_rx_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tx_drq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).drq_tx_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rx_drq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).drq_rx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tx_irq_wr_callback(Object &&cb) { return irq_tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rx_irq_wr_callback(Object &&cb) { return irq_rx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tx_drq_wr_callback(Object &&cb) { return drq_tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rx_drq_wr_callback(Object &&cb) { return drq_rx_cb.set_callback(std::forward<Object>(cb)); }
void tx_dma_w(uint8_t data, bool eof);
void rx_dma_r(uint8_t &data, bool &eof);
diff --git a/src/devices/machine/mb89352.h b/src/devices/machine/mb89352.h
index 8a520281241..b30b1601fd0 100644
--- a/src/devices/machine/mb89352.h
+++ b/src/devices/machine/mb89352.h
@@ -12,10 +12,10 @@
#include "legscsi.h"
#define MCFG_MB89352A_IRQ_CB(_devcb) \
- devcb = &mb89352_device::set_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89352_device &>(*device).set_irq_callback(DEVCB_##_devcb);
#define MCFG_MB89352A_DRQ_CB(_devcb) \
- devcb = &mb89352_device::set_drq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89352_device &>(*device).set_drq_callback(DEVCB_##_devcb);
class mb89352_device : public legacy_scsi_host_adapter
{
@@ -23,8 +23,8 @@ public:
// construction/destruction
mb89352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<mb89352_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_drq_callback(device_t &device, Object &&cb) { return downcast<mb89352_device &>(device).m_drq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_drq_callback(Object &&cb) { return m_drq_cb.set_callback(std::forward<Object>(cb)); }
// any publically accessible interfaces needed for runtime
DECLARE_READ8_MEMBER( mb89352_r );
diff --git a/src/devices/machine/mb89363b.h b/src/devices/machine/mb89363b.h
index 32e0b9177fd..2aaad46c28e 100644
--- a/src/devices/machine/mb89363b.h
+++ b/src/devices/machine/mb89363b.h
@@ -24,41 +24,41 @@ DECLARE_DEVICE_TYPE(MB89363B, mb89363b_device)
#define MCFG_MB89363B_IN_PORTA_CB(_devcb) \
- devcb = &mb89363b_device::set_in_a_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_in_a_pa_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_IN_PORTB_CB(_devcb) \
- devcb = &mb89363b_device::set_in_a_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_in_a_pb_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_IN_PORTC_CB(_devcb) \
- devcb = &mb89363b_device::set_in_a_pc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_in_a_pc_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTA_CB(_devcb) \
- devcb = &mb89363b_device::set_out_a_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_out_a_pa_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTB_CB(_devcb) \
- devcb = &mb89363b_device::set_out_a_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_out_a_pb_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTC_CB(_devcb) \
- devcb = &mb89363b_device::set_out_a_pc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_out_a_pc_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_IN_PORTD_CB(_devcb) \
- devcb = &mb89363b_device::set_in_b_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_in_b_pa_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_IN_PORTE_CB(_devcb) \
- devcb = &mb89363b_device::set_in_b_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_in_b_pb_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_IN_PORTF_CB(_devcb) \
- devcb = &mb89363b_device::set_in_b_pc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_in_b_pc_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTD_CB(_devcb) \
- devcb = &mb89363b_device::set_out_b_pa_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_out_b_pa_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTE_CB(_devcb) \
- devcb = &mb89363b_device::set_out_b_pb_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_out_b_pb_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTF_CB(_devcb) \
- devcb = &mb89363b_device::set_out_b_pc_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mb89363b_device &>(*device).set_out_b_pc_callback(DEVCB_##_devcb);
@@ -71,19 +71,19 @@ public:
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
- template <class Object> static devcb_base &set_in_a_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_a_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_a_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_a_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_a_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_a_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_a_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_a_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_a_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_a_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_a_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_a_pc_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> static devcb_base &set_in_b_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_b_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_b_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_b_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_b_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_b_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_b_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_b_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_b_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_b_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_b_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_b_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_a_pa_callback(Object &&cb) { return m_in_a_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_a_pb_callback(Object &&cb) { return m_in_a_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_a_pc_callback(Object &&cb) { return m_in_a_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_a_pa_callback(Object &&cb) { return m_out_a_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_a_pb_callback(Object &&cb) { return m_out_a_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_a_pc_callback(Object &&cb) { return m_out_a_pc_cb.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> devcb_base &set_in_b_pa_callback(Object &&cb) { return m_in_b_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_b_pb_callback(Object &&cb) { return m_in_b_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_b_pc_callback(Object &&cb) { return m_in_b_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_b_pa_callback(Object &&cb) { return m_out_b_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_b_pb_callback(Object &&cb) { return m_out_b_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_b_pc_callback(Object &&cb) { return m_out_b_pc_cb.set_callback(std::forward<Object>(cb)); }
protected:
virtual void device_add_mconfig(machine_config &config) override;
diff --git a/src/devices/machine/mc14411.h b/src/devices/machine/mc14411.h
index 772be8370b4..c206b8df917 100644
--- a/src/devices/machine/mc14411.h
+++ b/src/devices/machine/mc14411.h
@@ -33,22 +33,22 @@
#define MCFG_MC14411_ADD(_tag, _clock) MCFG_DEVICE_ADD(_tag, MC14411, _clock)
-#define MCFG_MC14411_F1_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 0, DEVCB_##_devcb);
-#define MCFG_MC14411_F2_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 1, DEVCB_##_devcb);
-#define MCFG_MC14411_F3_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 2, DEVCB_##_devcb);
-#define MCFG_MC14411_F4_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 3, DEVCB_##_devcb);
-#define MCFG_MC14411_F5_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 4, DEVCB_##_devcb);
-#define MCFG_MC14411_F6_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 5, DEVCB_##_devcb);
-#define MCFG_MC14411_F7_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 6, DEVCB_##_devcb);
-#define MCFG_MC14411_F8_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 7, DEVCB_##_devcb);
-#define MCFG_MC14411_F9_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 8, DEVCB_##_devcb);
-#define MCFG_MC14411_F10_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 9, DEVCB_##_devcb);
-#define MCFG_MC14411_F11_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 10, DEVCB_##_devcb);
-#define MCFG_MC14411_F12_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 11, DEVCB_##_devcb);
-#define MCFG_MC14411_F13_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 12, DEVCB_##_devcb);
-#define MCFG_MC14411_F14_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 13, DEVCB_##_devcb);
-#define MCFG_MC14411_F15_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 14, DEVCB_##_devcb);
-#define MCFG_MC14411_F16_CB(_devcb) devcb = &mc14411_device::set_out_fx_cb(*device, 15, DEVCB_##_devcb);
+#define MCFG_MC14411_F1_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 0, DEVCB_##_devcb);
+#define MCFG_MC14411_F2_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 1, DEVCB_##_devcb);
+#define MCFG_MC14411_F3_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 2, DEVCB_##_devcb);
+#define MCFG_MC14411_F4_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 3, DEVCB_##_devcb);
+#define MCFG_MC14411_F5_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 4, DEVCB_##_devcb);
+#define MCFG_MC14411_F6_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 5, DEVCB_##_devcb);
+#define MCFG_MC14411_F7_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 6, DEVCB_##_devcb);
+#define MCFG_MC14411_F8_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 7, DEVCB_##_devcb);
+#define MCFG_MC14411_F9_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 8, DEVCB_##_devcb);
+#define MCFG_MC14411_F10_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb( 9, DEVCB_##_devcb);
+#define MCFG_MC14411_F11_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(10, DEVCB_##_devcb);
+#define MCFG_MC14411_F12_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(11, DEVCB_##_devcb);
+#define MCFG_MC14411_F13_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(12, DEVCB_##_devcb);
+#define MCFG_MC14411_F14_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(13, DEVCB_##_devcb);
+#define MCFG_MC14411_F15_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(14, DEVCB_##_devcb);
+#define MCFG_MC14411_F16_CB(_devcb) devcb = &downcast<mc14411_device &>(*device).set_out_fx_cb(15, DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -88,7 +88,7 @@ public:
// construction/destruction
mc14411_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_fx_cb(device_t &device, int index, Object &&cb) { return downcast<mc14411_device &>(device).m_out_fx_cbs[index].set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_fx_cb(int index, Object &&cb) { return m_out_fx_cbs[index].set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(reset_w);
DECLARE_WRITE8_MEMBER(rate_select_w);
diff --git a/src/devices/machine/mc146818.h b/src/devices/machine/mc146818.h
index 85256106abf..8275a8b060f 100644
--- a/src/devices/machine/mc146818.h
+++ b/src/devices/machine/mc146818.h
@@ -25,7 +25,7 @@
MCFG_DEVICE_ADD(_tag, MC146818, _xtal)
#define MCFG_MC146818_IRQ_HANDLER(_irq) \
- devcb = &mc146818_device::set_irq_callback(*device, DEVCB_##_irq);
+ devcb = &downcast<mc146818_device &>(*device).set_irq_callback(DEVCB_##_irq);
// The MC146818 doesn't have century support, but when syncing the date & time at startup we can optionally store the century.
#define MCFG_MC146818_CENTURY_INDEX(_century_index) \
@@ -61,7 +61,7 @@ public:
mc146818_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<mc146818_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
void set_century_index(int century_index) { m_century_index = century_index; }
void set_use_utc(bool use_utc) { m_use_utc = use_utc; }
void set_binary(bool binary) { m_binary = binary; }
diff --git a/src/devices/machine/mc2661.h b/src/devices/machine/mc2661.h
index 3c798b62c8d..8e03672d483 100644
--- a/src/devices/machine/mc2661.h
+++ b/src/devices/machine/mc2661.h
@@ -36,34 +36,34 @@
***************************************************************************/
#define MCFG_MC2661_RXC(_clock) \
- mc2661_device::static_set_rxc(*device, _clock);
+ downcast<mc2661_device &>(*device).set_rxc(_clock);
#define MCFG_MC2661_TXC(_clock) \
- mc2661_device::static_set_txc(*device, _clock);
+ downcast<mc2661_device &>(*device).set_txc(_clock);
#define MCFG_MC2661_TXD_HANDLER(_write) \
- devcb = &mc2661_device::set_txd_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc2661_device &>(*device).set_txd_callback(DEVCB_##_write);
#define MCFG_MC2661_RXRDY_HANDLER(_write) \
- devcb = &mc2661_device::set_rxrdy_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc2661_device &>(*device).set_rxrdy_callback(DEVCB_##_write);
#define MCFG_MC2661_TXRDY_HANDLER(_write) \
- devcb = &mc2661_device::set_txrdy_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc2661_device &>(*device).set_txrdy_callback(DEVCB_##_write);
#define MCFG_MC2661_RTS_HANDLER(_write) \
- devcb = &mc2661_device::set_rts_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc2661_device &>(*device).set_rts_callback(DEVCB_##_write);
#define MCFG_MC2661_DTR_HANDLER(_write) \
- devcb = &mc2661_device::set_dtr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc2661_device &>(*device).set_dtr_callback(DEVCB_##_write);
#define MCFG_MC2661_TXEMT_DSCHG_HANDLER(_write) \
- devcb = &mc2661_device::set_txemt_dschg_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc2661_device &>(*device).set_txemt_dschg_callback(DEVCB_##_write);
#define MCFG_MC2661_BKDET_HANDLER(_write) \
- devcb = &mc2661_device::set_bkdet_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc2661_device &>(*device).set_bkdet_callback(DEVCB_##_write);
#define MCFG_MC2661_XSYNC_HANDLER(_write) \
- devcb = &mc2661_device::set_xsync_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc2661_device &>(*device).set_xsync_callback(DEVCB_##_write);
@@ -80,17 +80,17 @@ public:
// construction/destruction
mc2661_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_rxc(device_t &device, int clock) { downcast<mc2661_device &>(device).m_rxc = clock; }
- static void static_set_txc(device_t &device, int clock) { downcast<mc2661_device &>(device).m_txc = clock; }
-
- template <class Object> static devcb_base &set_txd_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_txd.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rxrdy_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_rxrdy.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_txrdy_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_txrdy.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_rts_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_rts.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_dtr_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_dtr.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_txemt_dschg_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_txemt_dschg.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_bkdet_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_bkdet.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_xsync_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_xsync.set_callback(std::forward<Object>(cb)); }
+ void set_rxc(int clock) { m_rxc = clock; }
+ void set_txc(int clock) { m_txc = clock; }
+
+ template <class Object> devcb_base &set_txd_callback(Object &&cb) { return m_write_txd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rxrdy_callback(Object &&cb) { return m_write_rxrdy.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txrdy_callback(Object &&cb) { return m_write_txrdy.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rts_callback(Object &&cb) { return m_write_rts.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dtr_callback(Object &&cb) { return m_write_dtr.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_txemt_dschg_callback(Object &&cb) { return m_write_txemt_dschg.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_bkdet_callback(Object &&cb) { return m_write_bkdet.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_xsync_callback(Object &&cb) { return m_write_xsync.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/mc68328.h b/src/devices/machine/mc68328.h
index 4b4892a64d3..36b756d5fe1 100644
--- a/src/devices/machine/mc68328.h
+++ b/src/devices/machine/mc68328.h
@@ -97,31 +97,31 @@ class mc68328_device : public device_t
public:
mc68328_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_cpu_tag(device_t &device, const char *tag) { downcast<mc68328_device &>(device).m_cpu.set_tag(tag); }
- template <class Object> static devcb_base &set_out_port_a_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_a_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_port_b_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_b_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_port_c_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_c_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_port_d_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_d_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_port_e_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_e_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_port_f_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_f_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_port_g_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_g_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_port_j_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_j_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_port_k_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_k_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_port_m_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_m_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_port_a_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_a_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_port_b_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_b_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_port_c_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_c_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_port_d_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_d_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_port_e_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_e_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_port_f_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_f_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_port_g_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_g_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_port_j_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_j_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_port_k_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_k_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_port_m_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_m_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_pwm_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_pwm_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_spim_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_spim_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_spim_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_spim_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_spim_xch_trigger_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_spim_xch_trigger_cb.set_callback(std::forward<Object>(cb)); }
+ void set_cpu_tag(const char *tag) { m_cpu.set_tag(tag); }
+ template <class Object> devcb_base &set_out_port_a_callback(Object &&cb) { return m_out_port_a_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_port_b_callback(Object &&cb) { return m_out_port_b_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_port_c_callback(Object &&cb) { return m_out_port_c_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_port_d_callback(Object &&cb) { return m_out_port_d_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_port_e_callback(Object &&cb) { return m_out_port_e_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_port_f_callback(Object &&cb) { return m_out_port_f_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_port_g_callback(Object &&cb) { return m_out_port_g_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_port_j_callback(Object &&cb) { return m_out_port_j_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_port_k_callback(Object &&cb) { return m_out_port_k_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_port_m_callback(Object &&cb) { return m_out_port_m_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_port_a_callback(Object &&cb) { return m_in_port_a_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_port_b_callback(Object &&cb) { return m_in_port_b_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_port_c_callback(Object &&cb) { return m_in_port_c_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_port_d_callback(Object &&cb) { return m_in_port_d_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_port_e_callback(Object &&cb) { return m_in_port_e_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_port_f_callback(Object &&cb) { return m_in_port_f_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_port_g_callback(Object &&cb) { return m_in_port_g_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_port_j_callback(Object &&cb) { return m_in_port_j_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_port_k_callback(Object &&cb) { return m_in_port_k_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_port_m_callback(Object &&cb) { return m_in_port_m_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_pwm_callback(Object &&cb) { return m_out_pwm_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_spim_callback(Object &&cb) { return m_out_spim_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_spim_callback(Object &&cb) { return m_in_spim_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_spim_xch_trigger_callback(Object &&cb) { return m_spim_xch_trigger_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE16_MEMBER(write);
@@ -386,79 +386,79 @@ private:
DECLARE_DEVICE_TYPE(MC68328, mc68328_device)
#define MCFG_MC68328_CPU(_tag) \
- mc68328_device::static_set_cpu_tag(*device, "^" _tag);
+ downcast<mc68328_device &>(*device).set_cpu_tag("^" _tag);
#define MCFG_MC68328_OUT_PORT_A_CB(_devcb) \
- devcb = &mc68328_device::set_out_port_a_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_port_a_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_B_CB(_devcb) \
- devcb = &mc68328_device::set_out_port_b_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_port_b_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_C_CB(_devcb) \
- devcb = &mc68328_device::set_out_port_c_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_port_c_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_D_CB(_devcb) \
- devcb = &mc68328_device::set_out_port_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_port_d_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_E_CB(_devcb) \
- devcb = &mc68328_device::set_out_port_e_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_port_e_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_F_CB(_devcb) \
- devcb = &mc68328_device::set_out_port_f_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_port_f_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_G_CB(_devcb) \
- devcb = &mc68328_device::set_out_port_g_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_port_g_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_J_CB(_devcb) \
- devcb = &mc68328_device::set_out_port_j_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_port_j_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_K_CB(_devcb) \
- devcb = &mc68328_device::set_out_port_k_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_port_k_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_M_CB(_devcb) \
- devcb = &mc68328_device::set_out_port_m_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_port_m_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_A_CB(_devcb) \
- devcb = &mc68328_device::set_in_port_a_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_in_port_a_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_B_CB(_devcb) \
- devcb = &mc68328_device::set_in_port_b_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_in_port_b_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_C_CB(_devcb) \
- devcb = &mc68328_device::set_in_port_c_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_in_port_c_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_D_CB(_devcb) \
- devcb = &mc68328_device::set_in_port_d_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_in_port_d_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_E_CB(_devcb) \
- devcb = &mc68328_device::set_in_port_e_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_in_port_e_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_F_CB(_devcb) \
- devcb = &mc68328_device::set_in_port_f_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_in_port_f_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_G_CB(_devcb) \
- devcb = &mc68328_device::set_in_port_g_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_in_port_g_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_J_CB(_devcb) \
- devcb = &mc68328_device::set_in_port_j_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_in_port_j_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_K_CB(_devcb) \
- devcb = &mc68328_device::set_in_port_k_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_in_port_k_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_M_CB(_devcb) \
- devcb = &mc68328_device::set_in_port_m_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_in_port_m_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PWM_CB(_devcb) \
- devcb = &mc68328_device::set_out_pwm_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_pwm_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_SPIM_CB(_devcb) \
- devcb = &mc68328_device::set_out_spim_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_out_spim_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_SPIM_CB(_devcb) \
- devcb = &mc68328_device::set_in_spim_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_in_spim_callback(DEVCB_##_devcb);
#define MCFG_MC68328_SPIM_XCH_TRIGGER_CB(_devcb) \
- devcb = &mc68328_device::set_spim_xch_trigger_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68328_device &>(*device).set_spim_xch_trigger_callback(DEVCB_##_devcb);
#endif // MAME_MACHINE_MC68328_H
diff --git a/src/devices/machine/mc6843.h b/src/devices/machine/mc6843.h
index 820ac1aec93..ef5e457958a 100644
--- a/src/devices/machine/mc6843.h
+++ b/src/devices/machine/mc6843.h
@@ -16,14 +16,14 @@
#include "imagedev/flopdrv.h"
#define MCFG_MC6843_IRQ_CALLBACK(_write) \
- devcb = &mc6843_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc6843_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
class mc6843_device : public device_t
{
public:
mc6843_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mc6843_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
diff --git a/src/devices/machine/mc6846.h b/src/devices/machine/mc6846.h
index e35d08f7af8..676db3129f9 100644
--- a/src/devices/machine/mc6846.h
+++ b/src/devices/machine/mc6846.h
@@ -15,22 +15,22 @@
#define MCFG_MC6846_OUT_PORT_CB(_devcb) \
- devcb = &mc6846_device::set_out_port_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc6846_device &>(*device).set_out_port_callback(DEVCB_##_devcb);
#define MCFG_MC6846_OUT_CP1_CB(_devcb) \
- devcb = &mc6846_device::set_out_cp1_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc6846_device &>(*device).set_out_cp1_callback(DEVCB_##_devcb);
#define MCFG_MC6846_OUT_CP2_CB(_devcb) \
- devcb = &mc6846_device::set_out_cp2_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc6846_device &>(*device).set_out_cp2_callback(DEVCB_##_devcb);
#define MCFG_MC6846_IN_PORT_CB(_devcb) \
- devcb = &mc6846_device::set_in_port_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc6846_device &>(*device).set_in_port_callback(DEVCB_##_devcb);
#define MCFG_MC6846_OUT_CTO_CB(_devcb) \
- devcb = &mc6846_device::set_out_cto_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc6846_device &>(*device).set_out_cto_callback(DEVCB_##_devcb);
#define MCFG_MC6846_IRQ_CB(_devcb) \
- devcb = &mc6846_device::set_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc6846_device &>(*device).set_irq_callback(DEVCB_##_devcb);
class mc6846_device : public device_t
@@ -38,12 +38,12 @@ class mc6846_device : public device_t
public:
mc6846_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_port_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_port_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_cp1_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_cp1_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_cp2_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_cp2_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_in_port_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_in_port_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_cto_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_cto_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_port_callback(Object &&cb) { return m_out_port_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_cp1_callback(Object &&cb) { return m_out_cp1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_cp2_callback(Object &&cb) { return m_out_cp2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_in_port_callback(Object &&cb) { return m_in_port_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_cto_callback(Object &&cb) { return m_out_cto_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); }
/* interface to CPU via address/data bus*/
DECLARE_READ8_MEMBER(read);
diff --git a/src/devices/machine/mc6852.h b/src/devices/machine/mc6852.h
index 464ed55102a..3f32eb5ea5f 100644
--- a/src/devices/machine/mc6852.h
+++ b/src/devices/machine/mc6852.h
@@ -35,22 +35,22 @@
//**************************************************************************
#define MCFG_MC6852_RX_CLOCK(_clock) \
- mc6852_device::set_rx_clock(*device, _clock);
+ downcast<mc6852_device &>(*device).set_rx_clock(_clock);
#define MCFG_MC6852_TX_CLOCK(_clock) \
- mc6852_device::set_tx_clock(*device, _clock);
+ downcast<mc6852_device &>(*device).set_tx_clock(_clock);
#define MCFG_MC6852_TX_DATA_CALLBACK(_write) \
- devcb = &mc6852_device::set_tx_data_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc6852_device &>(*device).set_tx_data_wr_callback(DEVCB_##_write);
#define MCFG_MC6852_IRQ_CALLBACK(_write) \
- devcb = &mc6852_device::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc6852_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_MC6852_SM_DTR_CALLBACK(_write) \
- devcb = &mc6852_device::set_sm_dtr_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc6852_device &>(*device).set_sm_dtr_wr_callback(DEVCB_##_write);
#define MCFG_MC6852_TUF_CALLBACK(_write) \
- devcb = &mc6852_device::set_tuf_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mc6852_device &>(*device).set_tuf_wr_callback(DEVCB_##_write);
@@ -67,12 +67,12 @@ public:
// construction/destruction
mc6852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_rx_clock(device_t &device, int clock) { downcast<mc6852_device &>(device).m_rx_clock = clock; }
- static void set_tx_clock(device_t &device, int clock) { downcast<mc6852_device &>(device).m_tx_clock = clock; }
- template <class Object> static devcb_base &set_tx_data_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_tx_data.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_sm_dtr_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_sm_dtr.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_tuf_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_tuf.set_callback(std::forward<Object>(cb)); }
+ void set_rx_clock(int clock) { m_rx_clock = clock; }
+ void set_tx_clock(int clock) { m_tx_clock = clock; }
+ template <class Object> devcb_base &set_tx_data_wr_callback(Object &&cb) { return m_write_tx_data.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_sm_dtr_wr_callback(Object &&cb) { return m_write_sm_dtr.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_tuf_wr_callback(Object &&cb) { return m_write_tuf.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/mc6854.h b/src/devices/machine/mc6854.h
index a1ae7d5801b..36548024bfd 100644
--- a/src/devices/machine/mc6854.h
+++ b/src/devices/machine/mc6854.h
@@ -18,19 +18,19 @@
#define MCFG_MC6854_OUT_IRQ_CB(_devcb) \
- devcb = &mc6854_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc6854_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_MC6854_OUT_TXD_CB(_devcb) \
- devcb = &mc6854_device::set_out_txd_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc6854_device &>(*device).set_out_txd_callback(DEVCB_##_devcb);
#define MCFG_MC6854_OUT_FRAME_CB(_class, _method) \
- mc6854_device::set_out_frame_callback(*device, mc6854_device::out_frame_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<mc6854_device &>(*device).set_out_frame_callback(mc6854_device::out_frame_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_MC6854_OUT_RTS_CB(_devcb) \
- devcb = &mc6854_device::set_out_rts_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc6854_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
#define MCFG_MC6854_OUT_DTR_CB(_devcb) \
- devcb = &mc6854_device::set_out_dtr_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc6854_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
class mc6854_device : public device_t
@@ -42,11 +42,11 @@ public:
mc6854_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_txd_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_txd_cb.set_callback(std::forward<Object>(cb)); }
- static void set_out_frame_callback(device_t &device, out_frame_delegate &&callback) { downcast<mc6854_device &>(device).m_out_frame_cb = std::move(callback); }
- template <class Object> static devcb_base &set_out_rts_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_rts_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_dtr_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_dtr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_txd_callback(Object &&cb) { return m_out_txd_cb.set_callback(std::forward<Object>(cb)); }
+ template <typename Object> void set_out_frame_callback(Object &&cb) { m_out_frame_cb = std::forward<Object>(cb); }
+ template <class Object> devcb_base &set_out_rts_callback(Object &&cb) { return m_out_rts_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_dtr_callback(Object &&cb) { return m_out_dtr_cb.set_callback(std::forward<Object>(cb)); }
/* interface to CPU via address/data bus*/
DECLARE_READ8_MEMBER( read );
diff --git a/src/devices/machine/mc68681.cpp b/src/devices/machine/mc68681.cpp
index 015997b8db3..e311c0a7ac2 100644
--- a/src/devices/machine/mc68681.cpp
+++ b/src/devices/machine/mc68681.cpp
@@ -137,17 +137,16 @@ mc68340_duart_device::mc68340_duart_device(const machine_config &mconfig, const
}
//-------------------------------------------------
-// static_set_clocks - configuration helper to set
+// set_clocks - configuration helper to set
// the external clocks
//-------------------------------------------------
-void duart_base_device::static_set_clocks(device_t &device, int clk3, int clk4, int clk5, int clk6)
+void duart_base_device::set_clocks(int clk3, int clk4, int clk5, int clk6)
{
- duart_base_device &duart = downcast<duart_base_device &>(device);
- duart.ip3clk = clk3;
- duart.ip4clk = clk4;
- duart.ip5clk = clk5;
- duart.ip6clk = clk6;
+ ip3clk = clk3;
+ ip4clk = clk4;
+ ip5clk = clk5;
+ ip6clk = clk6;
}
/*-------------------------------------------------
diff --git a/src/devices/machine/mc68681.h b/src/devices/machine/mc68681.h
index e6e588ddb25..afcaed336aa 100644
--- a/src/devices/machine/mc68681.h
+++ b/src/devices/machine/mc68681.h
@@ -7,33 +7,33 @@
#define MCFG_MC68681_IRQ_CALLBACK(_cb) \
- devcb = &duart_base_device::set_irq_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<duart_base_device &>(*device).set_irq_cb(DEVCB_##_cb);
#define MCFG_MC68681_A_TX_CALLBACK(_cb) \
- devcb = &duart_base_device::set_a_tx_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<duart_base_device &>(*device).set_a_tx_cb(DEVCB_##_cb);
#define MCFG_MC68681_B_TX_CALLBACK(_cb) \
- devcb = &duart_base_device::set_b_tx_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<duart_base_device &>(*device).set_b_tx_cb(DEVCB_##_cb);
// deprecated: use ipX_w() instead
#define MCFG_MC68681_INPORT_CALLBACK(_cb) \
- devcb = &duart_base_device::set_inport_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<duart_base_device &>(*device).set_inport_cb(DEVCB_##_cb);
#define MCFG_MC68681_OUTPORT_CALLBACK(_cb) \
- devcb = &duart_base_device::set_outport_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<duart_base_device &>(*device).set_outport_cb(DEVCB_##_cb);
#define MCFG_MC68681_SET_EXTERNAL_CLOCKS(_a, _b, _c, _d) \
- duart_base_device::static_set_clocks(*device, _a, _b, _c, _d);
+ downcast<duart_base_device &>(*device).set_clocks(_a, _b, _c, _d);
// SC28C94 specific callbacks
#define MCFG_SC28C94_ADD(_tag, _clock) \
MCFG_DEVICE_ADD(_tag, SC28C94, _clock)
#define MCFG_SC28C94_C_TX_CALLBACK(_cb) \
- devcb = &sc28c94_device::set_c_tx_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<sc28c94_device &>(*device).set_c_tx_cb(DEVCB_##_cb);
#define MCFG_SC28C94_D_TX_CALLBACK(_cb) \
- devcb = &sc28c94_device::set_d_tx_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<sc28c94_device &>(*device).set_d_tx_cb(DEVCB_##_cb);
// MC68340SERIAL specific callbacks
#define MCFG_MC68340DUART_ADD(_tag, _clock) \
@@ -120,9 +120,9 @@ public:
optional_device<duart_channel> m_chanD;
// inline configuration helpers
- static void static_set_clocks(device_t &device, int clk3, int clk4, int clk5, int clk6);
- static void static_set_clocks(device_t &device, const XTAL &clk3, const XTAL &clk4, const XTAL &clk5, const XTAL &clk6) {
- static_set_clocks(device, clk3.value(), clk4.value(), clk5.value(), clk6.value());
+ void set_clocks(int clk3, int clk4, int clk5, int clk6);
+ void set_clocks(const XTAL &clk3, const XTAL &clk4, const XTAL &clk5, const XTAL &clk6) {
+ set_clocks(clk3.value(), clk4.value(), clk5.value(), clk6.value());
}
// API
@@ -132,11 +132,11 @@ public:
DECLARE_WRITE_LINE_MEMBER( rx_a_w ) { m_chanA->device_serial_interface::rx_w((uint8_t)state); }
DECLARE_WRITE_LINE_MEMBER( rx_b_w ) { m_chanB->device_serial_interface::rx_w((uint8_t)state); }
- template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&cb) { return downcast<duart_base_device &>(device).write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_a_tx_cb(device_t &device, Object &&cb) { return downcast<duart_base_device &>(device).write_a_tx.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_b_tx_cb(device_t &device, Object &&cb) { return downcast<duart_base_device &>(device).write_b_tx.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_inport_cb(device_t &device, Object &&cb) { return downcast<duart_base_device &>(device).read_inport.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_outport_cb(device_t &device, Object &&cb) { return downcast<duart_base_device &>(device).write_outport.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_irq_cb(Object &&cb) { return write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_a_tx_cb(Object &&cb) { return write_a_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_b_tx_cb(Object &&cb) { return write_b_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_inport_cb(Object &&cb) { return read_inport.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_outport_cb(Object &&cb) { return write_outport.set_callback(std::forward<Object>(cb)); }
// new-style push handlers for input port bits
DECLARE_WRITE_LINE_MEMBER( ip0_w );
@@ -243,8 +243,8 @@ class sc28c94_device : public duart_base_device
public:
sc28c94_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_c_tx_cb(device_t &device, Object &&cb) { return downcast<sc28c94_device &>(device).write_c_tx.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_d_tx_cb(device_t &device, Object &&cb) { return downcast<sc28c94_device &>(device).write_d_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_c_tx_cb(Object &&cb) { return write_c_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_d_tx_cb(Object &&cb) { return write_d_tx.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( rx_c_w ) { m_chanC->device_serial_interface::rx_w((uint8_t)state); }
DECLARE_WRITE_LINE_MEMBER( rx_d_w ) { m_chanD->device_serial_interface::rx_w((uint8_t)state); }
diff --git a/src/devices/machine/mc68901.h b/src/devices/machine/mc68901.h
index c4270b230e3..63a0c456e62 100644
--- a/src/devices/machine/mc68901.h
+++ b/src/devices/machine/mc68901.h
@@ -45,40 +45,40 @@
//**************************************************************************
#define MCFG_MC68901_TIMER_CLOCK(_clk) \
- mc68901_device::set_timer_clock(*device, _clk);
+ downcast<mc68901_device &>(*device).set_timer_clock(_clk);
#define MCFG_MC68901_RX_CLOCK(_clk) \
- mc68901_device::set_rx_clock(*device, _clk);
+ downcast<mc68901_device &>(*device).set_rx_clock(_clk);
#define MCFG_MC68901_TX_CLOCK(_clk) \
- mc68901_device::set_tx_clock(*device, _clk);
+ downcast<mc68901_device &>(*device).set_tx_clock(_clk);
#define MCFG_MC68901_OUT_IRQ_CB(_devcb) \
- devcb = &mc68901_device::set_out_irq_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68901_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_GPIO_CB(_devcb) \
- devcb = &mc68901_device::set_out_gpio_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68901_device &>(*device).set_out_gpio_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TAO_CB(_devcb) \
- devcb = &mc68901_device::set_out_tao_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68901_device &>(*device).set_out_tao_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TBO_CB(_devcb) \
- devcb = &mc68901_device::set_out_tbo_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68901_device &>(*device).set_out_tbo_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TCO_CB(_devcb) \
- devcb = &mc68901_device::set_out_tco_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68901_device &>(*device).set_out_tco_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TDO_CB(_devcb) \
- devcb = &mc68901_device::set_out_tdo_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68901_device &>(*device).set_out_tdo_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_SO_CB(_devcb) \
- devcb = &mc68901_device::set_out_so_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68901_device &>(*device).set_out_so_callback(DEVCB_##_devcb);
/*#define MCFG_MC68901_OUT_RR_CB(_devcb) \
- devcb = &mc68901_device::set_out_rr_callback(*device, DEVCB_##_devcb);
+ devcb = &downcast<mc68901_device &>(*device).set_out_rr_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TR_CB(_devcb) \
- devcb = &mc68901_device::set_out_tr_callback(*device, DEVCB_##_devcb);*/
+ devcb = &downcast<mc68901_device &>(*device).set_out_tr_callback(DEVCB_##_devcb);*/
//**************************************************************************
@@ -95,21 +95,21 @@ public:
// construction/destruction
mc68901_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_timer_clock(device_t &device, int timer_clock) { downcast<mc68901_device &>(device).m_timer_clock = timer_clock; }
- static void set_rx_clock(device_t &device, int rx_clock) { downcast<mc68901_device &>(device).m_rx_clock = rx_clock; }
- static void set_tx_clock(device_t &device, int tx_clock) { downcast<mc68901_device &>(device).m_tx_clock = tx_clock; }
- static void set_timer_clock(device_t &device, const XTAL &xtal) { set_timer_clock(device, xtal.value()); }
- static void set_rx_clock(device_t &device, const XTAL &xtal) { set_rx_clock(device, xtal.value()); }
- static void set_tx_clock(device_t &device, const XTAL &xtal) { set_tx_clock(device, xtal.value()); }
- template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_gpio_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_gpio_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_tao_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tao_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_tbo_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tbo_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_tco_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tco_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_tdo_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tdo_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_out_so_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_so_cb.set_callback(std::forward<Object>(cb)); }
- //template <class Object> static devcb_base &set_rr_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_rr_cb.set_callback(std::forward<Object>(cb)); }
- //template <class Object> static devcb_base &set_tr_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tr_cb.set_callback(std::forward<Object>(cb)); }
+ void set_timer_clock(int timer_clock) { m_timer_clock = timer_clock; }
+ void set_rx_clock(int rx_clock) { m_rx_clock = rx_clock; }
+ void set_tx_clock(int tx_clock) { m_tx_clock = tx_clock; }
+ void set_timer_clock(const XTAL &xtal) { set_timer_clock(xtal.value()); }
+ void set_rx_clock(const XTAL &xtal) { set_rx_clock(xtal.value()); }
+ void set_tx_clock(const XTAL &xtal) { set_tx_clock(xtal.value()); }
+ template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_gpio_callback(Object &&cb) { return m_out_gpio_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_tao_callback(Object &&cb) { return m_out_tao_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_tbo_callback(Object &&cb) { return m_out_tbo_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_tco_callback(Object &&cb) { return m_out_tco_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_tdo_callback(Object &&cb) { return m_out_tdo_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_out_so_callback(Object &&cb) { return m_out_so_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> devcb_base &set_rr_callback(Object &&cb) { return m_out_rr_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> devcb_base &set_tr_callback(Object &&cb) { return m_out_tr_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/mccs1850.h b/src/devices/machine/mccs1850.h
index e446d2083f3..8241203c3aa 100644
--- a/src/devices/machine/mccs1850.h
+++ b/src/devices/machine/mccs1850.h
@@ -31,13 +31,13 @@
//**************************************************************************
#define MCFG_MCCS1850_INT_CALLBACK(_write) \
- devcb = &mccs1850_device::set_int_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mccs1850_device &>(*device).set_int_wr_callback(DEVCB_##_write);
#define MCFG_MCCS1850_PSE_CALLBACK(_write) \
- devcb = &mccs1850_device::set_pse_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mccs1850_device &>(*device).set_pse_wr_callback(DEVCB_##_write);
#define MCFG_MCCS1850_NUC_CALLBACK(_write) \
- devcb = &mccs1850_device::set_nuc_wr_callback(*device, DEVCB_##_write);
+ devcb = &downcast<mccs1850_device &>(*device).set_nuc_wr_callback(DEVCB_##_write);
@@ -55,9 +55,9 @@ public:
// construction/destruction
mccs1850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<mccs1850_device &>(device).int_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_pse_wr_callback(device_t &device, Object &&cb) { return downcast<mccs1850_device &>(device).pse_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_nuc_wr_callback(device_t &device, Object &&cb) { return downcast<mccs1850_device &>(device).nuc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_int_wr_callback(Object &&cb) { return int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pse_wr_callback(Object &&cb) { return pse_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nuc_wr_callback(Object &&cb) { return nuc_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( ce_w );
DECLARE_WRITE_LINE_MEMBER( sck_w );
diff --git a/src/devices/machine/meters.h b/src/devices/machine/meters.h
index fd69152f0b7..1a349f82485 100644
--- a/src/devices/machine/meters.h
+++ b/src/devices/machine/meters.h
@@ -16,7 +16,7 @@
#define MCFG_METERS_NUMBER(_number) \
- meters_device::static_set_number_meters(*device, _number);
+ downcast<meters_device &>(*device).set_number_meters(_number);
class meters_device : public device_t
{
@@ -27,7 +27,7 @@ public:
meters_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_number_meters(device_t &device, int number) { downcast<meters_device &>(device).m_number_mtr = number; }
+ void set_number_meters(int number) { m_number_mtr = number; }
int update(int id, int state);
int GetActivity(int id);
diff --git a/src/devices/machine/microtch.h b/src/devices/machine/microtch.h
index 696807f044c..d39e930de10 100644
--- a/src/devices/machine/microtch.h
+++ b/src/devices/machine/microtch.h
@@ -12,14 +12,14 @@ class microtouch_device :
{
public:
microtouch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> static devcb_base &static_set_stx_callback(device_t &device, Object &&cb) { return downcast<microtouch_device &>(device).m_out_stx_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_stx_callback(Object &&cb) { return m_out_stx_func.set_callback(std::forward<Object>(cb)); }
virtual ioport_constructor device_input_ports() const override;
DECLARE_WRITE_LINE_MEMBER(rx) { device_serial_interface::rx_w(state); }
DECLARE_INPUT_CHANGED_MEMBER(touch);
typedef delegate<int (int *, int *)> touch_cb;
- static void static_set_touch_callback(device_t &device, touch_cb &&object) { downcast<microtouch_device &>(device).m_out_touch_cb = std::move(object); }
+ template <typename Object> void set_touch_callback(Object &&cb) { m_out_touch_cb = std::forward<Object>(cb); }
protected:
virtual void device_start() override;
@@ -73,9 +73,9 @@ DECLARE_DEVICE_TYPE(MICROTOUCH, microtouch_device)
#define MCFG_MICROTOUCH_ADD(_tag, _clock, _devcb) \
MCFG_DEVICE_ADD(_tag, MICROTOUCH, _clock) \
- devcb = &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); }
diff --git a/src/emu/devcpu.cpp b/src/emu/devcpu.cpp
index dccde97c14c..e75b621c6f0 100644
--- a/src/emu/devcpu.cpp
+++ b/src/emu/devcpu.cpp
@@ -42,17 +42,6 @@ cpu_device::~cpu_device()
//-------------------------------------------------
-// static_set_force_no_drc - configuration helper
-// to disable DRC
-//-------------------------------------------------
-
-void cpu_device::static_set_force_no_drc(device_t &device, bool value)
-{
- downcast<cpu_device &>(device).m_force_no_drc = value;
-}
-
-
-//-------------------------------------------------
// allow_drc - return true if DRC is allowed
//-------------------------------------------------
diff --git a/src/emu/devcpu.h b/src/emu/devcpu.h
index 1e392003730..c50f0b03f6a 100644
--- a/src/emu/devcpu.h
+++ b/src/emu/devcpu.h
@@ -45,7 +45,7 @@
// recompilation parameters
#define MCFG_CPU_FORCE_NO_DRC() \
- cpu_device::static_set_force_no_drc(*device, true);
+ dynamic_cast<cpu_device &>(*device).set_force_no_drc(true);
@@ -63,7 +63,7 @@ class cpu_device : public device_t,
{
public:
// configuration helpers
- static void static_set_force_no_drc(device_t &device, bool value);
+ void set_force_no_drc(bool value) { m_force_no_drc = value; }
bool allow_drc() const;
protected:
diff --git a/src/emu/device.cpp b/src/emu/device.cpp
index 4a2dd9c9081..56369026e76 100644
--- a/src/emu/device.cpp
+++ b/src/emu/device.cpp
@@ -108,7 +108,7 @@ device_t::device_t(const machine_config &mconfig, device_type type, const char *
m_tag.assign((owner->owner() == nullptr) ? "" : owner->tag()).append(":").append(tag);
else
m_tag.assign(":");
- static_set_clock(*this, clock);
+ set_clock(clock);
}
@@ -208,19 +208,19 @@ std::string device_t::parameter(const char *tag) const
//-------------------------------------------------
-// static_set_clock - set/change the clock on
+// set_clock - set/change the clock on
// a device
//-------------------------------------------------
-void device_t::static_set_clock(device_t &device, u32 clock)
+void device_t::set_clock(u32 clock)
{
- device.m_configured_clock = clock;
+ m_configured_clock = clock;
// derive the clock from our owner if requested
if ((clock & 0xff000000) == 0xff000000)
- device.calculate_derived_clock();
+ calculate_derived_clock();
else
- device.set_unscaled_clock(clock);
+ set_unscaled_clock(clock);
}
diff --git a/src/emu/device.h b/src/emu/device.h
index dfa8fbc64fa..376d94b9e98 100644
--- a/src/emu/device.h
+++ b/src/emu/device.h
@@ -42,9 +42,9 @@
// configure devices
#define MCFG_DEVICE_CLOCK(_clock) \
- device_t::static_set_clock(*device, _clock);
+ device->set_clock(_clock);
#define MCFG_DEVICE_INPUT_DEFAULTS(_config) \
- device_t::static_set_input_default(*device, DEVICE_INPUT_DEFAULTS_NAME(_config));
+ device->set_input_default(DEVICE_INPUT_DEFAULTS_NAME(_config));
#define DECLARE_READ_LINE_MEMBER(name) int name()
#define READ_LINE_MEMBER(name) int name()
@@ -462,8 +462,8 @@ public:
// interface helpers
interface_list &interfaces() { return m_interfaces; }
const interface_list &interfaces() const { return m_interfaces; }
- template<class _DeviceClass> bool interface(_DeviceClass *&intf) { intf = dynamic_cast<_DeviceClass *>(this); return (intf != nullptr); }
- template<class _DeviceClass> bool interface(_DeviceClass *&intf) const { intf = dynamic_cast<const _DeviceClass *>(this); return (intf != nullptr); }
+ template<class DeviceClass> bool interface(DeviceClass *&intf) { intf = dynamic_cast<DeviceClass *>(this); return (intf != nullptr); }
+ template<class DeviceClass> bool interface(DeviceClass *&intf) const { intf = dynamic_cast<const DeviceClass *>(this); return (intf != nullptr); }
// specialized helpers for common core interfaces
bool interface(device_execute_interface *&intf) { intf = m_interfaces.m_execute; return (intf != nullptr); }
@@ -491,16 +491,16 @@ public:
ioport_port *ioport(const char *tag) const;
device_t *subdevice(const char *tag) const;
device_t *siblingdevice(const char *tag) const;
- template<class _DeviceClass> inline _DeviceClass *subdevice(const char *tag) const { return downcast<_DeviceClass *>(subdevice(tag)); }
- template<class _DeviceClass> inline _DeviceClass *siblingdevice(const char *tag) const { return downcast<_DeviceClass *>(siblingdevice(tag)); }
+ template<class DeviceClass> inline DeviceClass *subdevice(const char *tag) const { return downcast<DeviceClass *>(subdevice(tag)); }
+ template<class DeviceClass> inline DeviceClass *siblingdevice(const char *tag) const { return downcast<DeviceClass *>(siblingdevice(tag)); }
std::string parameter(const char *tag) const;
// configuration helpers
void add_machine_configuration(machine_config &config) { device_add_mconfig(config); }
- static void static_set_clock(device_t &device, u32 clock);
- static void static_set_clock(device_t &device, const XTAL &xtal) { static_set_clock(device, xtal.value()); }
- static void static_set_input_default(device_t &device, const input_device_default *config) { device.m_input_defaults = config; }
- static void static_set_default_bios_tag(device_t &device, const char *tag) { device.m_default_bios_tag = tag; }
+ void set_clock(u32 clock);
+ void set_clock(const XTAL &xtal) { set_clock(xtal.value()); }
+ void set_input_default(const input_device_default *config) { m_input_defaults = config; }
+ void set_default_bios_tag(const char *tag) { m_default_bios_tag = tag; }
// state helpers
void config_complete();
@@ -526,10 +526,10 @@ public:
void timer_expired(emu_timer &timer, device_timer_id id, int param, void *ptr) { device_timer(timer, id, param, ptr); }
// state saving interfaces
- template<typename _ItemType>
- void ATTR_COLD save_item(_ItemType &value, const char *valname, int index = 0) { assert(m_save != nullptr); m_save->save_item(this, name(), tag(), index, value, valname); }
- template<typename _ItemType>
- void ATTR_COLD save_pointer(_ItemType *value, const char *valname, u32 count, int index = 0) { assert(m_save != nullptr); m_save->save_pointer(this, name(), tag(), index, value, valname, count); }
+ template<typename ItemType>
+ void ATTR_COLD save_item(ItemType &value, const char *valname, int index = 0) { assert(m_save != nullptr); m_save->save_item(this, name(), tag(), index, value, valname); }
+ template<typename ItemType>
+ void ATTR_COLD save_pointer(ItemType *value, const char *valname, u32 count, int index = 0) { assert(m_save != nullptr); m_save->save_pointer(this, name(), tag(), index, value, valname, count); }
// debugging
device_debug *debug() const { return m_debug.get(); }
@@ -903,7 +903,7 @@ private:
// helper class to find devices with a given interface in the device hierarchy
// also works for finding devices derived from a given subclass
-template<class _InterfaceClass>
+template<class InterfaceClass>
class device_interface_iterator
{
public:
@@ -919,8 +919,8 @@ public:
}
// getters returning specified interface type
- _InterfaceClass *current() const { return m_interface; }
- _InterfaceClass &operator*() const { assert(m_interface != nullptr); return *m_interface; }
+ InterfaceClass *current() const { return m_interface; }
+ InterfaceClass &operator*() const { assert(m_interface != nullptr); return *m_interface; }
// search for devices with the specified interface
const auto_iterator &operator++() { advance(); find_interface(); return *this; }
@@ -939,7 +939,7 @@ private:
}
// private state
- _InterfaceClass *m_interface;
+ InterfaceClass *m_interface;
};
public:
@@ -952,13 +952,13 @@ public:
auto_iterator end() const { return auto_iterator(nullptr, 0, m_maxdepth); }
// return first item
- _InterfaceClass *first() const { return begin().current(); }
+ InterfaceClass *first() const { return begin().current(); }
// return the number of items available
int count() const
{
int result = 0;
- for (_InterfaceClass &item : *this)
+ for (InterfaceClass &item : *this)
{
(void)&item;
result++;
@@ -967,10 +967,10 @@ public:
}
// return the index of a given item in the virtual list
- int indexof(_InterfaceClass &intrf) const
+ int indexof(InterfaceClass &intrf) const
{
int index = 0;
- for (_InterfaceClass &item : *this)
+ for (InterfaceClass &item : *this)
{
if (&item == &intrf)
return index;
@@ -981,9 +981,9 @@ public:
}
// return the indexed item in the list
- _InterfaceClass *byindex(int index) const
+ InterfaceClass *byindex(int index) const
{
- for (_InterfaceClass &item : *this)
+ for (InterfaceClass &item : *this)
if (index-- == 0)
return &item;
return nullptr;
diff --git a/src/emu/diexec.cpp b/src/emu/diexec.cpp
index 0958108fe42..8770349cf5f 100644
--- a/src/emu/diexec.cpp
+++ b/src/emu/diexec.cpp
@@ -82,64 +82,6 @@ device_execute_interface::~device_execute_interface()
//-------------------------------------------------
-// static_set_disable - configuration helper to
-// set the disabled state of a device
-//-------------------------------------------------
-
-void device_execute_interface::static_set_disable(device_t &device)
-{
- device_execute_interface *exec;
- if (!device.interface(exec))
- throw emu_fatalerror("MCFG_DEVICE_DISABLE called on device '%s' with no execute interface", device.tag());
- exec->m_disabled = true;
-}
-
-
-//-------------------------------------------------
-// static_set_vblank_int - configuration helper
-// to set up VBLANK interrupts on the device
-//-------------------------------------------------
-
-void device_execute_interface::static_set_vblank_int(device_t &device, device_interrupt_delegate function, const char *tag, int rate)
-{
- device_execute_interface *exec;
- if (!device.interface(exec))
- throw emu_fatalerror("MCFG_DEVICE_VBLANK_INT called on device '%s' with no execute interface", device.tag());
- exec->m_vblank_interrupt = function;
- exec->m_vblank_interrupt_screen = tag;
-}
-
-
-//-------------------------------------------------
-// static_set_periodic_int - configuration helper
-// to set up periodic interrupts on the device
-//-------------------------------------------------
-
-void device_execute_interface::static_set_periodic_int(device_t &device, device_interrupt_delegate function, const attotime &rate)
-{
- device_execute_interface *exec;
- if (!device.interface(exec))
- throw emu_fatalerror("MCFG_DEVICE_PERIODIC_INT called on device '%s' with no execute interface", device.tag());
- exec->m_timed_interrupt = function;
- exec->m_timed_interrupt_period = rate;
-}
-
-
-//-------------------------------------------------
-// set_irq_acknowledge_callback - configuration helper
-// to setup callback for IRQ acknowledge
-//-------------------------------------------------
-
-void device_execute_interface::static_set_irq_acknowledge_callback(device_t &device, device_irq_acknowledge_delegate callback)
-{
- device_execute_interface *exec;
- if (!device.interface(exec))
- throw emu_fatalerror("MCFG_DEVICE_IRQ_ACKNOWLEDGE called on device '%s' with no execute interface", device.tag());
- exec->m_driver_irq = callback;
-}
-
-
-//-------------------------------------------------
// executing - return true if this device is
// within its execute function
//-------------------------------------------------
diff --git a/src/emu/diexec.h b/src/emu/diexec.h
index c307400dd69..ded5a024d06 100644
--- a/src/emu/diexec.h
+++ b/src/emu/diexec.h
@@ -86,25 +86,25 @@ enum
//**************************************************************************
#define MCFG_DEVICE_DISABLE() \
- device_execute_interface::static_set_disable(*device);
+ dynamic_cast<device_execute_interface &>(*device).set_disable();
#define MCFG_DEVICE_VBLANK_INT_DRIVER(_tag, _class, _func) \
- device_execute_interface::static_set_vblank_int(*device, device_interrupt_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr), _tag);
+ dynamic_cast<device_execute_interface &>(*device).set_vblank_int(device_interrupt_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr), _tag);
#define MCFG_DEVICE_VBLANK_INT_DEVICE(_tag, _devtag, _class, _func) \
- device_execute_interface::static_set_vblank_int(*device, device_interrupt_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr), _tag);
+ dynamic_cast<device_execute_interface &>(*device).set_vblank_int(device_interrupt_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr), _tag);
#define MCFG_DEVICE_VBLANK_INT_REMOVE() \
- device_execute_interface::static_set_vblank_int(*device, device_interrupt_delegate(), nullptr);
+ dynamic_cast<device_execute_interface &>(*device).set_vblank_int(device_interrupt_delegate(), nullptr);
#define MCFG_DEVICE_PERIODIC_INT_DRIVER(_class, _func, _rate) \
- device_execute_interface::static_set_periodic_int(*device, device_interrupt_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr), attotime::from_hz(_rate));
+ dynamic_cast<device_execute_interface &>(*device).set_periodic_int(device_interrupt_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr), attotime::from_hz(_rate));
#define MCFG_DEVICE_PERIODIC_INT_DEVICE(_devtag, _class, _func, _rate) \
- device_execute_interface::static_set_periodic_int(*device, device_interrupt_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr), attotime::from_hz(_rate));
+ dynamic_cast<device_execute_interface &>(*device).set_periodic_int(device_interrupt_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr), attotime::from_hz(_rate));
#define MCFG_DEVICE_PERIODIC_INT_REMOVE() \
- device_execute_interface::static_set_periodic_int(*device, device_interrupt_delegate(), attotime());
+ dynamic_cast<device_execute_interface &>(*device).set_periodic_int(device_interrupt_delegate(), attotime());
#define MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(_class, _func) \
- device_execute_interface::static_set_irq_acknowledge_callback(*device, device_irq_acknowledge_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr));
+ dynamic_cast<device_execute_interface &>(*device).set_irq_acknowledge_callback(device_irq_acknowledge_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)nullptr));
#define MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(_devtag, _class, _func) \
- device_execute_interface::static_set_irq_acknowledge_callback(*device, device_irq_acknowledge_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr));
+ dynamic_cast<device_execute_interface &>(*device).set_irq_acknowledge_callback(device_irq_acknowledge_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)nullptr));
#define MCFG_DEVICE_IRQ_ACKNOWLEDGE_REMOVE() \
- device_execute_interface::static_set_irq_acknowledge_callback(*device, device_irq_acknowledge_delegate());
+ dynamic_cast<device_execute_interface &>(*device).set_irq_acknowledge_callback(device_irq_acknowledge_delegate());
//**************************************************************************
@@ -143,11 +143,19 @@ public:
u32 input_lines() const { return execute_input_lines(); }
u32 default_irq_vector() const { return execute_default_irq_vector(); }
- // static inline configuration helpers
- static void static_set_disable(device_t &device);
- static void static_set_vblank_int(device_t &device, device_interrupt_delegate function, const char *tag, int rate = 0);
- static void static_set_periodic_int(device_t &device, device_interrupt_delegate function, const attotime &rate);
- static void static_set_irq_acknowledge_callback(device_t &device, device_irq_acknowledge_delegate callback);
+ // inline configuration helpers
+ void set_disable() { m_disabled = true; }
+ template <typename Object> void set_vblank_int(Object &&cb, const char *tag, int rate = 0)
+ {
+ m_vblank_interrupt = std::forward<Object>(cb);
+ m_vblank_interrupt_screen = tag;
+ }
+ template <typename Object> void set_periodic_int(Object &&cb, const attotime &rate)
+ {
+ m_timed_interrupt = std::forward<Object>(cb);
+ m_timed_interrupt_period = rate;
+ }
+ template <typename Object> void set_irq_acknowledge_callback(Object &&cb) { m_driver_irq = std::forward<Object>(cb); }
// execution management
device_scheduler &scheduler() const { assert(m_scheduler != nullptr); return *m_scheduler; }
diff --git a/src/emu/digfx.cpp b/src/emu/digfx.cpp
index 3dfb1a29458..3f6ed1b4804 100644
--- a/src/emu/digfx.cpp
+++ b/src/emu/digfx.cpp
@@ -42,37 +42,6 @@ device_gfx_interface::~device_gfx_interface()
//-------------------------------------------------
-// static_set_info: configuration helper to set
-// the gfxdecode info used by the device
-//-------------------------------------------------
-
-void device_gfx_interface::static_set_info(device_t &device, const gfx_decode_entry *gfxinfo)
-{
- device_gfx_interface *gfx;
- if (!device.interface(gfx))
- throw emu_fatalerror("MCFG_GFX_INFO called on device '%s' with no gfx interface\n", device.tag());
-
- gfx->m_gfxdecodeinfo = gfxinfo;
-}
-
-
-//-------------------------------------------------
-// static_set_palette: configuration helper to
-// set the palette used by the device
-//-------------------------------------------------
-
-void device_gfx_interface::static_set_palette(device_t &device, const char *tag)
-{
- device_gfx_interface *gfx;
- if (!device.interface(gfx))
- throw emu_fatalerror("MCFG_GFX_PALETTE called on device '%s' with no gfx interface\n", device.tag());
-
- gfx->m_palette_tag = tag;
- gfx->m_palette_is_sibling = true;
-}
-
-
-//-------------------------------------------------
// set_palette_disable: configuration helper to
// disable the use of a palette by the device
//-------------------------------------------------
diff --git a/src/emu/digfx.h b/src/emu/digfx.h
index a9a3d060fc5..8c4ebdb5fbe 100644
--- a/src/emu/digfx.h
+++ b/src/emu/digfx.h
@@ -128,10 +128,10 @@ const gfx_layout name = { width, height, RGN_FRAC(1,1), 8, { GFX_RAW }, { 0 }, {
//**************************************************************************
#define MCFG_GFX_PALETTE(_palette_tag) \
- device_gfx_interface::static_set_palette(*device, _palette_tag);
+ dynamic_cast<device_gfx_interface &>(*device).set_palette(_palette_tag);
#define MCFG_GFX_INFO(_info) \
- device_gfx_interface::static_set_info(*device, GFXDECODE_NAME(_info));
+ dynamic_cast<device_gfx_interface &>(*device).set_info(GFXDECODE_NAME(_info));
@@ -191,9 +191,9 @@ public:
const gfx_decode_entry *gfxinfo = nullptr, const char *palette_tag = nullptr);
virtual ~device_gfx_interface();
- // static configuration
- static void static_set_info(device_t &device, const gfx_decode_entry *gfxinfo);
- static void static_set_palette(device_t &device, const char *tag);
+ // configuration
+ void set_info(const gfx_decode_entry *gfxinfo) { m_gfxdecodeinfo = gfxinfo; }
+ void set_palette(const char *tag) { m_palette_tag = tag; m_palette_is_sibling = true; }
void set_palette_disable(bool disable);
diff --git a/src/emu/diimage.h b/src/emu/diimage.h
index 68b6c8a96ae..e58256a4d65 100644
--- a/src/emu/diimage.h
+++ b/src/emu/diimage.h
@@ -115,7 +115,7 @@ typedef delegate<void (device_image_interface &)> device_image_func_delegate;
#define DEVICE_IMAGE_UNLOAD_DELEGATE(_class,_name) device_image_func_delegate(&DEVICE_IMAGE_UNLOAD_NAME(_class,_name), downcast<_class *>(device->owner()))
#define MCFG_SET_IMAGE_LOADABLE(_usrload) \
- device_image_interface::static_set_user_loadable(*device, _usrload);
+ dynamic_cast<device_image_interface &>(*device).set_user_loadable(_usrload);
// ======================> device_image_interface
@@ -230,13 +230,7 @@ public:
bool load_software(software_list_device &swlist, const char *swname, const rom_entry *entry);
int reopen_for_write(const std::string &path);
- static void static_set_user_loadable(device_t &device, bool user_loadable) {
- device_image_interface *img;
- if (!device.interface(img))
- throw emu_fatalerror("MCFG_SET_IMAGE_LOADABLE called on device '%s' with no image interface\n", device.tag());
-
- img->m_user_loadable = user_loadable;
- }
+ void set_user_loadable(bool user_loadable) { m_user_loadable = user_loadable; }
bool user_loadable() const { return m_user_loadable; }
bool is_reset_and_loading() const { return m_is_reset_and_loading; }
diff --git a/src/emu/dioutput.h b/src/emu/dioutput.h
index 8e952a7dcd9..840ae9add23 100644
--- a/src/emu/dioutput.h
+++ b/src/emu/dioutput.h
@@ -19,10 +19,10 @@
//**************************************************************************
#define MCFG_OUTPUT_INDEX(_index) \
- device_output_interface::set_output_index(*device, _index);
+ dynamic_cast<device_output_interface &>(*device).set_output_index(_index);
#define MCFG_OUTPUT_NAME(_name) \
- device_output_interface::set_output_name(*device, _name);
+ dynamic_cast<device_output_interface &>(*device).set_output_name(_name);
@@ -39,8 +39,8 @@ public:
device_output_interface(const machine_config &mconfig, device_t &device);
virtual ~device_output_interface();
- static void set_output_index(device_t &device, int index) { dynamic_cast<device_output_interface &>(device).m_output_index = index; }
- static void set_output_name(device_t &device, const char *name) { dynamic_cast<device_output_interface &>(device).m_output_name = name; }
+ void set_output_index(int index) { m_output_index = index; }
+ void set_output_name(const char *name) { m_output_name = name; }
void set_output_value(int value) const;
void set_led_value(int value) const;
diff --git a/src/emu/dirom.cpp b/src/emu/dirom.cpp
index 87461926cf6..00d74222b61 100644
--- a/src/emu/dirom.cpp
+++ b/src/emu/dirom.cpp
@@ -14,15 +14,6 @@ device_rom_interface::~device_rom_interface()
{
}
-void device_rom_interface::static_set_device_rom_tag(device_t &device, const char *tag)
-{
- device_rom_interface *romintf;
- if (!device.interface(romintf))
- throw emu_fatalerror("MCFG_DEVICE_ROM called on device '%s' with no ROM interface\n", device.tag());
-
- romintf->m_rom_tag = tag;
-}
-
device_memory_interface::space_config_vector device_rom_interface::memory_space_config() const
{
return space_config_vector {
diff --git a/src/emu/dirom.h b/src/emu/dirom.h
index aae6a7f5097..911f2f98065 100644
--- a/src/emu/dirom.h
+++ b/src/emu/dirom.h
@@ -18,7 +18,7 @@
#define MAME_EMU_DIROM_H
#define MCFG_DEVICE_ROM(_rom_tag) \
- device_rom_interface::static_set_device_rom_tag(*device, _rom_tag);
+ dynamic_cast<device_rom_interface &>(*device).set_device_rom_tag(_rom_tag);
class device_rom_interface : public device_memory_interface
{
@@ -26,7 +26,7 @@ public:
device_rom_interface(const machine_config &mconfig, device_t &device, u8 addrwidth, endianness_t endian = ENDIANNESS_LITTLE, u8 datawidth = 8);
virtual ~device_rom_interface();
- static void static_set_device_rom_tag(device_t &device, const char *tag);
+ void set_device_rom_tag(const char *tag) { m_rom_tag = tag; }
inline u8 read_byte(offs_t byteaddress) { return m_rom_direct->read_byte(byteaddress); }
inline u16 read_word(offs_t byteaddress) { return m_rom_direct->read_word(byteaddress); }
diff --git a/src/emu/dislot.cpp b/src/emu/dislot.cpp
index ea80b1857bb..e89fd8b77bd 100644
--- a/src/emu/dislot.cpp
+++ b/src/emu/dislot.cpp
@@ -50,46 +50,32 @@ device_slot_option::device_slot_option(const char *name, const device_type &devt
// -------------------------------------------------
-// static_option_reset
+// option_add
// -------------------------------------------------
-void device_slot_interface::static_option_reset(device_t &device)
+void device_slot_interface::option_add(const char *name, const device_type &devtype)
{
- device_slot_interface &intf = dynamic_cast<device_slot_interface &>(device);
+ device_slot_option *slot_option = option(name);
- intf.m_options.clear();
+ if (slot_option != nullptr)
+ throw emu_fatalerror("slot '%s' duplicate option '%s'\n", device().tag(), name);
+ if (m_options.count(name) != 0) throw tag_add_exception(name);
+ m_options.emplace(std::make_pair(name, std::make_unique<device_slot_option>(name, devtype)));
}
// -------------------------------------------------
-// static_option_add
-// -------------------------------------------------
-
-void device_slot_interface::static_option_add(device_t &device, const char *name, const device_type &devtype)
-{
- device_slot_interface &intf = dynamic_cast<device_slot_interface &>(device);
- device_slot_option *option = intf.option(name);
-
- if (option != nullptr)
- throw emu_fatalerror("slot '%s' duplicate option '%s'\n", device.tag(), name);
- if (intf.m_options.count(name) != 0) throw tag_add_exception(name);
- intf.m_options.emplace(std::make_pair(name, std::make_unique<device_slot_option>(name, devtype)));
-}
-
-
-// -------------------------------------------------
-// static_option
+// option
// -------------------------------------------------
-device_slot_option *device_slot_interface::static_option(device_t &device, const char *name)
+device_slot_option *device_slot_interface::config_option(const char *name)
{
- device_slot_interface &intf = dynamic_cast<device_slot_interface &>(device);
- device_slot_option *option = intf.option(name);
+ device_slot_option *slot_option = option(name);
- if (option == nullptr)
- throw emu_fatalerror("slot '%s' has no option '%s'\n", device.tag(), name);
+ if (slot_option == nullptr)
+ throw emu_fatalerror("slot '%s' has no option '%s'\n", device().tag(), name);
- return option;
+ return slot_option;
}
diff --git a/src/emu/dislot.h b/src/emu/dislot.h
index 764962a3ee0..f8f1d5a8a70 100644
--- a/src/emu/dislot.h
+++ b/src/emu/dislot.h
@@ -31,31 +31,31 @@
//**************************************************************************
#define MCFG_SLOT_FIXED(_fixed) \
- device_slot_interface::static_set_fixed(*device, _fixed);
+ dynamic_cast<device_slot_interface &>(*device).set_fixed(_fixed);
#define MCFG_SLOT_DEFAULT_OPTION(_option) \
- device_slot_interface::static_set_default_option(*device, _option);
+ dynamic_cast<device_slot_interface &>(*device).set_default_option(_option);
#define MCFG_SLOT_OPTION_RESET \
- device_slot_interface::static_option_reset(*device);
+ dynamic_cast<device_slot_interface &>(*device).option_reset();
#define MCFG_SLOT_OPTION_ADD(_option, _devtype) \
- device_slot_interface::static_option_add(*device, _option, _devtype);
+ dynamic_cast<device_slot_interface &>(*device).option_add(_option, _devtype);
#define MCFG_SLOT_OPTION_SELECTABLE(_option, _selectable) \
- device_slot_interface::static_set_option_selectable(*device, _option, _selectable);
+ dynamic_cast<device_slot_interface &>(*device).set_option_selectable(_option, _selectable);
#define MCFG_SLOT_OPTION_DEFAULT_BIOS(_option, _default_bios) \
- device_slot_interface::static_set_option_default_bios(*device, _option, _default_bios);
+ dynamic_cast<device_slot_interface &>(*device).set_option_default_bios(_option, _default_bios);
#define MCFG_SLOT_OPTION_MACHINE_CONFIG(_option, _machine_config_name) \
- device_slot_interface::static_set_option_machine_config(*device, _option, _machine_config_name);
+ dynamic_cast<device_slot_interface &>(*device).set_option_machine_config(_option, _machine_config_name);
#define MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS(_option, _dev_inp_def) \
- device_slot_interface::static_set_option_device_input_defaults(*device, _option, DEVICE_INPUT_DEFAULTS_NAME(_dev_inp_def));
+ dynamic_cast<device_slot_interface &>(*device).set_option_device_input_defaults(_option, DEVICE_INPUT_DEFAULTS_NAME(_dev_inp_def));
#define MCFG_SLOT_OPTION_CLOCK(_option, _clock) \
- device_slot_interface::static_set_option_clock(*device, _option, _clock);
+ dynamic_cast<device_slot_interface &>(*device).set_option_clock(_option, _clock);
//**************************************************************************
@@ -128,15 +128,15 @@ public:
device_slot_interface(const machine_config &mconfig, device_t &device);
virtual ~device_slot_interface();
- static void static_set_fixed(device_t &device, bool fixed) { dynamic_cast<device_slot_interface &>(device).m_fixed = fixed; }
- static void static_set_default_option(device_t &device, const char *option) { dynamic_cast<device_slot_interface &>(device).m_default_option = option; }
- static void static_option_reset(device_t &device);
- static void static_option_add(device_t &device, const char *option, const device_type &devtype);
- static void static_set_option_selectable(device_t &device, const char *option, bool selectable){ static_option(device, option)->m_selectable = selectable; }
- static void static_set_option_default_bios(device_t &device, const char *option, const char *default_bios) { static_option(device, option)->m_default_bios = default_bios; }
- static void static_set_option_machine_config(device_t &device, const char *option, std::function<void (device_t *)> machine_config) { static_option(device, option)->m_machine_config = machine_config; }
- static void static_set_option_device_input_defaults(device_t &device, const char *option, const input_device_default *default_input) { static_option(device, option)->m_input_device_defaults = default_input; }
- static void static_set_option_clock(device_t &device, const char *option, u32 default_clock) { static_option(device, option)->m_clock = default_clock; }
+ void set_fixed(bool fixed) { m_fixed = fixed; }
+ void set_default_option(const char *option) { m_default_option = option; }
+ void option_reset() { m_options.clear(); }
+ void option_add(const char *option, const device_type &devtype);
+ void set_option_selectable(const char *option, bool selectable){ config_option(option)->m_selectable = selectable; }
+ void set_option_default_bios(const char *option, const char *default_bios) { config_option(option)->m_default_bios = default_bios; }
+ void set_option_machine_config(const char *option, std::function<void (device_t *)> machine_config) { config_option(option)->m_machine_config = machine_config; }
+ void set_option_device_input_defaults(const char *option, const input_device_default *default_input) { config_option(option)->m_input_device_defaults = default_input; }
+ void set_option_clock(const char *option, u32 default_clock) { config_option(option)->m_clock = default_clock; }
bool fixed() const { return m_fixed; }
bool has_selectable_options() const;
const char *default_option() const { return m_default_option; }
@@ -154,7 +154,7 @@ private:
bool m_fixed;
device_t *m_card_device;
- static device_slot_option *static_option(device_t &device, const char *option);
+ device_slot_option *config_option(const char *option);
};
// iterator
diff --git a/src/emu/disound.cpp b/src/emu/disound.cpp
index 9d0b93f70bc..3d84a24db71 100644
--- a/src/emu/disound.cpp
+++ b/src/emu/disound.cpp
@@ -39,40 +39,6 @@ device_sound_interface::~device_sound_interface()
//-------------------------------------------------
-// static_add_route - configuration helper to add
-// a new route to the device
-//-------------------------------------------------
-
-void device_sound_interface::static_add_route(device_t &device, u32 output, const char *target, double gain, u32 input, u32 mixoutput)
-{
- // find our sound interface
- device_sound_interface *sound;
- if (!device.interface(sound))
- throw emu_fatalerror("MCFG_SOUND_ROUTE called on device '%s' with no sound interface", device.tag());
-
- // append a new route to the list
- sound->m_route_list.push_back(std::make_unique<sound_route>(output, input, gain, target, mixoutput));
-}
-
-
-//-------------------------------------------------
-// static_reset_routes - configuration helper to
-// reset all existing routes to the device
-//-------------------------------------------------
-
-void device_sound_interface::static_reset_routes(device_t &device)
-{
- // find our sound interface
- device_sound_interface *sound;
- if (!device.interface(sound))
- throw emu_fatalerror("MCFG_SOUND_ROUTES_RESET called on device '%s' with no sound interface", device.tag());
-
- // reset the routine list
- sound->m_route_list.clear();
-}
-
-
-//-------------------------------------------------
// stream_alloc - allocate a stream implicitly
// associated with this device
//-------------------------------------------------
diff --git a/src/emu/disound.h b/src/emu/disound.h
index ee1f12b8f04..7c57b12b9bc 100644
--- a/src/emu/disound.h
+++ b/src/emu/disound.h
@@ -43,14 +43,14 @@ constexpr int AUTO_ALLOC_INPUT = 65535;
MCFG_DEVICE_REPLACE(_tag, _type, _clock)
#define MCFG_SOUND_ROUTE(_output, _target, _gain) \
- device_sound_interface::static_add_route(*device, _output, _target, _gain);
+ dynamic_cast<device_sound_interface &>(*device).add_route(_output, _target, _gain);
#define MCFG_SOUND_ROUTE_EX(_output, _target, _gain, _input) \
- device_sound_interface::static_add_route(*device, _output, _target, _gain, _input);
+ dynamic_cast<device_sound_interface &>(*device).add_route(_output, _target, _gain, _input);
#define MCFG_SOUND_ROUTES_RESET() \
- device_sound_interface::static_reset_routes(*device);
+ dynamic_cast<device_sound_interface &>(*device).reset_routes();
#define MCFG_MIXER_ROUTE(_output, _target, _gain, _mixoutput) \
- device_sound_interface::static_add_route(*device, _output, _target, _gain, AUTO_ALLOC_INPUT, _mixoutput);
+ dynamic_cast<device_sound_interface &>(*device).add_route(_output, _target, _gain, AUTO_ALLOC_INPUT, _mixoutput);
//**************************************************************************
@@ -84,9 +84,12 @@ public:
// configuration access
const std::vector<std::unique_ptr<sound_route>> &routes() const { return m_route_list; }
- // static inline configuration helpers
- static void static_add_route(device_t &device, u32 output, const char *target, double gain, u32 input = AUTO_ALLOC_INPUT, u32 mixoutput = 0);
- static void static_reset_routes(device_t &device);
+ // inline configuration helpers
+ void add_route(u32 output, const char *target, double gain, u32 input = AUTO_ALLOC_INPUT, u32 mixoutput = 0)
+ {
+ m_route_list.push_back(std::make_unique<sound_route>(output, input, gain, target, mixoutput));
+ }
+ void reset_routes() { m_route_list.clear(); }
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) = 0;
diff --git a/src/emu/divideo.cpp b/src/emu/divideo.cpp
index 7007487ef32..6a06aa3e857 100644
--- a/src/emu/divideo.cpp
+++ b/src/emu/divideo.cpp
@@ -43,21 +43,6 @@ device_video_interface::~device_video_interface()
//-------------------------------------------------
-// static_add_route - configuration helper to add
-// a new route to the device
-//-------------------------------------------------
-
-void device_video_interface::static_set_screen(device_t &device, const char *tag)
-{
- // find our video interface
- device_video_interface *video;
- if (!device.interface(video))
- throw emu_fatalerror("MCFG_VIDEO_SET_SCREEN called on device '%s' with no video interface", device.tag());
- video->m_screen_tag = tag;
-}
-
-
-//-------------------------------------------------
// interface_validity_check - validation for a
// device after the configuration has been
// constructed
diff --git a/src/emu/divideo.h b/src/emu/divideo.h
index e92000f4835..5e2c5d1798d 100644
--- a/src/emu/divideo.h
+++ b/src/emu/divideo.h
@@ -23,7 +23,7 @@
//**************************************************************************
#define MCFG_VIDEO_SET_SCREEN(_tag) \
- device_video_interface::static_set_screen(*device, _tag);
+ dynamic_cast<device_video_interface &>(*device).set_screen(_tag);
@@ -42,8 +42,8 @@ public:
device_video_interface(const machine_config &mconfig, device_t &device, bool screen_required = true);
virtual ~device_video_interface();
- // static configuration
- static void static_set_screen(device_t &device, const char *tag);
+ // configuration
+ void set_screen(const char *tag) { m_screen_tag = tag; }
// getters
screen_device &screen() const { return *m_screen; }
diff --git a/src/emu/emupal.cpp b/src/emu/emupal.cpp
index 25b0f634180..0c20c2fca3d 100644
--- a/src/emu/emupal.cpp
+++ b/src/emu/emupal.cpp
@@ -36,69 +36,6 @@ palette_device::palette_device(const machine_config &mconfig, const char *tag, d
//**************************************************************************
-// INITIALIZATION AND CONFIGURATION
-//**************************************************************************
-
-void palette_device::static_set_init(device_t &device, palette_init_delegate init)
-{
- downcast<palette_device &>(device).m_init = init;
-}
-
-
-void palette_device::static_set_format(device_t &device, raw_to_rgb_converter raw_to_rgb)
-{
- downcast<palette_device &>(device).m_raw_to_rgb = raw_to_rgb;
-}
-
-
-void palette_device::static_set_membits(device_t &device, int membits)
-{
- palette_device &palette = downcast<palette_device &>(device);
- palette.m_membits = membits;
- palette.m_membits_supplied = true;
-}
-
-
-void palette_device::static_set_endianness(device_t &device, endianness_t endianness)
-{
- palette_device &palette = downcast<palette_device &>(device);
- palette.m_endianness = endianness;
- palette.m_endianness_supplied = true;
-}
-
-
-void palette_device::static_set_entries(device_t &device, u32 entries)
-{
- downcast<palette_device &>(device).m_entries = entries;
-}
-
-
-void palette_device::static_set_indirect_entries(device_t &device, u32 entries)
-{
- downcast<palette_device &>(device).m_indirect_entries = entries;
-}
-
-
-void palette_device::static_enable_shadows(device_t &device)
-{
- downcast<palette_device &>(device).m_enable_shadows = true;
-}
-
-
-void palette_device::static_enable_hilights(device_t &device)
-{
- downcast<palette_device &>(device).m_enable_hilights = true;
-}
-
-
-void palette_device::static_set_prom_region(device_t &device, const char *region)
-{
- downcast<palette_device &>(device).m_prom_region.set_tag(region);
-}
-
-
-
-//**************************************************************************
// GENERIC WRITE HANDLERS
//**************************************************************************
diff --git a/src/emu/emupal.h b/src/emu/emupal.h
index 0dd33e3c79c..a447516cb21 100644
--- a/src/emu/emupal.h
+++ b/src/emu/emupal.h
@@ -178,105 +178,105 @@
MCFG_PALETTE_ENTRIES(_entries)
#define MCFG_PALETTE_ADD_INIT_BLACK(_tag, _entries) \
MCFG_PALETTE_ADD(_tag, _entries) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_all_black), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_all_black), downcast<palette_device *>(device)));
#define MCFG_PALETTE_MODIFY MCFG_DEVICE_MODIFY
#define MCFG_PALETTE_INIT_OWNER(_class, _method) \
- palette_device::static_set_init(*device, palette_init_delegate(&_class::PALETTE_INIT_NAME(_method), #_class "::palette_init_" #_method, this));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(&_class::PALETTE_INIT_NAME(_method), #_class "::palette_init_" #_method, this));
#define MCFG_PALETTE_INIT_DEVICE(_tag, _class, _method) \
- palette_device::static_set_init(*device, palette_init_delegate(&_class::PALETTE_INIT_NAME(_method), #_class "::palette_init_" #_method, _tag));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(&_class::PALETTE_INIT_NAME(_method), #_class "::palette_init_" #_method, _tag));
#define MCFG_PALETTE_FORMAT(_format) \
- palette_device::static_set_format(*device, PALETTE_FORMAT_##_format);
+ downcast<palette_device &>(*device).set_format(PALETTE_FORMAT_##_format);
#define MCFG_PALETTE_FORMAT_CLASS(_bytes_per_entry, _class, _method) \
- palette_device::static_set_format(*device, raw_to_rgb_converter(_bytes_per_entry, &_class::PALETTE_DECODER_NAME(_method)));
+ downcast<palette_device &>(*device).set_format(raw_to_rgb_converter(_bytes_per_entry, &_class::PALETTE_DECODER_NAME(_method)));
#define MCFG_PALETTE_MEMBITS(_width) \
- palette_device::static_set_membits(*device, _width);
+ downcast<palette_device &>(*device).set_membits(_width);
#define MCFG_PALETTE_ENDIANNESS(_endianness) \
- palette_device::static_set_endianness(*device, _endianness);
+ downcast<palette_device &>(*device).set_endianness(_endianness);
#define MCFG_PALETTE_ENTRIES(_entries) \
- palette_device::static_set_entries(*device, _entries);
+ downcast<palette_device &>(*device).set_entries(_entries);
#define MCFG_PALETTE_INDIRECT_ENTRIES(_entries) \
- palette_device::static_set_indirect_entries(*device, _entries);
+ downcast<palette_device &>(*device).set_indirect_entries(_entries);
#define MCFG_PALETTE_ENABLE_SHADOWS() \
- palette_device::static_enable_shadows(*device);
+ downcast<palette_device &>(*device).enable_shadows();
#define MCFG_PALETTE_ENABLE_HILIGHTS() \
- palette_device::static_enable_hilights(*device);
+ downcast<palette_device &>(*device).enable_hilights();
// monochrome palettes
#define MCFG_PALETTE_ADD_MONOCHROME(_tag) \
MCFG_PALETTE_ADD(_tag, 2) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_monochrome), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_monochrome), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_MONOCHROME_INVERTED(_tag) \
MCFG_PALETTE_ADD(_tag, 2) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_monochrome_inverted), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_monochrome_inverted), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT(_tag) \
MCFG_PALETTE_ADD(_tag, 3) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_monochrome_highlight), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_monochrome_highlight), downcast<palette_device *>(device)));
// 8-bit palettes
#define MCFG_PALETTE_ADD_3BIT_RGB(_tag) \
MCFG_PALETTE_ADD(_tag, 8) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_rgb), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_rgb), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_3BIT_RBG(_tag) \
MCFG_PALETTE_ADD(_tag, 8) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_rbg), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_rbg), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_3BIT_BRG(_tag) \
MCFG_PALETTE_ADD(_tag, 8) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_brg), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_brg), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_3BIT_GRB(_tag) \
MCFG_PALETTE_ADD(_tag, 8) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_grb), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_grb), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_3BIT_GBR(_tag) \
MCFG_PALETTE_ADD(_tag, 8) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_gbr), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_gbr), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_3BIT_BGR(_tag) \
MCFG_PALETTE_ADD(_tag, 8) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_bgr), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_3bit_bgr), downcast<palette_device *>(device)));
// 15-bit palettes
#define MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB(_tag) \
MCFG_PALETTE_ADD(_tag, 32768) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRRGGGGGBBBBB), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_RRRRRGGGGGBBBBB), downcast<palette_device *>(device)));
// 16-bit palettes
#define MCFG_PALETTE_ADD_BBBBBGGGGGRRRRR(_tag) \
MCFG_PALETTE_ADD(_tag, 32768) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_BBBBBGGGGGRRRRR), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_BBBBBGGGGGRRRRR), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB(_tag) \
MCFG_PALETTE_ADD(_tag, 65536) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRRGGGGGGBBBBB), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_RRRRRGGGGGGBBBBB), downcast<palette_device *>(device)));
// other standard palettes
#define MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS(_tag, _region, _entries) \
MCFG_PALETTE_ADD(_tag, _entries) \
- palette_device::static_set_prom_region(*device, "^" _region); \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_prom_region("^" _region); \
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms), downcast<palette_device *>(device)));
// not implemented yet
#if 0
#define MCFG_PALETTE_ADD_HARDCODED(_tag, _array) \
MCFG_PALETTE_ADD(_tag, sizeof(_array) / 3) \
- palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms), downcast<palette_device *>(device)));
+ downcast<palette_device &>(*device).set_init(palette_init_delegate(FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms), downcast<palette_device *>(device)));
#endif
@@ -362,16 +362,16 @@ public:
// construction/destruction
palette_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- // static configuration
- static void static_set_init(device_t &device, palette_init_delegate init);
- static void static_set_format(device_t &device, raw_to_rgb_converter raw_to_rgb);
- static void static_set_membits(device_t &device, int membits);
- static void static_set_endianness(device_t &device, endianness_t endianness);
- static void static_set_entries(device_t &device, u32 entries);
- static void static_set_indirect_entries(device_t &device, u32 entries);
- static void static_enable_shadows(device_t &device);
- static void static_enable_hilights(device_t &device);
- static void static_set_prom_region(device_t &device, const char *region);
+ // configuration
+ template <typename Object> void set_init(Object &&init) { m_init = std::forward<Object>(init); }
+ void set_format(raw_to_rgb_converter raw_to_rgb) { m_raw_to_rgb = raw_to_rgb; }
+ void set_membits(int membits) { m_membits = membits; m_membits_supplied = true; }
+ void set_endianness(endianness_t endianness) { m_endianness = endianness; m_endianness_supplied = true; }
+ void set_entries(u32 entries) { m_entries = entries; }
+ void set_indirect_entries(u32 entries) { m_entries = entries; }
+ void enable_shadows() { m_enable_shadows = true; }
+ void enable_hilights() { m_enable_hilights = true; }
+ void set_prom_region(const char *region) { m_prom_region.set_tag(region); }
// palette RAM accessors
memory_array &basemem() { return m_paletteram; }
diff --git a/src/emu/mconfig.cpp b/src/emu/mconfig.cpp
index d15c4e759b2..192300ccaa1 100644
--- a/src/emu/mconfig.cpp
+++ b/src/emu/mconfig.cpp
@@ -68,7 +68,7 @@ machine_config::machine_config(const game_driver &gamedrv, emu_options &options)
char const *const default_bios = option->default_bios();
if (default_bios != nullptr)
- device_t::static_set_default_bios_tag(*new_dev, default_bios);
+ new_dev->set_default_bios_tag(default_bios);
auto additions = option->machine_config();
if (additions)
@@ -76,7 +76,7 @@ machine_config::machine_config(const game_driver &gamedrv, emu_options &options)
input_device_default const *const input_device_defaults = option->input_device_defaults();
if (input_device_defaults)
- device_t::static_set_input_default(*new_dev, input_device_defaults);
+ new_dev->set_input_default(input_device_defaults);
}
else
throw emu_fatalerror("Unknown slot option '%s' in slot '%s'", selval, owner.tag()+1);
diff --git a/src/emu/screen.cpp b/src/emu/screen.cpp
index 94a520c3e5d..849a353ddb2 100644
--- a/src/emu/screen.cpp
+++ b/src/emu/screen.cpp
@@ -601,159 +601,6 @@ screen_device::~screen_device()
//-------------------------------------------------
-// static_set_type - configuration helper
-// to set the screen type
-//-------------------------------------------------
-
-void screen_device::static_set_type(device_t &device, screen_type_enum type)
-{
- downcast<screen_device &>(device).m_type = type;
-}
-
-
-void screen_device::static_set_svg_region(device_t &device, const char *region)
-{
- downcast<screen_device &>(device).m_svg_region = region;
-}
-
-
-//-------------------------------------------------
-// static_set_raw - configuration helper
-// to set the raw screen parameters
-//-------------------------------------------------
-
-void screen_device::static_set_raw(device_t &device, u32 pixclock, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart)
-{
- screen_device &screen = downcast<screen_device &>(device);
- screen.m_clock = pixclock;
- screen.m_refresh = HZ_TO_ATTOSECONDS(pixclock) * htotal * vtotal;
- screen.m_vblank = screen.m_refresh / vtotal * (vtotal - (vbstart - vbend));
- screen.m_width = htotal;
- screen.m_height = vtotal;
- screen.m_visarea.set(hbend, hbstart - 1, vbend, vbstart - 1);
-}
-
-
-//-------------------------------------------------
-// static_set_refresh - configuration helper
-// to set the refresh rate
-//-------------------------------------------------
-
-void screen_device::static_set_refresh(device_t &device, attoseconds_t rate)
-{
- downcast<screen_device &>(device).m_refresh = rate;
-}
-
-
-//-------------------------------------------------
-// static_set_vblank_time - configuration helper
-// to set the VBLANK duration
-//-------------------------------------------------
-
-void screen_device::static_set_vblank_time(device_t &device, attoseconds_t time)
-{
- screen_device &screen = downcast<screen_device &>(device);
- screen.m_vblank = time;
- screen.m_oldstyle_vblank_supplied = true;
-}
-
-
-//-------------------------------------------------
-// static_set_size - configuration helper to set
-// the width/height of the screen
-//-------------------------------------------------
-
-void screen_device::static_set_size(device_t &device, u16 width, u16 height)
-{
- screen_device &screen = downcast<screen_device &>(device);
- screen.m_width = width;
- screen.m_height = height;
-}
-
-
-//-------------------------------------------------
-// static_set_visarea - configuration helper to
-// set the visible area of the screen
-//-------------------------------------------------
-
-void screen_device::static_set_visarea(device_t &device, s16 minx, s16 maxx, s16 miny, s16 maxy)
-{
- downcast<screen_device &>(device).m_visarea.set(minx, maxx, miny, maxy);
-}
-
-
-//-------------------------------------------------
-// static_set_default_position - configuration
-// helper to set the default position and scale
-// factors for the screen
-//-------------------------------------------------
-
-void screen_device::static_set_default_position(device_t &device, double xscale, double xoffs, double yscale, double yoffs)
-{
- screen_device &screen = downcast<screen_device &>(device);
- screen.m_xscale = xscale;
- screen.m_xoffset = xoffs;
- screen.m_yscale = yscale;
- screen.m_yoffset = yoffs;
-}
-
-
-//-------------------------------------------------
-// static_set_screen_update - set the legacy(?)
-// screen update callback in the device
-// configuration
-//-------------------------------------------------
-
-void screen_device::static_set_screen_update(device_t &device, screen_update_ind16_delegate callback)
-{
- screen_device &screen = downcast<screen_device &>(device);
- screen.m_screen_update_ind16 = callback;
- screen.m_screen_update_rgb32 = screen_update_rgb32_delegate();
-}
-
-void screen_device::static_set_screen_update(device_t &device, screen_update_rgb32_delegate callback)
-{
- screen_device &screen = downcast<screen_device &>(device);
- screen.m_screen_update_ind16 = screen_update_ind16_delegate();
- screen.m_screen_update_rgb32 = callback;
-}
-
-
-//-------------------------------------------------
-// static_set_palette - set the screen palette
-// configuration
-//-------------------------------------------------
-
-void screen_device::static_set_palette(device_t &device, const char *tag)
-{
- downcast<screen_device &>(device).m_palette_tag = tag;
-}
-
-
-//-------------------------------------------------
-// static_set_video_attributes - set the screen
-// video attributes
-//-------------------------------------------------
-
-void screen_device::static_set_video_attributes(device_t &device, u32 flags)
-{
- screen_device &screen = downcast<screen_device &>(device);
- screen.m_video_attributes = flags;
-}
-
-
-//-------------------------------------------------
-// static_set_color - set the screen global color
-//-------------------------------------------------
-
-void screen_device::static_set_color(device_t &device, rgb_t color)
-{
- screen_device &screen = downcast<screen_device &>(device);
- screen.m_color = color;
-}
-
-
-//-------------------------------------------------
// device_validity_check - verify device
// configuration
//-------------------------------------------------
diff --git a/src/emu/screen.h b/src/emu/screen.h
index 2297a8514e2..a66a2f90f53 100644
--- a/src/emu/screen.h
+++ b/src/emu/screen.h
@@ -187,21 +187,42 @@ public:
bool have_screen_update() const { return !m_screen_update_ind16.isnull() && !m_screen_update_rgb32.isnull(); }
// inline configuration helpers
- static void static_set_type(device_t &device, screen_type_enum type);
- static void static_set_raw(device_t &device, u32 pixclock, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart);
- static void static_set_raw(device_t &device, const XTAL &xtal, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart) { static_set_raw(device, xtal.value(), htotal, hbend, hbstart, vtotal, vbend, vbstart); }
- static void static_set_refresh(device_t &device, attoseconds_t rate);
- static void static_set_vblank_time(device_t &device, attoseconds_t time);
- static void static_set_size(device_t &device, u16 width, u16 height);
- static void static_set_visarea(device_t &device, s16 minx, s16 maxx, s16 miny, s16 maxy);
- static void static_set_default_position(device_t &device, double xscale, double xoffs, double yscale, double yoffs);
- static void static_set_screen_update(device_t &device, screen_update_ind16_delegate callback);
- static void static_set_screen_update(device_t &device, screen_update_rgb32_delegate callback);
- template<class Object> static devcb_base &static_set_screen_vblank(device_t &device, Object &&object) { return downcast<screen_device &>(device).m_screen_vblank.set_callback(std::forward<Object>(object)); }
- static void static_set_palette(device_t &device, const char *tag);
- static void static_set_video_attributes(device_t &device, u32 flags);
- static void static_set_color(device_t &device, rgb_t color);
- static void static_set_svg_region(device_t &device, const char *region);
+ void set_type(screen_type_enum type) { m_type = type; }
+ void set_raw(u32 pixclock, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart)
+ {
+ m_clock = pixclock;
+ m_refresh = HZ_TO_ATTOSECONDS(pixclock) * htotal * vtotal;
+ m_vblank = m_refresh / vtotal * (vtotal - (vbstart - vbend));
+ m_width = htotal;
+ m_height = vtotal;
+ m_visarea.set(hbend, hbstart - 1, vbend, vbstart - 1);
+ }
+ void set_raw(const XTAL &xtal, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart) { set_raw(xtal.value(), htotal, hbend, hbstart, vtotal, vbend, vbstart); }
+ void set_refresh(attoseconds_t rate) { m_refresh = rate; }
+ void set_vblank_time(attoseconds_t time) { m_vblank = time; m_oldstyle_vblank_supplied = true; }
+ void set_size(u16 width, u16 height) { m_width = width; m_height = height; }
+ void set_visarea(s16 minx, s16 maxx, s16 miny, s16 maxy) { m_visarea.set(minx, maxx, miny, maxy); }
+ void set_default_position(double xscale, double xoffs, double yscale, double yoffs) {
+ m_xscale = xscale;
+ m_xoffset = xoffs;
+ m_yscale = yscale;
+ m_yoffset = yoffs;
+ }
+ void set_screen_update(screen_update_ind16_delegate callback)
+ {
+ m_screen_update_ind16 = callback;
+ m_screen_update_rgb32 = screen_update_rgb32_delegate();
+ }
+ void set_screen_update(screen_update_rgb32_delegate callback)
+ {
+ m_screen_update_ind16 = screen_update_ind16_delegate();
+ m_screen_update_rgb32 = callback;
+ }
+ template<class Object> devcb_base &set_screen_vblank(Object &&object) { return m_screen_vblank.set_callback(std::forward<Object>(object)); }
+ void set_palette(const char *tag) { m_palette_tag = tag; }
+ void set_video_attributes(u32 flags) { m_video_attributes = flags; }
+ void set_color(rgb_t color) { m_color = color; }
+ void set_svg_region(const char *region) { m_svg_region = region; }
// information getters
render_container &container() const { assert(m_container != nullptr); return *m_container; }
@@ -460,43 +481,43 @@ typedef device_type_iterator<screen_device> screen_device_iterator;
MCFG_DEVICE_MODIFY(_tag)
#define MCFG_SCREEN_TYPE(_type) \
- screen_device::static_set_type(*device, SCREEN_TYPE_##_type);
+ downcast<screen_device &>(*device).set_type(SCREEN_TYPE_##_type);
#define MCFG_SCREEN_SVG_ADD(_tag, _region) \
MCFG_DEVICE_ADD(_tag, SCREEN, 0) \
MCFG_SCREEN_TYPE(SVG) \
- screen_device::static_set_svg_region(*device, _region);
+ downcast<screen_device &>(*device).set_svg_region(_region);
#define MCFG_SCREEN_RAW_PARAMS(_pixclock, _htotal, _hbend, _hbstart, _vtotal, _vbend, _vbstart) \
- screen_device::static_set_raw(*device, _pixclock, _htotal, _hbend, _hbstart, _vtotal, _vbend, _vbstart);
+ downcast<screen_device &>(*device).set_raw(_pixclock, _htotal, _hbend, _hbstart, _vtotal, _vbend, _vbstart);
#define MCFG_SCREEN_REFRESH_RATE(_rate) \
- screen_device::static_set_refresh(*device, HZ_TO_ATTOSECONDS(_rate));
+ downcast<screen_device &>(*device).set_refresh(HZ_TO_ATTOSECONDS(_rate));
#define MCFG_SCREEN_VBLANK_TIME(_time) \
- screen_device::static_set_vblank_time(*device, _time);
+ downcast<screen_device &>(*device).set_vblank_time(_time);
#define MCFG_SCREEN_SIZE(_width, _height) \
- screen_device::static_set_size(*device, _width, _height);
+ downcast<screen_device &>(*device).set_size(_width, _height);
#define MCFG_SCREEN_VISIBLE_AREA(_minx, _maxx, _miny, _maxy) \
- screen_device::static_set_visarea(*device, _minx, _maxx, _miny, _maxy);
+ downcast<screen_device &>(*device).set_visarea(_minx, _maxx, _miny, _maxy);
#define MCFG_SCREEN_DEFAULT_POSITION(_xscale, _xoffs, _yscale, _yoffs) \
- screen_device::static_set_default_position(*device, _xscale, _xoffs, _yscale, _yoffs);
+ downcast<screen_device &>(*device).set_default_position(_xscale, _xoffs, _yscale, _yoffs);
#define MCFG_SCREEN_UPDATE_DRIVER(_class, _method) \
- screen_device::static_set_screen_update(*device, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, nullptr));
+ downcast<screen_device &>(*device).set_screen_update(screen_update_delegate_smart(&_class::_method, #_class "::" #_method, nullptr));
#define MCFG_SCREEN_UPDATE_DEVICE(_device, _class, _method) \
- screen_device::static_set_screen_update(*device, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, _device));
+ downcast<screen_device &>(*device).set_screen_update(screen_update_delegate_smart(&_class::_method, #_class "::" #_method, _device));
#define MCFG_SCREEN_VBLANK_CALLBACK(_devcb) \
- devcb = &screen_device::static_set_screen_vblank(*device, DEVCB_##_devcb);
+ devcb = &downcast<screen_device &>(*device).set_screen_vblank(DEVCB_##_devcb);
#define MCFG_SCREEN_PALETTE(_palette_tag) \
- screen_device::static_set_palette(*device, _palette_tag);
+ downcast<screen_device &>(*device).set_palette(_palette_tag);
#define MCFG_SCREEN_NO_PALETTE \
- screen_device::static_set_palette(*device, nullptr);
+ downcast<screen_device &>(*device).set_palette(nullptr);
#define MCFG_SCREEN_VIDEO_ATTRIBUTES(_flags) \
- screen_device::static_set_video_attributes(*device, _flags);
+ downcast<screen_device &>(*device).set_video_attributes(_flags);
#define MCFG_SCREEN_COLOR(_color) \
- screen_device::static_set_color(*device, _color);
+ downcast<screen_device &>(*device).set_color(_color);
//**************************************************************************
diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp
index d9dc013a26f..43eb72427c1 100644
--- a/src/emu/softlist_dev.cpp
+++ b/src/emu/softlist_dev.cpp
@@ -91,30 +91,6 @@ software_list_device::software_list_device(const machine_config &mconfig, const
//-------------------------------------------------
-// static_set_type - configuration helper
-// to set the list type
-//-------------------------------------------------
-
-void software_list_device::static_set_type(device_t &device, const char *list, softlist_type list_type)
-{
- software_list_device &swlistdev = downcast<software_list_device &>(device);
- swlistdev.m_list_name.assign(list);
- swlistdev.m_list_type = list_type;
-}
-
-
-//-------------------------------------------------
-// static_set_custom_handler - configuration
-// helper to set a custom callback
-//-------------------------------------------------
-
-void software_list_device::static_set_filter(device_t &device, const char *filter)
-{
- downcast<software_list_device &>(device).m_filter = filter;
-}
-
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/emu/softlist_dev.h b/src/emu/softlist_dev.h
index e5c893cd60a..7f6649e1fb7 100644
--- a/src/emu/softlist_dev.h
+++ b/src/emu/softlist_dev.h
@@ -44,7 +44,7 @@ enum software_compatibility
//**************************************************************************
#define MCFG_SOFTWARE_LIST_CONFIG(_list,_list_type) \
- software_list_device::static_set_type(*device, _list, _list_type);
+ downcast<software_list_device &>(*device).set_type(_list, _list_type);
#define MCFG_SOFTWARE_LIST_ADD( _tag, _list ) \
MCFG_DEVICE_ADD( _tag, SOFTWARE_LIST, 0 ) \
@@ -64,7 +64,7 @@ enum software_compatibility
#define MCFG_SOFTWARE_LIST_FILTER( _tag, _filter ) \
MCFG_DEVICE_MODIFY( _tag ) \
- software_list_device::static_set_filter(*device, _filter);
+ downcast<software_list_device &>(*device).set_filter(_filter);
#define MCFG_SOFTWARE_LIST_REMOVE( _tag ) \
MCFG_DEVICE_REMOVE( _tag )
@@ -135,8 +135,8 @@ public:
software_list_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// inline configuration helpers
- static void static_set_type(device_t &device, const char *list, softlist_type list_type);
- static void static_set_filter(device_t &device, const char *filter);
+ void set_type(const char *list, softlist_type list_type) { m_list_name.assign(list); m_list_type = list_type; }
+ void set_filter(const char *filter) { m_filter = filter; }
// getters
const std::string &list_name() const { return m_list_name; }
diff --git a/src/emu/speaker.cpp b/src/emu/speaker.cpp
index 53ac40004c8..177bfa0c590 100644
--- a/src/emu/speaker.cpp
+++ b/src/emu/speaker.cpp
@@ -70,20 +70,6 @@ speaker_device::~speaker_device()
//-------------------------------------------------
-// static_set_position - configuration helper to
-// set the speaker position
-//-------------------------------------------------
-
-void speaker_device::static_set_position(device_t &device, double x, double y, double z)
-{
- speaker_device &speaker = downcast<speaker_device &>(device);
- speaker.m_x = x;
- speaker.m_y = y;
- speaker.m_z = z;
-}
-
-
-//-------------------------------------------------
// mix - mix in samples from the speaker's stream
//-------------------------------------------------
diff --git a/src/emu/speaker.h b/src/emu/speaker.h
index dd0c46479be..4665dbdf2e8 100644
--- a/src/emu/speaker.h
+++ b/src/emu/speaker.h
@@ -29,7 +29,7 @@ DECLARE_DEVICE_TYPE(SPEAKER, speaker_device)
// add/remove speakers
#define MCFG_SPEAKER_ADD(_tag, _x, _y, _z) \
MCFG_DEVICE_ADD(_tag, SPEAKER, 0) \
- speaker_device::static_set_position(*device, _x, _y, _z);
+ downcast<speaker_device &>(*device).set_position(_x, _y, _z);
#define MCFG_SPEAKER_STANDARD_MONO(_tag) \
MCFG_SPEAKER_ADD(_tag, 0.0, 0.0, 1.0)
@@ -53,7 +53,7 @@ public:
virtual ~speaker_device();
// inline configuration helpers
- static void static_set_position(device_t &device, double x, double y, double z);
+ void set_position(double x, double y, double z) { m_x = x; m_y = y; m_z = z; }
// internally for use by the sound system
void mix(s32 *leftmix, s32 *rightmix, int &samples_this_update, bool suppress);
diff --git a/src/emu/tilemap.cpp b/src/emu/tilemap.cpp
index 3329b98acbe..0b7b748a494 100644
--- a/src/emu/tilemap.cpp
+++ b/src/emu/tilemap.cpp
@@ -1626,87 +1626,6 @@ tilemap_device::tilemap_device(const machine_config &mconfig, const char *tag, d
//-------------------------------------------------
-// static_set_gfxdecode_tag: Set the tag of the
-// gfx decoder
-//-------------------------------------------------
-
-void tilemap_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
-{
- downcast<tilemap_device &>(device).m_gfxdecode.set_tag(tag);
-}
-
-
-//-------------------------------------------------
-// static_set_bytes_per_entry: Set the
-// transparent pen
-//-------------------------------------------------
-
-void tilemap_device::static_set_bytes_per_entry(device_t &device, int bpe)
-{
- downcast<tilemap_device &>(device).m_bytes_per_entry = bpe;
-}
-
-
-//-------------------------------------------------
-// static_set_info_callback: Set the get info
-// callback delegate
-//-------------------------------------------------
-
-void tilemap_device::static_set_info_callback(device_t &device, tilemap_get_info_delegate get_info)
-{
- downcast<tilemap_device &>(device).m_get_info = get_info;
-}
-
-
-//-------------------------------------------------
-// static_set_layout: Set the tilemap size and
-// layout
-//-------------------------------------------------
-
-void tilemap_device::static_set_layout(device_t &device, tilemap_standard_mapper mapper, u32 columns, u32 rows)
-{
- tilemap_device &target = downcast<tilemap_device &>(device);
- target.m_standard_mapper = mapper;
- target.m_num_columns = columns;
- target.m_num_rows = rows;
-}
-
-void tilemap_device::static_set_layout(device_t &device, tilemap_mapper_delegate mapper, u32 columns, u32 rows)
-{
- tilemap_device &target = downcast<tilemap_device &>(device);
- target.m_standard_mapper = TILEMAP_STANDARD_COUNT;
- target.m_mapper = mapper;
- target.m_num_columns = columns;
- target.m_num_rows = rows;
-}
-
-
-//-------------------------------------------------
-// static_set_tile_size: Set the tile size
-//-------------------------------------------------
-
-void tilemap_device::static_set_tile_size(device_t &device, u16 width, u16 height)
-{
- tilemap_device &target = downcast<tilemap_device &>(device);
- target.m_tile_width = width;
- target.m_tile_height = height;
-}
-
-
-//-------------------------------------------------
-// static_set_transparent_pen: Set the
-// transparent pen
-//-------------------------------------------------
-
-void tilemap_device::static_set_transparent_pen(device_t &device, pen_t pen)
-{
- tilemap_device &target = downcast<tilemap_device &>(device);
- target.m_transparent_pen_set = true;
- target.m_transparent_pen = pen;
-}
-
-
-//-------------------------------------------------
// write: Main memory writes
//-------------------------------------------------
diff --git a/src/emu/tilemap.h b/src/emu/tilemap.h
index 3fd24f21a78..10a6bdfba06 100644
--- a/src/emu/tilemap.h
+++ b/src/emu/tilemap.h
@@ -370,23 +370,23 @@ enum tilemap_standard_mapper
#define MCFG_TILEMAP_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, TILEMAP, 0)
#define MCFG_TILEMAP_GFXDECODE(_gfxtag) \
- tilemap_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+ downcast<tilemap_device &>(*device).set_gfxdecode_tag("^" _gfxtag);
#define MCFG_TILEMAP_BYTES_PER_ENTRY(_bpe) \
- tilemap_device::static_set_bytes_per_entry(*device, _bpe);
+ downcast<tilemap_device &>(*device).set_bytes_per_entry(_bpe);
#define MCFG_TILEMAP_INFO_CB_DRIVER(_class, _method) \
- tilemap_device::static_set_info_callback(*device, tilemap_get_info_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
+ downcast<tilemap_device &>(*device).set_info_callback(tilemap_get_info_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
#define MCFG_TILEMAP_INFO_CB_DEVICE(_device, _class, _method) \
- tilemap_device::static_set_info_callback(*device, tilemap_get_info_delegate(&_class::_method, #_class "::" #_method, _device, (_class *)nullptr));
+ downcast<tilemap_device &>(*device).set_info_callback(tilemap_get_info_delegate(&_class::_method, #_class "::" #_method, _device, (_class *)nullptr));
#define MCFG_TILEMAP_LAYOUT_STANDARD(_standard, _columns, _rows) \
- tilemap_device::static_set_layout(*device, TILEMAP_##_standard, _columns, _rows);
+ downcast<tilemap_device &>(*device).set_layout(TILEMAP_##_standard, _columns, _rows);
#define MCFG_TILEMAP_LAYOUT_CB_DRIVER(_class, _method, _columns, _rows) \
- tilemap_device::static_set_layout(*device, tilemap_mapper_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr), _columns, _rows);
+ downcast<tilemap_device &>(*device).set_layout(tilemap_mapper_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr), _columns, _rows);
#define MCFG_TILEMAP_LAYOUT_CB_DEVICE(_device, _class, _method, _columns, _rows) \
- tilemap_device::static_set_layout(*device, tilemap_mapper_delegate(&_class::_method, #_class "::" #_method, _device, (_class *)nullptr), _columns, _rows);
+ downcast<tilemap_device &>(*device).set_layout(tilemap_mapper_delegate(&_class::_method, #_class "::" #_method, _device, (_class *)nullptr), _columns, _rows);
#define MCFG_TILEMAP_TILE_SIZE(_width, _height) \
- tilemap_device::static_set_tile_size(*device, _width, _height);
+ downcast<tilemap_device &>(*device).set_tile_size(_width, _height);
#define MCFG_TILEMAP_TRANSPARENT_PEN(_pen) \
- tilemap_device::static_set_transparent_pen(*device, _pen);
+ downcast<tilemap_device &>(*device).set_transparent_pen(_pen);
// common cases
#define MCFG_TILEMAP_ADD_STANDARD(_tag, _gfxtag, _bytes_per_entry, _class, _method, _tilewidth, _tileheight, _mapper, _columns, _rows) \
@@ -720,14 +720,23 @@ public:
// construction/destruction
tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- // static configuration
- static void static_set_gfxdecode_tag(device_t &device, const char *tag);
- static void static_set_bytes_per_entry(device_t &device, int bpe);
- static void static_set_info_callback(device_t &device, tilemap_get_info_delegate tile_get_info);
- static void static_set_layout(device_t &device, tilemap_standard_mapper mapper, u32 columns, u32 rows);
- static void static_set_layout(device_t &device, tilemap_mapper_delegate mapper, u32 columns, u32 rows);
- static void static_set_tile_size(device_t &device, u16 width, u16 height);
- static void static_set_transparent_pen(device_t &device, pen_t pen);
+ // configuration
+ void set_gfxdecode_tag(const char *tag) { m_gfxdecode.set_tag(tag); }
+ void set_bytes_per_entry(int bpe) { m_bytes_per_entry = bpe; }
+ void set_info_callback(tilemap_get_info_delegate tile_get_info) { m_get_info = tile_get_info; }
+ void set_layout(tilemap_standard_mapper mapper, u32 columns, u32 rows) {
+ m_standard_mapper = mapper;
+ m_num_columns = columns;
+ m_num_rows = rows;
+ }
+ void set_layout(tilemap_mapper_delegate mapper, u32 columns, u32 rows) {
+ m_standard_mapper = TILEMAP_STANDARD_COUNT;
+ m_mapper = mapper;
+ m_num_columns = columns;
+ m_num_rows = rows;
+ }
+ void set_tile_size(u16 width, u16 height) { m_tile_width = width; m_tile_height = height; }
+ void set_transparent_pen(pen_t pen) { m_transparent_pen_set = true; m_transparent_pen = pen; }
// getters
memory_array &basemem() { return m_basemem; }
diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp
index 0943282bb18..bf94da8cdce 100644
--- a/src/emu/validity.cpp
+++ b/src/emu/validity.cpp
@@ -1956,7 +1956,7 @@ void validity_checker::validate_devices()
const char *const def_bios = option.second->default_bios();
if (def_bios)
- device_t::static_set_default_bios_tag(*card, def_bios);
+ card->set_default_bios_tag(def_bios);
auto additions = option.second->machine_config();
if (additions)
additions(card);
@@ -1971,7 +1971,7 @@ void validity_checker::validate_devices()
device_t *const sub_card = m_current_config->device_add(&subslot.device(), suboption->name(), suboption->devtype(), suboption->clock());
const char *const sub_bios = suboption->default_bios();
if (sub_bios)
- device_t::static_set_default_bios_tag(*sub_card, sub_bios);
+ sub_card->set_default_bios_tag(sub_bios);
auto sub_additions = suboption->machine_config();
if (sub_additions)
sub_additions(sub_card);
diff --git a/src/mame/drivers/asst128.cpp b/src/mame/drivers/asst128.cpp
index 27d12505463..6273c3e69b3 100644
--- a/src/mame/drivers/asst128.cpp
+++ b/src/mame/drivers/asst128.cpp
@@ -102,7 +102,7 @@ MACHINE_CONFIG_START(asst128_state::asst128)
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
MCFG_DEVICE_ADD("mb", ASST128_MOTHERBOARD, 0)
- asst128_mb_device::static_set_cputag(*device, "^maincpu");
+ downcast<asst128_mb_device &>(*device).set_cputag("^maincpu");
MCFG_DEVICE_INPUT_DEFAULTS(asst128)
MCFG_DEVICE_MODIFY("mb:cassette")
diff --git a/src/mame/drivers/at.cpp b/src/mame/drivers/at.cpp
index f19fec5d715..c918083fd8f 100644
--- a/src/mame/drivers/at.cpp
+++ b/src/mame/drivers/at.cpp
@@ -392,14 +392,14 @@ MACHINE_START_MEMBER(at_state,vrom_fix)
void at_state::cfg_single_1200K(device_t *device)
{
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "525hd");
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), "");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("525hd");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("");
}
void at_state::cfg_single_360K(device_t *device)
{
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "525dd");
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), "");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("525dd");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("");
}
static SLOT_INTERFACE_START( pci_devices )
diff --git a/src/mame/drivers/europc.cpp b/src/mame/drivers/europc.cpp
index ee390c6ff53..7fa2d3cab2e 100644
--- a/src/mame/drivers/europc.cpp
+++ b/src/mame/drivers/europc.cpp
@@ -512,9 +512,9 @@ ADDRESS_MAP_END
/* single built-in 3.5" 720K drive, connector for optional external 3.5" or 5.25" drive */
void europc_pc_state::cfg_builtin_720K(device_t *device)
{
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "35dd");
- device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true);
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), "");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("35dd");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true);
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("");
}
//Euro PC
diff --git a/src/mame/drivers/ksys573.cpp b/src/mame/drivers/ksys573.cpp
index 6498134920f..82943174abf 100644
--- a/src/mame/drivers/ksys573.cpp
+++ b/src/mame/drivers/ksys573.cpp
@@ -1770,7 +1770,7 @@ void ksys573_state::punchmania_cassette_install(device_t *device)
{
auto game = downcast<konami573_cassette_xi_device *>(device);
auto adc0838 = device->subdevice<adc083x_device>("adc0838");
- adc083x_device::set_input_callback(*adc0838, adc083x_device::input_delegate(FUNC(konami573_cassette_xi_device::punchmania_inputs_callback), game));
+ adc0838->set_input_callback(adc083x_device::input_delegate(FUNC(konami573_cassette_xi_device::punchmania_inputs_callback), game));
}
int pad_light[ 6 ];
diff --git a/src/mame/drivers/m24.cpp b/src/mame/drivers/m24.cpp
index dd573ff22b9..4f7ce27b05d 100644
--- a/src/mame/drivers/m24.cpp
+++ b/src/mame/drivers/m24.cpp
@@ -290,7 +290,7 @@ MACHINE_CONFIG_START(m24_state::olivetti)
MCFG_DEVICE_MODIFY("mb:dma8237")
MCFG_I8237_OUT_HREQ_CB(DEVWRITELINE(":", m24_state, dma_hrq_w))
MCFG_DEVICE_MODIFY("mb:pic8259")
- devcb = &pic8259_device::static_set_out_int_callback(*device, DEVCB_DEVWRITELINE(":", m24_state, int_w));
+ devcb = &downcast<pic8259_device &>(*device).set_out_int_callback(DEVCB_DEVWRITELINE(":", m24_state, int_w));
/* software lists */
MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
diff --git a/src/mame/drivers/microvsn.cpp b/src/mame/drivers/microvsn.cpp
index 2a03f0a5793..8a0023422cd 100644
--- a/src/mame/drivers/microvsn.cpp
+++ b/src/mame/drivers/microvsn.cpp
@@ -94,7 +94,7 @@ public:
protected:
required_device<dac_byte_interface> m_dac;
required_device<cpu_device> m_i8021;
- required_device<cpu_device> m_tms1100;
+ required_device<tms1100_cpu_device> m_tms1100;
required_device<generic_slot_device> m_cart;
// Timers
@@ -165,14 +165,14 @@ MACHINE_START_MEMBER(microvision_state, microvision)
MACHINE_RESET_MEMBER(microvision_state, microvision)
{
- for(auto & elem : m_lcd_latch)
+ for (auto & elem : m_lcd_latch)
{
elem = 0;
}
- for(auto & elem : m_lcd)
+ for (auto & elem : m_lcd)
{
- for ( int j = 0; j < 16; j++ )
+ for (int j = 0; j < 16; j++)
{
elem[j] = 0;
}
@@ -184,32 +184,32 @@ MACHINE_RESET_MEMBER(microvision_state, microvision)
m_p2 = 0;
m_t1 = 0;
- m_paddle_timer->adjust( attotime::never );
+ m_paddle_timer->adjust(attotime::never);
- switch ( m_cpu_type )
+ switch (m_cpu_type)
{
case CPU_TYPE_I8021:
- m_i8021->resume( SUSPEND_REASON_DISABLE );
- m_tms1100->suspend( SUSPEND_REASON_DISABLE, 0 );
+ m_i8021->resume(SUSPEND_REASON_DISABLE);
+ m_tms1100->suspend(SUSPEND_REASON_DISABLE, 0);
break;
case CPU_TYPE_TMS1100:
- m_i8021->suspend( SUSPEND_REASON_DISABLE, 0 );
- m_tms1100->resume( SUSPEND_REASON_DISABLE );
+ m_i8021->suspend(SUSPEND_REASON_DISABLE, 0);
+ m_tms1100->resume(SUSPEND_REASON_DISABLE);
- switch ( m_rc_type )
+ switch (m_rc_type)
{
case RC_TYPE_100PF_21_0K:
- static_set_clock( *m_tms1100, 550000 );
+ m_tms1100->set_clock(550000);
break;
case RC_TYPE_100PF_23_2K:
case RC_TYPE_UNKNOWN: // Default to most occurring setting
- static_set_clock( *m_tms1100, 500000 );
+ m_tms1100->set_clock(500000);
break;
case RC_TYPE_100PF_39_4K:
- static_set_clock( *m_tms1100, 300000 );
+ m_tms1100->set_clock(300000);
break;
}
break;
@@ -538,7 +538,7 @@ DEVICE_IMAGE_LOAD_MEMBER(microvision_state, microvsn_cart)
if (pla)
m_pla = 1;
- tms1100_cpu_device::set_output_pla(*m_tms1100, m_pla ? microvision_output_pla_1 : microvision_output_pla_0);
+ m_tms1100->set_output_pla(m_pla ? microvision_output_pla_1 : microvision_output_pla_0);
// Set default setting for PCB type and RC type
m_pcb_type = microvision_state::PCB_TYPE_UNKNOWN;
diff --git a/src/mame/drivers/milton6805.cpp b/src/mame/drivers/milton6805.cpp
index 00cf81a793d..e025a1bc7f4 100644
--- a/src/mame/drivers/milton6805.cpp
+++ b/src/mame/drivers/milton6805.cpp
@@ -126,10 +126,10 @@ MACHINE_CONFIG_START(milton_state::milton)
MCFG_CPU_IO_MAP(io_map)
MCFG_DEVICE_ADD("grom3", TMC0430, 3120000 / 8)
- tmc0430_device::set_region_and_ident(*device, "groms", 0x0000, 0);
+ downcast<tmc0430_device &>(*device).set_region_and_ident("groms", 0x0000, 0);
MCFG_DEVICE_ADD("grom4", TMC0430, 3120000 / 8)
- tmc0430_device::set_region_and_ident(*device, "groms", 0x2000, 1);
+ downcast<tmc0430_device &>(*device).set_region_and_ident("groms", 0x2000, 1);
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("sp0250", SP0250, 3120000)
diff --git a/src/mame/drivers/mtouchxl.cpp b/src/mame/drivers/mtouchxl.cpp
index 0819e03a088..ae158d3e808 100644
--- a/src/mame/drivers/mtouchxl.cpp
+++ b/src/mame/drivers/mtouchxl.cpp
@@ -192,15 +192,15 @@ SLOT_INTERFACE_END
void mtxl_state::cdrom(device_t *device)
{
- auto ide0 = device->subdevice("ide:0");
- device_slot_interface::static_option_reset(*ide0);
- SLOT_INTERFACE_NAME(mt6k_ata_devices)(ide0);
- device_slot_interface::static_set_default_option(*ide0, "cdrom");
- device_slot_interface::static_set_fixed(*ide0, true);
-
- auto ide1 = device->subdevice("ide:1");
- device_slot_interface::static_set_default_option(*ide1, "");
- device_slot_interface::static_set_fixed(*ide1, true);
+ auto ide0 = dynamic_cast<device_slot_interface *>(device->subdevice("ide:0"));
+ ide0->option_reset();
+ SLOT_INTERFACE_NAME(mt6k_ata_devices)(device->subdevice("ide:0"));
+ ide0->set_default_option("cdrom");
+ ide0->set_fixed(true);
+
+ auto ide1 = dynamic_cast<device_slot_interface *>(device->subdevice("ide:1"));
+ ide1->set_default_option("");
+ ide1->set_fixed(true);
MACHINE_CONFIG_END
#endif
diff --git a/src/mame/drivers/next.cpp b/src/mame/drivers/next.cpp
index 65bad1adf83..d6730d13c0f 100644
--- a/src/mame/drivers/next.cpp
+++ b/src/mame/drivers/next.cpp
@@ -572,7 +572,7 @@ WRITE32_MEMBER( next_state::scsictrl_w )
scsictrl = data >> 24;
if(scsictrl & 0x02)
scsi->reset();
- device_t::static_set_clock(*scsi, scsi_clocks[scsictrl >> 6]);
+ scsi->set_clock(scsi_clocks[scsictrl >> 6]);
logerror("SCSIctrl %dMHz int=%s dma=%s dmadir=%s%s%s dest=%s (%08x)\n",
scsi_clocks[scsictrl >> 6]/1000000,
diff --git a/src/mame/drivers/pc.cpp b/src/mame/drivers/pc.cpp
index d3d7f161b19..a927759a2a6 100644
--- a/src/mame/drivers/pc.cpp
+++ b/src/mame/drivers/pc.cpp
@@ -536,22 +536,22 @@ MACHINE_CONFIG_END
void pc_state::cfg_dual_720K(device_t *device)
{
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "35dd");
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), "35dd");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("35dd");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("35dd");
}
void pc_state::cfg_single_360K(device_t *device)
{
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "525dd");
- device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true);
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), "");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("525dd");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true);
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("");
}
void pc_state::cfg_single_720K(device_t *device)
{
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "35dd");
- device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true);
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), "");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("35dd");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true);
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("");
}
//Data General One
diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp
index 18929fd893e..19ff393fb15 100644
--- a/src/mame/drivers/rainbow.cpp
+++ b/src/mame/drivers/rainbow.cpp
@@ -877,7 +877,7 @@ void rainbow_state::machine_start()
m_SCREEN_BLANK = false;
cpu_device *maincpu = machine().device<cpu_device>("maincpu");
- device_execute_interface::static_set_irq_acknowledge_callback(*maincpu, device_irq_acknowledge_delegate(FUNC(rainbow_state::irq_callback), this));
+ maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(rainbow_state::irq_callback), this));
save_item(NAME(m_z80_private));
save_item(NAME(m_z80_mailbox));
diff --git a/src/mame/drivers/saturn.cpp b/src/mame/drivers/saturn.cpp
index 7d1ee0c6f75..2e6c064ec53 100644
--- a/src/mame/drivers/saturn.cpp
+++ b/src/mame/drivers/saturn.cpp
@@ -799,13 +799,13 @@ MACHINE_CONFIG_START(sat_console_state::saturn)
MCFG_CPU_PROGRAM_MAP(sound_mem)
MCFG_SEGA_SCU_ADD("scu")
- sega_scu_device::static_set_hostcpu(*device, "maincpu");
+ downcast<sega_scu_device &>(*device).set_hostcpu("maincpu");
// SH-1
// SMPC MCU, running at 4 MHz (+ custom RTC device that runs at 32.768 KHz)
MCFG_SMPC_HLE_ADD("smpc", XTAL(4'000'000))
- smpc_hle_device::static_set_control_port_tags(*device, "ctrl1", "ctrl2");
+ downcast<smpc_hle_device &>(*device).set_control_port_tags("ctrl1", "ctrl2");
MCFG_SMPC_HLE_PDR1_IN_CB(READ8(sat_console_state, saturn_pdr1_direct_r))
MCFG_SMPC_HLE_PDR2_IN_CB(READ8(sat_console_state, saturn_pdr2_direct_r))
MCFG_SMPC_HLE_PDR1_OUT_CB(WRITE8(sat_console_state, saturn_pdr1_direct_w))
@@ -873,7 +873,7 @@ MACHINE_CONFIG_START(sat_console_state::saturnus)
MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart")
MCFG_DEVICE_MODIFY("smpc")
- smpc_hle_device::static_set_region_code(*device, 4);
+ downcast<smpc_hle_device &>(*device).set_region_code(4);
MACHINE_CONFIG_END
@@ -888,7 +888,7 @@ MACHINE_CONFIG_START(sat_console_state::saturneu)
MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart")
MCFG_DEVICE_MODIFY("smpc")
- smpc_hle_device::static_set_region_code(*device, 12);
+ downcast<smpc_hle_device &>(*device).set_region_code(12);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(sat_console_state::saturnjp)
@@ -902,7 +902,7 @@ MACHINE_CONFIG_START(sat_console_state::saturnjp)
MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart")
MCFG_DEVICE_MODIFY("smpc")
- smpc_hle_device::static_set_region_code(*device, 1);
+ downcast<smpc_hle_device &>(*device).set_region_code(1);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp
index 6bf758c8ad9..d0a12ad2e42 100644
--- a/src/mame/drivers/stv.cpp
+++ b/src/mame/drivers/stv.cpp
@@ -1077,10 +1077,10 @@ MACHINE_CONFIG_START(stv_state::stv)
MCFG_CPU_PROGRAM_MAP(sound_mem)
MCFG_SEGA_SCU_ADD("scu")
- sega_scu_device::static_set_hostcpu(*device, "maincpu");
+ downcast<sega_scu_device &>(*device).set_hostcpu("maincpu");
MCFG_SMPC_HLE_ADD("smpc", XTAL(4'000'000))
- smpc_hle_device::static_set_region_code(*device, 0);
+ downcast<smpc_hle_device &>(*device).set_region_code(0);
MCFG_SMPC_HLE_PDR1_IN_CB(READ8(stv_state, pdr1_input_r))
MCFG_SMPC_HLE_PDR2_IN_CB(READ8(stv_state, pdr2_input_r))
MCFG_SMPC_HLE_PDR1_OUT_CB(WRITE8(stv_state, pdr1_output_w))
diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp
index 4e965c29ab6..b401b24ef22 100644
--- a/src/mame/drivers/tandy1t.cpp
+++ b/src/mame/drivers/tandy1t.cpp
@@ -623,15 +623,15 @@ static const gfx_layout t1000_charlayout =
void tandy1000_state::cfg_fdc_35(device_t *device)
{
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "35dd");
- device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true);
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), "");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("35dd");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true);
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("");
}
void tandy1000_state::cfg_fdc_525(device_t *device)
{
- device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true);
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), "");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true);
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("");
}
static GFXDECODE_START( t1000 )
@@ -640,7 +640,7 @@ GFXDECODE_END
MACHINE_CONFIG_START(tandy1000_state::tandy1000_common)
MCFG_DEVICE_ADD("mb", T1000_MOTHERBOARD, 0)
- t1000_mb_device::static_set_cputag(*device, "^maincpu");
+ downcast<t1000_mb_device &>(*device).set_cputag("^maincpu");
/* video hardware */
MCFG_PCVIDEO_T1000_ADD("pcvideo_t1000")
diff --git a/src/mame/drivers/tosh1000.cpp b/src/mame/drivers/tosh1000.cpp
index 0589cef9f1f..d93bb180ba9 100644
--- a/src/mame/drivers/tosh1000.cpp
+++ b/src/mame/drivers/tosh1000.cpp
@@ -244,9 +244,9 @@ ADDRESS_MAP_END
void tosh1000_state::cfg_fdc_35(device_t *device)
{
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:0"), "35dd");
- device_slot_interface::static_set_fixed(*device->subdevice("fdc:0"), true);
- device_slot_interface::static_set_default_option(*device->subdevice("fdc:1"), "");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("35dd");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true);
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("");
}
MACHINE_CONFIG_START(tosh1000_state::tosh1000)
diff --git a/src/mame/drivers/tv990.cpp b/src/mame/drivers/tv990.cpp
index d3ea90bd866..edda41f49aa 100644
--- a/src/mame/drivers/tv990.cpp
+++ b/src/mame/drivers/tv990.cpp
@@ -351,7 +351,7 @@ INPUT_CHANGED_MEMBER(tv990_state::color)
color = rgb_t::white();
break;
}
- m_screen->static_set_color(*m_screen, color);
+ m_screen->set_color(color);
}
void tv990_state::machine_reset()
diff --git a/src/mame/includes/apollo.h b/src/mame/includes/apollo.h
index ab4a2dd3174..4ad12ecd6b7 100644
--- a/src/mame/includes/apollo.h
+++ b/src/mame/includes/apollo.h
@@ -338,16 +338,16 @@ void apollo_csr_set_status_register(uint16_t mask, uint16_t data);
MCFG_DEVICE_ADD(_tag, APOLLO_SIO, _clock)
#define MCFG_APOLLO_SIO_IRQ_CALLBACK(_cb) \
- devcb = &apollo_sio::set_irq_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<apollo_sio &>(*device).set_irq_cb(DEVCB_##_cb);
#define MCFG_APOLLO_SIO_A_TX_CALLBACK(_cb) \
- devcb = &apollo_sio::set_a_tx_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<apollo_sio &>(*device).set_a_tx_cb(DEVCB_##_cb);
#define MCFG_APOLLO_SIO_B_TX_CALLBACK(_cb) \
- devcb = &apollo_sio::set_b_tx_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<apollo_sio &>(*device).set_b_tx_cb(DEVCB_##_cb);
#define MCFG_APOLLO_SIO_OUTPORT_CALLBACK(_cb) \
- devcb = &apollo_sio::set_outport_cb(*device, DEVCB_##_cb);
+ devcb = &downcast<apollo_sio &>(*device).set_outport_cb(DEVCB_##_cb);
class apollo_sio: public duart_base_device
{
diff --git a/src/mame/machine/at.cpp b/src/mame/machine/at.cpp
index 773d8494d88..9502d532fce 100644
--- a/src/mame/machine/at.cpp
+++ b/src/mame/machine/at.cpp
@@ -43,7 +43,7 @@ void at_mb_device::device_reset()
void at_mb_device::device_start()
{
if(!strncmp(m_maincpu->shortname(), "i80286", 6))
- i80286_cpu_device::static_set_a20_callback(*m_maincpu, i80286_cpu_device::a20_cb(&at_mb_device::a20_286, this));
+ downcast<i80286_cpu_device *>(m_maincpu.target())->set_a20_callback(i80286_cpu_device::a20_cb(&at_mb_device::a20_286, this));
}
MACHINE_CONFIG_START(at_mb_device::at_softlists)
diff --git a/src/mame/machine/fd1094.cpp b/src/mame/machine/fd1094.cpp
index 590e582caf4..1692c2f969c 100644
--- a/src/mame/machine/fd1094.cpp
+++ b/src/mame/machine/fd1094.cpp
@@ -655,7 +655,7 @@ void fd1094_device::device_start()
// register for the state changing callbacks we need in the m68000
set_cmpild_callback(write32_delegate(FUNC(fd1094_device::cmp_callback),this));
set_rte_callback(write_line_delegate(FUNC(fd1094_device::rte_callback),this));
- static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(fd1094_device::irq_callback), this));
+ set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fd1094_device::irq_callback), this));
// save state
save_item(NAME(m_state));
diff --git a/src/mame/machine/iteagle_fpga.cpp b/src/mame/machine/iteagle_fpga.cpp
index 54595db3a3f..81aeec15293 100644
--- a/src/mame/machine/iteagle_fpga.cpp
+++ b/src/mame/machine/iteagle_fpga.cpp
@@ -689,7 +689,7 @@ void iteagle_eeprom_device::device_start()
}
m_iteagle_default_eeprom[0x3f] = checkSum;
- eeprom_base_device::static_set_default_data(*m_eeprom, m_iteagle_default_eeprom.data(), 0x80);
+ m_eeprom->set_default_data(m_iteagle_default_eeprom.data(), 0x80);
pci_device::device_start();
skip_map_regs(1);
diff --git a/src/mame/machine/psxcd.cpp b/src/mame/machine/psxcd.cpp
index b26bc7a9e5c..f8acf75be68 100644
--- a/src/mame/machine/psxcd.cpp
+++ b/src/mame/machine/psxcd.cpp
@@ -89,7 +89,7 @@ psxcd_device::psxcd_device(const machine_config &mconfig, const char *tag, devic
cdrom_image_device(mconfig, PSXCD, tag, owner, clock),
m_irq_handler(*this)
{
- static_set_interface(*this, "psx_cdrom");
+ set_interface("psx_cdrom");
}
diff --git a/src/mame/machine/teleprinter.h b/src/mame/machine/teleprinter.h
index 9ad5d73aabb..2c6948de5e7 100644
--- a/src/mame/machine/teleprinter.h
+++ b/src/mame/machine/teleprinter.h
@@ -15,7 +15,7 @@
#define TELEPRINTER_SCREEN_TAG "tty_screen"
#define MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(cb) \
- generic_terminal_device::set_keyboard_callback(*device, KEYBOARDCB_##cb);
+ downcast<generic_terminal_device &>(*device).set_keyboard_callback(KEYBOARDCB_##cb);
/***************************************************************************
FUNCTION PROTOTYPES
diff --git a/src/mame/video/k051316.cpp b/src/mame/video/k051316.cpp
index 0c2d8514af0..528a7e6cbb8 100644
--- a/src/mame/video/k051316.cpp
+++ b/src/mame/video/k051316.cpp
@@ -121,19 +121,19 @@ void k051316_device::set_bpp(int bpp)
switch(bpp)
{
case 4:
- device_gfx_interface::static_set_info(*this, gfxinfo);
+ set_info(gfxinfo);
m_pixels_per_byte = 2;
break;
case 7:
- device_gfx_interface::static_set_info(*this, gfxinfo7);
+ set_info(gfxinfo7);
m_pixels_per_byte = 1;
break;
case 8:
- device_gfx_interface::static_set_info(*this, gfxinfo8);
+ set_info(gfxinfo8);
m_pixels_per_byte = 1;
break;
case -4:
- device_gfx_interface::static_set_info(*this, gfxinfo4_ram);
+ set_info(gfxinfo4_ram);
m_pixels_per_byte = 2;
break;
default:
diff --git a/src/mame/video/k051960.cpp b/src/mame/video/k051960.cpp
index bf78ecdfceb..9a922bde19b 100644
--- a/src/mame/video/k051960.cpp
+++ b/src/mame/video/k051960.cpp
@@ -150,15 +150,15 @@ void k051960_device::set_plane_order(int order)
switch (order)
{
case K051960_PLANEORDER_BASE:
- device_gfx_interface::static_set_info(*this, gfxinfo);
+ set_info(gfxinfo);
break;
case K051960_PLANEORDER_MIA:
- device_gfx_interface::static_set_info(*this, gfxinfo_reverse);
+ set_info(gfxinfo_reverse);
break;
case K051960_PLANEORDER_GRADIUS3:
- device_gfx_interface::static_set_info(*this, gfxinfo_gradius3);
+ set_info(gfxinfo_gradius3);
break;
default:
diff --git a/src/mame/video/k052109.cpp b/src/mame/video/k052109.cpp
index bdb6d4fb6c1..de9c8fcd5b8 100644
--- a/src/mame/video/k052109.cpp
+++ b/src/mame/video/k052109.cpp
@@ -191,9 +191,9 @@ k052109_device::k052109_device(const machine_config &mconfig, const char *tag, d
void k052109_device::set_ram(bool ram)
{
if (ram)
- device_gfx_interface::static_set_info(*this, gfxinfo_ram);
+ set_info(gfxinfo_ram);
else
- device_gfx_interface::static_set_info(*this, gfxinfo);
+ set_info(gfxinfo);
}
diff --git a/src/mame/video/k053244_k053245.cpp b/src/mame/video/k053244_k053245.cpp
index e1c422d18b7..6c3d8f3ed34 100644
--- a/src/mame/video/k053244_k053245.cpp
+++ b/src/mame/video/k053244_k053245.cpp
@@ -101,10 +101,10 @@ void k05324x_device::set_bpp(int bpp)
switch(bpp)
{
case 4:
- device_gfx_interface::static_set_info(*this, gfxinfo);
+ set_info(gfxinfo);
break;
case 6:
- device_gfx_interface::static_set_info(*this, gfxinfo_6bpp);
+ set_info(gfxinfo_6bpp);
break;
default:
fatalerror("Unsupported bpp\n");