summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices')
-rw-r--r--src/devices/bus/a1bus/a1bus.h4
-rw-r--r--src/devices/bus/a2bus/a2bus.h6
-rw-r--r--src/devices/bus/a2bus/a2eauxslot.h4
-rw-r--r--src/devices/bus/a2bus/a2mcms.cpp2
-rw-r--r--src/devices/bus/a2bus/pc_xporter.cpp4
-rw-r--r--src/devices/bus/a800/a8sio.h2
-rw-r--r--src/devices/bus/abcbus/abcbus.h20
-rw-r--r--src/devices/bus/abckb/abckb.h6
-rw-r--r--src/devices/bus/adam/exp.h2
-rw-r--r--src/devices/bus/amiga/keyboard/keyboard.h6
-rw-r--r--src/devices/bus/amiga/zorro/zorro.h22
-rw-r--r--src/devices/bus/apricot/expansion/expansion.h12
-rw-r--r--src/devices/bus/apricot/keyboard/keyboard.h2
-rw-r--r--src/devices/bus/bbc/1mhzbus/1mhzbus.h4
-rw-r--r--src/devices/bus/bbc/fdc/fdc.h4
-rw-r--r--src/devices/bus/bbc/joyport/joyport.h4
-rw-r--r--src/devices/bus/bbc/tube/tube.h2
-rw-r--r--src/devices/bus/bbc/tube/tube_80186.cpp30
-rw-r--r--src/devices/bus/bbc/tube/tube_casper.cpp35
-rw-r--r--src/devices/bus/bbc/userport/userport.h4
-rw-r--r--src/devices/bus/bml3/bml3bus.h6
-rw-r--r--src/devices/bus/c64/exp.h12
-rw-r--r--src/devices/bus/cbm2/user.h8
-rw-r--r--src/devices/bus/cbmiec/cbmiec.h10
-rw-r--r--src/devices/bus/cbus/pc9801_cbus.h14
-rw-r--r--src/devices/bus/centronics/ctronics.h43
-rw-r--r--src/devices/bus/cgenie/expansion/expansion.h6
-rw-r--r--src/devices/bus/coco/cococart.h18
-rw-r--r--src/devices/bus/coleco/ctrl.h2
-rw-r--r--src/devices/bus/comx35/exp.h2
-rw-r--r--src/devices/bus/cpc/cpcexp.h10
-rw-r--r--src/devices/bus/dmv/dmvbus.h10
-rw-r--r--src/devices/bus/ecbbus/ecbbus.h4
-rw-r--r--src/devices/bus/econet/econet.h4
-rw-r--r--src/devices/bus/einstein/pipe/pipe.h6
-rw-r--r--src/devices/bus/einstein/userport/userport.h2
-rw-r--r--src/devices/bus/electron/cart/slot.h4
-rw-r--r--src/devices/bus/electron/exp.h4
-rw-r--r--src/devices/bus/electron/m2105.cpp4
-rw-r--r--src/devices/bus/ep64/exp.h6
-rw-r--r--src/devices/bus/epson_sio/epson_sio.h4
-rw-r--r--src/devices/bus/gamegear/ggext.h4
-rw-r--r--src/devices/bus/hexbus/tp0370.h6
-rw-r--r--src/devices/bus/hp80_io/hp80_io.h4
-rw-r--r--src/devices/bus/hp9845_io/hp9845_io.h6
-rw-r--r--src/devices/bus/hp_dio/hp_dio.h8
-rw-r--r--src/devices/bus/hp_hil/hp_hil.h6
-rw-r--r--src/devices/bus/ieee488/c2040fdc.h6
-rw-r--r--src/devices/bus/ieee488/c8050.cpp187
-rw-r--r--src/devices/bus/ieee488/c8050fdc.h26
-rw-r--r--src/devices/bus/ieee488/hp9895.cpp25
-rw-r--r--src/devices/bus/ieee488/ieee488.h18
-rw-r--r--src/devices/bus/interpro/keyboard/keyboard.h2
-rw-r--r--src/devices/bus/interpro/mouse/mouse.h2
-rw-r--r--src/devices/bus/interpro/sr/sr.h16
-rw-r--r--src/devices/bus/iq151/iq151.h12
-rw-r--r--src/devices/bus/isa/gus.h22
-rw-r--r--src/devices/bus/isa/hdc.h4
-rw-r--r--src/devices/bus/isa/isa.h38
-rw-r--r--src/devices/bus/isa/p1_hdc.cpp16
-rw-r--r--src/devices/bus/isa/wdxt_gen.cpp65
-rw-r--r--src/devices/bus/kc/kc.h12
-rw-r--r--src/devices/bus/lpci/i82371sb.h4
-rw-r--r--src/devices/bus/lpci/southbridge.cpp4
-rw-r--r--src/devices/bus/midi/midi.h2
-rw-r--r--src/devices/bus/msx_slot/cartridge.h4
-rw-r--r--src/devices/bus/nasbus/nasbus.h2
-rw-r--r--src/devices/bus/newbrain/eim.cpp16
-rw-r--r--src/devices/bus/nubus/nubus.h12
-rw-r--r--src/devices/bus/oricext/oricext.h2
-rw-r--r--src/devices/bus/pc1512/mouse.h8
-rw-r--r--src/devices/bus/pc_kbd/pc_kbdc.h4
-rw-r--r--src/devices/bus/pet/cass.h2
-rw-r--r--src/devices/bus/pet/user.h57
-rw-r--r--src/devices/bus/plus4/exp.h8
-rw-r--r--src/devices/bus/pofo/exp.h6
-rw-r--r--src/devices/bus/psi_kbd/psi_kbd.h4
-rw-r--r--src/devices/bus/psx/ctlrport.h4
-rw-r--r--src/devices/bus/ql/exp.h8
-rw-r--r--src/devices/bus/rs232/rs232.h24
-rw-r--r--src/devices/bus/s100/s100.h34
-rw-r--r--src/devices/bus/s100/wunderbus.cpp2
-rw-r--r--src/devices/bus/scsi/scsi.h64
-rw-r--r--src/devices/bus/sms_ctrl/smsctrl.h4
-rw-r--r--src/devices/bus/spectrum/exp.h4
-rw-r--r--src/devices/bus/ss50/interface.h4
-rw-r--r--src/devices/bus/ss50/mpc.cpp32
-rw-r--r--src/devices/bus/sunkbd/sunkbd.h2
-rw-r--r--src/devices/bus/svi3x8/expander/expander.h14
-rw-r--r--src/devices/bus/svi3x8/slot/slot.h6
-rw-r--r--src/devices/bus/ti8x/ti8x.h4
-rw-r--r--src/devices/bus/ti99/gromport/gromport.h4
-rw-r--r--src/devices/bus/ti99/internal/992board.h8
-rw-r--r--src/devices/bus/ti99/internal/998board.h8
-rw-r--r--src/devices/bus/ti99/internal/datamux.h2
-rw-r--r--src/devices/bus/ti99/internal/evpcconn.h2
-rw-r--r--src/devices/bus/ti99/internal/genboard.h4
-rw-r--r--src/devices/bus/ti99/internal/ioport.h4
-rw-r--r--src/devices/bus/ti99/joyport/joyport.h2
-rw-r--r--src/devices/bus/ti99/peb/peribox.h8
-rw-r--r--src/devices/bus/ti99x/990_dk.h2
-rw-r--r--src/devices/bus/ti99x/990_hd.h2
-rw-r--r--src/devices/bus/ti99x/990_tap.h2
-rw-r--r--src/devices/bus/tiki100/exp.h10
-rw-r--r--src/devices/bus/tiki100/hdc.cpp10
-rw-r--r--src/devices/bus/tvc/tvc.h4
-rw-r--r--src/devices/bus/vcs_ctrl/ctrl.h2
-rw-r--r--src/devices/bus/vic10/exp.h8
-rw-r--r--src/devices/bus/vic20/exp.h6
-rw-r--r--src/devices/bus/vic20/vic1011.cpp25
-rw-r--r--src/devices/bus/vidbrain/exp.h2
-rw-r--r--src/devices/bus/vip/exp.h6
-rw-r--r--src/devices/bus/vme/vme.h2
-rw-r--r--src/devices/bus/vme/vme_mzr8300.cpp18
-rw-r--r--src/devices/bus/vtech/memexp/memexp.h6
-rw-r--r--src/devices/bus/wangpc/wangpc.h20
-rw-r--r--src/devices/bus/x68k/x68kexp.h8
-rw-r--r--src/devices/bus/z88/z88.h2
-rw-r--r--src/devices/cpu/adsp2100/adsp2100.h8
-rw-r--r--src/devices/cpu/amis2000/amis2000.h12
-rw-r--r--src/devices/cpu/apexc/apexc.h4
-rw-r--r--src/devices/cpu/cop400/cop400.h22
-rw-r--r--src/devices/cpu/cosmac/cosmac.h20
-rw-r--r--src/devices/cpu/cp1610/cp1610.h2
-rw-r--r--src/devices/cpu/dsp32/dsp32.h2
-rw-r--r--src/devices/cpu/e0c6200/e0c6s46.h6
-rw-r--r--src/devices/cpu/esrip/esrip.h6
-rw-r--r--src/devices/cpu/h8/h83002.h4
-rw-r--r--src/devices/cpu/h8/h8_sci.h6
-rw-r--r--src/devices/cpu/hcd62121/hcd62121.h12
-rw-r--r--src/devices/cpu/hd61700/hd61700.h14
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.h8
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.h2
-rw-r--r--src/devices/cpu/i386/i386.h4
-rw-r--r--src/devices/cpu/i8085/i8085.h12
-rw-r--r--src/devices/cpu/i8089/i8089.h4
-rw-r--r--src/devices/cpu/i86/i186.h12
-rw-r--r--src/devices/cpu/i86/i286.h2
-rw-r--r--src/devices/cpu/i86/i86.h8
-rw-r--r--src/devices/cpu/jaguar/jaguar.h2
-rw-r--r--src/devices/cpu/lc8670/lc8670.h2
-rw-r--r--src/devices/cpu/lh5801/lh5801.h2
-rw-r--r--src/devices/cpu/lr35902/lr35902.h4
-rw-r--r--src/devices/cpu/m6502/m5074x.h16
-rw-r--r--src/devices/cpu/m6502/m6502.h2
-rw-r--r--src/devices/cpu/m6800/m6801.h4
-rw-r--r--src/devices/cpu/m6805/m68705.h14
-rw-r--r--src/devices/cpu/m6805/m68hc05.h18
-rw-r--r--src/devices/cpu/m6809/konami.h2
-rw-r--r--src/devices/cpu/m6809/m6809.h2
-rw-r--r--src/devices/cpu/mb88xx/mb88xx.h26
-rw-r--r--src/devices/cpu/mcs40/mcs40.h38
-rw-r--r--src/devices/cpu/mcs48/mcs48.h27
-rw-r--r--src/devices/cpu/mcs51/mcs51.h22
-rw-r--r--src/devices/cpu/melps4/melps4.h20
-rw-r--r--src/devices/cpu/mips/r3000.h8
-rw-r--r--src/devices/cpu/mn10200/mn10200.h4
-rw-r--r--src/devices/cpu/nanoprocessor/nanoprocessor.h4
-rw-r--r--src/devices/cpu/nec/v25.h21
-rw-r--r--src/devices/cpu/nec/v53.cpp12
-rw-r--r--src/devices/cpu/nec/v53.h52
-rw-r--r--src/devices/cpu/patinhofeio/patinhofeio_cpu.h8
-rw-r--r--src/devices/cpu/pic16c5x/pic16c5x.h16
-rw-r--r--src/devices/cpu/pps4/pps4.h6
-rw-r--r--src/devices/cpu/psx/dma.h2
-rw-r--r--src/devices/cpu/psx/irq.h2
-rw-r--r--src/devices/cpu/psx/psx.h12
-rw-r--r--src/devices/cpu/psx/rcnt.h6
-rw-r--r--src/devices/cpu/psx/sio.h10
-rw-r--r--src/devices/cpu/rsp/rsp.h10
-rw-r--r--src/devices/cpu/s2650/s2650.h9
-rw-r--r--src/devices/cpu/sc61860/sc61860.h16
-rw-r--r--src/devices/cpu/scudsp/scudsp.h6
-rw-r--r--src/devices/cpu/sm510/sm500.h2
-rw-r--r--src/devices/cpu/sm510/sm510.h18
-rw-r--r--src/devices/cpu/sm8500/sm8500.h4
-rw-r--r--src/devices/cpu/superfx/superfx.h2
-rw-r--r--src/devices/cpu/t11/t11.h2
-rw-r--r--src/devices/cpu/tlcs90/tlcs90.h36
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.h108
-rw-r--r--src/devices/cpu/tms1000/tms0270.h6
-rw-r--r--src/devices/cpu/tms1000/tms1k_base.h8
-rw-r--r--src/devices/cpu/tms32010/tms32010.h2
-rw-r--r--src/devices/cpu/tms32025/tms32025.h12
-rw-r--r--src/devices/cpu/tms32031/tms32031.h8
-rw-r--r--src/devices/cpu/tms34010/tms34010.h2
-rw-r--r--src/devices/cpu/tms7000/tms7000.h18
-rw-r--r--src/devices/cpu/tms9900/tms9995.h10
-rw-r--r--src/devices/cpu/tms9900/tms99com.h14
-rw-r--r--src/devices/cpu/ucom4/ucom4.h22
-rw-r--r--src/devices/cpu/upd7725/upd7725.h22
-rw-r--r--src/devices/cpu/upd7810/upd7810.h48
-rw-r--r--src/devices/cpu/z8/z8.h16
-rw-r--r--src/devices/cpu/z80/tmpz84c011.h26
-rw-r--r--src/devices/cpu/z80/tmpz84c015.h69
-rw-r--r--src/devices/cpu/z80/z80.h6
-rw-r--r--src/devices/cpu/z8000/z8000.h2
-rw-r--r--src/devices/imagedev/flopdrv.h2
-rw-r--r--src/devices/imagedev/midiin.h2
-rw-r--r--src/devices/imagedev/printer.h2
-rw-r--r--src/devices/machine/1mb5.h8
-rw-r--r--src/devices/machine/40105.h6
-rw-r--r--src/devices/machine/53c7xx.h6
-rw-r--r--src/devices/machine/64h156.h6
-rw-r--r--src/devices/machine/6522via.cpp4
-rw-r--r--src/devices/machine/6522via.h60
-rw-r--r--src/devices/machine/6525tpi.h18
-rw-r--r--src/devices/machine/6532riot.h10
-rw-r--r--src/devices/machine/68153bim.h14
-rw-r--r--src/devices/machine/6821pia.h33
-rw-r--r--src/devices/machine/68230pit.h24
-rw-r--r--src/devices/machine/68307.h8
-rw-r--r--src/devices/machine/68340.h20
-rw-r--r--src/devices/machine/6840ptm.h12
-rw-r--r--src/devices/machine/6850acia.h9
-rw-r--r--src/devices/machine/68561mpcc.h12
-rw-r--r--src/devices/machine/7200fifo.h6
-rw-r--r--src/devices/machine/7400.h8
-rw-r--r--src/devices/machine/7404.h12
-rw-r--r--src/devices/machine/74123.h2
-rw-r--r--src/devices/machine/74145.h20
-rw-r--r--src/devices/machine/74153.h4
-rw-r--r--src/devices/machine/74157.h11
-rw-r--r--src/devices/machine/74161.h12
-rw-r--r--src/devices/machine/74165.h4
-rw-r--r--src/devices/machine/74166.h4
-rw-r--r--src/devices/machine/74175.h28
-rw-r--r--src/devices/machine/74259.h20
-rw-r--r--src/devices/machine/7474.h6
-rw-r--r--src/devices/machine/8042kbdc.h10
-rw-r--r--src/devices/machine/82s129.h20
-rw-r--r--src/devices/machine/8364_paula.h4
-rw-r--r--src/devices/machine/8530scc.h2
-rw-r--r--src/devices/machine/aakart.h4
-rw-r--r--src/devices/machine/adc0808.h20
-rw-r--r--src/devices/machine/adc0844.h18
-rw-r--r--src/devices/machine/akiko.h12
-rw-r--r--src/devices/machine/am53cf96.h2
-rw-r--r--src/devices/machine/am9513.h18
-rw-r--r--src/devices/machine/am9517a.h39
-rw-r--r--src/devices/machine/am9519.h2
-rw-r--r--src/devices/machine/amigafdc.h10
-rw-r--r--src/devices/machine/at45dbxx.h2
-rw-r--r--src/devices/machine/at_keybc.h12
-rw-r--r--src/devices/machine/ataintf.h6
-rw-r--r--src/devices/machine/atmel_arm_aic.h2
-rw-r--r--src/devices/machine/ay31015.h40
-rw-r--r--src/devices/machine/busmouse.h2
-rw-r--r--src/devices/machine/cdp1852.h8
-rw-r--r--src/devices/machine/cdp1871.h26
-rw-r--r--src/devices/machine/cdp1879.h2
-rw-r--r--src/devices/machine/clock.h7
-rw-r--r--src/devices/machine/com8116.h9
-rw-r--r--src/devices/machine/cr511b.h18
-rw-r--r--src/devices/machine/cs4031.cpp4
-rw-r--r--src/devices/machine/cs4031.h18
-rw-r--r--src/devices/machine/cxd1095.h20
-rw-r--r--src/devices/machine/dmac.h14
-rw-r--r--src/devices/machine/dp8390.h16
-rw-r--r--src/devices/machine/ds1315.h2
-rw-r--r--src/devices/machine/ds1386.h6
-rw-r--r--src/devices/machine/ds75161a.h32
-rw-r--r--src/devices/machine/e05a03.h10
-rw-r--r--src/devices/machine/e05a30.h18
-rw-r--r--src/devices/machine/eepromser.h3
-rw-r--r--src/devices/machine/fdc37c93x.h10
-rw-r--r--src/devices/machine/fga002.h10
-rw-r--r--src/devices/machine/gayle.h10
-rw-r--r--src/devices/machine/gen_fifo.h4
-rw-r--r--src/devices/machine/gen_latch.h3
-rw-r--r--src/devices/machine/hd63450.h20
-rw-r--r--src/devices/machine/hd64610.h4
-rw-r--r--src/devices/machine/hdc92x4.h12
-rw-r--r--src/devices/machine/hp_taco.h6
-rw-r--r--src/devices/machine/i7220.h4
-rw-r--r--src/devices/machine/i80130.h12
-rw-r--r--src/devices/machine/i8087.h4
-rw-r--r--src/devices/machine/i8155.h21
-rw-r--r--src/devices/machine/i8212.h8
-rw-r--r--src/devices/machine/i8214.h6
-rw-r--r--src/devices/machine/i82371sb.cpp4
-rw-r--r--src/devices/machine/i82371sb.h8
-rw-r--r--src/devices/machine/i8243.h4
-rw-r--r--src/devices/machine/i8251.h21
-rw-r--r--src/devices/machine/i8255.h24
-rw-r--r--src/devices/machine/i8257.h32
-rw-r--r--src/devices/machine/i82586.h2
-rw-r--r--src/devices/machine/i8271.h8
-rw-r--r--src/devices/machine/i8279.h14
-rw-r--r--src/devices/machine/i8355.h8
-rw-r--r--src/devices/machine/ie15_kbd.h2
-rw-r--r--src/devices/machine/im6402.h8
-rw-r--r--src/devices/machine/input_merger.h3
-rw-r--r--src/devices/machine/ins8154.h10
-rw-r--r--src/devices/machine/ins8250.h21
-rw-r--r--src/devices/machine/k053252.h10
-rw-r--r--src/devices/machine/kb3600.h26
-rw-r--r--src/devices/machine/kr2376.h22
-rw-r--r--src/devices/machine/latch8.h32
-rw-r--r--src/devices/machine/ldv1000.h2
-rw-r--r--src/devices/machine/lh5810.h12
-rw-r--r--src/devices/machine/mb8421.h4
-rw-r--r--src/devices/machine/mb87078.h2
-rw-r--r--src/devices/machine/mb8795.h8
-rw-r--r--src/devices/machine/mb89352.h4
-rw-r--r--src/devices/machine/mb89363b.h24
-rw-r--r--src/devices/machine/mb89374.h10
-rw-r--r--src/devices/machine/mc14411.h48
-rw-r--r--src/devices/machine/mc146818.h4
-rw-r--r--src/devices/machine/mc2661.h16
-rw-r--r--src/devices/machine/mc68328.h48
-rw-r--r--src/devices/machine/mc6843.h2
-rw-r--r--src/devices/machine/mc6846.h12
-rw-r--r--src/devices/machine/mc6852.h8
-rw-r--r--src/devices/machine/mc6854.h8
-rw-r--r--src/devices/machine/mc68681.h19
-rw-r--r--src/devices/machine/mc68901.h18
-rw-r--r--src/devices/machine/mccs1850.h6
-rw-r--r--src/devices/machine/microtch.h2
-rw-r--r--src/devices/machine/mm5740.h24
-rw-r--r--src/devices/machine/mm58167.h2
-rw-r--r--src/devices/machine/mm74c922.h12
-rw-r--r--src/devices/machine/mos6526.h24
-rw-r--r--src/devices/machine/mos6529.h16
-rw-r--r--src/devices/machine/mos6530.h8
-rw-r--r--src/devices/machine/mos6530n.h83
-rw-r--r--src/devices/machine/mos6551.h15
-rw-r--r--src/devices/machine/mos8722.h10
-rw-r--r--src/devices/machine/mpu401.h2
-rw-r--r--src/devices/machine/msm58321.h10
-rw-r--r--src/devices/machine/msm6242.h3
-rw-r--r--src/devices/machine/msm6253.h18
-rw-r--r--src/devices/machine/ncr5380.h2
-rw-r--r--src/devices/machine/ncr5380n.h4
-rw-r--r--src/devices/machine/ncr5385.h2
-rw-r--r--src/devices/machine/ncr5390.h4
-rw-r--r--src/devices/machine/ncr539x.h4
-rw-r--r--src/devices/machine/nsc810.h16
-rw-r--r--src/devices/machine/nscsi_cb.h12
-rw-r--r--src/devices/machine/output_latch.h17
-rw-r--r--src/devices/machine/pc_fdc.h4
-rw-r--r--src/devices/machine/pc_lpt.h2
-rw-r--r--src/devices/machine/pci-ide.h3
-rw-r--r--src/devices/machine/pci9050.h4
-rw-r--r--src/devices/machine/pckeybrd.h6
-rw-r--r--src/devices/machine/pdc.h4
-rw-r--r--src/devices/machine/phi.h30
-rw-r--r--src/devices/machine/pic8259.h9
-rw-r--r--src/devices/machine/pit8253.h7
-rw-r--r--src/devices/machine/pxa255.h6
-rw-r--r--src/devices/machine/ripple_counter.h6
-rw-r--r--src/devices/machine/rp5c01.h2
-rw-r--r--src/devices/machine/rp5c15.h4
-rw-r--r--src/devices/machine/rstbuf.h2
-rw-r--r--src/devices/machine/rtc4543.h2
-rw-r--r--src/devices/machine/rtc65271.h2
-rw-r--r--src/devices/machine/s2636.h2
-rw-r--r--src/devices/machine/s3c2400.h18
-rw-r--r--src/devices/machine/s3c2410.h26
-rw-r--r--src/devices/machine/s3c2440.h26
-rw-r--r--src/devices/machine/s3c44b0.h14
-rw-r--r--src/devices/machine/saa1043.h36
-rw-r--r--src/devices/machine/scnxx562.h26
-rw-r--r--src/devices/machine/sis85c496.cpp4
-rw-r--r--src/devices/machine/smartmed.h2
-rw-r--r--src/devices/machine/smc91c9x.h4
-rw-r--r--src/devices/machine/smpc.h24
-rw-r--r--src/devices/machine/steppers.h2
-rw-r--r--src/devices/machine/te7750.h57
-rw-r--r--src/devices/machine/timekpr.h4
-rw-r--r--src/devices/machine/tmp68301.h4
-rw-r--r--src/devices/machine/tms1024.h19
-rw-r--r--src/devices/machine/tms5501.h8
-rw-r--r--src/devices/machine/tms9901.h36
-rw-r--r--src/devices/machine/tms9902.h8
-rw-r--r--src/devices/machine/tube.h12
-rw-r--r--src/devices/machine/upd71071.h28
-rw-r--r--src/devices/machine/upd765.h15
-rw-r--r--src/devices/machine/vrc4373.h2
-rw-r--r--src/devices/machine/wd11c00_17.h33
-rw-r--r--src/devices/machine/wd2010.h45
-rw-r--r--src/devices/machine/wd33c93.h2
-rw-r--r--src/devices/machine/wd7600.cpp4
-rw-r--r--src/devices/machine/wd7600.h18
-rw-r--r--src/devices/machine/wd_fdc.h15
-rw-r--r--src/devices/machine/ym2148.h8
-rw-r--r--src/devices/machine/ym3802.h4
-rw-r--r--src/devices/machine/z80ctc.h12
-rw-r--r--src/devices/machine/z80daisy_generic.h2
-rw-r--r--src/devices/machine/z80dart.h45
-rw-r--r--src/devices/machine/z80dma.h14
-rw-r--r--src/devices/machine/z80pio.h22
-rw-r--r--src/devices/machine/z80scc.h30
-rw-r--r--src/devices/machine/z80sio.cpp27
-rw-r--r--src/devices/machine/z80sio.h51
-rw-r--r--src/devices/machine/z80sti.h16
-rw-r--r--src/devices/machine/z8536.h14
-rw-r--r--src/devices/sound/2203intf.h3
-rw-r--r--src/devices/sound/2608intf.h2
-rw-r--r--src/devices/sound/2610intf.h3
-rw-r--r--src/devices/sound/2612intf.h2
-rw-r--r--src/devices/sound/262intf.h2
-rw-r--r--src/devices/sound/3526intf.h2
-rw-r--r--src/devices/sound/3812intf.h3
-rw-r--r--src/devices/sound/8950intf.h10
-rw-r--r--src/devices/sound/ad1848.h4
-rw-r--r--src/devices/sound/aica.h4
-rw-r--r--src/devices/sound/asc.h2
-rw-r--r--src/devices/sound/astrocde.h18
-rw-r--r--src/devices/sound/ay8910.h15
-rw-r--r--src/devices/sound/cdp1869.h4
-rw-r--r--src/devices/sound/dave.h6
-rw-r--r--src/devices/sound/es1373.h3
-rw-r--r--src/devices/sound/es5503.h4
-rw-r--r--src/devices/sound/es5506.h8
-rw-r--r--src/devices/sound/es8712.h4
-rw-r--r--src/devices/sound/ics2115.h2
-rw-r--r--src/devices/sound/k007232.h2
-rw-r--r--src/devices/sound/k054539.h2
-rw-r--r--src/devices/sound/k056800.h2
-rw-r--r--src/devices/sound/lc7535.h2
-rw-r--r--src/devices/sound/mea8000.h2
-rw-r--r--src/devices/sound/mm5837.h2
-rw-r--r--src/devices/sound/mos6560.h4
-rw-r--r--src/devices/sound/mos6581.h4
-rw-r--r--src/devices/sound/msm5205.h25
-rw-r--r--src/devices/sound/msm5232.h2
-rw-r--r--src/devices/sound/nes_apu.h4
-rw-r--r--src/devices/sound/pokey.h22
-rw-r--r--src/devices/sound/qs1000.h14
-rw-r--r--src/devices/sound/s14001a.h4
-rw-r--r--src/devices/sound/scsp.h6
-rw-r--r--src/devices/sound/sn76496.h2
-rw-r--r--src/devices/sound/sp0250.h2
-rw-r--r--src/devices/sound/sp0256.h4
-rw-r--r--src/devices/sound/spu.h2
-rw-r--r--src/devices/sound/st0016.h2
-rw-r--r--src/devices/sound/t6721a.h8
-rw-r--r--src/devices/sound/tms5110.h14
-rw-r--r--src/devices/sound/tms5220.h14
-rw-r--r--src/devices/sound/upd1771.h2
-rw-r--r--src/devices/sound/upd7759.h2
-rw-r--r--src/devices/sound/upd934g.h2
-rw-r--r--src/devices/sound/votrax.h2
-rw-r--r--src/devices/sound/ym2151.h6
-rw-r--r--src/devices/sound/ymf271.h2
-rw-r--r--src/devices/sound/ymf278b.h2
-rw-r--r--src/devices/sound/ymz280b.h3
-rw-r--r--src/devices/sound/zsg2.h2
-rw-r--r--src/devices/video/315_5124.h18
-rw-r--r--src/devices/video/315_5313.h10
-rw-r--r--src/devices/video/cdp1861.h6
-rw-r--r--src/devices/video/cdp1862.h6
-rw-r--r--src/devices/video/cesblit.h2
-rw-r--r--src/devices/video/crt9007.h22
-rw-r--r--src/devices/video/crt9212.h6
-rw-r--r--src/devices/video/crtc_ega.h8
-rw-r--r--src/devices/video/dl1416.h4
-rw-r--r--src/devices/video/dm9368.h4
-rw-r--r--src/devices/video/ef9364.h2
-rw-r--r--src/devices/video/ef9365.h2
-rw-r--r--src/devices/video/gba_lcd.h10
-rw-r--r--src/devices/video/hd44352.h2
-rw-r--r--src/devices/video/hd61830.h2
-rw-r--r--src/devices/video/hlcd0515.h4
-rw-r--r--src/devices/video/hlcd0538.h4
-rw-r--r--src/devices/video/huc6202.h24
-rw-r--r--src/devices/video/huc6260.h8
-rw-r--r--src/devices/video/huc6270.h2
-rw-r--r--src/devices/video/huc6272.h2
-rw-r--r--src/devices/video/i8244.h4
-rw-r--r--src/devices/video/i82730.h2
-rw-r--r--src/devices/video/i8275.h16
-rw-r--r--src/devices/video/imagetek_i4100.h2
-rw-r--r--src/devices/video/mb88303.h6
-rw-r--r--src/devices/video/mc6845.h32
-rw-r--r--src/devices/video/mc6847.h9
-rw-r--r--src/devices/video/mos6566.h8
-rw-r--r--src/devices/video/ppu2c0x.h1
-rw-r--r--src/devices/video/ppu2c0x_vt.h4
-rw-r--r--src/devices/video/psx.h2
-rw-r--r--src/devices/video/saa5050.h2
-rw-r--r--src/devices/video/scn2674.h4
-rw-r--r--src/devices/video/snes_ppu.h9
-rw-r--r--src/devices/video/tms34061.h2
-rw-r--r--src/devices/video/tms9927.h6
-rw-r--r--src/devices/video/tms9928a.h6
-rw-r--r--src/devices/video/upd3301.h16
-rw-r--r--src/devices/video/upd7220.h8
-rw-r--r--src/devices/video/v9938.h2
-rw-r--r--src/devices/video/vic4567.h16
-rw-r--r--src/devices/video/voodoo.h6
-rw-r--r--src/devices/video/zeus2.h4
493 files changed, 2988 insertions, 2592 deletions
diff --git a/src/devices/bus/a1bus/a1bus.h b/src/devices/bus/a1bus/a1bus.h
index 6ab28767a29..484cba5b70f 100644
--- a/src/devices/bus/a1bus/a1bus.h
+++ b/src/devices/bus/a1bus/a1bus.h
@@ -20,10 +20,10 @@
downcast<a1bus_device &>(*device).set_cputag(_cputag);
#define MCFG_A1BUS_OUT_IRQ_CB(_devcb) \
- devcb = &downcast<a1bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<a1bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_A1BUS_OUT_NMI_CB(_devcb) \
- devcb = &downcast<a1bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
+ downcast<a1bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/bus/a2bus/a2bus.h b/src/devices/bus/a2bus/a2bus.h
index 546c2592885..1e1d2b832ee 100644
--- a/src/devices/bus/a2bus/a2bus.h
+++ b/src/devices/bus/a2bus/a2bus.h
@@ -33,13 +33,13 @@
downcast<a2bus_device &>(*device).set_cputag(_cputag);
#define MCFG_A2BUS_OUT_IRQ_CB(_devcb) \
- devcb = &downcast<a2bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<a2bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_A2BUS_OUT_NMI_CB(_devcb) \
- devcb = &downcast<a2bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
+ downcast<a2bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_A2BUS_OUT_INH_CB(_devcb) \
- devcb = &downcast<a2bus_device &>(*device).set_out_inh_callback(DEVCB_##_devcb);
+ downcast<a2bus_device &>(*device).set_out_inh_callback(DEVCB_##_devcb);
// 7M = XTAL(14'318'181) / 2 or XTAL(28'636'363) / 4 (for IIgs)
static constexpr uint32_t A2BUS_7M_CLOCK = 7159090;
diff --git a/src/devices/bus/a2bus/a2eauxslot.h b/src/devices/bus/a2bus/a2eauxslot.h
index 2101f5cfc6b..1da89b18d7a 100644
--- a/src/devices/bus/a2bus/a2eauxslot.h
+++ b/src/devices/bus/a2bus/a2eauxslot.h
@@ -23,10 +23,10 @@
downcast<a2eauxslot_device &>(*device).set_cputag(_cputag);
#define MCFG_A2EAUXSLOT_OUT_IRQ_CB(_devcb) \
- devcb = &downcast<a2eauxslot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<a2eauxslot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_A2EAUXSLOT_OUT_NMI_CB(_devcb) \
- devcb = &downcast<a2eauxslot_device &>(*device).set_out_nmi_callback(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) \
diff --git a/src/devices/bus/a2bus/a2mcms.cpp b/src/devices/bus/a2bus/a2mcms.cpp
index 6d11cbebf27..1442d7d68bc 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 = &downcast<mcms_device &>(*device).set_irq_cb(DEVCB_##_cb);
+ downcast<mcms_device &>(*device).set_irq_cb(DEVCB_##_cb);
/***************************************************************************
FUNCTION PROTOTYPES
diff --git a/src/devices/bus/a2bus/pc_xporter.cpp b/src/devices/bus/a2bus/pc_xporter.cpp
index 0495fb4fbf6..dd8671b7b87 100644
--- a/src/devices/bus/a2bus/pc_xporter.cpp
+++ b/src/devices/bus/a2bus/pc_xporter.cpp
@@ -147,8 +147,8 @@ MACHINE_CONFIG_START(a2bus_pcxporter_device::device_add_mconfig)
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, a2bus_pcxporter_device, pc_dack2_w))
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, a2bus_pcxporter_device, pc_dack3_w))
- MCFG_DEVICE_ADD(m_pic8259, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE(m_v30, 0))
+ PIC8259(config, m_pic8259, 0);
+ m_pic8259->out_int_callback().set_inputline(m_v30, 0);
MCFG_DEVICE_ADD(m_isabus, ISA8, 0)
MCFG_ISA8_CPU(m_v30)
diff --git a/src/devices/bus/a800/a8sio.h b/src/devices/bus/a800/a8sio.h
index 448edf5602f..a2c88b08328 100644
--- a/src/devices/bus/a800/a8sio.h
+++ b/src/devices/bus/a800/a8sio.h
@@ -46,7 +46,7 @@
downcast<a8sio_slot_device &>(*device).set_a8sio_slot(_nbtag, _tag);
#define MCFG_A8SIO_DATA_IN_CB(_devcb) \
- devcb = &downcast<a8sio_device &>(*device).set_data_in_callback(DEVCB_##_devcb);
+ downcast<a8sio_device &>(*device).set_data_in_callback(DEVCB_##_devcb);
class a8sio_slot_device : public device_t,
diff --git a/src/devices/bus/abcbus/abcbus.h b/src/devices/bus/abcbus/abcbus.h
index b66744c2ec2..5bd338b05d7 100644
--- a/src/devices/bus/abcbus/abcbus.h
+++ b/src/devices/bus/abcbus/abcbus.h
@@ -120,34 +120,34 @@
#define MCFG_ABCBUS_SLOT_IRQ_CALLBACK(_irq) \
- devcb = &downcast<abcbus_slot_device *>(device)->set_irq_callback(DEVCB_##_irq);
+ downcast<abcbus_slot_device *>(device)->set_irq_callback(DEVCB_##_irq);
#define MCFG_ABCBUS_SLOT_NMI_CALLBACK(_nmi) \
- devcb = &downcast<abcbus_slot_device *>(device)->set_nmi_callback(DEVCB_##_nmi);
+ downcast<abcbus_slot_device *>(device)->set_nmi_callback(DEVCB_##_nmi);
#define MCFG_ABCBUS_SLOT_RDY_CALLBACK(_rdy) \
- devcb = &downcast<abcbus_slot_device *>(device)->set_rdy_callback(DEVCB_##_rdy);
+ downcast<abcbus_slot_device *>(device)->set_rdy_callback(DEVCB_##_rdy);
#define MCFG_ABCBUS_SLOT_RESIN_CALLBACK(_resin) \
- devcb = &downcast<abcbus_slot_device *>(device)->set_resin_callback(DEVCB_##_resin);
+ downcast<abcbus_slot_device *>(device)->set_resin_callback(DEVCB_##_resin);
#define MCFG_ABCBUS_SLOT_PREN_CALLBACK(_pren) \
- devcb = &downcast<abcbus_slot_device *>(device)->set_pren_callback(DEVCB_##_pren);
+ downcast<abcbus_slot_device *>(device)->set_pren_callback(DEVCB_##_pren);
#define MCFG_ABCBUS_SLOT_TRRQ_CALLBACK(_trrq) \
- devcb = &downcast<abcbus_slot_device *>(device)->set_trrq_callback(DEVCB_##_trrq);
+ downcast<abcbus_slot_device *>(device)->set_trrq_callback(DEVCB_##_trrq);
#define MCFG_ABCBUS_SLOT_XINT2_CALLBACK(_xint2) \
- devcb = &downcast<abcbus_slot_device *>(device)->set_xint2_callback(DEVCB_##_xint2);
+ downcast<abcbus_slot_device *>(device)->set_xint2_callback(DEVCB_##_xint2);
#define MCFG_ABCBUS_SLOT_XINT3_CALLBACK(_xint3) \
- devcb = &downcast<abcbus_slot_device *>(device)->set_xint3_callback(DEVCB_##_xint3);
+ downcast<abcbus_slot_device *>(device)->set_xint3_callback(DEVCB_##_xint3);
#define MCFG_ABCBUS_SLOT_XINT4_CALLBACK(_xint4) \
- devcb = &downcast<abcbus_slot_device *>(device)->set_xint4_callback(DEVCB_##_xint4);
+ downcast<abcbus_slot_device *>(device)->set_xint4_callback(DEVCB_##_xint4);
#define MCFG_ABCBUS_SLOT_XINT5_CALLBACK(_xint5) \
- devcb = &downcast<abcbus_slot_device *>(device)->set_xint5_callback(DEVCB_##_xint5);
+ downcast<abcbus_slot_device *>(device)->set_xint5_callback(DEVCB_##_xint5);
diff --git a/src/devices/bus/abckb/abckb.h b/src/devices/bus/abckb/abckb.h
index 2f1256299ba..7ec223fc942 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 = &downcast<abc_keyboard_port_device &>(*device).set_out_rx_handler(DEVCB_##_devcb);
+ downcast<abc_keyboard_port_device &>(*device).set_out_rx_handler(DEVCB_##_devcb);
#define MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(_devcb) \
- devcb = &downcast<abc_keyboard_port_device &>(*device).set_out_trxc_handler(DEVCB_##_devcb);
+ downcast<abc_keyboard_port_device &>(*device).set_out_trxc_handler(DEVCB_##_devcb);
#define MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(_devcb) \
- devcb = &downcast<abc_keyboard_port_device &>(*device).set_out_keydown_handler(DEVCB_##_devcb);
+ downcast<abc_keyboard_port_device &>(*device).set_out_keydown_handler(DEVCB_##_devcb);
diff --git a/src/devices/bus/adam/exp.h b/src/devices/bus/adam/exp.h
index 9743577e7ec..7751c0f4c64 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 = &downcast<adam_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<adam_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/amiga/keyboard/keyboard.h b/src/devices/bus/amiga/keyboard/keyboard.h
index 772a904f889..5fb210afa29 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 = &downcast<amiga_keyboard_bus_device &>(*device).set_kclk_handler(DEVCB_##_devcb);
+ downcast<amiga_keyboard_bus_device &>(*device).set_kclk_handler(DEVCB_##_devcb);
#define MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(_devcb) \
- devcb = &downcast<amiga_keyboard_bus_device &>(*device).set_kdat_handler(DEVCB_##_devcb);
+ downcast<amiga_keyboard_bus_device &>(*device).set_kdat_handler(DEVCB_##_devcb);
#define MCFG_AMIGA_KEYBOARD_KRST_HANDLER(_devcb) \
- devcb = &downcast<amiga_keyboard_bus_device &>(*device).set_krst_handler(DEVCB_##_devcb);
+ downcast<amiga_keyboard_bus_device &>(*device).set_krst_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/amiga/zorro/zorro.h b/src/devices/bus/amiga/zorro/zorro.h
index 02ece4b59a4..3686f050002 100644
--- a/src/devices/bus/amiga/zorro/zorro.h
+++ b/src/devices/bus/amiga/zorro/zorro.h
@@ -172,16 +172,16 @@
// callbacks
#define MCFG_EXPANSION_SLOT_OVR_HANDLER(_devcb) \
- devcb = &downcast<zorro_device &>(*device).set_ovr_handler(DEVCB_##_devcb);
+ downcast<zorro_device &>(*device).set_ovr_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_SLOT_INT2_HANDLER(_devcb) \
- devcb = &downcast<zorro_device &>(*device).set_int2_handler(DEVCB_##_devcb);
+ downcast<zorro_device &>(*device).set_int2_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_SLOT_INT6_HANDLER(_devcb) \
- devcb = &downcast<zorro_device &>(*device).set_int6_handler(DEVCB_##_devcb);
+ downcast<zorro_device &>(*device).set_int6_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_SLOT_IPL_HANDLER(_devcb) \
- devcb = &downcast<exp_slot_device &>(*device).set_ipl_handler(DEVCB_##_devcb);
+ downcast<exp_slot_device &>(*device).set_ipl_handler(DEVCB_##_devcb);
// ======================> zorro 2 bus
@@ -193,25 +193,25 @@
MCFG_ZORRO_SLOT_ADD(ZORROBUS_TAG, _tag, _slot_intf, _def_slot)
#define MCFG_ZORRO2_OVR_HANDLER(_devcb) \
- devcb = &downcast<zorro_device &>(*device).set_ovr_handler(DEVCB_##_devcb);
+ downcast<zorro_device &>(*device).set_ovr_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_INT2_HANDLER(_devcb) \
- devcb = &downcast<zorro_device &>(*device).set_int2_handler(DEVCB_##_devcb);
+ downcast<zorro_device &>(*device).set_int2_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_INT6_HANDLER(_devcb) \
- devcb = &downcast<zorro_device &>(*device).set_int6_handler(DEVCB_##_devcb);
+ downcast<zorro_device &>(*device).set_int6_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_EINT1_HANDLER(_devcb) \
- devcb = &downcast<zorro2_device &>(*device).set_eint1_handler(DEVCB_##_devcb);
+ downcast<zorro2_device &>(*device).set_eint1_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_EINT4_HANDLER(_devcb) \
- devcb = &downcast<zorro2_device &>(*device).set_eint4_handler(DEVCB_##_devcb);
+ downcast<zorro2_device &>(*device).set_eint4_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_EINT5_HANDLER(_devcb) \
- devcb = &downcast<zorro2_device &>(*device).set_eint5_handler(DEVCB_##_devcb);
+ downcast<zorro2_device &>(*device).set_eint5_handler(DEVCB_##_devcb);
#define MCFG_ZORRO2_EINT7_HANDLER(_devcb) \
- devcb = &downcast<zorro2_device &>(*device).set_eint7_handler(DEVCB_##_devcb);
+ downcast<zorro2_device &>(*device).set_eint7_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/apricot/expansion/expansion.h b/src/devices/bus/apricot/expansion/expansion.h
index 02ebbbe32ce..e7f2b881819 100644
--- a/src/devices/bus/apricot/expansion/expansion.h
+++ b/src/devices/bus/apricot/expansion/expansion.h
@@ -64,22 +64,22 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_EXPANSION_DMA1_HANDLER(_devcb) \
- devcb = &downcast<apricot_expansion_bus_device &>(*device).set_dma1_handler(DEVCB_##_devcb);
+ downcast<apricot_expansion_bus_device &>(*device).set_dma1_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_DMA2_HANDLER(_devcb) \
- devcb = &downcast<apricot_expansion_bus_device &>(*device).set_dma2_handler(DEVCB_##_devcb);
+ downcast<apricot_expansion_bus_device &>(*device).set_dma2_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_EXT1_HANDLER(_devcb) \
- devcb = &downcast<apricot_expansion_bus_device &>(*device).set_ext1_handler(DEVCB_##_devcb);
+ downcast<apricot_expansion_bus_device &>(*device).set_ext1_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_EXT2_HANDLER(_devcb) \
- devcb = &downcast<apricot_expansion_bus_device &>(*device).set_ext2_handler(DEVCB_##_devcb);
+ downcast<apricot_expansion_bus_device &>(*device).set_ext2_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_INT2_HANDLER(_devcb) \
- devcb = &downcast<apricot_expansion_bus_device &>(*device).set_int2_handler(DEVCB_##_devcb);
+ downcast<apricot_expansion_bus_device &>(*device).set_int2_handler(DEVCB_##_devcb);
#define MCFG_EXPANSION_INT3_HANDLER(_devcb) \
- devcb = &downcast<apricot_expansion_bus_device &>(*device).set_int3_handler(DEVCB_##_devcb);
+ downcast<apricot_expansion_bus_device &>(*device).set_int3_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/apricot/keyboard/keyboard.h b/src/devices/bus/apricot/keyboard/keyboard.h
index 857a78b7d1c..b71c2a47c5f 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 = &downcast<apricot_keyboard_bus_device &>(*device).set_in_handler(DEVCB_##_devcb);
+ downcast<apricot_keyboard_bus_device &>(*device).set_in_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/bbc/1mhzbus/1mhzbus.h b/src/devices/bus/bbc/1mhzbus/1mhzbus.h
index e2237bef0ff..15e4721e556 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(WRITELINE(DEVICE_SELF_OWNER, bbc_1mhzbus_slot_device, nmi_w))
#define MCFG_BBC_1MHZBUS_SLOT_IRQ_HANDLER(_devcb) \
- devcb = &downcast<bbc_1mhzbus_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<bbc_1mhzbus_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_BBC_1MHZBUS_SLOT_NMI_HANDLER(_devcb) \
- devcb = &downcast<bbc_1mhzbus_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
+ downcast<bbc_1mhzbus_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/bbc/fdc/fdc.h b/src/devices/bus/bbc/fdc/fdc.h
index 4e2363560ba..892db41fe1d 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 = &downcast<bbc_fdc_slot_device &>(*device).set_intrq_handler(DEVCB_##_devcb);
+ downcast<bbc_fdc_slot_device &>(*device).set_intrq_handler(DEVCB_##_devcb);
#define MCFG_BBC_FDC_SLOT_DRQ_HANDLER(_devcb) \
- devcb = &downcast<bbc_fdc_slot_device &>(*device).set_drq_handler(DEVCB_##_devcb);
+ downcast<bbc_fdc_slot_device &>(*device).set_drq_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/bbc/joyport/joyport.h b/src/devices/bus/bbc/joyport/joyport.h
index bfc93f2d9e2..a11e39a38ec 100644
--- a/src/devices/bus/bbc/joyport/joyport.h
+++ b/src/devices/bus/bbc/joyport/joyport.h
@@ -42,10 +42,10 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_BBC_JOYPORT_CB1_HANDLER(_devcb) \
- devcb = &downcast<bbc_joyport_slot_device &>(*device).set_cb1_handler(DEVCB_##_devcb);
+ downcast<bbc_joyport_slot_device &>(*device).set_cb1_handler(DEVCB_##_devcb);
#define MCFG_BBC_JOYPORT_CB2_HANDLER(_devcb) \
- devcb = &downcast<bbc_joyport_slot_device &>(*device).set_cb2_handler(DEVCB_##_devcb);
+ downcast<bbc_joyport_slot_device &>(*device).set_cb2_handler(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/bus/bbc/tube/tube.h b/src/devices/bus/bbc/tube/tube.h
index b60d349df47..722207d8d93 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 = &downcast<bbc_tube_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<bbc_tube_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/bbc/tube/tube_80186.cpp b/src/devices/bus/bbc/tube/tube_80186.cpp
index 46350c4a13b..432341ea15b 100644
--- a/src/devices/bus/bbc/tube/tube_80186.cpp
+++ b/src/devices/bus/bbc/tube/tube_80186.cpp
@@ -53,25 +53,25 @@ ROM_END
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(bbc_tube_80186_device::device_add_mconfig)
- MCFG_DEVICE_ADD("i80186", I80186, XTAL(20'000'000) / 2)
- MCFG_DEVICE_PROGRAM_MAP(tube_80186_mem)
- MCFG_DEVICE_IO_MAP(tube_80186_io)
- //MCFG_80186_CHIP_SELECT_CB(WRITE16(*this, bbc_tube_80186_device, chip_select_cb))
- MCFG_80186_TMROUT0_HANDLER(INPUTLINE("i80186", INPUT_LINE_HALT)) MCFG_DEVCB_INVERT
- MCFG_80186_TMROUT1_HANDLER(INPUTLINE("i80186", INPUT_LINE_NMI)) MCFG_DEVCB_INVERT
-
- MCFG_TUBE_ADD("ula")
- MCFG_TUBE_PIRQ_HANDLER(WRITELINE("i80186", i80186_cpu_device, int0_w))
- MCFG_TUBE_DRQ_HANDLER(WRITELINE("i80186", i80186_cpu_device, drq0_w))
+void bbc_tube_80186_device::device_add_mconfig(machine_config &config)
+{
+ I80186(config, m_i80186, 20_MHz_XTAL / 2);
+ m_i80186->set_addrmap(AS_PROGRAM, &bbc_tube_80186_device::tube_80186_mem);
+ m_i80186->set_addrmap(AS_IO, &bbc_tube_80186_device::tube_80186_io);
+ //m_i80186->chip_select_callback().set(FUNC(bbc_tube_80186_device::chip_select_cb));
+ m_i80186->tmrout0_handler().set_inputline(m_i80186, INPUT_LINE_HALT).invert();
+ m_i80186->tmrout1_handler().set_inputline(m_i80186, INPUT_LINE_NMI).invert();
+
+ TUBE(config, m_ula, 0);
+ m_ula->pirq_handler().set(m_i80186, FUNC(i80186_cpu_device::int0_w));
+ m_ula->drq_handler().set(m_i80186, FUNC(i80186_cpu_device::drq0_w));
/* internal ram */
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("512K")
+ RAM(config, m_ram, 0).set_default_size("512K");
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("flop_ls_80186", "bbc_flop_80186")
-MACHINE_CONFIG_END
+ SOFTWARE_LIST(config, "flop_ls_80186").set_original("bbc_flop_80186");
+}
//-------------------------------------------------
// rom_region - device-specific ROM region
diff --git a/src/devices/bus/bbc/tube/tube_casper.cpp b/src/devices/bus/bbc/tube/tube_casper.cpp
index 02c19165fd0..393305616b8 100644
--- a/src/devices/bus/bbc/tube/tube_casper.cpp
+++ b/src/devices/bus/bbc/tube/tube_casper.cpp
@@ -48,25 +48,26 @@ ROM_END
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(bbc_tube_casper_device::device_add_mconfig)
- MCFG_DEVICE_ADD(m_m68000, M68000, XTAL(4'000'000))
- MCFG_DEVICE_PROGRAM_MAP(tube_casper_mem)
-
- MCFG_DEVICE_ADD(m_via6522_0, VIA6522, XTAL(4'000'000) / 2)
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(m_via6522_1, via6522_device, write_pa))
- MCFG_VIA6522_CA2_HANDLER(WRITELINE(m_via6522_1, via6522_device, write_cb1))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(m_via6522_1, via6522_device, write_ca1))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(DEVICE_SELF_OWNER, bbc_tube_slot_device, irq_w))
-
- MCFG_DEVICE_ADD(m_via6522_1, VIA6522, XTAL(4'000'000) / 2)
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(m_via6522_0, via6522_device, write_pa))
- MCFG_VIA6522_CA2_HANDLER(WRITELINE(m_via6522_0, via6522_device, write_cb1))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(m_via6522_0, via6522_device, write_ca1))
- MCFG_VIA6522_IRQ_HANDLER(INPUTLINE(m_m68000, M68K_IRQ_1))
+void bbc_tube_casper_device::device_add_mconfig(machine_config &config)
+{
+ M68000(config, m_m68000, 4_MHz_XTAL);
+ m_m68000->set_addrmap(AS_PROGRAM, &bbc_tube_casper_device::tube_casper_mem);
+
+ VIA6522(config, m_via6522_0, 4_MHz_XTAL / 2);
+ m_via6522_0->writepb_handler().set(m_via6522_1, FUNC(via6522_device::write_pa));
+ m_via6522_0->ca2_handler().set(m_via6522_1, FUNC(via6522_device::write_cb1));
+ m_via6522_0->cb2_handler().set(m_via6522_1, FUNC(via6522_device::write_ca1));
+ m_via6522_0->irq_handler().set(DEVICE_SELF_OWNER, FUNC(bbc_tube_slot_device::irq_w));
+
+ VIA6522(config, m_via6522_1, 4_MHz_XTAL / 2);
+ m_via6522_1->writepb_handler().set(m_via6522_0, FUNC(via6522_device::write_pa));
+ m_via6522_1->ca2_handler().set(m_via6522_0, FUNC(via6522_device::write_cb1));
+ m_via6522_1->cb2_handler().set(m_via6522_0, FUNC(via6522_device::write_ca1));
+ m_via6522_1->irq_handler().set_inputline(m_m68000, M68K_IRQ_1);
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("flop_ls_casper", "bbc_flop_68000")
-MACHINE_CONFIG_END
+ SOFTWARE_LIST(config, "flop_ls_casper").set_original("bbc_flop_68000");
+}
//-------------------------------------------------
// rom_region - device-specific ROM region
diff --git a/src/devices/bus/bbc/userport/userport.h b/src/devices/bus/bbc/userport/userport.h
index f19911a4631..22003968ee9 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 = &downcast<bbc_userport_slot_device &>(*device).set_cb1_handler(DEVCB_##_devcb);
+ downcast<bbc_userport_slot_device &>(*device).set_cb1_handler(DEVCB_##_devcb);
#define MCFG_BBC_USERPORT_CB2_HANDLER(_devcb) \
- devcb = &downcast<bbc_userport_slot_device &>(*device).set_cb2_handler(DEVCB_##_devcb);
+ downcast<bbc_userport_slot_device &>(*device).set_cb2_handler(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/bus/bml3/bml3bus.h b/src/devices/bus/bml3/bml3bus.h
index be5e419b8f8..918e7b449b1 100644
--- a/src/devices/bus/bml3/bml3bus.h
+++ b/src/devices/bus/bml3/bml3bus.h
@@ -24,13 +24,13 @@
downcast<bml3bus_device &>(*device).set_cputag(_cputag);
#define MCFG_BML3BUS_OUT_NMI_CB(_devcb) \
- devcb = &downcast<bml3bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
+ downcast<bml3bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_BML3BUS_OUT_IRQ_CB(_devcb) \
- devcb = &downcast<bml3bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<bml3bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_BML3BUS_OUT_FIRQ_CB(_devcb) \
- devcb = &downcast<bml3bus_device &>(*device).set_out_firq_callback(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) \
diff --git a/src/devices/bus/c64/exp.h b/src/devices/bus/c64/exp.h
index de35666a5d2..ff3c8eadbab 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 = &downcast<c64_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<c64_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_C64_EXPANSION_SLOT_NMI_CALLBACK(_write) \
- devcb = &downcast<c64_expansion_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
+ downcast<c64_expansion_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
#define MCFG_C64_EXPANSION_SLOT_RESET_CALLBACK(_write) \
- devcb = &downcast<c64_expansion_slot_device &>(*device).set_reset_wr_callback(DEVCB_##_write);
+ downcast<c64_expansion_slot_device &>(*device).set_reset_wr_callback(DEVCB_##_write);
#define MCFG_C64_EXPANSION_SLOT_CD_INPUT_CALLBACK(_read) \
- devcb = &downcast<c64_expansion_slot_device &>(*device).set_cd_rd_callback(DEVCB_##_read);
+ downcast<c64_expansion_slot_device &>(*device).set_cd_rd_callback(DEVCB_##_read);
#define MCFG_C64_EXPANSION_SLOT_CD_OUTPUT_CALLBACK(_write) \
- devcb = &downcast<c64_expansion_slot_device &>(*device).set_cd_wr_callback(DEVCB_##_write);
+ downcast<c64_expansion_slot_device &>(*device).set_cd_wr_callback(DEVCB_##_write);
#define MCFG_C64_EXPANSION_SLOT_DMA_CALLBACK(_write) \
- devcb = &downcast<c64_expansion_slot_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
+ downcast<c64_expansion_slot_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/cbm2/user.h b/src/devices/bus/cbm2/user.h
index 7ebe6ddbf34..55a76c2d4fb 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 = &downcast<cbm2_user_port_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<cbm2_user_port_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_CBM2_USER_PORT_SP_CALLBACK(_write) \
- devcb = &downcast<cbm2_user_port_device &>(*device).set_sp_wr_callback(DEVCB_##_write);
+ downcast<cbm2_user_port_device &>(*device).set_sp_wr_callback(DEVCB_##_write);
#define MCFG_CBM2_USER_PORT_CNT_CALLBACK(_write) \
- devcb = &downcast<cbm2_user_port_device &>(*device).set_cnt_wr_callback(DEVCB_##_write);
+ downcast<cbm2_user_port_device &>(*device).set_cnt_wr_callback(DEVCB_##_write);
#define MCFG_CBM2_USER_PORT_FLAG_CALLBACK(_write) \
- devcb = &downcast<cbm2_user_port_device &>(*device).set_flag_wr_callback(DEVCB_##_write);
+ downcast<cbm2_user_port_device &>(*device).set_flag_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/cbmiec/cbmiec.h b/src/devices/bus/cbmiec/cbmiec.h
index da951186a81..0ed382142e0 100644
--- a/src/devices/bus/cbmiec/cbmiec.h
+++ b/src/devices/bus/cbmiec/cbmiec.h
@@ -31,19 +31,19 @@
#define MCFG_CBM_IEC_BUS_SRQ_CALLBACK(_write) \
- devcb = &downcast<cbm_iec_device *>(device)->set_srq_callback(DEVCB_##_write);
+ downcast<cbm_iec_device *>(device)->set_srq_callback(DEVCB_##_write);
#define MCFG_CBM_IEC_BUS_ATN_CALLBACK(_write) \
- devcb = &downcast<cbm_iec_device *>(device)->set_atn_callback(DEVCB_##_write);
+ downcast<cbm_iec_device *>(device)->set_atn_callback(DEVCB_##_write);
#define MCFG_CBM_IEC_BUS_CLK_CALLBACK(_write) \
- devcb = &downcast<cbm_iec_device *>(device)->set_clk_callback(DEVCB_##_write);
+ downcast<cbm_iec_device *>(device)->set_clk_callback(DEVCB_##_write);
#define MCFG_CBM_IEC_BUS_DATA_CALLBACK(_write) \
- devcb = &downcast<cbm_iec_device *>(device)->set_data_callback(DEVCB_##_write);
+ downcast<cbm_iec_device *>(device)->set_data_callback(DEVCB_##_write);
#define MCFG_CBM_IEC_BUS_RESET_CALLBACK(_write) \
- devcb = &downcast<cbm_iec_device *>(device)->set_reset_callback(DEVCB_##_write);
+ downcast<cbm_iec_device *>(device)->set_reset_callback(DEVCB_##_write);
#define MCFG_CBM_IEC_SLOT_ADD(_tag, _address, _slot_intf, _def_slot) \
diff --git a/src/devices/bus/cbus/pc9801_cbus.h b/src/devices/bus/cbus/pc9801_cbus.h
index 9f2f72591fb..4fb77ebe7fb 100644
--- a/src/devices/bus/cbus/pc9801_cbus.h
+++ b/src/devices/bus/cbus/pc9801_cbus.h
@@ -31,25 +31,25 @@
downcast<pc9801_slot_device &>(*device).set_cpu_tag(_cputag);
#define MCFG_PC9801CBUS_INT0_CALLBACK(_devcb) \
- devcb = &downcast<pc9801_slot_device &>(*device).set_int_callback<0>(DEVCB_##_devcb);
+ downcast<pc9801_slot_device &>(*device).set_int_callback<0>(DEVCB_##_devcb);
#define MCFG_PC9801CBUS_INT1_CALLBACK(_devcb) \
- devcb = &downcast<pc9801_slot_device &>(*device).set_int_callback<1>(DEVCB_##_devcb);
+ downcast<pc9801_slot_device &>(*device).set_int_callback<1>(DEVCB_##_devcb);
#define MCFG_PC9801CBUS_INT2_CALLBACK(_devcb) \
- devcb = &downcast<pc9801_slot_device &>(*device).set_int_callback<2>(DEVCB_##_devcb);
+ downcast<pc9801_slot_device &>(*device).set_int_callback<2>(DEVCB_##_devcb);
#define MCFG_PC9801CBUS_INT3_CALLBACK(_devcb) \
- devcb = &downcast<pc9801_slot_device &>(*device).set_int_callback<3>(DEVCB_##_devcb);
+ downcast<pc9801_slot_device &>(*device).set_int_callback<3>(DEVCB_##_devcb);
#define MCFG_PC9801CBUS_INT4_CALLBACK(_devcb) \
- devcb = &downcast<pc9801_slot_device &>(*device).set_int_callback<4>(DEVCB_##_devcb);
+ downcast<pc9801_slot_device &>(*device).set_int_callback<4>(DEVCB_##_devcb);
#define MCFG_PC9801CBUS_INT5_CALLBACK(_devcb) \
- devcb = &downcast<pc9801_slot_device &>(*device).set_int_callback<5>(DEVCB_##_devcb);
+ downcast<pc9801_slot_device &>(*device).set_int_callback<5>(DEVCB_##_devcb);
#define MCFG_PC9801CBUS_INT6_CALLBACK(_devcb) \
- devcb = &downcast<pc9801_slot_device &>(*device).set_int_callback<6>(DEVCB_##_devcb);
+ downcast<pc9801_slot_device &>(*device).set_int_callback<6>(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/centronics/ctronics.h b/src/devices/bus/centronics/ctronics.h
index 3c73690199d..a9e9c921546 100644
--- a/src/devices/bus/centronics/ctronics.h
+++ b/src/devices/bus/centronics/ctronics.h
@@ -15,55 +15,55 @@
#define MCFG_CENTRONICS_STROBE_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_strobe_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_strobe_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA0_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_data0_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_data0_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA1_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_data1_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_data1_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA2_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_data2_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_data2_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA3_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_data3_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_data3_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA4_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_data4_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_data4_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA5_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_data5_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_data5_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA6_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_data6_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_data6_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_DATA7_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_data7_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_data7_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_ACK_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_ack_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_ack_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_BUSY_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_busy_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_busy_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_PERROR_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_perror_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_perror_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_SELECT_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_select_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_select_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_AUTOFD_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_autofd_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_autofd_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_FAULT_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_fault_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_fault_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_INIT_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_init_handler(DEVCB_##_devcb);
+ downcast<centronics_device &>(*device).set_init_handler(DEVCB_##_devcb);
#define MCFG_CENTRONICS_SELECT_IN_HANDLER(_devcb) \
- devcb = &downcast<centronics_device &>(*device).set_select_in_handler(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) \
@@ -125,6 +125,15 @@ public:
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)); }
+ auto ack_handler() { return m_ack_handler.bind(); }
+ auto busy_handler() { return m_busy_handler.bind(); }
+ auto perror_handler() { return m_perror_handler.bind(); }
+ auto select_handler() { return m_select_handler.bind(); }
+ auto autofd_handler() { return m_autofd_handler.bind(); }
+ auto fault_handler() { return m_fault_handler.bind(); }
+ auto init_handler() { return m_init_handler.bind(); }
+ auto select_in_handler() { return m_select_in_handler.bind(); }
+
DECLARE_WRITE_LINE_MEMBER( write_strobe );
DECLARE_WRITE_LINE_MEMBER( write_data0 );
DECLARE_WRITE_LINE_MEMBER( write_data1 );
diff --git a/src/devices/bus/cgenie/expansion/expansion.h b/src/devices/bus/cgenie/expansion/expansion.h
index 1e01a3f64a1..2dd6f659f5e 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 = &downcast<cg_exp_slot_device &>(*device).set_int_handler(DEVCB_##_devcb);
+ downcast<cg_exp_slot_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_CG_EXP_SLOT_NMI_HANDLER(_devcb) \
- devcb = &downcast<cg_exp_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
+ downcast<cg_exp_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
#define MCFG_CG_EXP_SLOT_RESET_HANDLER(_devcb) \
- devcb = &downcast<cg_exp_slot_device &>(*device).set_reset_handler(DEVCB_##_devcb);
+ downcast<cg_exp_slot_device &>(*device).set_reset_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h
index 440630e05a3..325d5f2e1d6 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 = &downcast<cococart_slot_device &>(*device).set_cart_callback(DEVCB_##_devcb);
+ downcast<cococart_slot_device &>(*device).set_cart_callback(DEVCB_##_devcb);
#define MCFG_COCO_CARTRIDGE_NMI_CB(_devcb) \
- devcb = &downcast<cococart_slot_device &>(*device).set_nmi_callback(DEVCB_##_devcb);
+ downcast<cococart_slot_device &>(*device).set_nmi_callback(DEVCB_##_devcb);
#define MCFG_COCO_CARTRIDGE_HALT_CB(_devcb) \
- devcb = &downcast<cococart_slot_device &>(*device).set_halt_callback(DEVCB_##_devcb);
+ downcast<cococart_slot_device &>(*device).set_halt_callback(DEVCB_##_devcb);
// ======================> cococart_slot_device
@@ -61,11 +61,23 @@ public:
};
// construction/destruction
+ template <typename T>
+ cococart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&opts, const char *dflt)
+ : cococart_slot_device(mconfig, tag, owner, clock)
+ {
+ option_reset();
+ opts(*this);
+ set_default_option(dflt);
+ set_fixed(false);
+ }
cococart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
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)); }
+ auto cart_callback() { return m_cart_callback.bind(); }
+ auto nmi_callback() { return m_nmi_callback.bind(); }
+ auto halt_callback() { return m_halt_callback.bind(); }
// 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 9d605415cb4..b36c256067b 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 = &downcast<colecovision_control_port_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<colecovision_control_port_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/comx35/exp.h b/src/devices/bus/comx35/exp.h
index 6ffa7e9b67c..4aaf1d793fa 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 = &downcast<comx_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<comx_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/cpc/cpcexp.h b/src/devices/bus/cpc/cpcexp.h
index 0633ffd4c6b..e24c0b99d1c 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 = &downcast<cpc_expansion_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<cpc_expansion_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_CPC_EXPANSION_SLOT_OUT_NMI_CB(_devcb) \
- devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
+ downcast<cpc_expansion_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_CPC_EXPANSION_SLOT_OUT_RESET_CB(_devcb) \
- devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_reset_callback(DEVCB_##_devcb);
+ downcast<cpc_expansion_slot_device &>(*device).set_out_reset_callback(DEVCB_##_devcb);
#define MCFG_CPC_EXPANSION_SLOT_OUT_ROMDIS_CB(_devcb) \
- devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_romdis_callback(DEVCB_##_devcb);
+ downcast<cpc_expansion_slot_device &>(*device).set_out_romdis_callback(DEVCB_##_devcb);
#define MCFG_CPC_EXPANSION_SLOT_ROM_SELECT(_devcb) \
- devcb = &downcast<cpc_expansion_slot_device &>(*device).set_out_rom_select_callback(DEVCB_##_devcb);
+ downcast<cpc_expansion_slot_device &>(*device).set_out_rom_select_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/bus/dmv/dmvbus.h b/src/devices/bus/dmv/dmvbus.h
index 2c683ef7a31..a10eab52bc0 100644
--- a/src/devices/bus/dmv/dmvbus.h
+++ b/src/devices/bus/dmv/dmvbus.h
@@ -111,16 +111,16 @@ DECLARE_DEVICE_TYPE(DMVCART_SLOT, dmvcart_slot_device)
***************************************************************************/
#define MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(_read_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);
+ downcast<dmvcart_slot_device &>(*device).set_prog_read_callback(DEVCB_##_read_devcb); \
+ downcast<dmvcart_slot_device &>(*device).set_prog_write_callback(DEVCB_##_write_devcb);
#define MCFG_DMVCART_SLOT_OUT_INT_CB(_devcb) \
- devcb = &downcast<dmvcart_slot_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
+ downcast<dmvcart_slot_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
#define MCFG_DMVCART_SLOT_OUT_IRQ_CB(_devcb) \
- devcb = &downcast<dmvcart_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<dmvcart_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_DMVCART_SLOT_OUT_THOLD_CB(_devcb) \
- devcb = &downcast<dmvcart_slot_device &>(*device).set_out_thold_callback(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.h b/src/devices/bus/ecbbus/ecbbus.h
index b446b6ee0ae..f4d53b5cc9a 100644
--- a/src/devices/bus/ecbbus/ecbbus.h
+++ b/src/devices/bus/ecbbus/ecbbus.h
@@ -70,10 +70,10 @@
#define MCFG_ECBBUS_IRQ_CALLBACK(_write) \
- devcb = &downcast<ecbbus_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<ecbbus_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_ECBBUS_NMI_CALLBACK(_write) \
- devcb = &downcast<ecbbus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
+ downcast<ecbbus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/econet/econet.h b/src/devices/bus/econet/econet.h
index 01040acd84c..611d9aa49bf 100644
--- a/src/devices/bus/econet/econet.h
+++ b/src/devices/bus/econet/econet.h
@@ -36,10 +36,10 @@
#define MCFG_ECONET_CLK_CALLBACK(_write) \
- devcb = &downcast<econet_device &>(*device).set_clk_wr_callback(DEVCB_##_write);
+ downcast<econet_device &>(*device).set_clk_wr_callback(DEVCB_##_write);
#define MCFG_ECONET_DATA_CALLBACK(_write) \
- devcb = &downcast<econet_device &>(*device).set_data_wr_callback(DEVCB_##_write);
+ downcast<econet_device &>(*device).set_data_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/einstein/pipe/pipe.h b/src/devices/bus/einstein/pipe/pipe.h
index 078a88fe004..31fe5345be8 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 = &downcast<tatung_pipe_device &>(*device).set_int_handler(DEVCB_##_devcb);
+ downcast<tatung_pipe_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_TATUNG_PIPE_NMI_HANDLER(_devcb) \
- devcb = &downcast<tatung_pipe_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
+ downcast<tatung_pipe_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
#define MCFG_TATUNG_PIPE_RESET_HANDLER(_devcb) \
- devcb = &downcast<tatung_pipe_device &>(*device).set_reset_handler(DEVCB_##_devcb);
+ downcast<tatung_pipe_device &>(*device).set_reset_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/einstein/userport/userport.h b/src/devices/bus/einstein/userport/userport.h
index a0c650b2193..4bdbaed36d2 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 = &downcast<einstein_userport_device &>(*device).set_bstb_handler(DEVCB_##_devcb);
+ downcast<einstein_userport_device &>(*device).set_bstb_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/electron/cart/slot.h b/src/devices/bus/electron/cart/slot.h
index 3b7b934ff1e..9e4b66182f1 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 = &downcast<electron_cartslot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<electron_cartslot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_ELECTRON_CARTSLOT_NMI_HANDLER(_devcb) \
- devcb = &downcast<electron_cartslot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
+ downcast<electron_cartslot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/electron/exp.h b/src/devices/bus/electron/exp.h
index 7457c6099fc..ddac72c4d2b 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(WRITELINE(DEVICE_SELF_OWNER, electron_expansion_slot_device, nmi_w))
#define MCFG_ELECTRON_EXPANSION_SLOT_IRQ_HANDLER(_devcb) \
- devcb = &downcast<electron_expansion_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<electron_expansion_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_ELECTRON_EXPANSION_SLOT_NMI_HANDLER(_devcb) \
- devcb = &downcast<electron_expansion_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
+ downcast<electron_expansion_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/electron/m2105.cpp b/src/devices/bus/electron/m2105.cpp
index 77c4b196c90..0f32fff7331 100644
--- a/src/devices/bus/electron/m2105.cpp
+++ b/src/devices/bus/electron/m2105.cpp
@@ -87,8 +87,8 @@ MACHINE_CONFIG_START(electron_m2105_device::device_add_mconfig)
MCFG_RS232_RXD_HANDLER(WRITELINE("duart", scn2681_device, rx_a_w))
/* printer */
- MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
- MCFG_CENTRONICS_ACK_HANDLER(WRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
+ CENTRONICS(config, m_centronics, centronics_devices, "printer");
+ m_centronics->ack_handler().set(m_via6522_1, FUNC(via6522_device::write_ca1)).invert(); // ack seems to be inverted?
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
/* speech hardware */
diff --git a/src/devices/bus/ep64/exp.h b/src/devices/bus/ep64/exp.h
index b101fa29f70..5a89296f3a5 100644
--- a/src/devices/bus/ep64/exp.h
+++ b/src/devices/bus/ep64/exp.h
@@ -71,13 +71,13 @@
downcast<ep64_expansion_bus_slot_device &>(*device).set_dave_tag(_tag);
#define MCFG_EP64_EXPANSION_BUS_SLOT_IRQ_CALLBACK(_write) \
- devcb = &downcast<ep64_expansion_bus_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<ep64_expansion_bus_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(_write) \
- devcb = &downcast<ep64_expansion_bus_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
+ downcast<ep64_expansion_bus_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
#define MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(_write) \
- devcb = &downcast<ep64_expansion_bus_slot_device &>(*device).set_wait_wr_callback(DEVCB_##_write);
+ downcast<ep64_expansion_bus_slot_device &>(*device).set_wait_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/epson_sio/epson_sio.h b/src/devices/bus/epson_sio/epson_sio.h
index 8da0a4b3e44..189e36c5bdf 100644
--- a/src/devices/bus/epson_sio/epson_sio.h
+++ b/src/devices/bus/epson_sio/epson_sio.h
@@ -22,10 +22,10 @@
MCFG_DEVICE_SLOT_INTERFACE(epson_sio_devices, _def_slot, false)
#define MCFG_EPSON_SIO_RX(_rx) \
- devcb = &downcast<epson_sio_device *>(device)->set_rx_callback(DEVCB_##_rx);
+ downcast<epson_sio_device *>(device)->set_rx_callback(DEVCB_##_rx);
#define MCFG_EPSON_SIO_PIN(_pin) \
- devcb = &downcast<epson_sio_device *>(device)->set_pin_callback(DEVCB_##_pin);
+ downcast<epson_sio_device *>(device)->set_pin_callback(DEVCB_##_pin);
//**************************************************************************
diff --git a/src/devices/bus/gamegear/ggext.h b/src/devices/bus/gamegear/ggext.h
index d4dae3eb277..71d6ecfcf72 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 = &downcast<gg_ext_port_device &>(*device).set_th_input_handler(DEVCB_##_devcb);
+ downcast<gg_ext_port_device &>(*device).set_th_input_handler(DEVCB_##_devcb);
#define MCFG_GG_EXT_PORT_PIXEL_HANDLER(_devcb) \
- devcb = &downcast<gg_ext_port_device &>(*device).set_pixel_handler(DEVCB_##_devcb);
+ downcast<gg_ext_port_device &>(*device).set_pixel_handler(DEVCB_##_devcb);
diff --git a/src/devices/bus/hexbus/tp0370.h b/src/devices/bus/hexbus/tp0370.h
index 94d32a5b87c..0888f7ad859 100644
--- a/src/devices/bus/hexbus/tp0370.h
+++ b/src/devices/bus/hexbus/tp0370.h
@@ -73,13 +73,13 @@ private:
*/
#define MCFG_IBC_HEXBUS_OUT_CALLBACK(_write) \
- devcb = &ibc_device::set_hexbus_wr_callback(*device, DEVCB_##_write);
+ ibc_device::set_hexbus_wr_callback(*device, DEVCB_##_write);
#define MCFG_IBC_HSKLATCH_CALLBACK(_write) \
- devcb = &ibc_device::set_hsklatch_wr_callback(*device, DEVCB_##_write);
+ ibc_device::set_hsklatch_wr_callback(*device, DEVCB_##_write);
#define MCFG_IBC_INT_CALLBACK(_write) \
- devcb = &ibc_device::set_ibc_int_callback(*device, DEVCB_##_write);
+ ibc_device::set_ibc_int_callback(*device, DEVCB_##_write);
DECLARE_DEVICE_TYPE_NS(IBC, bus::hexbus, ibc_device)
#endif
diff --git a/src/devices/bus/hp80_io/hp80_io.h b/src/devices/bus/hp80_io/hp80_io.h
index a1bd90f47ed..11025d30d03 100644
--- a/src/devices/bus/hp80_io/hp80_io.h
+++ b/src/devices/bus/hp80_io/hp80_io.h
@@ -19,10 +19,10 @@
downcast<hp80_io_slot_device &>(*device).set_slot_no(_idx);
#define MCFG_HP80_IO_IRL_CB(_devcb) \
- devcb = &downcast<hp80_io_slot_device &>(*device).set_irl_cb_func(DEVCB_##_devcb);
+ downcast<hp80_io_slot_device &>(*device).set_irl_cb_func(DEVCB_##_devcb);
#define MCFG_HP80_IO_HALT_CB(_devcb) \
- devcb = &downcast<hp80_io_slot_device &>(*device).set_halt_cb_func(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
diff --git a/src/devices/bus/hp9845_io/hp9845_io.h b/src/devices/bus/hp9845_io/hp9845_io.h
index 8b4065ce9e3..4f18ab75939 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 = &downcast<hp9845_io_slot_device &>(*device).set_irq_cb_func(DEVCB_##_devcb);
+ downcast<hp9845_io_slot_device &>(*device).set_irq_cb_func(DEVCB_##_devcb);
#define MCFG_HP9845_IO_STS_CB(_devcb) \
- devcb = &downcast<hp9845_io_slot_device &>(*device).set_sts_cb_func(DEVCB_##_devcb);
+ downcast<hp9845_io_slot_device &>(*device).set_sts_cb_func(DEVCB_##_devcb);
#define MCFG_HP9845_IO_FLG_CB(_devcb) \
- devcb = &downcast<hp9845_io_slot_device &>(*device).set_flg_cb_func(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
diff --git a/src/devices/bus/hp_dio/hp_dio.h b/src/devices/bus/hp_dio/hp_dio.h
index c11d6f8f7e0..b63b44c0482 100644
--- a/src/devices/bus/hp_dio/hp_dio.h
+++ b/src/devices/bus/hp_dio/hp_dio.h
@@ -27,16 +27,16 @@
downcast<dio32_device &>(*device).set_cputag(_cputag);
#define MCFG_ISA_OUT_IRQ3_CB(_devcb) \
- devcb = &downcast<dio16_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb);
+ downcast<dio16_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ4_CB(_devcb) \
- devcb = &downcast<dio16_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
+ downcast<dio16_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ5_CB(_devcb) \
- devcb = &downcast<dio16_device &>(*device).set_out_irq5_callback(DEVCB_##_devcb);
+ downcast<dio16_device &>(*device).set_out_irq5_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ6_CB(_devcb) \
- devcb = &downcast<dio16_device &>(*device).set_out_irq6_callback(DEVCB_##_devcb);
+ downcast<dio16_device &>(*device).set_out_irq6_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/bus/hp_hil/hp_hil.h b/src/devices/bus/hp_hil/hp_hil.h
index f4cdbb5a771..a11c53be461 100644
--- a/src/devices/bus/hp_hil/hp_hil.h
+++ b/src/devices/bus/hp_hil/hp_hil.h
@@ -82,10 +82,10 @@
//**************************************************************************
#define MCFG_HP_HIL_INT_CALLBACK(_devcb) \
- devcb = &downcast<hp_hil_mlc_device &>(*device).set_int_callback(DEVCB_##_devcb);
+ downcast<hp_hil_mlc_device &>(*device).set_int_callback(DEVCB_##_devcb);
#define MCFG_HP_HIL_NMI_CALLBACK(_devcb) \
- devcb = &downcast<hp_hil_mlc_device &>(*device).set_nmi_callback(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) \
@@ -131,6 +131,8 @@ public:
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)); }
+ auto int_callback() { return int_cb.bind(); }
+ auto nmi_callback() { return nmi_cb.bind(); }
void add_hp_hil_device(device_hp_hil_interface *device);
bool get_int(void) { return m_r3 & 1; }
diff --git a/src/devices/bus/ieee488/c2040fdc.h b/src/devices/bus/ieee488/c2040fdc.h
index 1c552c1c508..7e27f1f1b81 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 = &downcast<c2040_fdc_device &>(*device).set_sync_wr_callback(DEVCB_##_write);
+ downcast<c2040_fdc_device &>(*device).set_sync_wr_callback(DEVCB_##_write);
#define MCFG_C2040_READY_CALLBACK(_write) \
- devcb = &downcast<c2040_fdc_device &>(*device).set_ready_wr_callback(DEVCB_##_write);
+ downcast<c2040_fdc_device &>(*device).set_ready_wr_callback(DEVCB_##_write);
#define MCFG_C2040_ERROR_CALLBACK(_write) \
- devcb = &downcast<c2040_fdc_device &>(*device).set_error_wr_callback(DEVCB_##_write);
+ downcast<c2040_fdc_device &>(*device).set_error_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/ieee488/c8050.cpp b/src/devices/bus/ieee488/c8050.cpp
index ca9ae2cfa2d..94d8e9a89dc 100644
--- a/src/devices/bus/ieee488/c8050.cpp
+++ b/src/devices/bus/ieee488/c8050.cpp
@@ -35,7 +35,6 @@
#define M6532_0_TAG "uc1"
#define M6532_1_TAG "ue1"
#define M6504_TAG "uh3"
-#define M6522_TAG "um3"
#define M6530_TAG "uk3"
#define FDC_TAG "fdc"
@@ -207,14 +206,14 @@ void c8050_device::c8050_main_mem(address_map &map)
void c8050_device::c8050_fdc_mem(address_map &map)
{
map.global_mask(0x1fff);
- map(0x0000, 0x003f).mirror(0x0300).m(M6530_TAG, FUNC(mos6530_new_device::ram_map));
- map(0x0040, 0x004f).mirror(0x0330).m(M6522_TAG, FUNC(via6522_device::map));
- map(0x0080, 0x008f).mirror(0x0330).m(M6530_TAG, FUNC(mos6530_new_device::io_map));
+ map(0x0000, 0x003f).mirror(0x0300).m(m_miot, FUNC(mos6530_new_device::ram_map));
+ map(0x0040, 0x004f).mirror(0x0330).m(m_via, FUNC(via6522_device::map));
+ map(0x0080, 0x008f).mirror(0x0330).m(m_miot, FUNC(mos6530_new_device::io_map));
map(0x0400, 0x07ff).ram().share("share1");
map(0x0800, 0x0bff).ram().share("share2");
map(0x0c00, 0x0fff).ram().share("share3");
map(0x1000, 0x13ff).ram().share("share4");
- map(0x1c00, 0x1fff).m(M6530_TAG, FUNC(mos6530_new_device::rom_map));
+ map(0x1c00, 0x1fff).m(m_miot, FUNC(mos6530_new_device::rom_map));
}
@@ -225,9 +224,9 @@ void c8050_device::c8050_fdc_mem(address_map &map)
void c8050_device::c8250lp_fdc_mem(address_map &map)
{
map.global_mask(0x1fff);
- map(0x0000, 0x003f).mirror(0x0300).m(M6530_TAG, FUNC(mos6530_new_device::ram_map));
- map(0x0040, 0x004f).mirror(0x0330).m(M6522_TAG, FUNC(via6522_device::map));
- map(0x0080, 0x008f).mirror(0x0330).m(M6530_TAG, FUNC(mos6530_new_device::io_map));
+ map(0x0000, 0x003f).mirror(0x0300).m(m_miot, FUNC(mos6530_new_device::ram_map));
+ map(0x0040, 0x004f).mirror(0x0330).m(m_via, FUNC(via6522_device::map));
+ map(0x0080, 0x008f).mirror(0x0330).m(m_miot, FUNC(mos6530_new_device::io_map));
map(0x0400, 0x07ff).ram().share("share1");
map(0x0800, 0x0bff).ram().share("share2");
map(0x0c00, 0x0fff).ram().share("share3");
@@ -243,9 +242,9 @@ void c8050_device::c8250lp_fdc_mem(address_map &map)
void c8050_device::sfd1001_fdc_mem(address_map &map)
{
map.global_mask(0x1fff);
- map(0x0000, 0x003f).mirror(0x0300).m(M6530_TAG, FUNC(mos6530_new_device::ram_map));
- map(0x0040, 0x004f).mirror(0x0330).m(M6522_TAG, FUNC(via6522_device::map));
- map(0x0080, 0x008f).mirror(0x0330).m(M6530_TAG, FUNC(mos6530_new_device::io_map));
+ map(0x0000, 0x003f).mirror(0x0300).m(m_miot, FUNC(mos6530_new_device::ram_map));
+ map(0x0040, 0x004f).mirror(0x0330).m(m_via, FUNC(via6522_device::map));
+ map(0x0080, 0x008f).mirror(0x0330).m(m_miot, FUNC(mos6530_new_device::io_map));
map(0x0400, 0x07ff).ram().share("share1");
map(0x0800, 0x0bff).ram().share("share2");
map(0x0c00, 0x0fff).ram().share("share3");
@@ -550,29 +549,29 @@ MACHINE_CONFIG_START(c8050_device::device_add_mconfig)
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
- MCFG_DEVICE_ADD(M6504_TAG, M6504, XTAL(12'000'000)/12)
+ MCFG_DEVICE_ADD(m_fdccpu, M6504, XTAL(12'000'000)/12)
MCFG_DEVICE_PROGRAM_MAP(c8050_fdc_mem)
- MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL(12'000'000)/12)
- MCFG_VIA6522_READPA_HANDLER(READ8(FDC_TAG, c8050_fdc_device, read))
+ MCFG_DEVICE_ADD(m_via, VIA6522, XTAL(12'000'000)/12)
+ MCFG_VIA6522_READPA_HANDLER(READ8(m_fdc, c8050_fdc_device, read))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, c8050_device, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(WRITELINE(FDC_TAG, c8050_fdc_device, mode_sel_w))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(FDC_TAG, c8050_fdc_device, rw_sel_w))
-
- MCFG_DEVICE_ADD(M6530_TAG, MOS6530_NEW, XTAL(12'000'000)/12)
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(FDC_TAG, c8050_fdc_device, write))
- MCFG_MOS6530n_OUT_PB0_CB(WRITELINE(FDC_TAG, c8050_fdc_device, drv_sel_w))
- MCFG_MOS6530n_OUT_PB1_CB(WRITELINE(FDC_TAG, c8050_fdc_device, ds0_w))
- MCFG_MOS6530n_OUT_PB2_CB(WRITELINE(FDC_TAG, c8050_fdc_device, ds1_w))
- MCFG_MOS6530n_IN_PB3_CB(READLINE(FDC_TAG, c8050_fdc_device, wps_r))
- MCFG_MOS6530n_IN_PB6_CB(VCC) // SINGLE SIDED
- MCFG_MOS6530n_OUT_PB7_CB(INPUTLINE(M6504_TAG, M6502_IRQ_LINE))
-
- MCFG_DEVICE_ADD(FDC_TAG, C8050_FDC, XTAL(12'000'000)/2)
- MCFG_C8050_SYNC_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_pb7))
- MCFG_C8050_READY_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_ca1))
- MCFG_C8050_BRDY_CALLBACK(INPUTLINE(M6504_TAG, M6502_SET_OVERFLOW)) MCFG_DEVCB_XOR(1)
- MCFG_C8050_ERROR_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_cb1))
+ MCFG_VIA6522_CA2_HANDLER(WRITELINE(m_fdc, c8050_fdc_device, mode_sel_w))
+ MCFG_VIA6522_CB2_HANDLER(WRITELINE(m_fdc, c8050_fdc_device, rw_sel_w))
+
+ MOS6530_NEW(config, m_miot, XTAL(12'000'000)/12);
+ m_miot->pa_wr_callback().set(m_fdc, FUNC(c8050_fdc_device::write));
+ m_miot->pb_wr_callback<0>().set(m_fdc, FUNC(c8050_fdc_device::drv_sel_w));
+ m_miot->pb_wr_callback<1>().set(m_fdc, FUNC(c8050_fdc_device::ds0_w));
+ m_miot->pb_wr_callback<2>().set(m_fdc, FUNC(c8050_fdc_device::ds1_w));
+ m_miot->pb_rd_callback<3>().set(m_fdc, FUNC(c8050_fdc_device::wps_r));
+ m_miot->pb_rd_callback<6>().set_constant(1); // SINGLE SIDED
+ m_miot->pb_wr_callback<7>().set_inputline(m_fdccpu, M6502_IRQ_LINE);
+
+ C8050_FDC(config, m_fdc, XTAL(12'000'000)/2);
+ m_fdc->sync_wr_callback().set(m_via, FUNC(via6522_device::write_pb7));
+ m_fdc->ready_wr_callback().set(m_via, FUNC(via6522_device::write_ca1));
+ m_fdc->brdy_wr_callback().set_inputline(m_fdccpu, M6502_SET_OVERFLOW).invert();
+ m_fdc->error_wr_callback().set(m_via, FUNC(via6522_device::write_cb1));
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", c8050_floppies, "525ssqd", c8050_device::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", c8050_floppies, "525ssqd", c8050_device::floppy_formats)
MACHINE_CONFIG_END
@@ -595,30 +594,30 @@ MACHINE_CONFIG_START(c8250_device::device_add_mconfig)
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
- MCFG_DEVICE_ADD(M6504_TAG, M6504, XTAL(12'000'000)/12)
+ MCFG_DEVICE_ADD(m_fdccpu, M6504, XTAL(12'000'000)/12)
MCFG_DEVICE_PROGRAM_MAP(c8050_fdc_mem)
- MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL(12'000'000)/12)
- MCFG_VIA6522_READPA_HANDLER(READ8(FDC_TAG, c8050_fdc_device, read))
+ MCFG_DEVICE_ADD(m_via, VIA6522, XTAL(12'000'000)/12)
+ MCFG_VIA6522_READPA_HANDLER(READ8(m_fdc, c8050_fdc_device, read))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, c8050_device, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(WRITELINE(FDC_TAG, c8050_fdc_device, mode_sel_w))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(FDC_TAG, c8050_fdc_device, rw_sel_w))
-
- MCFG_DEVICE_ADD(M6530_TAG, MOS6530_NEW, XTAL(12'000'000)/12)
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(FDC_TAG, c8050_fdc_device, write))
- MCFG_MOS6530n_OUT_PB0_CB(WRITELINE(FDC_TAG, c8050_fdc_device, drv_sel_w))
- MCFG_MOS6530n_OUT_PB1_CB(WRITELINE(FDC_TAG, c8050_fdc_device, ds0_w))
- MCFG_MOS6530n_OUT_PB2_CB(WRITELINE(FDC_TAG, c8050_fdc_device, ds1_w))
- MCFG_MOS6530n_IN_PB3_CB(READLINE(FDC_TAG, c8050_fdc_device, wps_r))
- MCFG_MOS6530n_OUT_PB4_CB(WRITELINE(FDC_TAG, c8050_fdc_device, odd_hd_w))
- MCFG_MOS6530n_IN_PB6_CB(GND) // DOUBLE SIDED
- MCFG_MOS6530n_OUT_PB7_CB(INPUTLINE(M6504_TAG, M6502_IRQ_LINE))
-
- MCFG_DEVICE_ADD(FDC_TAG, C8050_FDC, XTAL(12'000'000)/2)
- MCFG_C8050_SYNC_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_pb7))
- MCFG_C8050_READY_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_ca1))
- MCFG_C8050_BRDY_CALLBACK(INPUTLINE(M6504_TAG, M6502_SET_OVERFLOW)) MCFG_DEVCB_XOR(1)
- MCFG_C8050_ERROR_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_cb1))
+ MCFG_VIA6522_CA2_HANDLER(WRITELINE(m_fdc, c8050_fdc_device, mode_sel_w))
+ MCFG_VIA6522_CB2_HANDLER(WRITELINE(m_fdc, c8050_fdc_device, rw_sel_w))
+
+ MOS6530_NEW(config, m_miot, XTAL(12'000'000)/12);
+ m_miot->pa_wr_callback().set(m_fdc, FUNC(c8050_fdc_device::write));
+ m_miot->pb_wr_callback<0>().set(m_fdc, FUNC(c8050_fdc_device::drv_sel_w));
+ m_miot->pb_wr_callback<1>().set(m_fdc, FUNC(c8050_fdc_device::ds0_w));
+ m_miot->pb_wr_callback<2>().set(m_fdc, FUNC(c8050_fdc_device::ds1_w));
+ m_miot->pb_rd_callback<3>().set(m_fdc, FUNC(c8050_fdc_device::wps_r));
+ m_miot->pb_wr_callback<4>().set(m_fdc, FUNC(c8050_fdc_device::odd_hd_w));
+ m_miot->pb_rd_callback<6>().set_constant(0); // DOUBLE SIDED
+ m_miot->pb_wr_callback<7>().set_inputline(m_fdccpu, M6502_IRQ_LINE);
+
+ C8050_FDC(config, m_fdc, XTAL(12'000'000)/2);
+ m_fdc->sync_wr_callback().set(m_via, FUNC(via6522_device::write_pb7));
+ m_fdc->ready_wr_callback().set(m_via, FUNC(via6522_device::write_ca1));
+ m_fdc->brdy_wr_callback().set_inputline(m_fdccpu, M6502_SET_OVERFLOW).invert();
+ m_fdc->error_wr_callback().set(m_via, FUNC(via6522_device::write_cb1));
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", c8250_floppies, "525qd", c8250_device::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", c8250_floppies, "525qd", c8250_device::floppy_formats)
MACHINE_CONFIG_END
@@ -641,30 +640,30 @@ MACHINE_CONFIG_START(c8250lp_device::device_add_mconfig)
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
- MCFG_DEVICE_ADD(M6504_TAG, M6504, XTAL(12'000'000)/12)
+ MCFG_DEVICE_ADD(m_fdccpu, M6504, XTAL(12'000'000)/12)
MCFG_DEVICE_PROGRAM_MAP(c8250lp_fdc_mem)
- MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL(12'000'000)/12)
- MCFG_VIA6522_READPA_HANDLER(READ8(FDC_TAG, c8050_fdc_device, read))
+ MCFG_DEVICE_ADD(m_via, VIA6522, XTAL(12'000'000)/12)
+ MCFG_VIA6522_READPA_HANDLER(READ8(m_fdc, c8050_fdc_device, read))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, c8050_device, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(WRITELINE(FDC_TAG, c8050_fdc_device, mode_sel_w))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(FDC_TAG, c8050_fdc_device, rw_sel_w))
-
- MCFG_DEVICE_ADD(M6530_TAG, MOS6530_NEW, XTAL(12'000'000)/12)
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(FDC_TAG, c8050_fdc_device, write))
- MCFG_MOS6530n_OUT_PB0_CB(WRITELINE(FDC_TAG, c8050_fdc_device, drv_sel_w))
- MCFG_MOS6530n_OUT_PB1_CB(WRITELINE(FDC_TAG, c8050_fdc_device, ds0_w))
- MCFG_MOS6530n_OUT_PB2_CB(WRITELINE(FDC_TAG, c8050_fdc_device, ds1_w))
- MCFG_MOS6530n_IN_PB3_CB(READLINE(FDC_TAG, c8050_fdc_device, wps_r))
- MCFG_MOS6530n_OUT_PB4_CB(WRITELINE(FDC_TAG, c8050_fdc_device, odd_hd_w))
- MCFG_MOS6530n_IN_PB6_CB(GND) // DOUBLE SIDED
- MCFG_MOS6530n_OUT_PB7_CB(INPUTLINE(M6504_TAG, M6502_IRQ_LINE))
-
- MCFG_DEVICE_ADD(FDC_TAG, C8050_FDC, XTAL(12'000'000)/2)
- MCFG_C8050_SYNC_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_pb7))
- MCFG_C8050_READY_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_ca1))
- MCFG_C8050_BRDY_CALLBACK(INPUTLINE(M6504_TAG, M6502_SET_OVERFLOW)) MCFG_DEVCB_XOR(1)
- MCFG_C8050_ERROR_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_cb1))
+ MCFG_VIA6522_CA2_HANDLER(WRITELINE(m_fdc, c8050_fdc_device, mode_sel_w))
+ MCFG_VIA6522_CB2_HANDLER(WRITELINE(m_fdc, c8050_fdc_device, rw_sel_w))
+
+ MOS6530_NEW(config, m_miot, XTAL(12'000'000)/12);
+ m_miot->pa_wr_callback().set(m_fdc, FUNC(c8050_fdc_device::write));
+ m_miot->pb_wr_callback<0>().set(m_fdc, FUNC(c8050_fdc_device::drv_sel_w));
+ m_miot->pb_wr_callback<1>().set(m_fdc, FUNC(c8050_fdc_device::ds0_w));
+ m_miot->pb_wr_callback<2>().set(m_fdc, FUNC(c8050_fdc_device::ds1_w));
+ m_miot->pb_rd_callback<3>().set(m_fdc, FUNC(c8050_fdc_device::wps_r));
+ m_miot->pb_wr_callback<4>().set(m_fdc, FUNC(c8050_fdc_device::odd_hd_w));
+ m_miot->pb_rd_callback<6>().set_constant(0); // DOUBLE SIDED
+ m_miot->pb_wr_callback<7>().set_inputline(m_fdccpu, M6502_IRQ_LINE);
+
+ C8050_FDC(config, m_fdc, XTAL(12'000'000)/2);
+ m_fdc->sync_wr_callback().set(m_via, FUNC(via6522_device::write_pb7));
+ m_fdc->ready_wr_callback().set(m_via, FUNC(via6522_device::write_ca1));
+ m_fdc->brdy_wr_callback().set_inputline(m_fdccpu, M6502_SET_OVERFLOW).invert();
+ m_fdc->error_wr_callback().set(m_via, FUNC(via6522_device::write_cb1));
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", c8250_floppies, "525qd", c8250lp_device::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", c8250_floppies, "525qd", c8250lp_device::floppy_formats)
MACHINE_CONFIG_END
@@ -687,29 +686,29 @@ MACHINE_CONFIG_START(sfd1001_device::device_add_mconfig)
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
- MCFG_DEVICE_ADD(M6504_TAG, M6504, XTAL(12'000'000)/12)
+ MCFG_DEVICE_ADD(m_fdccpu, M6504, XTAL(12'000'000)/12)
MCFG_DEVICE_PROGRAM_MAP(sfd1001_fdc_mem)
- MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL(12'000'000)/12)
- MCFG_VIA6522_READPA_HANDLER(READ8(FDC_TAG, c8050_fdc_device, read))
+ MCFG_DEVICE_ADD(m_via, VIA6522, XTAL(12'000'000)/12)
+ MCFG_VIA6522_READPA_HANDLER(READ8(m_fdc, c8050_fdc_device, read))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, c8050_device, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(WRITELINE(FDC_TAG, c8050_fdc_device, mode_sel_w))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(FDC_TAG, c8050_fdc_device, rw_sel_w))
-
- MCFG_DEVICE_ADD(M6530_TAG, MOS6530_NEW, XTAL(12'000'000)/12)
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(FDC_TAG, c8050_fdc_device, write))
- MCFG_MOS6530n_OUT_PB1_CB(WRITELINE(FDC_TAG, c8050_fdc_device, ds0_w))
- MCFG_MOS6530n_OUT_PB2_CB(WRITELINE(FDC_TAG, c8050_fdc_device, ds1_w))
- MCFG_MOS6530n_IN_PB3_CB(READLINE(FDC_TAG, c8050_fdc_device, wps_r))
- MCFG_MOS6530n_OUT_PB4_CB(WRITELINE(FDC_TAG, c8050_fdc_device, odd_hd_w))
- MCFG_MOS6530n_IN_PB6_CB(GND) // DOUBLE SIDED
- MCFG_MOS6530n_OUT_PB7_CB(INPUTLINE(M6504_TAG, M6502_IRQ_LINE))
-
- MCFG_DEVICE_ADD(FDC_TAG, C8050_FDC, XTAL(12'000'000)/2)
- MCFG_C8050_SYNC_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_pb7))
- MCFG_C8050_READY_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_ca1))
- MCFG_C8050_BRDY_CALLBACK(INPUTLINE(M6504_TAG, M6502_SET_OVERFLOW)) MCFG_DEVCB_XOR(1)
- MCFG_C8050_ERROR_CALLBACK(WRITELINE(M6522_TAG, via6522_device, write_cb1))
+ MCFG_VIA6522_CA2_HANDLER(WRITELINE(m_fdc, c8050_fdc_device, mode_sel_w))
+ MCFG_VIA6522_CB2_HANDLER(WRITELINE(m_fdc, c8050_fdc_device, rw_sel_w))
+
+ MOS6530_NEW(config, m_miot, XTAL(12'000'000)/12);
+ m_miot->pa_wr_callback().set(m_fdc, FUNC(c8050_fdc_device::write));
+ m_miot->pb_wr_callback<1>().set(m_fdc, FUNC(c8050_fdc_device::ds0_w));
+ m_miot->pb_wr_callback<2>().set(m_fdc, FUNC(c8050_fdc_device::ds1_w));
+ m_miot->pb_rd_callback<3>().set(m_fdc, FUNC(c8050_fdc_device::wps_r));
+ m_miot->pb_wr_callback<4>().set(m_fdc, FUNC(c8050_fdc_device::odd_hd_w));
+ m_miot->pb_rd_callback<6>().set_constant(0); // DOUBLE SIDED
+ m_miot->pb_wr_callback<7>().set_inputline(m_fdccpu, M6502_IRQ_LINE);
+
+ C8050_FDC(config, m_fdc, XTAL(12'000'000)/2);
+ m_fdc->sync_wr_callback().set(m_via, FUNC(via6522_device::write_pb7));
+ m_fdc->ready_wr_callback().set(m_via, FUNC(via6522_device::write_ca1));
+ m_fdc->brdy_wr_callback().set_inputline(m_fdccpu, M6502_SET_OVERFLOW).invert();
+ m_fdc->error_wr_callback().set(m_via, FUNC(via6522_device::write_cb1));
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", sfd1001_floppies, "525qd", sfd1001_device::floppy_formats)
MACHINE_CONFIG_END
@@ -779,7 +778,7 @@ c8050_device::c8050_device(const machine_config &mconfig, device_type type, cons
m_riot0(*this, M6532_0_TAG),
m_riot1(*this, M6532_1_TAG),
m_miot(*this, M6530_TAG),
- m_via(*this, M6522_TAG),
+ m_via(*this, "um3"),
m_floppy0(*this, FDC_TAG ":0"),
m_floppy1(*this, FDC_TAG ":1"),
m_fdc(*this, FDC_TAG),
diff --git a/src/devices/bus/ieee488/c8050fdc.h b/src/devices/bus/ieee488/c8050fdc.h
index 9bae3891284..2f75511b817 100644
--- a/src/devices/bus/ieee488/c8050fdc.h
+++ b/src/devices/bus/ieee488/c8050fdc.h
@@ -19,24 +19,6 @@
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_C8050_SYNC_CALLBACK(_write) \
- devcb = &downcast<c8050_fdc_device &>(*device).set_sync_wr_callback(DEVCB_##_write);
-
-#define MCFG_C8050_READY_CALLBACK(_write) \
- devcb = &downcast<c8050_fdc_device &>(*device).set_ready_wr_callback(DEVCB_##_write);
-
-#define MCFG_C8050_BRDY_CALLBACK(_write) \
- devcb = &downcast<c8050_fdc_device &>(*device).set_brdy_wr_callback(DEVCB_##_write);
-
-#define MCFG_C8050_ERROR_CALLBACK(_write) \
- devcb = &downcast<c8050_fdc_device &>(*device).set_error_wr_callback(DEVCB_##_write);
-
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -48,10 +30,10 @@ public:
// construction/destruction
c8050_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- 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)); }
+ auto sync_wr_callback() { return m_write_sync.bind(); }
+ auto ready_wr_callback() { return m_write_ready.bind(); }
+ auto brdy_wr_callback() { return m_write_brdy.bind(); }
+ auto error_wr_callback() { return m_write_error.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/bus/ieee488/hp9895.cpp b/src/devices/bus/ieee488/hp9895.cpp
index 31e0e4989df..72d99ce1c4f 100644
--- a/src/devices/bus/ieee488/hp9895.cpp
+++ b/src/devices/bus/ieee488/hp9895.cpp
@@ -891,18 +891,19 @@ MACHINE_CONFIG_START(hp9895_device::device_add_mconfig)
MCFG_DEVICE_IO_MAP(z80_io_map)
MCFG_Z80_SET_REFRESH_CALLBACK(WRITE8(*this, hp9895_device , z80_m1_w))
- MCFG_DEVICE_ADD("phi" , PHI , 0)
- MCFG_PHI_EOI_WRITE_CB(WRITELINE(*this, hp9895_device , phi_eoi_w))
- MCFG_PHI_DAV_WRITE_CB(WRITELINE(*this, hp9895_device , phi_dav_w))
- MCFG_PHI_NRFD_WRITE_CB(WRITELINE(*this, hp9895_device , phi_nrfd_w))
- MCFG_PHI_NDAC_WRITE_CB(WRITELINE(*this, hp9895_device , phi_ndac_w))
- MCFG_PHI_IFC_WRITE_CB(WRITELINE(*this, hp9895_device , phi_ifc_w))
- MCFG_PHI_SRQ_WRITE_CB(WRITELINE(*this, hp9895_device , phi_srq_w))
- MCFG_PHI_ATN_WRITE_CB(WRITELINE(*this, hp9895_device , phi_atn_w))
- MCFG_PHI_REN_WRITE_CB(WRITELINE(*this, hp9895_device , phi_ren_w))
- MCFG_PHI_DIO_READWRITE_CB(READ8(*this, hp9895_device , phi_dio_r) , WRITE8(*this, hp9895_device , phi_dio_w))
- MCFG_PHI_INT_WRITE_CB(WRITELINE(*this, hp9895_device , phi_int_w))
- MCFG_PHI_SYS_CNTRL_READ_CB(GND)
+ PHI(config, m_phi, 0);
+ m_phi->signal_write_cb<phi_device::PHI_488_EOI>().set(FUNC(hp9895_device::phi_eoi_w));
+ m_phi->signal_write_cb<phi_device::PHI_488_DAV>().set(FUNC(hp9895_device::phi_dav_w));
+ m_phi->signal_write_cb<phi_device::PHI_488_NRFD>().set(FUNC(hp9895_device::phi_nrfd_w));
+ m_phi->signal_write_cb<phi_device::PHI_488_NDAC>().set(FUNC(hp9895_device::phi_ndac_w));
+ m_phi->signal_write_cb<phi_device::PHI_488_IFC>().set(FUNC(hp9895_device::phi_ifc_w));
+ m_phi->signal_write_cb<phi_device::PHI_488_SRQ>().set(FUNC(hp9895_device::phi_srq_w));
+ m_phi->signal_write_cb<phi_device::PHI_488_ATN>().set(FUNC(hp9895_device::phi_atn_w));
+ m_phi->signal_write_cb<phi_device::PHI_488_REN>().set(FUNC(hp9895_device::phi_ren_w));
+ m_phi->dio_read_cb().set(FUNC(hp9895_device::phi_dio_r));
+ m_phi->dio_write_cb().set(FUNC(hp9895_device::phi_dio_w));
+ m_phi->int_write_cb().set(FUNC(hp9895_device::phi_int_w));
+ m_phi->sys_cntrl_read_cb().set_constant(0);
MCFG_FLOPPY_DRIVE_ADD("floppy0" , hp9895_floppies , "8dsdd" , hp9895_floppy_formats)
MCFG_SLOT_FIXED(true)
diff --git a/src/devices/bus/ieee488/ieee488.h b/src/devices/bus/ieee488/ieee488.h
index 2920eaa2320..9dd05039e0a 100644
--- a/src/devices/bus/ieee488/ieee488.h
+++ b/src/devices/bus/ieee488/ieee488.h
@@ -32,35 +32,35 @@
#define MCFG_IEEE488_EOI_CALLBACK(_write) \
- devcb = &downcast<ieee488_device *>(device)->set_eoi_callback(DEVCB_##_write);
+ downcast<ieee488_device *>(device)->set_eoi_callback(DEVCB_##_write);
#define MCFG_IEEE488_DAV_CALLBACK(_write) \
- devcb = &downcast<ieee488_device *>(device)->set_dav_callback(DEVCB_##_write);
+ downcast<ieee488_device *>(device)->set_dav_callback(DEVCB_##_write);
#define MCFG_IEEE488_NRFD_CALLBACK(_write) \
- devcb = &downcast<ieee488_device *>(device)->set_nrfd_callback(DEVCB_##_write);
+ downcast<ieee488_device *>(device)->set_nrfd_callback(DEVCB_##_write);
#define MCFG_IEEE488_NDAC_CALLBACK(_write) \
- devcb = &downcast<ieee488_device *>(device)->set_ndac_callback(DEVCB_##_write);
+ downcast<ieee488_device *>(device)->set_ndac_callback(DEVCB_##_write);
#define MCFG_IEEE488_IFC_CALLBACK(_write) \
- devcb = &downcast<ieee488_device *>(device)->set_ifc_callback(DEVCB_##_write);
+ downcast<ieee488_device *>(device)->set_ifc_callback(DEVCB_##_write);
#define MCFG_IEEE488_SRQ_CALLBACK(_write) \
- devcb = &downcast<ieee488_device *>(device)->set_srq_callback(DEVCB_##_write);
+ downcast<ieee488_device *>(device)->set_srq_callback(DEVCB_##_write);
#define MCFG_IEEE488_ATN_CALLBACK(_write) \
- devcb = &downcast<ieee488_device *>(device)->set_atn_callback(DEVCB_##_write);
+ downcast<ieee488_device *>(device)->set_atn_callback(DEVCB_##_write);
#define MCFG_IEEE488_REN_CALLBACK(_write) \
- devcb = &downcast<ieee488_device *>(device)->set_ren_callback(DEVCB_##_write);
+ downcast<ieee488_device *>(device)->set_ren_callback(DEVCB_##_write);
// This CB reports changes to the DIO lines on the bus (whose value comes from
// ANDing the DIO lines of each device on the bus)
// This CB is needed by those controllers that start a parallel poll and wait
// for some condition to be set by devices on the DIO lines (e.g. PHI controller).
#define MCFG_IEEE488_DIO_CALLBACK(_write) \
- devcb = &downcast<ieee488_device *>(device)->set_dio_callback(DEVCB_##_write);
+ downcast<ieee488_device *>(device)->set_dio_callback(DEVCB_##_write);
#define MCFG_IEEE488_SLOT_ADD(_tag, _address, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, IEEE488_SLOT, 0) \
diff --git a/src/devices/bus/interpro/keyboard/keyboard.h b/src/devices/bus/interpro/keyboard/keyboard.h
index f4bfc7cc0cb..9d40e5a9e96 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 = &downcast<interpro_keyboard_port_device &>(*device).set_rxd_handler(DEVCB_##cb);
+ downcast<interpro_keyboard_port_device &>(*device).set_rxd_handler(DEVCB_##cb);
class device_interpro_keyboard_port_interface;
diff --git a/src/devices/bus/interpro/mouse/mouse.h b/src/devices/bus/interpro/mouse/mouse.h
index d3a03f494a8..d13ee669e48 100644
--- a/src/devices/bus/interpro/mouse/mouse.h
+++ b/src/devices/bus/interpro/mouse/mouse.h
@@ -6,7 +6,7 @@
#pragma once
#define MCFG_MOUSE_STATE_CB(_state_cb) \
- devcb = &downcast<interpro_mouse_port_device &>(*device).set_state_callback(DEVCB_##_state_cb);
+ downcast<interpro_mouse_port_device &>(*device).set_state_callback(DEVCB_##_state_cb);
class device_interpro_mouse_port_interface;
diff --git a/src/devices/bus/interpro/sr/sr.h b/src/devices/bus/interpro/sr/sr.h
index ec584f0b7db..9d23fad04e5 100644
--- a/src/devices/bus/interpro/sr/sr.h
+++ b/src/devices/bus/interpro/sr/sr.h
@@ -7,16 +7,16 @@
#pragma once
#define MCFG_CBUS_OUT_IRQ0_CB(_devcb) \
- devcb = &downcast<cbus_device &>(*device).set_out_irq0_callback(DEVCB_##_devcb);
+ downcast<cbus_device &>(*device).set_out_irq0_callback(DEVCB_##_devcb);
#define MCFG_CBUS_OUT_IRQ1_CB(_devcb) \
- devcb = &downcast<cbus_device &>(*device).set_out_irq1_callback(DEVCB_##_devcb);
+ downcast<cbus_device &>(*device).set_out_irq1_callback(DEVCB_##_devcb);
#define MCFG_CBUS_OUT_IRQ2_CB(_devcb) \
- devcb = &downcast<cbus_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
+ downcast<cbus_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
#define MCFG_CBUS_OUT_VBLANK_CB(_devcb) \
- devcb = &downcast<cbus_device &>(*device).set_out_vblank_callback(DEVCB_##_devcb);
+ downcast<cbus_device &>(*device).set_out_vblank_callback(DEVCB_##_devcb);
#define MCFG_CBUS_SLOT_ADD(_bus_tag, _slot_tag, _slot_intf, _def_slot, _fixed) \
MCFG_DEVICE_ADD(_slot_tag, CBUS_SLOT, 0) \
@@ -28,16 +28,16 @@
#define MCFG_SRX_OUT_IRQ0_CB(_devcb) \
- devcb = &downcast<srx_device &>(*device).set_out_irq0_callback(DEVCB_##_devcb);
+ downcast<srx_device &>(*device).set_out_irq0_callback(DEVCB_##_devcb);
#define MCFG_SRX_OUT_IRQ1_CB(_devcb) \
- devcb = &downcast<srx_device &>(*device).set_out_irq1_callback(DEVCB_##_devcb);
+ downcast<srx_device &>(*device).set_out_irq1_callback(DEVCB_##_devcb);
#define MCFG_SRX_OUT_IRQ2_CB(_devcb) \
- devcb = &downcast<srx_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
+ downcast<srx_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
#define MCFG_SRX_OUT_VBLANK_CB(_devcb) \
- devcb = &downcast<srx_device &>(*device).set_out_vblank_callback(DEVCB_##_devcb);
+ downcast<srx_device &>(*device).set_out_vblank_callback(DEVCB_##_devcb);
#define MCFG_SRX_SLOT_ADD(_bus_tag, _slot_tag, _slot_intf, _def_slot, _fixed) \
MCFG_DEVICE_ADD(_slot_tag, SRX_SLOT, 0) \
diff --git a/src/devices/bus/iq151/iq151.h b/src/devices/bus/iq151/iq151.h
index 270e47193af..e68d27a007d 100644
--- a/src/devices/bus/iq151/iq151.h
+++ b/src/devices/bus/iq151/iq151.h
@@ -145,22 +145,22 @@ DECLARE_DEVICE_TYPE(IQ151CART_SLOT, iq151cart_slot_device)
***************************************************************************/
#define MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(_devcb) \
- devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq0_callback(DEVCB_##_devcb);
+ downcast<iq151cart_slot_device &>(*device).set_out_irq0_callback(DEVCB_##_devcb);
#define MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(_devcb) \
- devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq1_callback(DEVCB_##_devcb);
+ downcast<iq151cart_slot_device &>(*device).set_out_irq1_callback(DEVCB_##_devcb);
#define MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(_devcb) \
- devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
+ downcast<iq151cart_slot_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
#define MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(_devcb) \
- devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb);
+ downcast<iq151cart_slot_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb);
#define MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(_devcb) \
- devcb = &downcast<iq151cart_slot_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
+ downcast<iq151cart_slot_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
#define MCFG_IQ151CART_SLOT_OUT_DRQ_CB(_devcb) \
- devcb = &downcast<iq151cart_slot_device &>(*device).set_out_drq_callback(DEVCB_##_devcb);
+ downcast<iq151cart_slot_device &>(*device).set_out_drq_callback(DEVCB_##_devcb);
#define MCFG_IQ151CART_SLOT_SCREEN_TAG(screen_tag) \
downcast<iq151cart_slot_device &>(*device).set_screen_tag(screen_tag);
diff --git a/src/devices/bus/isa/gus.h b/src/devices/bus/isa/gus.h
index 09f86e0b091..47428309970 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 = &downcast<gf1_device &>(*device).set_txirq_handler(DEVCB_##_devcb);
+ downcast<gf1_device &>(*device).set_txirq_handler(DEVCB_##_devcb);
#define MCFG_GF1_RXIRQ_HANDLER(_devcb) \
- devcb = &downcast<gf1_device &>(*device).set_rxirq_handler(DEVCB_##_devcb);
+ downcast<gf1_device &>(*device).set_rxirq_handler(DEVCB_##_devcb);
#define MCFG_GF1_WAVE_IRQ_HANDLER(_devcb) \
- devcb = &downcast<gf1_device &>(*device).set_wave_irq_handler(DEVCB_##_devcb);
+ downcast<gf1_device &>(*device).set_wave_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_RAMP_IRQ_HANDLER(_devcb) \
- devcb = &downcast<gf1_device &>(*device).set_ramp_irq_handler(DEVCB_##_devcb);
+ downcast<gf1_device &>(*device).set_ramp_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_TIMER1_IRQ_HANDLER(_devcb) \
- devcb = &downcast<gf1_device &>(*device).set_timer1_irq_handler(DEVCB_##_devcb);
+ downcast<gf1_device &>(*device).set_timer1_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_TIMER2_IRQ_HANDLER(_devcb) \
- devcb = &downcast<gf1_device &>(*device).set_timer2_irq_handler(DEVCB_##_devcb);
+ downcast<gf1_device &>(*device).set_timer2_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_SB_IRQ_HANDLER(_devcb) \
- devcb = &downcast<gf1_device &>(*device).set_sb_irq_handler(DEVCB_##_devcb);
+ downcast<gf1_device &>(*device).set_sb_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_DMA_IRQ_HANDLER(_devcb) \
- devcb = &downcast<gf1_device &>(*device).set_dma_irq_handler(DEVCB_##_devcb);
+ downcast<gf1_device &>(*device).set_dma_irq_handler(DEVCB_##_devcb);
#define MCFG_GF1_DRQ1_HANDLER(_devcb) \
- devcb = &downcast<gf1_device &>(*device).set_drq1_handler(DEVCB_##_devcb);
+ downcast<gf1_device &>(*device).set_drq1_handler(DEVCB_##_devcb);
#define MCFG_GF1_DRQ2_HANDLER(_devcb) \
- devcb = &downcast<gf1_device &>(*device).set_drq2_handler(DEVCB_##_devcb);
+ downcast<gf1_device &>(*device).set_drq2_handler(DEVCB_##_devcb);
#define MCFG_GF1_NMI_HANDLER(_devcb) \
- devcb = &downcast<gf1_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
+ downcast<gf1_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/bus/isa/hdc.h b/src/devices/bus/isa/hdc.h
index a935fe9288d..3e91c57d063 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 = &downcast<xt_hdc_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<xt_hdc_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_XTHDC_DRQ_HANDLER(_devcb) \
- devcb = &downcast<xt_hdc_device &>(*device).set_drq_handler(DEVCB_##_devcb);
+ downcast<xt_hdc_device &>(*device).set_drq_handler(DEVCB_##_devcb);
class xt_hdc_device :
public device_t
diff --git a/src/devices/bus/isa/isa.h b/src/devices/bus/isa/isa.h
index 47bd9a23993..36654de4e17 100644
--- a/src/devices/bus/isa/isa.h
+++ b/src/devices/bus/isa/isa.h
@@ -85,62 +85,62 @@
downcast<isa8_device &>(*device).set_custom_spaces();
#define MCFG_ISA_BUS_IOCHCK(_iochck) \
- devcb = &downcast<isa8_device *>(device)->set_iochck_callback(DEVCB_##_iochck);
+ downcast<isa8_device *>(device)->set_iochck_callback(DEVCB_##_iochck);
#define MCFG_ISA_OUT_IRQ2_CB(_devcb) \
- devcb = &downcast<isa8_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
+ downcast<isa8_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ3_CB(_devcb) \
- devcb = &downcast<isa8_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb);
+ downcast<isa8_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ4_CB(_devcb) \
- devcb = &downcast<isa8_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
+ downcast<isa8_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ5_CB(_devcb) \
- devcb = &downcast<isa8_device &>(*device).set_out_irq5_callback(DEVCB_##_devcb);
+ downcast<isa8_device &>(*device).set_out_irq5_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ6_CB(_devcb) \
- devcb = &downcast<isa8_device &>(*device).set_out_irq6_callback(DEVCB_##_devcb);
+ downcast<isa8_device &>(*device).set_out_irq6_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ7_CB(_devcb) \
- devcb = &downcast<isa8_device &>(*device).set_out_irq7_callback(DEVCB_##_devcb);
+ downcast<isa8_device &>(*device).set_out_irq7_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ1_CB(_devcb) \
- devcb = &downcast<isa8_device &>(*device).set_out_drq1_callback(DEVCB_##_devcb);
+ downcast<isa8_device &>(*device).set_out_drq1_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ2_CB(_devcb) \
- devcb = &downcast<isa8_device &>(*device).set_out_drq2_callback(DEVCB_##_devcb);
+ downcast<isa8_device &>(*device).set_out_drq2_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ3_CB(_devcb) \
- devcb = &downcast<isa8_device &>(*device).set_out_drq3_callback(DEVCB_##_devcb);
+ downcast<isa8_device &>(*device).set_out_drq3_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ10_CB(_devcb) \
- devcb = &downcast<isa16_device &>(*device).set_out_irq10_callback(DEVCB_##_devcb);
+ downcast<isa16_device &>(*device).set_out_irq10_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ11_CB(_devcb) \
- devcb = &downcast<isa16_device &>(*device).set_out_irq11_callback(DEVCB_##_devcb);
+ downcast<isa16_device &>(*device).set_out_irq11_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ12_CB(_devcb) \
- devcb = &downcast<isa16_device &>(*device).set_out_irq12_callback(DEVCB_##_devcb);
+ downcast<isa16_device &>(*device).set_out_irq12_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ14_CB(_devcb) \
- devcb = &downcast<isa16_device &>(*device).set_out_irq14_callback(DEVCB_##_devcb);
+ downcast<isa16_device &>(*device).set_out_irq14_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_IRQ15_CB(_devcb) \
- devcb = &downcast<isa16_device &>(*device).set_out_irq15_callback(DEVCB_##_devcb);
+ downcast<isa16_device &>(*device).set_out_irq15_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ0_CB(_devcb) \
- devcb = &downcast<isa16_device &>(*device).set_out_drq0_callback(DEVCB_##_devcb);
+ downcast<isa16_device &>(*device).set_out_drq0_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ5_CB(_devcb) \
- devcb = &downcast<isa16_device &>(*device).set_out_drq5_callback(DEVCB_##_devcb);
+ downcast<isa16_device &>(*device).set_out_drq5_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ6_CB(_devcb) \
- devcb = &downcast<isa16_device &>(*device).set_out_drq6_callback(DEVCB_##_devcb);
+ downcast<isa16_device &>(*device).set_out_drq6_callback(DEVCB_##_devcb);
#define MCFG_ISA_OUT_DRQ7_CB(_devcb) \
- devcb = &downcast<isa16_device &>(*device).set_out_drq7_callback(DEVCB_##_devcb);
+ downcast<isa16_device &>(*device).set_out_drq7_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/isa/p1_hdc.cpp b/src/devices/bus/isa/p1_hdc.cpp
index 9fdfe607e1e..8b743bdac03 100644
--- a/src/devices/bus/isa/p1_hdc.cpp
+++ b/src/devices/bus/isa/p1_hdc.cpp
@@ -26,8 +26,6 @@
} \
} while (0)
-#define KM1809VG7_TAG "d17"
-
//**************************************************************************
// DEVICE DEFINITIONS
@@ -59,12 +57,12 @@ ROM_END
//-------------------------------------------------
MACHINE_CONFIG_START(p1_hdc_device::device_add_mconfig)
- MCFG_DEVICE_ADD(KM1809VG7_TAG, WD2010, 5000000) // XXX clock?
- MCFG_WD2010_IN_DRDY_CB(VCC)
- MCFG_WD2010_IN_INDEX_CB(VCC)
- MCFG_WD2010_IN_WF_CB(VCC)
- MCFG_WD2010_IN_TK000_CB(VCC)
- MCFG_WD2010_IN_SC_CB(VCC)
+ WD2010(config, m_hdc, 5'000'000); // XXX clock?
+ m_hdc->in_drdy_callback().set_constant(1);
+ m_hdc->in_index_callback().set_constant(1);
+ m_hdc->in_wf_callback().set_constant(1);
+ m_hdc->in_tk000_callback().set_constant(1);
+ m_hdc->in_sc_callback().set_constant(1);
MCFG_HARDDISK_ADD("hard0")
MCFG_HARDDISK_ADD("hard1")
@@ -117,7 +115,7 @@ WRITE8_MEMBER(p1_hdc_device::p1_HDC_w)
p1_hdc_device::p1_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, P1_HDC, tag, owner, clock)
, device_isa8_card_interface(mconfig, *this)
- , m_hdc(*this, KM1809VG7_TAG)
+ , m_hdc(*this, "d17")
{
}
diff --git a/src/devices/bus/isa/wdxt_gen.cpp b/src/devices/bus/isa/wdxt_gen.cpp
index 244383a4cef..18778d5c092 100644
--- a/src/devices/bus/isa/wdxt_gen.cpp
+++ b/src/devices/bus/isa/wdxt_gen.cpp
@@ -53,8 +53,6 @@ Notes:
//**************************************************************************
#define WD1015_TAG "u6"
-#define WD11C00_17_TAG "u11"
-#define WD2010A_TAG "u7"
@@ -94,7 +92,7 @@ const tiny_rom_entry *wdxt_gen_device::device_rom_region() const
void wdxt_gen_device::wd1015_io(address_map &map)
{
- map(0x00, 0xff).rw(WD11C00_17_TAG, FUNC(wd11c00_17_device::read), FUNC(wd11c00_17_device::write));
+ map(0x00, 0xff).rw(m_host, FUNC(wd11c00_17_device::read), FUNC(wd11c00_17_device::write));
}
@@ -140,34 +138,35 @@ WRITE8_MEMBER( wdxt_gen_device::ram_w )
//-------------------------------------------------
MACHINE_CONFIG_START(wdxt_gen_device::device_add_mconfig)
- MCFG_DEVICE_ADD(WD1015_TAG, I8049, 5000000)
- MCFG_DEVICE_IO_MAP(wd1015_io)
- MCFG_MCS48_PORT_T0_IN_CB(READLINE(WD11C00_17_TAG, wd11c00_17_device, busy_r))
- MCFG_MCS48_PORT_T1_IN_CB(READLINE(*this, wdxt_gen_device, wd1015_t1_r))
- MCFG_MCS48_PORT_P1_IN_CB(READ8(*this, wdxt_gen_device, wd1015_p1_r))
- MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(*this, wdxt_gen_device, wd1015_p1_w))
- MCFG_MCS48_PORT_P2_IN_CB(READ8(*this, wdxt_gen_device, wd1015_p2_r))
- MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(*this, wdxt_gen_device, wd1015_p2_w))
-
- MCFG_DEVICE_ADD(WD11C00_17_TAG, WD11C00_17, 5000000)
- MCFG_WD11C00_17_OUT_IRQ5_CB(WRITELINE(*this, wdxt_gen_device, irq5_w))
- MCFG_WD11C00_17_OUT_DRQ3_CB(WRITELINE(*this, wdxt_gen_device, drq3_w))
- MCFG_WD11C00_17_OUT_MR_CB(WRITELINE(*this, wdxt_gen_device, mr_w))
- MCFG_WD11C00_17_OUT_RA3_CB(INPUTLINE(WD1015_TAG, MCS48_INPUT_IRQ))
- MCFG_WD11C00_17_IN_RD322_CB(READ8(*this, wdxt_gen_device, rd322_r))
- MCFG_WD11C00_17_IN_RAMCS_CB(READ8(*this, wdxt_gen_device, ram_r))
- MCFG_WD11C00_17_OUT_RAMWR_CB(WRITE8(*this, wdxt_gen_device, ram_w))
- MCFG_WD11C00_17_IN_CS1010_CB(READ8(WD2010A_TAG, wd2010_device, read))
- MCFG_WD11C00_17_OUT_CS1010_CB(WRITE8(WD2010A_TAG, wd2010_device, write))
- MCFG_DEVICE_ADD(WD2010A_TAG, WD2010, 5000000)
- MCFG_WD2010_OUT_BCR_CB(WRITELINE(WD11C00_17_TAG, wd11c00_17_device, clct_w))
- MCFG_WD2010_IN_BCS_CB(READ8(WD11C00_17_TAG, wd11c00_17_device, read))
- MCFG_WD2010_OUT_BCS_CB(WRITE8(WD11C00_17_TAG, wd11c00_17_device, write))
- MCFG_WD2010_IN_DRDY_CB(VCC)
- MCFG_WD2010_IN_INDEX_CB(VCC)
- MCFG_WD2010_IN_WF_CB(VCC)
- MCFG_WD2010_IN_TK000_CB(VCC)
- MCFG_WD2010_IN_SC_CB(VCC)
+ mcs48_cpu_device &cpu(I8049(config, m_maincpu, 5000000));
+ cpu.set_addrmap(AS_IO, &wdxt_gen_device::wd1015_io);
+ cpu.t0_in_cb().set(m_host, FUNC(wd11c00_17_device::busy_r));
+ cpu.t1_in_cb().set(FUNC(wdxt_gen_device::wd1015_t1_r));
+ cpu.p1_in_cb().set(FUNC(wdxt_gen_device::wd1015_p1_r));
+ cpu.p1_out_cb().set(FUNC(wdxt_gen_device::wd1015_p1_w));
+ cpu.p2_in_cb().set(FUNC(wdxt_gen_device::wd1015_p2_r));
+ cpu.p2_out_cb().set(FUNC(wdxt_gen_device::wd1015_p2_w));
+
+ WD11C00_17(config, m_host, 5000000);
+ m_host->out_irq5_callback().set(FUNC(wdxt_gen_device::irq5_w));
+ m_host->out_drq3_callback().set(FUNC(wdxt_gen_device::drq3_w));
+ m_host->out_mr_callback().set(FUNC(wdxt_gen_device::mr_w));
+ m_host->out_ra3_callback().set_inputline(m_maincpu, MCS48_INPUT_IRQ);
+ m_host->in_rd322_callback().set(FUNC(wdxt_gen_device::rd322_r));
+ m_host->in_ramcs_callback().set(FUNC(wdxt_gen_device::ram_r));
+ m_host->out_ramwr_callback().set(FUNC(wdxt_gen_device::ram_w));
+ m_host->in_cs1010_callback().set(m_hdc, FUNC(wd2010_device::read));
+ m_host->out_cs1010_callback().set(m_hdc, FUNC(wd2010_device::write));
+
+ WD2010(config, m_hdc, 5000000);
+ m_hdc->out_bcr_callback().set(m_host, FUNC(wd11c00_17_device::clct_w));
+ m_hdc->in_bcs_callback().set(m_host, FUNC(wd11c00_17_device::read));
+ m_hdc->out_bcs_callback().set(m_host, FUNC(wd11c00_17_device::write));
+ m_hdc->in_drdy_callback().set_constant(1);
+ m_hdc->in_index_callback().set_constant(1);
+ m_hdc->in_wf_callback().set_constant(1);
+ m_hdc->in_tk000_callback().set_constant(1);
+ m_hdc->in_sc_callback().set_constant(1);
MCFG_HARDDISK_ADD("hard0")
MCFG_HARDDISK_ADD("hard1")
@@ -186,8 +185,8 @@ wdxt_gen_device::wdxt_gen_device(const machine_config &mconfig, const char *tag,
: device_t(mconfig, ISA8_WDXT_GEN, tag, owner, clock)
, device_isa8_card_interface(mconfig, *this)
, m_maincpu(*this, WD1015_TAG)
- , m_host(*this, WD11C00_17_TAG)
- , m_hdc(*this, WD2010A_TAG)
+ , m_host(*this, "u11")
+ , m_hdc(*this, "u7")
{
}
diff --git a/src/devices/bus/kc/kc.h b/src/devices/bus/kc/kc.h
index 083f60e3a66..0689169c5ee 100644
--- a/src/devices/bus/kc/kc.h
+++ b/src/devices/bus/kc/kc.h
@@ -121,26 +121,26 @@ DECLARE_DEVICE_TYPE(KCCART_SLOT, kccart_slot_device)
***************************************************************************/
#define MCFG_KCEXP_SLOT_OUT_IRQ_CB(_devcb) \
- devcb = &downcast<kcexp_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<kcexp_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_KCEXP_SLOT_OUT_NMI_CB(_devcb) \
- devcb = &downcast<kcexp_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
+ downcast<kcexp_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_KCEXP_SLOT_OUT_HALT_CB(_devcb) \
- devcb = &downcast<kcexp_slot_device &>(*device).set_out_halt_callback(DEVCB_##_devcb);
+ downcast<kcexp_slot_device &>(*device).set_out_halt_callback(DEVCB_##_devcb);
#define MCFG_KCEXP_SLOT_NEXT_SLOT(_next_slot_tag) \
downcast<kcexp_slot_device &>(*device).set_next_slot(_next_slot_tag);
#define MCFG_KCCART_SLOT_OUT_IRQ_CB(_devcb) \
- devcb = &downcast<kccart_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<kccart_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_KCCART_SLOT_OUT_NMI_CB(_devcb) \
- devcb = &downcast<kccart_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
+ downcast<kccart_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_KCCART_SLOT_OUT_HALT_CB(_devcb) \
- devcb = &downcast<kccart_slot_device &>(*device).set_out_halt_callback(DEVCB_##_devcb);
+ downcast<kccart_slot_device &>(*device).set_out_halt_callback(DEVCB_##_devcb);
#define MCFG_KCCART_SLOT_NEXT_SLOT(_next_slot_tag) \
downcast<kccart_slot_device &>(*device).set_next_slot(_next_slot_tag);
diff --git a/src/devices/bus/lpci/i82371sb.h b/src/devices/bus/lpci/i82371sb.h
index a3904279614..0352b13e445 100644
--- a/src/devices/bus/lpci/i82371sb.h
+++ b/src/devices/bus/lpci/i82371sb.h
@@ -67,9 +67,9 @@ private:
DECLARE_DEVICE_TYPE(I82371SB, i82371sb_device)
#define MCFG_I82371SB_SMI_CB(_devcb) \
- devcb = &downcast<i82371sb_device &>(*device).set_smi_callback(DEVCB_##_devcb);
+ downcast<i82371sb_device &>(*device).set_smi_callback(DEVCB_##_devcb);
#define MCFG_I82371SB_BOOT_STATE_HOOK(_devcb) \
- devcb = &downcast<i82371sb_device &>(*device).set_boot_state_hook(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/southbridge.cpp b/src/devices/bus/lpci/southbridge.cpp
index 27eead94a7b..25b37e3a298 100644
--- a/src/devices/bus/lpci/southbridge.cpp
+++ b/src/devices/bus/lpci/southbridge.cpp
@@ -69,12 +69,12 @@ MACHINE_CONFIG_START(southbridge_device::device_add_mconfig)
MCFG_DEVICE_ADD("pic8259_master", PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(INPUTLINE(":maincpu", 0))
- MCFG_PIC8259_IN_SP_CB(VCC)
+ MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, southbridge_device, get_slave_ack))
MCFG_DEVICE_ADD("pic8259_slave", PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_master", pic8259_device, ir2_w))
- MCFG_PIC8259_IN_SP_CB(GND)
+ MCFG_PIC8259_IN_SP_CB(CONSTANT(0))
MCFG_BUS_MASTER_IDE_CONTROLLER_ADD("ide", ata_devices, "hdd", nullptr, false)
MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE("pic8259_slave", pic8259_device, ir6_w))
diff --git a/src/devices/bus/midi/midi.h b/src/devices/bus/midi/midi.h
index 114c6bf948b..5ca8bb92e2c 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 = &downcast<midi_port_device &>(*device).set_rx_handler(DEVCB_##_devcb);
+ downcast<midi_port_device &>(*device).set_rx_handler(DEVCB_##_devcb);
class device_midi_port_interface;
diff --git a/src/devices/bus/msx_slot/cartridge.h b/src/devices/bus/msx_slot/cartridge.h
index ff8fbb96fb3..be0856e8d82 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 = &downcast<msx_slot_cartridge_device &>(*device).set_irq_handler(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 = &downcast<msx_slot_cartridge_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<msx_slot_cartridge_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class msx_slot_cartridge_device : public device_t
diff --git a/src/devices/bus/nasbus/nasbus.h b/src/devices/bus/nasbus/nasbus.h
index 477a737e7f9..8a0a1d3775f 100644
--- a/src/devices/bus/nasbus/nasbus.h
+++ b/src/devices/bus/nasbus/nasbus.h
@@ -114,7 +114,7 @@
downcast<nasbus_slot_device &>(*device).set_nasbus_slot(this, NASBUS_TAG);
#define MCFG_NASBUS_RAM_DISABLE_HANDLER(_devcb) \
- devcb = &downcast<nasbus_device &>(*device).set_ram_disable_handler(DEVCB_##_devcb);
+ downcast<nasbus_device &>(*device).set_ram_disable_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/newbrain/eim.cpp b/src/devices/bus/newbrain/eim.cpp
index 65994afe2ca..b778b092694 100644
--- a/src/devices/bus/newbrain/eim.cpp
+++ b/src/devices/bus/newbrain/eim.cpp
@@ -78,14 +78,14 @@ MACHINE_CONFIG_START(newbrain_eim_device::device_add_mconfig)
MCFG_DEVICE_ADD(ADC0809_TAG, ADC0809, 500000)
MCFG_ADC0808_EOC_CB(WRITELINE(*this, newbrain_eim_device, adc_eoc_w))
- MCFG_ADC0808_IN0_CB(GND)
- MCFG_ADC0808_IN1_CB(GND)
- MCFG_ADC0808_IN2_CB(GND)
- MCFG_ADC0808_IN3_CB(GND)
- MCFG_ADC0808_IN4_CB(GND)
- MCFG_ADC0808_IN5_CB(GND)
- MCFG_ADC0808_IN6_CB(GND)
- MCFG_ADC0808_IN7_CB(GND)
+ MCFG_ADC0808_IN0_CB(CONSTANT(0))
+ MCFG_ADC0808_IN1_CB(CONSTANT(0))
+ MCFG_ADC0808_IN2_CB(CONSTANT(0))
+ MCFG_ADC0808_IN3_CB(CONSTANT(0))
+ MCFG_ADC0808_IN4_CB(CONSTANT(0))
+ MCFG_ADC0808_IN5_CB(CONSTANT(0))
+ MCFG_ADC0808_IN6_CB(CONSTANT(0))
+ MCFG_ADC0808_IN7_CB(CONSTANT(0))
MCFG_DEVICE_ADD(MC6850_TAG, ACIA6850, 0)
MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, newbrain_eim_device, acia_interrupt))
diff --git a/src/devices/bus/nubus/nubus.h b/src/devices/bus/nubus/nubus.h
index 011a87a861d..37c5700df6e 100644
--- a/src/devices/bus/nubus/nubus.h
+++ b/src/devices/bus/nubus/nubus.h
@@ -23,22 +23,22 @@
downcast<nubus_device &>(*device).set_cputag(_cputag);
#define MCFG_NUBUS_OUT_IRQ9_CB(_devcb) \
- devcb = &downcast<nubus_device &>(*device).set_out_irq9_callback(DEVCB_##_devcb);
+ downcast<nubus_device &>(*device).set_out_irq9_callback(DEVCB_##_devcb);
#define MCFG_NUBUS_OUT_IRQA_CB(_devcb) \
- devcb = &downcast<nubus_device &>(*device).set_out_irqa_callback(DEVCB_##_devcb);
+ downcast<nubus_device &>(*device).set_out_irqa_callback(DEVCB_##_devcb);
#define MCFG_NUBUS_OUT_IRQB_CB(_devcb) \
- devcb = &downcast<nubus_device &>(*device).set_out_irqb_callback(DEVCB_##_devcb);
+ downcast<nubus_device &>(*device).set_out_irqb_callback(DEVCB_##_devcb);
#define MCFG_NUBUS_OUT_IRQC_CB(_devcb) \
- devcb = &downcast<nubus_device &>(*device).set_out_irqc_callback(DEVCB_##_devcb);
+ downcast<nubus_device &>(*device).set_out_irqc_callback(DEVCB_##_devcb);
#define MCFG_NUBUS_OUT_IRQD_CB(_devcb) \
- devcb = &downcast<nubus_device &>(*device).set_out_irqd_callback(DEVCB_##_devcb);
+ downcast<nubus_device &>(*device).set_out_irqd_callback(DEVCB_##_devcb);
#define MCFG_NUBUS_OUT_IRQE_CB(_devcb) \
- devcb = &downcast<nubus_device &>(*device).set_out_irqe_callback(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) \
diff --git a/src/devices/bus/oricext/oricext.h b/src/devices/bus/oricext/oricext.h
index febcc9384e0..0daf45dc612 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 = &downcast<oricext_connector &>(*device).set_irq_handler(DEVCB_##_irq);
+ downcast<oricext_connector &>(*device).set_irq_handler(DEVCB_##_irq);
class oricext_device;
diff --git a/src/devices/bus/pc1512/mouse.h b/src/devices/bus/pc1512/mouse.h
index ca98296f53d..db432598a98 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 = &downcast<pc1512_mouse_port_device &>(*device).set_x_wr_callback(DEVCB_##_write);
+ downcast<pc1512_mouse_port_device &>(*device).set_x_wr_callback(DEVCB_##_write);
#define MCFG_PC1512_MOUSE_PORT_Y_CB(_write) \
- devcb = &downcast<pc1512_mouse_port_device &>(*device).set_y_wr_callback(DEVCB_##_write);
+ downcast<pc1512_mouse_port_device &>(*device).set_y_wr_callback(DEVCB_##_write);
#define MCFG_PC1512_MOUSE_PORT_M1_CB(_write) \
- devcb = &downcast<pc1512_mouse_port_device &>(*device).set_m1_wr_callback(DEVCB_##_write);
+ downcast<pc1512_mouse_port_device &>(*device).set_m1_wr_callback(DEVCB_##_write);
#define MCFG_PC1512_MOUSE_PORT_M2_CB(_write) \
- devcb = &downcast<pc1512_mouse_port_device &>(*device).set_m2_wr_callback(DEVCB_##_write);
+ downcast<pc1512_mouse_port_device &>(*device).set_m2_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/pc_kbd/pc_kbdc.h b/src/devices/bus/pc_kbd/pc_kbdc.h
index 75a17da2d19..4e20fc68a1c 100644
--- a/src/devices/bus/pc_kbd/pc_kbdc.h
+++ b/src/devices/bus/pc_kbd/pc_kbdc.h
@@ -21,10 +21,10 @@ set the data line and then set the clock line.
//**************************************************************************
#define MCFG_PC_KBDC_OUT_CLOCK_CB(_devcb) \
- devcb = &downcast<pc_kbdc_device &>(*device).set_out_clock_callback(DEVCB_##_devcb);
+ downcast<pc_kbdc_device &>(*device).set_out_clock_callback(DEVCB_##_devcb);
#define MCFG_PC_KBDC_OUT_DATA_CB(_devcb) \
- devcb = &downcast<pc_kbdc_device &>(*device).set_out_data_callback(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 ) \
diff --git a/src/devices/bus/pet/cass.h b/src/devices/bus/pet/cass.h
index c843f58282b..29d64278a3b 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 = &downcast<pet_datassette_port_device &>(*device).set_read_handler(DEVCB_##_devcb);
+ downcast<pet_datassette_port_device &>(*device).set_read_handler(DEVCB_##_devcb);
diff --git a/src/devices/bus/pet/user.h b/src/devices/bus/pet/user.h
index 651e121a2fa..71e1c19e799 100644
--- a/src/devices/bus/pet/user.h
+++ b/src/devices/bus/pet/user.h
@@ -28,61 +28,61 @@
#define MCFG_PET_USER_PORT_2_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_2_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_2_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_3_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_3_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_3_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_4_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_4_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_4_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_5_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_5_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_5_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_6_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_6_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_6_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_7_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_7_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_7_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_8_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_8_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_8_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_9_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_9_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_9_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_10_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_10_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_10_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_B_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_b_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_b_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_C_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_c_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_c_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_D_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_d_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_d_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_E_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_e_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_e_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_F_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_f_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_f_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_H_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_h_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_h_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_J_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_j_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_j_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_K_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_k_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_k_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_L_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_l_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_l_handler(DEVCB_##_devcb);
#define MCFG_PET_USER_PORT_M_HANDLER(_devcb) \
- devcb = &downcast<pet_user_port_device &>(*device).set_m_handler(DEVCB_##_devcb);
+ downcast<pet_user_port_device &>(*device).set_m_handler(DEVCB_##_devcb);
DECLARE_DEVICE_TYPE(PET_USER_PORT, pet_user_port_device)
@@ -125,6 +125,25 @@ public:
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)); }
+ auto p2_handler() { return m_2_handler.bind(); }
+ auto p3_handler() { return m_3_handler.bind(); }
+ auto p4_handler() { return m_4_handler.bind(); }
+ auto p5_handler() { return m_5_handler.bind(); }
+ auto p6_handler() { return m_6_handler.bind(); }
+ auto p7_handler() { return m_7_handler.bind(); }
+ auto p8_handler() { return m_8_handler.bind(); }
+ auto p9_handler() { return m_9_handler.bind(); }
+ auto p10_handler() { return m_10_handler.bind(); }
+ auto pb_handler() { return m_b_handler.bind(); }
+ auto pc_handler() { return m_c_handler.bind(); }
+ auto pd_handler() { return m_d_handler.bind(); }
+ auto pe_handler() { return m_e_handler.bind(); }
+ auto pf_handler() { return m_f_handler.bind(); }
+ auto ph_handler() { return m_h_handler.bind(); }
+ auto pj_handler() { return m_j_handler.bind(); }
+ auto pk_handler() { return m_k_handler.bind(); }
+ auto pl_handler() { return m_l_handler.bind(); }
+ auto pm_handler() { return m_m_handler.bind(); }
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 09fc78e3b23..35dc291fa52 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 = &downcast<plus4_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<plus4_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_PLUS4_EXPANSION_SLOT_CD_INPUT_CALLBACK(_read) \
- devcb = &downcast<plus4_expansion_slot_device &>(*device).set_cd_rd_callback(DEVCB_##_read);
+ downcast<plus4_expansion_slot_device &>(*device).set_cd_rd_callback(DEVCB_##_read);
#define MCFG_PLUS4_EXPANSION_SLOT_CD_OUTPUT_CALLBACK(_write) \
- devcb = &downcast<plus4_expansion_slot_device &>(*device).set_cd_wr_callback(DEVCB_##_write);
+ downcast<plus4_expansion_slot_device &>(*device).set_cd_wr_callback(DEVCB_##_write);
#define MCFG_PLUS4_EXPANSION_SLOT_AEC_CALLBACK(_write) \
- devcb = &downcast<plus4_expansion_slot_device &>(*device).set_aec_wr_callback(DEVCB_##_write);
+ downcast<plus4_expansion_slot_device &>(*device).set_aec_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/pofo/exp.h b/src/devices/bus/pofo/exp.h
index 08db6ef24ee..ab0685d28ca 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 = &downcast<portfolio_expansion_slot_device &>(*device).set_eint_wr_callback(DEVCB_##_write);
+ downcast<portfolio_expansion_slot_device &>(*device).set_eint_wr_callback(DEVCB_##_write);
#define MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(_write) \
- devcb = &downcast<portfolio_expansion_slot_device &>(*device).set_nmio_wr_callback(DEVCB_##_write);
+ downcast<portfolio_expansion_slot_device &>(*device).set_nmio_wr_callback(DEVCB_##_write);
#define MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(_write) \
- devcb = &downcast<portfolio_expansion_slot_device &>(*device).set_wake_wr_callback(DEVCB_##_write);
+ downcast<portfolio_expansion_slot_device &>(*device).set_wake_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/psi_kbd/psi_kbd.h b/src/devices/bus/psi_kbd/psi_kbd.h
index 1b35adca1c6..8e62b1df17b 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 = &downcast<psi_keyboard_bus_device &>(*device).set_rx_handler(DEVCB_##_devcb);
+ downcast<psi_keyboard_bus_device &>(*device).set_rx_handler(DEVCB_##_devcb);
#define MCFG_PSI_KEYBOARD_KEY_STROBE_HANDLER(_devcb) \
- devcb = &downcast<psi_keyboard_bus_device &>(*device).set_key_strobe_handler(DEVCB_##_devcb);
+ downcast<psi_keyboard_bus_device &>(*device).set_key_strobe_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/psx/ctlrport.h b/src/devices/bus/psx/ctlrport.h
index 29c8f38b604..ba9191b239d 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 = &downcast<psxcontrollerports_device &>(*device).set_dsr_handler(DEVCB_##_devcb);
+ downcast<psxcontrollerports_device &>(*device).set_dsr_handler(DEVCB_##_devcb);
#define MCFG_PSX_CONTROLLER_PORTS_RXD_HANDLER(_devcb) \
- devcb = &downcast<psxcontrollerports_device &>(*device).set_rxd_handler(DEVCB_##_devcb);
+ downcast<psxcontrollerports_device &>(*device).set_rxd_handler(DEVCB_##_devcb);
class psxcontrollerports_device : public device_t
{
diff --git a/src/devices/bus/ql/exp.h b/src/devices/bus/ql/exp.h
index 9f9c6cb22f3..ed5febc4854 100644
--- a/src/devices/bus/ql/exp.h
+++ b/src/devices/bus/ql/exp.h
@@ -53,16 +53,16 @@
//**************************************************************************
#define MCFG_QL_EXPANSION_SLOT_IPL0L_CALLBACK(_write) \
- devcb = &downcast<ql_expansion_slot_device &>(*device).set_ipl0l_wr_callback(DEVCB_##_write);
+ downcast<ql_expansion_slot_device &>(*device).set_ipl0l_wr_callback(DEVCB_##_write);
#define MCFG_QL_EXPANSION_SLOT_IPL1L_CALLBACK(_write) \
- devcb = &downcast<ql_expansion_slot_device &>(*device).set_ipl1l_wr_callback(DEVCB_##_write);
+ downcast<ql_expansion_slot_device &>(*device).set_ipl1l_wr_callback(DEVCB_##_write);
#define MCFG_QL_EXPANSION_SLOT_BERRL_CALLBACK(_write) \
- devcb = &downcast<ql_expansion_slot_device &>(*device).set_berrl_wr_callback(DEVCB_##_write);
+ downcast<ql_expansion_slot_device &>(*device).set_berrl_wr_callback(DEVCB_##_write);
#define MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(_write) \
- devcb = &downcast<ql_expansion_slot_device &>(*device).set_extintl_wr_callback(DEVCB_##_write);
+ downcast<ql_expansion_slot_device &>(*device).set_extintl_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/rs232/rs232.h b/src/devices/bus/rs232/rs232.h
index c4db0af2313..b58f876cb48 100644
--- a/src/devices/bus/rs232/rs232.h
+++ b/src/devices/bus/rs232/rs232.h
@@ -9,28 +9,28 @@
#define MCFG_RS232_RXD_HANDLER(_devcb) \
- devcb = &downcast<rs232_port_device &>(*device).set_rxd_handler(DEVCB_##_devcb);
+ downcast<rs232_port_device &>(*device).set_rxd_handler(DEVCB_##_devcb);
#define MCFG_RS232_DCD_HANDLER(_devcb) \
- devcb = &downcast<rs232_port_device &>(*device).set_dcd_handler(DEVCB_##_devcb);
+ downcast<rs232_port_device &>(*device).set_dcd_handler(DEVCB_##_devcb);
#define MCFG_RS232_DSR_HANDLER(_devcb) \
- devcb = &downcast<rs232_port_device &>(*device).set_dsr_handler(DEVCB_##_devcb);
+ downcast<rs232_port_device &>(*device).set_dsr_handler(DEVCB_##_devcb);
#define MCFG_RS232_RI_HANDLER(_devcb) \
- devcb = &downcast<rs232_port_device &>(*device).set_ri_handler(DEVCB_##_devcb);
+ downcast<rs232_port_device &>(*device).set_ri_handler(DEVCB_##_devcb);
#define MCFG_RS232_SI_HANDLER(_devcb) \
- devcb = &downcast<rs232_port_device &>(*device).set_si_handler(DEVCB_##_devcb);
+ downcast<rs232_port_device &>(*device).set_si_handler(DEVCB_##_devcb);
#define MCFG_RS232_CTS_HANDLER(_devcb) \
- devcb = &downcast<rs232_port_device &>(*device).set_cts_handler(DEVCB_##_devcb);
+ downcast<rs232_port_device &>(*device).set_cts_handler(DEVCB_##_devcb);
#define MCFG_RS232_RXC_HANDLER(_devcb) \
- devcb = &downcast<rs232_port_device &>(*device).set_rxc_handler(DEVCB_##_devcb);
+ downcast<rs232_port_device &>(*device).set_rxc_handler(DEVCB_##_devcb);
#define MCFG_RS232_TXC_HANDLER(_devcb) \
- devcb = &downcast<rs232_port_device &>(*device).set_txc_handler(DEVCB_##_devcb);
+ downcast<rs232_port_device &>(*device).set_txc_handler(DEVCB_##_devcb);
#define RS232_BAUD_110 (0x00)
#define RS232_BAUD_150 (0x01)
@@ -143,6 +143,14 @@ public:
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)); }
+ auto rxd_handler() { return m_rxd_handler.bind(); }
+ auto dcd_handler() { return m_dcd_handler.bind(); }
+ auto dsr_handler() { return m_dsr_handler.bind(); }
+ auto ri_handler() { return m_ri_handler.bind(); }
+ auto si_handler() { return m_si_handler.bind(); }
+ auto cts_handler() { return m_cts_handler.bind(); }
+ auto rxc_handler() { return m_rxc_handler.bind(); }
+ auto txc_handler() { return m_txc_handler.bind(); }
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 99fe0891261..139839a7172 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 = &downcast<s100_bus_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_S100_NMI_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI0_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_vi0_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_vi0_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI1_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_vi1_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_vi1_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI2_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_vi2_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_vi2_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI3_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_vi3_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_vi3_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI4_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_vi4_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_vi4_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI5_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_vi5_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_vi5_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI6_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_vi6_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_vi6_wr_callback(DEVCB_##_write);
#define MCFG_S100_VI7_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_vi7_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_vi7_wr_callback(DEVCB_##_write);
#define MCFG_S100_DMA0_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_dma0_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_dma0_wr_callback(DEVCB_##_write);
#define MCFG_S100_DMA1_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_dma1_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_dma1_wr_callback(DEVCB_##_write);
#define MCFG_S100_DMA2_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_dma2_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_dma2_wr_callback(DEVCB_##_write);
#define MCFG_S100_DMA3_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_dma3_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_dma3_wr_callback(DEVCB_##_write);
#define MCFG_S100_RDY_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_rdy_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_rdy_wr_callback(DEVCB_##_write);
#define MCFG_S100_HOLD_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_hold_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_hold_wr_callback(DEVCB_##_write);
#define MCFG_S100_ERROR_CALLBACK(_write) \
- devcb = &downcast<s100_bus_device &>(*device).set_error_wr_callback(DEVCB_##_write);
+ downcast<s100_bus_device &>(*device).set_error_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/s100/wunderbus.cpp b/src/devices/bus/s100/wunderbus.cpp
index a327bfa3966..490929ec252 100644
--- a/src/devices/bus/s100/wunderbus.cpp
+++ b/src/devices/bus/s100/wunderbus.cpp
@@ -90,7 +90,7 @@ WRITE_LINE_MEMBER( s100_wunderbus_device::rtc_tp_w )
MACHINE_CONFIG_START(s100_wunderbus_device::device_add_mconfig)
MCFG_DEVICE_ADD(I8259A_TAG, PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, s100_wunderbus_device, pic_int_w))
- MCFG_PIC8259_IN_SP_CB(VCC)
+ MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
MCFG_DEVICE_ADD(INS8250_1_TAG, INS8250, XTAL(18'432'000)/10)
MCFG_INS8250_OUT_TX_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_txd))
diff --git a/src/devices/bus/scsi/scsi.h b/src/devices/bus/scsi/scsi.h
index d6c93129667..154b346d6a4 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 = &downcast<scsi_port_device &>(*device).set_bsy_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_bsy_handler(DEVCB_##_devcb);
#define MCFG_SCSI_SEL_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_sel_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_sel_handler(DEVCB_##_devcb);
#define MCFG_SCSI_CD_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_cd_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_cd_handler(DEVCB_##_devcb);
#define MCFG_SCSI_IO_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_io_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_io_handler(DEVCB_##_devcb);
#define MCFG_SCSI_MSG_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_msg_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_msg_handler(DEVCB_##_devcb);
#define MCFG_SCSI_REQ_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_req_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_req_handler(DEVCB_##_devcb);
#define MCFG_SCSI_ACK_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_ack_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_ack_handler(DEVCB_##_devcb);
#define MCFG_SCSI_ATN_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_atn_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_atn_handler(DEVCB_##_devcb);
#define MCFG_SCSI_RST_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_rst_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_rst_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA0_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_data0_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_data0_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA1_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_data1_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_data1_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA2_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_data2_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_data2_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA3_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_data3_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_data3_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA4_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_data4_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_data4_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA5_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_data5_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_data5_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA6_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_data6_handler(DEVCB_##_devcb);
+ downcast<scsi_port_device &>(*device).set_data6_handler(DEVCB_##_devcb);
#define MCFG_SCSI_DATA7_HANDLER(_devcb) \
- devcb = &downcast<scsi_port_device &>(*device).set_data7_handler(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) \
@@ -117,6 +117,36 @@ public:
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)); }
+ auto bsy_handler() { return m_bsy_handler.bind(); }
+ auto sel_handler() { return m_sel_handler.bind(); }
+ auto cd_handler() { return m_cd_handler.bind(); }
+ auto io_handler() { return m_io_handler.bind(); }
+ auto msg_handler() { return m_msg_handler.bind(); }
+ auto req_handler() { return m_req_handler.bind(); }
+ auto ack_handler() { return m_ack_handler.bind(); }
+ auto atn_handler() { return m_atn_handler.bind(); }
+ auto rst_handler() { return m_rst_handler.bind(); }
+ auto data0_handler() { return m_data0_handler.bind(); }
+ auto data1_handler() { return m_data1_handler.bind(); }
+ auto data2_handler() { return m_data2_handler.bind(); }
+ auto data3_handler() { return m_data3_handler.bind(); }
+ auto data4_handler() { return m_data4_handler.bind(); }
+ auto data5_handler() { return m_data5_handler.bind(); }
+ auto data6_handler() { return m_data6_handler.bind(); }
+ auto data7_handler() { return m_data7_handler.bind(); }
+
+ template <typename T>
+ void set_data_input_buffer(T &&tag)
+ {
+ data0_handler().set(tag, FUNC(input_buffer_device::write_bit0));
+ data1_handler().set(tag, FUNC(input_buffer_device::write_bit1));
+ data2_handler().set(tag, FUNC(input_buffer_device::write_bit2));
+ data3_handler().set(tag, FUNC(input_buffer_device::write_bit3));
+ data4_handler().set(tag, FUNC(input_buffer_device::write_bit4));
+ data5_handler().set(tag, FUNC(input_buffer_device::write_bit5));
+ data6_handler().set(tag, FUNC(input_buffer_device::write_bit6));
+ data7_handler().set(tag, FUNC(input_buffer_device::write_bit7));
+ }
DECLARE_WRITE_LINE_MEMBER( write_bsy );
DECLARE_WRITE_LINE_MEMBER( write_sel );
diff --git a/src/devices/bus/sms_ctrl/smsctrl.h b/src/devices/bus/sms_ctrl/smsctrl.h
index 9ead03ca812..d116f2c769d 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 = &downcast<sms_control_port_device &>(*device).set_th_input_handler(DEVCB_##_devcb);
+ downcast<sms_control_port_device &>(*device).set_th_input_handler(DEVCB_##_devcb);
#define MCFG_SMS_CONTROL_PORT_PIXEL_HANDLER(_devcb) \
- devcb = &downcast<sms_control_port_device &>(*device).set_pixel_handler(DEVCB_##_devcb);
+ downcast<sms_control_port_device &>(*device).set_pixel_handler(DEVCB_##_devcb);
diff --git a/src/devices/bus/spectrum/exp.h b/src/devices/bus/spectrum/exp.h
index f868853bdf4..f795fc05ad8 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(WRITELINE(DEVICE_SELF_OWNER, spectrum_expansion_slot_device, nmi_w))
#define MCFG_SPECTRUM_EXPANSION_SLOT_IRQ_HANDLER(_devcb) \
- devcb = &downcast<spectrum_expansion_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<spectrum_expansion_slot_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_SPECTRUM_EXPANSION_SLOT_NMI_HANDLER(_devcb) \
- devcb = &downcast<spectrum_expansion_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
+ downcast<spectrum_expansion_slot_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/ss50/interface.h b/src/devices/bus/ss50/interface.h
index 5b79e00894c..1865eda6324 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 = &downcast<ss50_interface_port_device &>(*device).set_irq_cb(DEVCB_##_devcb);
+ downcast<ss50_interface_port_device &>(*device).set_irq_cb(DEVCB_##_devcb);
#define MCFG_SS50_INTERFACE_FIRQ_CALLBACK(_devcb) \
- devcb = &downcast<ss50_interface_port_device &>(*device).set_firq_cb(DEVCB_##_devcb);
+ downcast<ss50_interface_port_device &>(*device).set_firq_cb(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/bus/ss50/mpc.cpp b/src/devices/bus/ss50/mpc.cpp
index 8489e23e29b..25a6ed43951 100644
--- a/src/devices/bus/ss50/mpc.cpp
+++ b/src/devices/bus/ss50/mpc.cpp
@@ -25,13 +25,13 @@ class ss50_mpc_device : public device_t, public ss50_card_interface
public:
// construction/destruction
ss50_mpc_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : device_t(mconfig, SS50_MPC, tag, owner, clock),
- ss50_card_interface(mconfig, *this),
- m_pia(*this, "pia"),
- m_loopback(*this, "loopback"),
- m_counter(*this, "counter"),
- m_baud_jumper(*this, "BAUD"),
- m_count_select(false)
+ : device_t(mconfig, SS50_MPC, tag, owner, clock)
+ , ss50_card_interface(mconfig, *this)
+ , m_pia(*this, "pia")
+ , m_loopback(*this, "loopback")
+ , m_counter(*this, "counter")
+ , m_baud_jumper(*this, "BAUD")
+ , m_count_select(false)
{
}
@@ -101,15 +101,15 @@ DEVICE_INPUT_DEFAULTS_END
//-------------------------------------------------
MACHINE_CONFIG_START(ss50_mpc_device::device_add_mconfig)
- MCFG_DEVICE_ADD("pia", PIA6821, 0) // actually MC6820
- MCFG_PIA_WRITEPA_HANDLER(WRITELINE("outgate", input_merger_device, in_w<0>)) MCFG_DEVCB_BIT(0)
- MCFG_PIA_CB2_HANDLER(WRITELINE(*this, ss50_mpc_device, reader_control_w))
- MCFG_PIA_READPB_HANDLER(IOPORT("STOP")) MCFG_DEVCB_BIT(6)
- MCFG_DEVCB_CHAIN_INPUT(READLINE(*this, ss50_mpc_device, count_r)) MCFG_DEVCB_BIT(7)
- MCFG_PIA_WRITEPB_HANDLER(WRITELINE(*this, ss50_mpc_device, count_select_w)) MCFG_DEVCB_BIT(2)
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("counter", ripple_counter_device, reset_w)) MCFG_DEVCB_BIT(0)
- //MCFG_PIA_IRQA_HANDLER(WRITELINE(*this, ss50_mpc_device, pia_irq_w))
- //MCFG_PIA_IRQB_HANDLER(WRITELINE(*this, ss50_mpc_device, pia_irq_w))
+ PIA6821(config, m_pia, 0); // actually MC6820
+ m_pia->writepa_handler().set("outgate", FUNC(input_merger_device::in_w<0>)).bit(0);
+ m_pia->cb2_handler().set(FUNC(ss50_mpc_device::reader_control_w));
+ m_pia->readpb_handler().set_ioport("STOP").mask(0x01).lshift(6);
+ m_pia->readpb_handler().append(FUNC(ss50_mpc_device::count_r)).lshift(7);
+ m_pia->writepb_handler().set(FUNC(ss50_mpc_device::count_select_w)).bit(2);
+ m_pia->writepb_handler().append(m_counter, FUNC(ripple_counter_device::reset_w)).bit(0);
+ //m_pia->irqa_handler().set(FUNC(ss50_mpc_device::pia_irq_w));
+ //m_pia->irqb_handler().set(FUNC(ss50_mpc_device::pia_irq_w));
MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal")
MCFG_RS232_RXD_HANDLER(WRITELINE(*this, ss50_mpc_device, serial_input_w))
diff --git a/src/devices/bus/sunkbd/sunkbd.h b/src/devices/bus/sunkbd/sunkbd.h
index d40d9e20a39..037c81f66ba 100644
--- a/src/devices/bus/sunkbd/sunkbd.h
+++ b/src/devices/bus/sunkbd/sunkbd.h
@@ -9,7 +9,7 @@
#define MCFG_SUNKBD_RXD_HANDLER(cb) \
- devcb = &downcast<sun_keyboard_port_device &>(*device).set_rxd_handler(DEVCB_##cb);
+ downcast<sun_keyboard_port_device &>(*device).set_rxd_handler(DEVCB_##cb);
class device_sun_keyboard_port_interface;
diff --git a/src/devices/bus/svi3x8/expander/expander.h b/src/devices/bus/svi3x8/expander/expander.h
index 0ec5be756c8..549a17c5970 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 = &downcast<svi_expander_device &>(*device).set_int_handler(DEVCB_##_devcb);
+ downcast<svi_expander_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_ROMDIS_HANDLER(_devcb) \
- devcb = &downcast<svi_expander_device &>(*device).set_romdis_handler(DEVCB_##_devcb);
+ downcast<svi_expander_device &>(*device).set_romdis_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_RAMDIS_HANDLER(_devcb) \
- devcb = &downcast<svi_expander_device &>(*device).set_ramdis_handler(DEVCB_##_devcb);
+ downcast<svi_expander_device &>(*device).set_ramdis_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_CTRL1_HANDLER(_devcb) \
- devcb = &downcast<svi_expander_device &>(*device).set_ctrl1_handler(DEVCB_##_devcb);
+ downcast<svi_expander_device &>(*device).set_ctrl1_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_CTRL2_HANDLER(_devcb) \
- devcb = &downcast<svi_expander_device &>(*device).set_ctrl2_handler(DEVCB_##_devcb);
+ downcast<svi_expander_device &>(*device).set_ctrl2_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_EXCSR_HANDLER(_devcb) \
- devcb = &downcast<svi_expander_device &>(*device).set_excsr_handler(DEVCB_##_devcb);
+ downcast<svi_expander_device &>(*device).set_excsr_handler(DEVCB_##_devcb);
#define MCFG_SVI_EXPANDER_EXCSW_HANDLER(_devcb) \
- devcb = &downcast<svi_expander_device &>(*device).set_excsw_handler(DEVCB_##_devcb);
+ downcast<svi_expander_device &>(*device).set_excsw_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/svi3x8/slot/slot.h b/src/devices/bus/svi3x8/slot/slot.h
index 84764b1dc4f..702c005b770 100644
--- a/src/devices/bus/svi3x8/slot/slot.h
+++ b/src/devices/bus/svi3x8/slot/slot.h
@@ -54,13 +54,13 @@
downcast<svi_slot_device &>(*device).set_bus(this, "slotbus");
#define MCFG_SVI_SLOT_INT_HANDLER(_devcb) \
- devcb = &downcast<svi_slot_bus_device &>(*device).set_int_handler(DEVCB_##_devcb);
+ downcast<svi_slot_bus_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_SVI_SLOT_ROMDIS_HANDLER(_devcb) \
- devcb = &downcast<svi_slot_bus_device &>(*device).set_romdis_handler(DEVCB_##_devcb);
+ downcast<svi_slot_bus_device &>(*device).set_romdis_handler(DEVCB_##_devcb);
#define MCFG_SVI_SLOT_RAMDIS_HANDLER(_devcb) \
- devcb = &downcast<svi_slot_bus_device &>(*device).set_ramdis_handler(DEVCB_##_devcb);
+ downcast<svi_slot_bus_device &>(*device).set_ramdis_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/ti8x/ti8x.h b/src/devices/bus/ti8x/ti8x.h
index b17321d2ce5..1a01aeda2e3 100644
--- a/src/devices/bus/ti8x/ti8x.h
+++ b/src/devices/bus/ti8x/ti8x.h
@@ -43,10 +43,10 @@ DECLARE_DEVICE_TYPE(TI8X_LINK_PORT, ti8x_link_port_device)
#define MCFG_TI8X_LINK_TIP_HANDLER(cb) \
- devcb = &downcast<ti8x_link_port_device &>(*device).set_tip_handler(DEVCB_##cb);
+ downcast<ti8x_link_port_device &>(*device).set_tip_handler(DEVCB_##cb);
#define MCFG_TI8X_LINK_RING_HANDLER(cb) \
- devcb = &downcast<ti8x_link_port_device &>(*device).set_ring_handler(DEVCB_##cb);
+ downcast<ti8x_link_port_device &>(*device).set_ring_handler(DEVCB_##cb);
class device_ti8x_link_port_interface;
diff --git a/src/devices/bus/ti99/gromport/gromport.h b/src/devices/bus/ti99/gromport/gromport.h
index 3f7941e9641..7d370ce39d6 100644
--- a/src/devices/bus/ti99/gromport/gromport.h
+++ b/src/devices/bus/ti99/gromport/gromport.h
@@ -106,10 +106,10 @@ void gromport8(device_slot_interface &device);
MCFG_DEVICE_SLOT_INTERFACE(gromport8, "single", false)
#define MCFG_GROMPORT_READY_HANDLER( _ready ) \
- devcb = &downcast<bus::ti99::gromport::gromport_device &>(*device).set_ready_callback(DEVCB_##_ready);
+ downcast<bus::ti99::gromport::gromport_device &>(*device).set_ready_callback(DEVCB_##_ready);
#define MCFG_GROMPORT_RESET_HANDLER( _reset ) \
- devcb = &downcast<bus::ti99::gromport::gromport_device &>(*device).set_reset_callback(DEVCB_##_reset);
+ 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/992board.h b/src/devices/bus/ti99/internal/992board.h
index 02ffb5b25d1..7e79c8d1358 100644
--- a/src/devices/bus/ti99/internal/992board.h
+++ b/src/devices/bus/ti99/internal/992board.h
@@ -163,16 +163,16 @@ public:
bus::ti99::internal::video992_device::TOTAL_VERT_NTSC, bus::ti99::internal::video992_device::VERT_DISPLAY_START_NTSC - 12, bus::ti99::internal::video992_device::VERT_DISPLAY_START_NTSC + 192 + 12 )
#define MCFG_VIDEO992_MEM_ACCESS_CB(_devcb) \
- devcb = &downcast<bus::ti99::internal::video992_device &>(*device).set_readmem_callback(DEVCB_##_devcb);
+ downcast<bus::ti99::internal::video992_device &>(*device).set_readmem_callback(DEVCB_##_devcb);
#define MCFG_VIDEO992_HOLD_CB(_devcb) \
- devcb = &downcast<bus::ti99::internal::video992_device &>(*device).set_hold_callback(DEVCB_##_devcb);
+ downcast<bus::ti99::internal::video992_device &>(*device).set_hold_callback(DEVCB_##_devcb);
#define MCFG_VIDEO992_INT_CB(_devcb) \
- devcb = &downcast<bus::ti99::internal::video992_device &>(*device).set_int_callback(DEVCB_##_devcb);
+ downcast<bus::ti99::internal::video992_device &>(*device).set_int_callback(DEVCB_##_devcb);
#define MCFG_SET_ROMBANK_HANDLER( _devcb ) \
- devcb = &downcast<bus::ti99::internal::io992_device &>(*device).set_rombank_callback(DEVCB_##_devcb);
+ downcast<bus::ti99::internal::io992_device &>(*device).set_rombank_callback(DEVCB_##_devcb);
DECLARE_DEVICE_TYPE_NS(VIDEO99224, bus::ti99::internal, video992_24_device)
DECLARE_DEVICE_TYPE_NS(VIDEO99232, bus::ti99::internal, video992_32_device)
diff --git a/src/devices/bus/ti99/internal/998board.h b/src/devices/bus/ti99/internal/998board.h
index 820199f536d..e59e80b437e 100644
--- a/src/devices/bus/ti99/internal/998board.h
+++ b/src/devices/bus/ti99/internal/998board.h
@@ -702,16 +702,16 @@ private:
} } } // end namespace bus::ti99::internal
#define MCFG_MAINBOARD8_READY_CALLBACK(_write) \
- devcb = &downcast<bus::ti99::internal::mainboard8_device &>(*device).set_ready_wr_callback(DEVCB_##_write);
+ downcast<bus::ti99::internal::mainboard8_device &>(*device).set_ready_wr_callback(DEVCB_##_write);
#define MCFG_MAINBOARD8_RESET_CALLBACK(_write) \
- devcb = &downcast<bus::ti99::internal::mainboard8_device &>(*device).set_reset_wr_callback(DEVCB_##_write);
+ downcast<bus::ti99::internal::mainboard8_device &>(*device).set_reset_wr_callback(DEVCB_##_write);
#define MCFG_MAINBOARD8_HOLD_CALLBACK(_write) \
- devcb = &downcast<bus::ti99::internal::mainboard8_device &>(*device).set_hold_wr_callback(DEVCB_##_write);
+ downcast<bus::ti99::internal::mainboard8_device &>(*device).set_hold_wr_callback(DEVCB_##_write);
#define MCFG_OSO_INT_CALLBACK(_int) \
- devcb = &downcast<bus::ti99::internal::oso_device &>(*device).set_int_callback(DEVCB##_int);
+ 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 47d2d1f84c3..72695279332 100644
--- a/src/devices/bus/ti99/internal/datamux.h
+++ b/src/devices/bus/ti99/internal/datamux.h
@@ -141,7 +141,7 @@ private:
/******************************************************************************/
#define MCFG_DMUX_READY_HANDLER( _intcallb ) \
- devcb = &downcast<bus::ti99::internal::datamux_device &>(*device).set_ready_callback(DEVCB_##_intcallb);
+ 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 9f1af61ccf9..67e5784cd4f 100644
--- a/src/devices/bus/ti99/internal/evpcconn.h
+++ b/src/devices/bus/ti99/internal/evpcconn.h
@@ -37,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 = &downcast<bus::ti99::internal::evpc_clock_connector &>(*device).set_vdpint_callback(DEVCB_##_vdpint);
+ 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 260f02932b1..e83e81cfc26 100644
--- a/src/devices/bus/ti99/internal/genboard.h
+++ b/src/devices/bus/ti99/internal/genboard.h
@@ -108,7 +108,7 @@ private:
};
#define MCFG_GENEVE_KBINT_HANDLER( _intcallb ) \
- devcb = &downcast<bus::ti99::internal::geneve_keyboard_device &>(*device).set_int_callback(DEVCB_##_intcallb);
+ downcast<bus::ti99::internal::geneve_keyboard_device &>(*device).set_int_callback(DEVCB_##_intcallb);
/*****************************************************************************/
@@ -308,7 +308,7 @@ private:
};
#define MCFG_GENEVE_READY_HANDLER( _intcallb ) \
- devcb = &downcast<bus::ti99::internal::geneve_mapper_device &>(*device).set_ready_callback(DEVCB_##_intcallb);
+ 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 4c21a11651e..0468649a72f 100644
--- a/src/devices/bus/ti99/internal/ioport.h
+++ b/src/devices/bus/ti99/internal/ioport.h
@@ -99,9 +99,9 @@ void ti99_io_port_ev(device_slot_interface &device);
MCFG_DEVICE_SLOT_INTERFACE(ti99_io_port_ev, "peb", false)
#define MCFG_IOPORT_EXTINT_HANDLER( _extint ) \
- devcb = &downcast<bus::ti99::internal::ioport_device &>(*device).set_extint_callback(DEVCB_##_extint);
+ downcast<bus::ti99::internal::ioport_device &>(*device).set_extint_callback(DEVCB_##_extint);
#define MCFG_IOPORT_READY_HANDLER( _ready ) \
- devcb = &downcast<bus::ti99::internal::ioport_device &>(*device).set_ready_callback(DEVCB_##_ready);
+ 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 c455058c387..3808f5bff7c 100644
--- a/src/devices/bus/ti99/joyport/joyport.h
+++ b/src/devices/bus/ti99/joyport/joyport.h
@@ -75,7 +75,7 @@ void ti99_joystick_port_gen(device_slot_interface &device);
DECLARE_DEVICE_TYPE_NS(TI99_JOYPORT, bus::ti99::joyport, joyport_device)
#define MCFG_JOYPORT_INT_HANDLER( _intcallb ) \
- devcb = &downcast<bus::ti99::joyport::joyport_device &>(*device).set_int_callback(DEVCB_##_intcallb);
+ 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 71ad9eb589b..d83c8f0aa44 100644
--- a/src/devices/bus/ti99/peb/peribox.h
+++ b/src/devices/bus/ti99/peb/peribox.h
@@ -250,16 +250,16 @@ private:
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _default, false)
#define MCFG_PERIBOX_INTA_HANDLER( _inta ) \
- devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_inta_callback(DEVCB_##_inta);
+ downcast<bus::ti99::peb::peribox_device &>(*device).set_inta_callback(DEVCB_##_inta);
#define MCFG_PERIBOX_INTB_HANDLER( _intb ) \
- devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_intb_callback(DEVCB_##_intb);
+ downcast<bus::ti99::peb::peribox_device &>(*device).set_intb_callback(DEVCB_##_intb);
#define MCFG_PERIBOX_READY_HANDLER( _ready ) \
- devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_ready_callback(DEVCB_##_ready);
+ downcast<bus::ti99::peb::peribox_device &>(*device).set_ready_callback(DEVCB_##_ready);
#define MCFG_PERIBOX_LCP_HANDLER( _lcp ) \
- devcb = &downcast<bus::ti99::peb::peribox_device &>(*device).set_lcp_callback(DEVCB_##_lcp);
+ 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 79bebc674d6..cb5dd86a61e 100644
--- a/src/devices/bus/ti99x/990_dk.h
+++ b/src/devices/bus/ti99x/990_dk.h
@@ -69,6 +69,6 @@ private:
// LEGACY_FLOPPY_OPTIONS_EXTERN(fd800);
#define MCFG_FD800_INT_HANDLER( _intcallb ) \
- devcb = &downcast<fd800_legacy_device &>(*device).set_int_callback(DEVCB_##_intcallb);
+ 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 57f0f55fa27..77b4f6a2749 100644
--- a/src/devices/bus/ti99x/990_hd.h
+++ b/src/devices/bus/ti99x/990_hd.h
@@ -75,7 +75,7 @@ private:
};
#define MCFG_TI990_HDC_INT_CALLBACK( _write ) \
- devcb = &downcast<ti990_hdc_device &>(*device).set_int_callback(DEVCB_##_write);
+ 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 a86725dd079..9bc8b04666b 100644
--- a/src/devices/bus/ti99x/990_tap.h
+++ b/src/devices/bus/ti99x/990_tap.h
@@ -61,6 +61,6 @@ private:
};
#define MCFG_TI990_TAPE_INT_HANDLER( _intcallb ) \
- devcb = &downcast<tap_990_device &>(*device).set_int_callback(DEVCB_##_intcallb);
+ 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 5636ce6e5a7..fb82a62fdce 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 = &downcast<tiki100_bus_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<tiki100_bus_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_TIKI100_BUS_NMI_CALLBACK(_write) \
- devcb = &downcast<tiki100_bus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
+ downcast<tiki100_bus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
#define MCFG_TIKI100_BUS_BUSRQ_CALLBACK(_write) \
- devcb = &downcast<tiki100_bus_device &>(*device).set_busrq_wr_callback(DEVCB_##_write);
+ downcast<tiki100_bus_device &>(*device).set_busrq_wr_callback(DEVCB_##_write);
#define MCFG_TIKI100_BUS_IN_MREQ_CALLBACK(_read) \
- devcb = &downcast<tiki100_bus_device &>(*device).set_mrq_rd_callback(DEVCB_##_read);
+ downcast<tiki100_bus_device &>(*device).set_mrq_rd_callback(DEVCB_##_read);
#define MCFG_TIKI100_BUS_OUT_MREQ_CALLBACK(_write) \
- devcb = &downcast<tiki100_bus_device &>(*device).set_mrq_wr_callback(DEVCB_##_write);
+ downcast<tiki100_bus_device &>(*device).set_mrq_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/tiki100/hdc.cpp b/src/devices/bus/tiki100/hdc.cpp
index 1807d39b10d..9a0b10384c7 100644
--- a/src/devices/bus/tiki100/hdc.cpp
+++ b/src/devices/bus/tiki100/hdc.cpp
@@ -33,11 +33,11 @@ DEFINE_DEVICE_TYPE(TIKI100_HDC, tiki100_hdc_device, "tiki100_hdc", "TIKI-100 Win
MACHINE_CONFIG_START(tiki100_hdc_device::device_add_mconfig)
MCFG_DEVICE_ADD(WD1010_TAG, WD2010, 5000000)
//MCFG_WD2010_OUT_INTRQ_CB()
- MCFG_WD2010_IN_DRDY_CB(VCC)
- MCFG_WD2010_IN_INDEX_CB(VCC)
- MCFG_WD2010_IN_WF_CB(VCC)
- MCFG_WD2010_IN_TK000_CB(VCC)
- MCFG_WD2010_IN_SC_CB(VCC)
+ MCFG_WD2010_IN_DRDY_CB(CONSTANT(1))
+ MCFG_WD2010_IN_INDEX_CB(CONSTANT(1))
+ MCFG_WD2010_IN_WF_CB(CONSTANT(1))
+ MCFG_WD2010_IN_TK000_CB(CONSTANT(1))
+ MCFG_WD2010_IN_SC_CB(CONSTANT(1))
MCFG_HARDDISK_ADD("hard0")
MCFG_HARDDISK_ADD("hard1")
diff --git a/src/devices/bus/tvc/tvc.h b/src/devices/bus/tvc/tvc.h
index 9fd9db95e14..584e121f428 100644
--- a/src/devices/bus/tvc/tvc.h
+++ b/src/devices/bus/tvc/tvc.h
@@ -125,9 +125,9 @@ DECLARE_DEVICE_TYPE(TVCEXP_SLOT, tvcexp_slot_device)
***************************************************************************/
#define MCFG_TVCEXP_SLOT_OUT_IRQ_CB(_devcb) \
- devcb = &downcast<tvcexp_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<tvcexp_slot_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_TVCEXP_SLOT_OUT_NMI_CB(_devcb) \
- devcb = &downcast<tvcexp_slot_device &>(*device).set_out_nmi_callback(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 2018d70ba34..271001b3486 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 = &downcast<vcs_control_port_device &>(*device).set_trigger_wr_callback(DEVCB_##_write);
+ downcast<vcs_control_port_device &>(*device).set_trigger_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/vic10/exp.h b/src/devices/bus/vic10/exp.h
index c504be951cf..56754923a02 100644
--- a/src/devices/bus/vic10/exp.h
+++ b/src/devices/bus/vic10/exp.h
@@ -53,16 +53,16 @@
//**************************************************************************
#define MCFG_VIC10_EXPANSION_SLOT_IRQ_CALLBACK(_write) \
- devcb = &downcast<vic10_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<vic10_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_VIC10_EXPANSION_SLOT_RES_CALLBACK(_write) \
- devcb = &downcast<vic10_expansion_slot_device &>(*device).set_res_wr_callback(DEVCB_##_write);
+ downcast<vic10_expansion_slot_device &>(*device).set_res_wr_callback(DEVCB_##_write);
#define MCFG_VIC10_EXPANSION_SLOT_CNT_CALLBACK(_write) \
- devcb = &downcast<vic10_expansion_slot_device &>(*device).set_cnt_wr_callback(DEVCB_##_write);
+ downcast<vic10_expansion_slot_device &>(*device).set_cnt_wr_callback(DEVCB_##_write);
#define MCFG_VIC10_EXPANSION_SLOT_SP_CALLBACK(_write) \
- devcb = &downcast<vic10_expansion_slot_device &>(*device).set_sp_wr_callback(DEVCB_##_write);
+ downcast<vic10_expansion_slot_device &>(*device).set_sp_wr_callback(DEVCB_##_write);
#define MCFG_VIC10_EXPANSION_SLOT_IRQ_CALLBACKS(_irq, _res) \
diff --git a/src/devices/bus/vic20/exp.h b/src/devices/bus/vic20/exp.h
index 231c6821f1d..eadac324dfb 100644
--- a/src/devices/bus/vic20/exp.h
+++ b/src/devices/bus/vic20/exp.h
@@ -59,13 +59,13 @@
#define MCFG_VIC20_EXPANSION_SLOT_IRQ_CALLBACK(_write) \
- devcb = &downcast<vic20_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<vic20_expansion_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_VIC20_EXPANSION_SLOT_NMI_CALLBACK(_write) \
- devcb = &downcast<vic20_expansion_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
+ downcast<vic20_expansion_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
#define MCFG_VIC20_EXPANSION_SLOT_RES_CALLBACK(_write) \
- devcb = &downcast<vic20_expansion_slot_device &>(*device).set_res_wr_callback(DEVCB_##_write);
+ downcast<vic20_expansion_slot_device &>(*device).set_res_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/vic20/vic1011.cpp b/src/devices/bus/vic20/vic1011.cpp
index cb136d4a0a4..893536a5b09 100644
--- a/src/devices/bus/vic20/vic1011.cpp
+++ b/src/devices/bus/vic20/vic1011.cpp
@@ -12,14 +12,6 @@
//**************************************************************************
-// MACROS/CONSTANTS
-//**************************************************************************
-
-#define RS232_TAG "rs232"
-
-
-
-//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
@@ -30,13 +22,14 @@ DEFINE_DEVICE_TYPE(VIC1011, vic1011_device, "vic1011", "VIC-1011 RS-232C")
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(vic1011_device::device_add_mconfig)
- MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(DEVICE_SELF, vic1011_device, output_rxd))
- MCFG_RS232_DCD_HANDLER(WRITELINE(DEVICE_SELF, vic1011_device, output_h)) MCFG_DEVCB_XOR(1)
- MCFG_RS232_CTS_HANDLER(WRITELINE(DEVICE_SELF, vic1011_device, output_k)) MCFG_DEVCB_XOR(1)
- MCFG_RS232_DSR_HANDLER(WRITELINE(DEVICE_SELF, vic1011_device, output_l)) MCFG_DEVCB_XOR(1)
-MACHINE_CONFIG_END
+void vic1011_device::device_add_mconfig(machine_config &config)
+{
+ RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
+ m_rs232->rxd_handler().set(FUNC(vic1011_device::output_rxd));
+ m_rs232->dcd_handler().set(FUNC(vic1011_device::output_h)).invert();
+ m_rs232->cts_handler().set(FUNC(vic1011_device::output_k)).invert();
+ m_rs232->dsr_handler().set(FUNC(vic1011_device::output_l)).invert();
+}
//**************************************************************************
@@ -50,7 +43,7 @@ MACHINE_CONFIG_END
vic1011_device::vic1011_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, VIC1011, tag, owner, clock)
, device_pet_user_port_interface(mconfig, *this)
- , m_rs232(*this, RS232_TAG)
+ , m_rs232(*this, "rs232")
{
}
diff --git a/src/devices/bus/vidbrain/exp.h b/src/devices/bus/vidbrain/exp.h
index b7f3f5cad7a..fdb4b6a6ac7 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 = &downcast<videobrain_expansion_slot_device &>(*device).set_extres_wr_callback(DEVCB_##_write);
+ downcast<videobrain_expansion_slot_device &>(*device).set_extres_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/vip/exp.h b/src/devices/bus/vip/exp.h
index 98eda45bdbe..b9bc3235fa7 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 = &downcast<vip_expansion_slot_device &>(*device).set_int_wr_callback(DEVCB_##_write);
+ downcast<vip_expansion_slot_device &>(*device).set_int_wr_callback(DEVCB_##_write);
#define MCFG_VIP_EXPANSION_SLOT_DMA_OUT_CALLBACK(_write) \
- devcb = &downcast<vip_expansion_slot_device &>(*device).set_dma_out_wr_callback(DEVCB_##_write);
+ downcast<vip_expansion_slot_device &>(*device).set_dma_out_wr_callback(DEVCB_##_write);
#define MCFG_VIP_EXPANSION_SLOT_DMA_IN_CALLBACK(_write) \
- devcb = &downcast<vip_expansion_slot_device &>(*device).set_dma_in_wr_callback(DEVCB_##_write);
+ downcast<vip_expansion_slot_device &>(*device).set_dma_in_wr_callback(DEVCB_##_write);
diff --git a/src/devices/bus/vme/vme.h b/src/devices/bus/vme/vme.h
index 8f86d90bd29..a2b2ab944eb 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 = &downcast<vme_slot_device &>(*device).set_vme_j1_callback(DEVCB_##_devcb);
+ downcast<vme_slot_device &>(*device).set_vme_j1_callback(DEVCB_##_devcb);
//void vme_slot1(device_slot_interface &device); // Disabled until we know how to combine a board driver and a slot device.
void vme_slots(device_slot_interface &device);
diff --git a/src/devices/bus/vme/vme_mzr8300.cpp b/src/devices/bus/vme/vme_mzr8300.cpp
index c5a94ca1b8e..158845770e4 100644
--- a/src/devices/bus/vme/vme_mzr8300.cpp
+++ b/src/devices/bus/vme/vme_mzr8300.cpp
@@ -136,15 +136,15 @@ MACHINE_CONFIG_START(vme_mzr8300_card_device::device_add_mconfig)
MCFG_RS232_RXD_HANDLER(WRITELINE("sio0", upd7201_new_device, rxb_w))
MCFG_RS232_CTS_HANDLER(WRITELINE("sio0", upd7201_new_device, ctsb_w))
- MCFG_DEVICE_ADD("stc", AM9513, XTAL(4'000'000))
- MCFG_AM9513_OUT1_CALLBACK(WRITELINE("sio0", upd7201_new_device, rxca_w))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("sio0", upd7201_new_device, txca_w))
- MCFG_AM9513_OUT2_CALLBACK(WRITELINE("sio0", upd7201_new_device, rxcb_w))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("sio0", upd7201_new_device, txcb_w))
- MCFG_AM9513_OUT3_CALLBACK(WRITELINE("sio1", upd7201_new_device, rxca_w))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("sio1", upd7201_new_device, txca_w))
- MCFG_AM9513_OUT4_CALLBACK(WRITELINE("sio1", upd7201_new_device, rxcb_w))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("sio1", upd7201_new_device, txcb_w))
+ am9513_device &stc(AM9513(config, "stc", 4_MHz_XTAL));
+ stc.out1_cb().set("sio0", FUNC(upd7201_new_device::rxca_w));
+ stc.out1_cb().append("sio0", FUNC(upd7201_new_device::txca_w));
+ stc.out2_cb().set("sio0", FUNC(upd7201_new_device::rxcb_w));
+ stc.out2_cb().append("sio0", FUNC(upd7201_new_device::txcb_w));
+ stc.out3_cb().set("sio1", FUNC(upd7201_new_device::rxca_w));
+ stc.out3_cb().append("sio1", FUNC(upd7201_new_device::txca_w));
+ stc.out4_cb().set("sio1", FUNC(upd7201_new_device::rxcb_w));
+ stc.out4_cb().append("sio1", FUNC(upd7201_new_device::txcb_w));
MACHINE_CONFIG_END
diff --git a/src/devices/bus/vtech/memexp/memexp.h b/src/devices/bus/vtech/memexp/memexp.h
index 91737e003bc..87bde42bf5d 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 = &downcast<vtech_memexp_device &>(*device).set_int_handler(DEVCB_##_devcb);
+ downcast<vtech_memexp_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_MEMEXP_SLOT_NMI_HANDLER(_devcb) \
- devcb = &downcast<vtech_memexp_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
+ downcast<vtech_memexp_device &>(*device).set_nmi_handler(DEVCB_##_devcb);
#define MCFG_MEMEXP_SLOT_RESET_HANDLER(_devcb) \
- devcb = &downcast<vtech_memexp_device &>(*device).set_reset_handler(DEVCB_##_devcb);
+ downcast<vtech_memexp_device &>(*device).set_reset_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/wangpc/wangpc.h b/src/devices/bus/wangpc/wangpc.h
index 1510eba9fbf..1f10892f7fc 100644
--- a/src/devices/bus/wangpc/wangpc.h
+++ b/src/devices/bus/wangpc/wangpc.h
@@ -39,34 +39,34 @@
#define MCFG_WANGPC_BUS_IRQ2_CALLBACK(_write) \
- devcb = &downcast<wangpcbus_device &>(*device).set_irq2_wr_callback(DEVCB_##_write);
+ downcast<wangpcbus_device &>(*device).set_irq2_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IRQ3_CALLBACK(_write) \
- devcb = &downcast<wangpcbus_device &>(*device).set_irq3_wr_callback(DEVCB_##_write);
+ downcast<wangpcbus_device &>(*device).set_irq3_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IRQ4_CALLBACK(_write) \
- devcb = &downcast<wangpcbus_device &>(*device).set_irq4_wr_callback(DEVCB_##_write);
+ downcast<wangpcbus_device &>(*device).set_irq4_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IRQ5_CALLBACK(_write) \
- devcb = &downcast<wangpcbus_device &>(*device).set_irq5_wr_callback(DEVCB_##_write);
+ downcast<wangpcbus_device &>(*device).set_irq5_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IRQ6_CALLBACK(_write) \
- devcb = &downcast<wangpcbus_device &>(*device).set_irq6_wr_callback(DEVCB_##_write);
+ downcast<wangpcbus_device &>(*device).set_irq6_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IRQ7_CALLBACK(_write) \
- devcb = &downcast<wangpcbus_device &>(*device).set_irq7_wr_callback(DEVCB_##_write);
+ downcast<wangpcbus_device &>(*device).set_irq7_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_DRQ1_CALLBACK(_write) \
- devcb = &downcast<wangpcbus_device &>(*device).set_drq1_wr_callback(DEVCB_##_write);
+ downcast<wangpcbus_device &>(*device).set_drq1_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_DRQ2_CALLBACK(_write) \
- devcb = &downcast<wangpcbus_device &>(*device).set_drq2_wr_callback(DEVCB_##_write);
+ downcast<wangpcbus_device &>(*device).set_drq2_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_DRQ3_CALLBACK(_write) \
- devcb = &downcast<wangpcbus_device &>(*device).set_drq3_wr_callback(DEVCB_##_write);
+ downcast<wangpcbus_device &>(*device).set_drq3_wr_callback(DEVCB_##_write);
#define MCFG_WANGPC_BUS_IOERROR_CALLBACK(_write) \
- devcb = &downcast<wangpcbus_device &>(*device).set_ioerror_wr_callback(DEVCB_##_write);
+ downcast<wangpcbus_device &>(*device).set_ioerror_wr_callback(DEVCB_##_write);
//**************************************************************************
diff --git a/src/devices/bus/x68k/x68kexp.h b/src/devices/bus/x68k/x68kexp.h
index 3b0a0080e1e..56f9feea8a5 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 = &downcast<x68k_expansion_slot_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
+ downcast<x68k_expansion_slot_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb);
#define MCFG_X68K_EXPANSION_SLOT_OUT_IRQ4_CB(_devcb) \
- devcb = &downcast<x68k_expansion_slot_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
+ downcast<x68k_expansion_slot_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb);
#define MCFG_X68K_EXPANSION_SLOT_OUT_NMI_CB(_devcb) \
- devcb = &downcast<x68k_expansion_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
+ downcast<x68k_expansion_slot_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
#define MCFG_X68K_EXPANSION_SLOT_OUT_RESET_CB(_devcb) \
- devcb = &downcast<x68k_expansion_slot_device &>(*device).set_out_reset_callback(DEVCB_##_devcb);
+ downcast<x68k_expansion_slot_device &>(*device).set_out_reset_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/bus/z88/z88.h b/src/devices/bus/z88/z88.h
index f5b63fcbfd0..de8ecdc883f 100644
--- a/src/devices/bus/z88/z88.h
+++ b/src/devices/bus/z88/z88.h
@@ -139,6 +139,6 @@ DECLARE_DEVICE_TYPE(Z88CART_SLOT, z88cart_slot_device)
***************************************************************************/
#define MCFG_Z88CART_SLOT_OUT_FLP_CB(_devcb) \
- devcb = &downcast<z88cart_slot_device &>(*device).set_out_flp_callback(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 31c7d257572..337de47771d 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 = &downcast<adsp21xx_device &>(*device).set_sport_rx_callback(DEVCB_##_devcb);
+ downcast<adsp21xx_device &>(*device).set_sport_rx_callback(DEVCB_##_devcb);
#define MCFG_ADSP21XX_SPORT_TX_CB(_devcb) \
- devcb = &downcast<adsp21xx_device &>(*device).set_sport_tx_callback(DEVCB_##_devcb);
+ downcast<adsp21xx_device &>(*device).set_sport_tx_callback(DEVCB_##_devcb);
#define MCFG_ADSP21XX_TIMER_FIRED_CB(_devcb) \
- devcb = &downcast<adsp21xx_device &>(*device).set_timer_fired_callback(DEVCB_##_devcb);
+ downcast<adsp21xx_device &>(*device).set_timer_fired_callback(DEVCB_##_devcb);
#define MCFG_ADSP21XX_DMOVLAY_CB(_devcb) \
- devcb = &downcast<adsp21xx_device &>(*device).set_dmovlay_callback(DEVCB_##_devcb);
+ downcast<adsp21xx_device &>(*device).set_dmovlay_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/cpu/amis2000/amis2000.h b/src/devices/cpu/amis2000/amis2000.h
index abf3b55fca8..2e15b6572ff 100644
--- a/src/devices/cpu/amis2000/amis2000.h
+++ b/src/devices/cpu/amis2000/amis2000.h
@@ -14,25 +14,25 @@
// generic input pins (4 bits each)
#define MCFG_AMI_S2000_READ_K_CB(_devcb) \
- devcb = &downcast<amis2000_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb);
+ downcast<amis2000_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb);
#define MCFG_AMI_S2000_READ_I_CB(_devcb) \
- devcb = &downcast<amis2000_base_device &>(*device).set_read_i_callback(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 = &downcast<amis2000_base_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
+ downcast<amis2000_base_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
#define MCFG_AMI_S2000_WRITE_D_CB(_devcb) \
- devcb = &downcast<amis2000_base_device &>(*device).set_write_d_callback(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 = &downcast<amis2000_base_device &>(*device).set_write_a_callback(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 = &downcast<amis2000_base_device &>(*device).set_write_f_callback(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.
diff --git a/src/devices/cpu/apexc/apexc.h b/src/devices/cpu/apexc/apexc.h
index 74a19a594be..4da1108a518 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 = &downcast<apexc_cpu_device &>(*device).set_tape_read_cb(DEVCB_##_devcb);
+ downcast<apexc_cpu_device &>(*device).set_tape_read_cb(DEVCB_##_devcb);
#define MCFG_APEXC_TAPE_PUNCH_CB(_devcb) \
- devcb = &downcast<apexc_cpu_device &>(*device).set_tape_punch_cb(DEVCB_##_devcb);
+ downcast<apexc_cpu_device &>(*device).set_tape_punch_cb(DEVCB_##_devcb);
enum
{
diff --git a/src/devices/cpu/cop400/cop400.h b/src/devices/cpu/cop400/cop400.h
index 197cf86abf1..5dbff8a9281 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 = &downcast<cop400_cpu_device &>(*device).set_read_l_callback(DEVCB_##_devcb);
+ downcast<cop400_cpu_device &>(*device).set_read_l_callback(DEVCB_##_devcb);
#define MCFG_COP400_WRITE_L_CB(_devcb) \
- devcb = &downcast<cop400_cpu_device &>(*device).set_write_l_callback(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 = &downcast<cop400_cpu_device &>(*device).set_read_l_tristate_callback(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 = &downcast<cop400_cpu_device &>(*device).set_read_g_callback(DEVCB_##_devcb);
+ downcast<cop400_cpu_device &>(*device).set_read_g_callback(DEVCB_##_devcb);
#define MCFG_COP400_WRITE_G_CB(_devcb) \
- devcb = &downcast<cop400_cpu_device &>(*device).set_write_g_callback(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 = &downcast<cop400_cpu_device &>(*device).set_write_d_callback(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 = &downcast<cop400_cpu_device &>(*device).set_read_in_callback(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 = &downcast<cop400_cpu_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
+ downcast<cop400_cpu_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
#define MCFG_COP400_WRITE_SO_CB(_devcb) \
- devcb = &downcast<cop400_cpu_device &>(*device).set_write_so_callback(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 = &downcast<cop400_cpu_device &>(*device).set_write_sk_callback(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 = &downcast<cop400_cpu_device &>(*device).set_read_cko_callback(DEVCB_##_devcb);
+ downcast<cop400_cpu_device &>(*device).set_read_cko_callback(DEVCB_##_devcb);
/***************************************************************************
diff --git a/src/devices/cpu/cosmac/cosmac.h b/src/devices/cpu/cosmac/cosmac.h
index 4a535f3c4c1..d5c98c8c992 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 = &downcast<cosmac_device &>(*device).set_wait_rd_callback(DEVCB_##_read);
+ downcast<cosmac_device &>(*device).set_wait_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_CLEAR_CALLBACK(_read) \
- devcb = &downcast<cosmac_device &>(*device).set_clear_rd_callback(DEVCB_##_read);
+ downcast<cosmac_device &>(*device).set_clear_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_EF1_CALLBACK(_read) \
- devcb = &downcast<cosmac_device &>(*device).set_ef1_rd_callback(DEVCB_##_read);
+ downcast<cosmac_device &>(*device).set_ef1_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_EF2_CALLBACK(_read) \
- devcb = &downcast<cosmac_device &>(*device).set_ef2_rd_callback(DEVCB_##_read);
+ downcast<cosmac_device &>(*device).set_ef2_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_EF3_CALLBACK(_read) \
- devcb = &downcast<cosmac_device &>(*device).set_ef3_rd_callback(DEVCB_##_read);
+ downcast<cosmac_device &>(*device).set_ef3_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_EF4_CALLBACK(_read) \
- devcb = &downcast<cosmac_device &>(*device).set_ef4_rd_callback(DEVCB_##_read);
+ downcast<cosmac_device &>(*device).set_ef4_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_Q_CALLBACK(_write) \
- devcb = &downcast<cosmac_device &>(*device).set_q_wr_callback(DEVCB_##_write);
+ downcast<cosmac_device &>(*device).set_q_wr_callback(DEVCB_##_write);
#define MCFG_COSMAC_DMAR_CALLBACK(_read) \
- devcb = &downcast<cosmac_device &>(*device).set_dma_rd_callback(DEVCB_##_read);
+ downcast<cosmac_device &>(*device).set_dma_rd_callback(DEVCB_##_read);
#define MCFG_COSMAC_DMAW_CALLBACK(_write) \
- devcb = &downcast<cosmac_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
+ downcast<cosmac_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
#define MCFG_COSMAC_SC_CALLBACK(_write) \
- devcb = &downcast<cosmac_device &>(*device).set_sc_wr_callback(DEVCB_##_write);
+ downcast<cosmac_device &>(*device).set_sc_wr_callback(DEVCB_##_write);
diff --git a/src/devices/cpu/cp1610/cp1610.h b/src/devices/cpu/cp1610/cp1610.h
index d2ab4fa18bf..280546fc436 100644
--- a/src/devices/cpu/cp1610/cp1610.h
+++ b/src/devices/cpu/cp1610/cp1610.h
@@ -20,7 +20,7 @@
#define CP1610_INT_INTR INPUT_LINE_NMI /* Non-Maskable */
#define MCFG_CP1610_BEXT_CALLBACK(_read) \
- devcb = &downcast<cp1610_cpu_device *>(device)->set_bext_callback(DEVCB_##_read);
+ downcast<cp1610_cpu_device *>(device)->set_bext_callback(DEVCB_##_read);
class cp1610_cpu_device : public cpu_device
diff --git a/src/devices/cpu/dsp32/dsp32.h b/src/devices/cpu/dsp32/dsp32.h
index 7de09dd1198..59289064f90 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 = &downcast<dsp32c_device &>(*device).set_output_pins_callback(DEVCB_##_write);
+ downcast<dsp32c_device &>(*device).set_output_pins_callback(DEVCB_##_write);
// ======================> dsp32c_device
diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h
index 7e9c4d0f91b..0d9f86c5772 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 = &downcast<e0c6s46_device &>(*device).set_write_r##R##_callback(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 = &downcast<hmcs40_cpu_device &>(*device).set_read_r##P##_callback(DEVCB_##_devcb);
+ downcast<hmcs40_cpu_device &>(*device).set_read_r##P##_callback(DEVCB_##_devcb);
#define MCFG_E0C6S46_WRITE_P_CB(R, _devcb) \
- devcb = &downcast<e0c6s46_device &>(*device).set_write_r##P##_callback(DEVCB_##_devcb);
+ downcast<e0c6s46_device &>(*device).set_write_r##P##_callback(DEVCB_##_devcb);
enum
{
diff --git a/src/devices/cpu/esrip/esrip.h b/src/devices/cpu/esrip/esrip.h
index a97675e9be4..b9df5365da3 100644
--- a/src/devices/cpu/esrip/esrip.h
+++ b/src/devices/cpu/esrip/esrip.h
@@ -20,13 +20,13 @@
#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 = &downcast<esrip_device &>(*device).set_fdt_r_callback(DEVCB_##_read);
+ downcast<esrip_device &>(*device).set_fdt_r_callback(DEVCB_##_read);
#define MCFG_ESRIP_FDT_W_CALLBACK(_write) \
- devcb = &downcast<esrip_device &>(*device).set_fdt_w_callback(DEVCB_##_write);
+ downcast<esrip_device &>(*device).set_fdt_w_callback(DEVCB_##_write);
#define MCFG_ESRIP_STATUS_IN_CALLBACK(_read) \
- devcb = &downcast<esrip_device &>(*device).set_status_in_callback(DEVCB_##_read);
+ downcast<esrip_device &>(*device).set_status_in_callback(DEVCB_##_read);
#define MCFG_ESRIP_DRAW_CALLBACK_OWNER(_class, _method) \
downcast<esrip_device &>(*device).set_draw_callback(esrip_device::draw_delegate(&_class::_method, #_class "::" #_method, this));
diff --git a/src/devices/cpu/h8/h83002.h b/src/devices/cpu/h8/h83002.h
index 457e604aa21..32047b60390 100644
--- a/src/devices/cpu/h8/h83002.h
+++ b/src/devices/cpu/h8/h83002.h
@@ -26,9 +26,9 @@
#include "h8_watchdog.h"
#define MCFG_H83002_TEND0_CALLBACK(_devcb) \
- devcb = &downcast<h83002_device &>(*device).set_tend0_callback(DEVCB_##_devcb);
+ downcast<h83002_device &>(*device).set_tend0_callback(DEVCB_##_devcb);
#define MCFG_H83002_TEND1_CALLBACK(_devcb) \
- devcb = &downcast<h83002_device &>(*device).set_tend1_callback(DEVCB_##_devcb);
+ downcast<h83002_device &>(*device).set_tend1_callback(DEVCB_##_devcb);
class h83002_device : public h8h_device {
public:
diff --git a/src/devices/cpu/h8/h8_sci.h b/src/devices/cpu/h8/h8_sci.h
index 3c2db4147df..065c5e4b305 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 = &downcast<h8_sci_device &>(*device).set_tx_cb(DEVCB_##_devcb);
+ downcast<h8_sci_device &>(*device).set_tx_cb(DEVCB_##_devcb);
#define MCFG_H8_SCI_CLK_CALLBACK(_devcb) \
- devcb = &downcast<h8_sci_device &>(*device).set_clk_cb(DEVCB_##_devcb);
+ downcast<h8_sci_device &>(*device).set_clk_cb(DEVCB_##_devcb);
class h8_sci_device : public device_t {
public:
@@ -56,6 +56,8 @@ public:
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)); }
+ auto tx_handler() { return tx_cb.bind(); }
+ auto clk_handler() { return clk_cb.bind(); }
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 0c2da71fec5..7e85bc2af96 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 = &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);
+#define MCFG_HCD62121_KOL_CB(_devcb) downcast<hcd62121_cpu_device &>(*device).set_kol_callback(DEVCB_##_devcb);
+#define MCFG_HCD62121_KOH_CB(_devcb) downcast<hcd62121_cpu_device &>(*device).set_koh_callback(DEVCB_##_devcb);
+#define MCFG_HCD62121_PORT_CB(_devcb) downcast<hcd62121_cpu_device &>(*device).set_port_callback(DEVCB_##_devcb);
+#define MCFG_HCD62121_OPT_CB(_devcb) downcast<hcd62121_cpu_device &>(*device).set_opt_callback(DEVCB_##_devcb);
+#define MCFG_HCD62121_KI_CB(_devcb) downcast<hcd62121_cpu_device &>(*device).set_ki_callback(DEVCB_##_devcb);
+#define MCFG_HCD62121_IN0_CB(_devcb) downcast<hcd62121_cpu_device &>(*device).set_in0_callback(DEVCB_##_devcb);
class hcd62121_cpu_device : public cpu_device
diff --git a/src/devices/cpu/hd61700/hd61700.h b/src/devices/cpu/hd61700/hd61700.h
index cb139878221..8b69bf41913 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 = &downcast<hd61700_cpu_device &>(*device).set_lcd_ctrl_callback(DEVCB_##_devcb);
+ downcast<hd61700_cpu_device &>(*device).set_lcd_ctrl_callback(DEVCB_##_devcb);
#define MCFG_HD61700_LCD_WRITE_CB(_devcb) \
- devcb = &downcast<hd61700_cpu_device &>(*device).set_lcd_write_callback(DEVCB_##_devcb);
+ downcast<hd61700_cpu_device &>(*device).set_lcd_write_callback(DEVCB_##_devcb);
#define MCFG_HD61700_LCD_READ_CB(_devcb) \
- devcb = &downcast<hd61700_cpu_device &>(*device).set_lcd_read_callback(DEVCB_##_devcb);
+ downcast<hd61700_cpu_device &>(*device).set_lcd_read_callback(DEVCB_##_devcb);
#define MCFG_HD61700_KB_WRITE_CB(_devcb) \
- devcb = &downcast<hd61700_cpu_device &>(*device).set_kb_write_callback(DEVCB_##_devcb);
+ downcast<hd61700_cpu_device &>(*device).set_kb_write_callback(DEVCB_##_devcb);
#define MCFG_HD61700_KB_READ_CB(_devcb) \
- devcb = &downcast<hd61700_cpu_device &>(*device).set_kb_read_callback(DEVCB_##_devcb);
+ downcast<hd61700_cpu_device &>(*device).set_kb_read_callback(DEVCB_##_devcb);
#define MCFG_HD61700_PORT_WRITE_CB(_devcb) \
- devcb = &downcast<hd61700_cpu_device &>(*device).set_port_write_callback(DEVCB_##_devcb);
+ downcast<hd61700_cpu_device &>(*device).set_port_write_callback(DEVCB_##_devcb);
#define MCFG_HD61700_PORT_READ_CB(_devcb) \
- devcb = &downcast<hd61700_cpu_device &>(*device).set_port_read_callback(DEVCB_##_devcb);
+ downcast<hd61700_cpu_device &>(*device).set_port_read_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/cpu/hmcs40/hmcs40.h b/src/devices/cpu/hmcs40/hmcs40.h
index 355780dee11..ffa5ea26d5e 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 = &downcast<hmcs40_cpu_device &>(*device).set_read_r##R##_callback(DEVCB_##_devcb);
+ downcast<hmcs40_cpu_device &>(*device).set_read_r##R##_callback(DEVCB_##_devcb);
#define MCFG_HMCS40_WRITE_R_CB(R, _devcb) \
- devcb = &downcast<hmcs40_cpu_device &>(*device).set_write_r##R##_callback(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 = &downcast<hmcs40_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
+ downcast<hmcs40_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
#define MCFG_HMCS40_WRITE_D_CB(_devcb) \
- devcb = &downcast<hmcs40_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
+ downcast<hmcs40_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
enum
{
diff --git a/src/devices/cpu/hphybrid/hphybrid.h b/src/devices/cpu/hphybrid/hphybrid.h
index 404100a8115..4b03035950a 100644
--- a/src/devices/cpu/hphybrid/hphybrid.h
+++ b/src/devices/cpu/hphybrid/hphybrid.h
@@ -45,7 +45,7 @@
// PA changed callback
#define MCFG_HPHYBRID_PA_CHANGED(_devcb) \
- devcb = &downcast<hp_hybrid_cpu_device &>(*device).set_pa_changed_func(DEVCB_##_devcb);
+ downcast<hp_hybrid_cpu_device &>(*device).set_pa_changed_func(DEVCB_##_devcb);
class hp_hybrid_cpu_device : public cpu_device
{
diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h
index c6039009209..92a5e4ddbc5 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 = &downcast<i386_device &>(*device).set_smiact(DEVCB_##_devcb);
+ downcast<i386_device &>(*device).set_smiact(DEVCB_##_devcb);
#define MCFG_I486_FERR_HANDLER(_devcb) \
- devcb = &downcast<i386_device &>(*device).set_ferr(DEVCB_##_devcb);
+ downcast<i386_device &>(*device).set_ferr(DEVCB_##_devcb);
#define X86_NUM_CPUS 4
diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h
index 8c70aa03d71..899dd0b85b8 100644
--- a/src/devices/cpu/i8085/i8085.h
+++ b/src/devices/cpu/i8085/i8085.h
@@ -18,19 +18,19 @@
// STATUS changed callback
#define MCFG_I8085A_STATUS(_devcb) \
- devcb = &downcast<i8085a_cpu_device &>(*device).set_out_status_func(DEVCB_##_devcb);
+ downcast<i8085a_cpu_device &>(*device).set_out_status_func(DEVCB_##_devcb);
// INTE changed callback
#define MCFG_I8085A_INTE(_devcb) \
- devcb = &downcast<i8085a_cpu_device &>(*device).set_out_inte_func(DEVCB_##_devcb);
+ downcast<i8085a_cpu_device &>(*device).set_out_inte_func(DEVCB_##_devcb);
// SID changed callback (8085A only)
#define MCFG_I8085A_SID(_devcb) \
- devcb = &downcast<i8085a_cpu_device &>(*device).set_in_sid_func(DEVCB_##_devcb);
+ downcast<i8085a_cpu_device &>(*device).set_in_sid_func(DEVCB_##_devcb);
// SOD changed callback (8085A only)
#define MCFG_I8085A_SOD(_devcb) \
- devcb = &downcast<i8085a_cpu_device &>(*device).set_out_sod_func(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) \
@@ -71,6 +71,10 @@ public:
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); }
+ auto out_status_func() { return m_out_status_func.bind(); }
+ auto out_inte_func() { return m_out_inte_func.bind(); }
+ auto in_sid_func() { return m_in_sid_func.bind(); }
+ auto out_sod_func() { return m_out_sod_func.bind(); }
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 57dc9baea3d..0ea8c523f0a 100644
--- a/src/devices/cpu/i8089/i8089.h
+++ b/src/devices/cpu/i8089/i8089.h
@@ -26,10 +26,10 @@
downcast<i8089_device &>(*device).set_data_width(_data_width);
#define MCFG_I8089_SINTR1(_sintr1) \
- devcb = &downcast<i8089_device *>(device)->set_sintr1_callback(DEVCB_##_sintr1);
+ downcast<i8089_device *>(device)->set_sintr1_callback(DEVCB_##_sintr1);
#define MCFG_I8089_SINTR2(_sintr2) \
- devcb = &downcast<i8089_device *>(device)->set_sintr2_callback(DEVCB_##_sintr2);
+ downcast<i8089_device *>(device)->set_sintr2_callback(DEVCB_##_sintr2);
//**************************************************************************
diff --git a/src/devices/cpu/i86/i186.h b/src/devices/cpu/i86/i186.h
index ca281a58604..297a185ba66 100644
--- a/src/devices/cpu/i86/i186.h
+++ b/src/devices/cpu/i86/i186.h
@@ -20,6 +20,10 @@ public:
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)); }
+ auto read_slave_ack_callback() { return m_read_slave_ack_func.bind(); }
+ auto chip_select_callback() { return m_out_chip_select_func.bind(); }
+ auto tmrout0_handler() { return m_out_tmrout0_func.bind(); }
+ auto tmrout1_handler() { return m_out_tmrout1_func.bind(); }
IRQ_CALLBACK_MEMBER(int_callback);
DECLARE_WRITE_LINE_MEMBER(drq0_w) { if(state) drq_callback(0); m_dma[0].drq_state = state; }
@@ -157,15 +161,15 @@ public:
};
#define MCFG_80186_IRQ_SLAVE_ACK(_devcb) \
- devcb = &downcast<i80186_cpu_device &>(*device).set_read_slave_ack_callback(DEVCB_##_devcb);
+ downcast<i80186_cpu_device &>(*device).set_read_slave_ack_callback(DEVCB_##_devcb);
#define MCFG_80186_CHIP_SELECT_CB(_devcb) \
- devcb = &downcast<i80186_cpu_device &>(*device).set_chip_select_callback(DEVCB_##_devcb);
+ downcast<i80186_cpu_device &>(*device).set_chip_select_callback(DEVCB_##_devcb);
#define MCFG_80186_TMROUT0_HANDLER(_devcb) \
- devcb = &downcast<i80186_cpu_device &>(*device).set_tmrout0_handler(DEVCB_##_devcb);
+ downcast<i80186_cpu_device &>(*device).set_tmrout0_handler(DEVCB_##_devcb);
#define MCFG_80186_TMROUT1_HANDLER(_devcb) \
- devcb = &downcast<i80186_cpu_device &>(*device).set_tmrout1_handler(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 dbf5e245673..0012cd63699 100644
--- a/src/devices/cpu/i86/i286.h
+++ b/src/devices/cpu/i86/i286.h
@@ -165,6 +165,6 @@ private:
downcast<i80286_cpu_device &>(*device).set_a20_callback(i80286_cpu_device::a20_cb(&_class::_a20_cb, this));
#define MCFG_80286_SHUTDOWN(_devcb) \
- devcb = &downcast<i80286_cpu_device &>(*device).set_shutdown_callback(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 2631003c576..55202931ae1 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 = &downcast<i8086_common_cpu_device &>(*device).set_lock_handler(DEVCB_##_write);
+ downcast<i8086_common_cpu_device &>(*device).set_lock_handler(DEVCB_##_write);
#define MCFG_I8086_IF_HANDLER(_write) \
- devcb = &downcast<i8086_cpu_device &>(*device).set_if_handler(DEVCB_##_write);
+ 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 = &downcast<i8086_cpu_device &>(*device).set_esc_opcode_handler(DEVCB_##_write);
+ downcast<i8086_cpu_device &>(*device).set_esc_opcode_handler(DEVCB_##_write);
#define MCFG_I8086_ESC_DATA_HANDLER(_write) \
- devcb = &downcast<i8086_cpu_device &>(*device).set_esc_data_handler(DEVCB_##_write);
+ downcast<i8086_cpu_device &>(*device).set_esc_data_handler(DEVCB_##_write);
enum
{
diff --git a/src/devices/cpu/jaguar/jaguar.h b/src/devices/cpu/jaguar/jaguar.h
index 40a4292f65b..79c6b77bc1c 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 = &downcast<jaguar_cpu_device &>(*device).set_int_func(DEVCB_##_devcb);
+ downcast<jaguar_cpu_device &>(*device).set_int_func(DEVCB_##_devcb);
/***************************************************************************
diff --git a/src/devices/cpu/lc8670/lc8670.h b/src/devices/cpu/lc8670/lc8670.h
index c52a2a7ae72..3856b4a8e4b 100644
--- a/src/devices/cpu/lc8670/lc8670.h
+++ b/src/devices/cpu/lc8670/lc8670.h
@@ -49,7 +49,7 @@ enum
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 = &downcast<lc8670_cpu_device &>(*device).set_bankswitch_cb(DEVCB_##_devcb);
+ downcast<lc8670_cpu_device &>(*device).set_bankswitch_cb(DEVCB_##_devcb);
#define MCFG_LC8670_LCD_UPDATE_CB(_cb) \
downcast<lc8670_cpu_device &>(*device).set_lcd_update_cb(_cb);
diff --git a/src/devices/cpu/lh5801/lh5801.h b/src/devices/cpu/lh5801/lh5801.h
index 1d004105a9c..02a359b6cb1 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 = &downcast<lh5801_cpu_device &>(*device).set_in_func(DEVCB_##_devcb);
+ downcast<lh5801_cpu_device &>(*device).set_in_func(DEVCB_##_devcb);
class lh5801_cpu_device : public cpu_device
diff --git a/src/devices/cpu/lr35902/lr35902.h b/src/devices/cpu/lr35902/lr35902.h
index 5fad91ff8e2..ab70377a21e 100644
--- a/src/devices/cpu/lr35902/lr35902.h
+++ b/src/devices/cpu/lr35902/lr35902.h
@@ -7,7 +7,7 @@
#define MCFG_LR35902_TIMER_CB(_devcb) \
- devcb = &downcast<lr35902_cpu_device &>(*device).set_timer_cb(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.
@@ -19,7 +19,7 @@
// a 16-bit register in the $fe** region.
// note: oldval is in hiword, newval is in loword
#define MCFG_LR35902_INCDEC16_CB(_devcb) \
- devcb = &downcast<lr35902_cpu_device &>(*device).set_incdec16_cb(DEVCB_##_devcb);
+ downcast<lr35902_cpu_device &>(*device).set_incdec16_cb(DEVCB_##_devcb);
enum
diff --git a/src/devices/cpu/m6502/m5074x.h b/src/devices/cpu/m6502/m5074x.h
index 2782d09f2d7..cb1b71a962c 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 = &downcast<m5074x_device &>(*device).set_p0_rd_callback(DEVCB_##_read);
+ downcast<m5074x_device &>(*device).set_p0_rd_callback(DEVCB_##_read);
#define MCFG_M5074X_PORT1_READ_CALLBACK(_read) \
- devcb = &downcast<m5074x_device &>(*device).set_p1_rd_callback(DEVCB_##_read);
+ downcast<m5074x_device &>(*device).set_p1_rd_callback(DEVCB_##_read);
#define MCFG_M5074X_PORT2_READ_CALLBACK(_read) \
- devcb = &downcast<m5074x_device &>(*device).set_p2_rd_callback(DEVCB_##_read);
+ downcast<m5074x_device &>(*device).set_p2_rd_callback(DEVCB_##_read);
#define MCFG_M5074X_PORT3_READ_CALLBACK(_read) \
- devcb = &downcast<m5074x_device &>(*device).set_p3_rd_callback(DEVCB_##_read);
+ downcast<m5074x_device &>(*device).set_p3_rd_callback(DEVCB_##_read);
#define MCFG_M5074X_PORT0_WRITE_CALLBACK(_write) \
- devcb = &downcast<m5074x_device &>(*device).set_p0_wr_callback(DEVCB_##_write);
+ downcast<m5074x_device &>(*device).set_p0_wr_callback(DEVCB_##_write);
#define MCFG_M5074X_PORT1_WRITE_CALLBACK(_write) \
- devcb = &downcast<m5074x_device &>(*device).set_p1_wr_callback(DEVCB_##_write);
+ downcast<m5074x_device &>(*device).set_p1_wr_callback(DEVCB_##_write);
#define MCFG_M5074X_PORT2_WRITE_CALLBACK(_write) \
- devcb = &downcast<m5074x_device &>(*device).set_p2_wr_callback(DEVCB_##_write);
+ downcast<m5074x_device &>(*device).set_p2_wr_callback(DEVCB_##_write);
#define MCFG_M5074X_PORT3_WRITE_CALLBACK(_write) \
- devcb = &downcast<m5074x_device &>(*device).set_p3_wr_callback(DEVCB_##_write);
+ downcast<m5074x_device &>(*device).set_p3_wr_callback(DEVCB_##_write);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/cpu/m6502/m6502.h b/src/devices/cpu/m6502/m6502.h
index c16757581f3..0a230508e43 100644
--- a/src/devices/cpu/m6502/m6502.h
+++ b/src/devices/cpu/m6502/m6502.h
@@ -15,7 +15,7 @@
downcast<m6502_device *>(device)->disable_cache();
#define MCFG_M6502_SYNC_CALLBACK(_cb) \
- devcb = &downcast<m6502_device &>(*device).set_sync_callback(DEVCB_##_cb);
+ downcast<m6502_device &>(*device).set_sync_callback(DEVCB_##_cb);
class m6502_device : public cpu_device {
public:
diff --git a/src/devices/cpu/m6800/m6801.h b/src/devices/cpu/m6800/m6801.h
index 8c8c98d8104..34a371edcef 100644
--- a/src/devices/cpu/m6800/m6801.h
+++ b/src/devices/cpu/m6800/m6801.h
@@ -51,9 +51,9 @@ enum
#define MCFG_M6801_SC2(_devcb) \
- devcb = &downcast<m6801_cpu_device &>(*device).set_out_sc2_func(DEVCB_##_devcb);
+ downcast<m6801_cpu_device &>(*device).set_out_sc2_func(DEVCB_##_devcb);
#define MCFG_M6801_SER_TX(_devcb) \
- devcb = &downcast<m6801_cpu_device &>(*device).set_out_sertx_func(DEVCB_##_devcb);
+ downcast<m6801_cpu_device &>(*device).set_out_sertx_func(DEVCB_##_devcb);
class m6801_cpu_device : public m6800_cpu_device
diff --git a/src/devices/cpu/m6805/m68705.h b/src/devices/cpu/m6805/m68705.h
index 04e2e273640..ac9f4942db9 100644
--- a/src/devices/cpu/m6805/m68705.h
+++ b/src/devices/cpu/m6805/m68705.h
@@ -25,25 +25,25 @@ DECLARE_DEVICE_TYPE(M68705U3, m68705u3_device)
// ======================> m68705_device
#define MCFG_M68705_PORTA_R_CB(obj) \
- devcb = &downcast<m68705_device &>(*device).set_port_cb_r<0>(DEVCB_##obj);
+ downcast<m68705_device &>(*device).set_port_cb_r<0>(DEVCB_##obj);
#define MCFG_M68705_PORTB_R_CB(obj) \
- devcb = &downcast<m68705_device &>(*device).set_port_cb_r<1>(DEVCB_##obj);
+ downcast<m68705_device &>(*device).set_port_cb_r<1>(DEVCB_##obj);
#define MCFG_M68705_PORTC_R_CB(obj) \
- devcb = &downcast<m68705_device &>(*device).set_port_cb_r<2>(DEVCB_##obj);
+ downcast<m68705_device &>(*device).set_port_cb_r<2>(DEVCB_##obj);
#define MCFG_M68705_PORTD_R_CB(obj) \
- devcb = &downcast<m68705_device &>(*device).set_port_cb_r<3>(DEVCB_##obj);
+ downcast<m68705_device &>(*device).set_port_cb_r<3>(DEVCB_##obj);
#define MCFG_M68705_PORTA_W_CB(obj) \
- devcb = &downcast<m68705_device &>(*device).set_port_cb_w<0>(DEVCB_##obj);
+ downcast<m68705_device &>(*device).set_port_cb_w<0>(DEVCB_##obj);
#define MCFG_M68705_PORTB_W_CB(obj) \
- devcb = &downcast<m68705_device &>(*device).set_port_cb_w<1>(DEVCB_##obj);
+ downcast<m68705_device &>(*device).set_port_cb_w<1>(DEVCB_##obj);
#define MCFG_M68705_PORTC_W_CB(obj) \
- devcb = &downcast<m68705_device &>(*device).set_port_cb_w<2>(DEVCB_##obj);
+ downcast<m68705_device &>(*device).set_port_cb_w<2>(DEVCB_##obj);
class m68705_device : public m6805_base_device, public device_nvram_interface
diff --git a/src/devices/cpu/m6805/m68hc05.h b/src/devices/cpu/m6805/m68hc05.h
index 99dae24ffeb..4aaa856b867 100644
--- a/src/devices/cpu/m6805/m68hc05.h
+++ b/src/devices/cpu/m6805/m68hc05.h
@@ -26,31 +26,31 @@ DECLARE_DEVICE_TYPE(M68HC705C8A, m68hc705c8a_device)
// ======================> m68hc05_device
#define MCFG_M68HC05_PORTA_R_CB(obj) \
- devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<0>(DEVCB_##obj);
+ downcast<m68hc05_device &>(*device).set_port_cb_r<0>(DEVCB_##obj);
#define MCFG_M68HC05_PORTB_R_CB(obj) \
- devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<1>(DEVCB_##obj);
+ downcast<m68hc05_device &>(*device).set_port_cb_r<1>(DEVCB_##obj);
#define MCFG_M68HC05_PORTC_R_CB(obj) \
- devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<2>(DEVCB_##obj);
+ downcast<m68hc05_device &>(*device).set_port_cb_r<2>(DEVCB_##obj);
#define MCFG_M68HC05_PORTD_R_CB(obj) \
- devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<3>(DEVCB_##obj);
+ downcast<m68hc05_device &>(*device).set_port_cb_r<3>(DEVCB_##obj);
#define MCFG_M68HC05_PORTA_W_CB(obj) \
- devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<0>(DEVCB_##obj);
+ downcast<m68hc05_device &>(*device).set_port_cb_w<0>(DEVCB_##obj);
#define MCFG_M68HC05_PORTB_W_CB(obj) \
- devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<1>(DEVCB_##obj);
+ downcast<m68hc05_device &>(*device).set_port_cb_w<1>(DEVCB_##obj);
#define MCFG_M68HC05_PORTC_W_CB(obj) \
- devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<2>(DEVCB_##obj);
+ downcast<m68hc05_device &>(*device).set_port_cb_w<2>(DEVCB_##obj);
#define MCFG_M68HC05_PORTD_W_CB(obj) \
- devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<3>(DEVCB_##obj);
+ downcast<m68hc05_device &>(*device).set_port_cb_w<3>(DEVCB_##obj);
#define MCFG_M68HC05_TCMP_CB(obj) \
- devcb = &downcast<m68hc05_device &>(*device).set_tcmp_cb(DEVCB_##obj);
+ downcast<m68hc05_device &>(*device).set_tcmp_cb(DEVCB_##obj);
class m68hc05_device : public m6805_base_device
diff --git a/src/devices/cpu/m6809/konami.h b/src/devices/cpu/m6809/konami.h
index 08d1c75026e..0ca8adda93f 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 = &downcast<konami_cpu_device &>(*device).set_line_callback(DEVCB_##_devcb);
+ downcast<konami_cpu_device &>(*device).set_line_callback(DEVCB_##_devcb);
// device type definition
diff --git a/src/devices/cpu/m6809/m6809.h b/src/devices/cpu/m6809/m6809.h
index 6451a3074ca..fdd9120b1ca 100644
--- a/src/devices/cpu/m6809/m6809.h
+++ b/src/devices/cpu/m6809/m6809.h
@@ -307,7 +307,7 @@ public:
// MC6809E has LIC line to indicate opcode/data fetch
#define MCFG_MC6809E_LIC_CB(_devcb) \
- devcb = &downcast<mc6809e_device &>(*device).set_lic_cb(DEVCB_##_devcb);
+ downcast<mc6809e_device &>(*device).set_lic_cb(DEVCB_##_devcb);
class mc6809e_device : public m6809_base_device
diff --git a/src/devices/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h
index 6afe25aa57d..8c071ad8cec 100644
--- a/src/devices/cpu/mb88xx/mb88xx.h
+++ b/src/devices/cpu/mb88xx/mb88xx.h
@@ -54,47 +54,47 @@
// K (K3-K0): input-only port
#define MCFG_MB88XX_READ_K_CB(_devcb) \
- devcb = &downcast<mb88_cpu_device &>(*device).set_read_k_callback(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 = &downcast<mb88_cpu_device &>(*device).set_write_o_callback(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 = &downcast<mb88_cpu_device &>(*device).set_write_p_callback(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 = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(0, DEVCB_##_devcb);
+ downcast<mb88_cpu_device &>(*device).set_read_r_callback(0, DEVCB_##_devcb);
#define MCFG_MB88XX_WRITE_R0_CB(_devcb) \
- devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(0, 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 = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(1, DEVCB_##_devcb);
+ downcast<mb88_cpu_device &>(*device).set_read_r_callback(1, DEVCB_##_devcb);
#define MCFG_MB88XX_WRITE_R1_CB(_devcb) \
- devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(1, 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 = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(2, DEVCB_##_devcb);
+ downcast<mb88_cpu_device &>(*device).set_read_r_callback(2, DEVCB_##_devcb);
#define MCFG_MB88XX_WRITE_R2_CB(_devcb) \
- devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(2, 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 = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(3, DEVCB_##_devcb);
+ downcast<mb88_cpu_device &>(*device).set_read_r_callback(3, DEVCB_##_devcb);
#define MCFG_MB88XX_WRITE_R3_CB(_devcb) \
- devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(3, 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 = &downcast<mb88_cpu_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
+ downcast<mb88_cpu_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
// SO: serial output
#define MCFG_MB88XX_WRITE_SO_CB(_devcb) \
- devcb = &downcast<mb88_cpu_device &>(*device).set_write_so_callback(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) \
diff --git a/src/devices/cpu/mcs40/mcs40.h b/src/devices/cpu/mcs40/mcs40.h
index a56a1813f34..73cc2a10fe4 100644
--- a/src/devices/cpu/mcs40/mcs40.h
+++ b/src/devices/cpu/mcs40/mcs40.h
@@ -36,65 +36,65 @@ enum
downcast<i4004_cpu_device &>(*device).set_bus_cycle_cb((MCS40CB_##obj));
#define MCFG_I4004_SYNC_CB(obj) \
- devcb = &downcast<i4004_cpu_device &>(*device).set_sync_cb(DEVCB_##obj);
+ downcast<i4004_cpu_device &>(*device).set_sync_cb(DEVCB_##obj);
#define MCFG_I4004_CM_ROM_CB(obj) \
- devcb = &downcast<i4004_cpu_device &>(*device).set_cm_rom_cb(DEVCB_##obj);
+ downcast<i4004_cpu_device &>(*device).set_cm_rom_cb(DEVCB_##obj);
#define MCFG_I4004_CM_RAM0_CB(obj) \
- devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<0>(DEVCB_##obj);
+ downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<0>(DEVCB_##obj);
#define MCFG_I4004_CM_RAM1_CB(obj) \
- devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<1>(DEVCB_##obj);
+ downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<1>(DEVCB_##obj);
#define MCFG_I4004_CM_RAM2_CB(obj) \
- devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<2>(DEVCB_##obj);
+ downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<2>(DEVCB_##obj);
#define MCFG_I4004_CM_RAM3_CB(obj) \
- devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<3>(DEVCB_##obj);
+ downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<3>(DEVCB_##obj);
#define MCFG_I4004_4289_PM_CB(obj) \
- devcb = &downcast<i4004_cpu_device &>(*device).set_4289_pm_cb(DEVCB_##obj);
+ downcast<i4004_cpu_device &>(*device).set_4289_pm_cb(DEVCB_##obj);
#define MCFG_I4004_4289_F_L_CB(obj) \
- devcb = &downcast<i4004_cpu_device &>(*device).set_4289_f_l_cb(DEVCB_##obj);
+ downcast<i4004_cpu_device &>(*device).set_4289_f_l_cb(DEVCB_##obj);
#define MCFG_I4040_BUS_CYCLE_CB(obj) \
downcast<i4040_cpu_device &>(*device).set_bus_cycle_cb((MCS40CB_##obj));
#define MCFG_I4040_SYNC_CB(obj) \
- devcb = &downcast<i4040_cpu_device &>(*device).set_sync_cb(DEVCB_##obj);
+ downcast<i4040_cpu_device &>(*device).set_sync_cb(DEVCB_##obj);
#define MCFG_I4040_CM_ROM0_CB(obj) \
- devcb = &downcast<i4040_cpu_device &>(*device).set_cm_rom_cb<0>(DEVCB_##obj);
+ downcast<i4040_cpu_device &>(*device).set_cm_rom_cb<0>(DEVCB_##obj);
#define MCFG_I4040_CM_ROM1_CB(obj) \
- devcb = &downcast<i4040_cpu_device &>(*device).set_cm_rom_cb<1>(DEVCB_##obj);
+ downcast<i4040_cpu_device &>(*device).set_cm_rom_cb<1>(DEVCB_##obj);
#define MCFG_I4040_CM_RAM0_CB(obj) \
- devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<0>(DEVCB_##obj);
+ downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<0>(DEVCB_##obj);
#define MCFG_I4040_CM_RAM1_CB(obj) \
- devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<1>(DEVCB_##obj);
+ downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<1>(DEVCB_##obj);
#define MCFG_I4040_CM_RAM2_CB(obj) \
- devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<2>(DEVCB_##obj);
+ downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<2>(DEVCB_##obj);
#define MCFG_I4040_CM_RAM3_CB(obj) \
- devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<3>(DEVCB_##obj);
+ downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<3>(DEVCB_##obj);
#define MCFG_I4040_CY_CB(obj) \
- devcb = &downcast<i4040_cpu_device &>(*device).set_cy_cb(DEVCB_##obj);
+ downcast<i4040_cpu_device &>(*device).set_cy_cb(DEVCB_##obj);
#define MCFG_I4040_STP_ACK_CB(obj) \
- devcb = &downcast<i4040_cpu_device &>(*device).set_stp_ack_cb(DEVCB_##obj);
+ downcast<i4040_cpu_device &>(*device).set_stp_ack_cb(DEVCB_##obj);
#define MCFG_I4040_4289_PM_CB(obj) \
- devcb = &downcast<i4040_cpu_device &>(*device).set_4289_pm_cb(DEVCB_##obj);
+ downcast<i4040_cpu_device &>(*device).set_4289_pm_cb(DEVCB_##obj);
#define MCFG_I4040_4289_F_L_CB(obj) \
- devcb = &downcast<i4040_cpu_device &>(*device).set_4289_f_l_cb(DEVCB_##obj);
+ downcast<i4040_cpu_device &>(*device).set_4289_f_l_cb(DEVCB_##obj);
diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h
index ae26c1a2d62..fe8affa2387 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 = &downcast<mcs48_cpu_device &>(*device).set_port_in_cb(0, DEVCB_##_devcb);
+ downcast<mcs48_cpu_device &>(*device).set_port_in_cb(0, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_P1_OUT_CB(_devcb) \
- devcb = &downcast<mcs48_cpu_device &>(*device).set_port_out_cb(0, DEVCB_##_devcb);
+ downcast<mcs48_cpu_device &>(*device).set_port_out_cb(0, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_P2_IN_CB(_devcb) \
- devcb = &downcast<mcs48_cpu_device &>(*device).set_port_in_cb(1, DEVCB_##_devcb);
+ downcast<mcs48_cpu_device &>(*device).set_port_in_cb(1, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_P2_OUT_CB(_devcb) \
- devcb = &downcast<mcs48_cpu_device &>(*device).set_port_out_cb(1, DEVCB_##_devcb);
+ downcast<mcs48_cpu_device &>(*device).set_port_out_cb(1, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_T0_IN_CB(_devcb) \
- devcb = &downcast<mcs48_cpu_device &>(*device).set_test_in_cb(0, DEVCB_##_devcb);
+ downcast<mcs48_cpu_device &>(*device).set_test_in_cb(0, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_T0_CLK_DEVICE(_tag) \
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) \
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 = &downcast<mcs48_cpu_device &>(*device).set_test_in_cb(1, DEVCB_##_devcb);
+ downcast<mcs48_cpu_device &>(*device).set_test_in_cb(1, DEVCB_##_devcb);
#define MCFG_MCS48_PORT_BUS_IN_CB(_devcb) \
- devcb = &downcast<mcs48_cpu_device &>(*device).set_bus_in_cb(DEVCB_##_devcb);
+ downcast<mcs48_cpu_device &>(*device).set_bus_in_cb(DEVCB_##_devcb);
#define MCFG_MCS48_PORT_BUS_OUT_CB(_devcb) \
- devcb = &downcast<mcs48_cpu_device &>(*device).set_bus_out_cb(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 = &downcast<mcs48_cpu_device &>(*device).set_prog_out_cb(DEVCB_##_devcb);
+ downcast<mcs48_cpu_device &>(*device).set_prog_out_cb(DEVCB_##_devcb);
/***************************************************************************
@@ -149,6 +149,15 @@ public:
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)); }
+ auto p1_in_cb() { return m_port_in_cb[0].bind(); }
+ auto p2_in_cb() { return m_port_in_cb[1].bind(); }
+ auto p1_out_cb() { return m_port_out_cb[0].bind(); }
+ auto p2_out_cb() { return m_port_out_cb[1].bind(); }
+ auto bus_in_cb() { return m_bus_in_cb.bind(); }
+ auto bus_out_cb() { return m_bus_out_cb.bind(); }
+ auto t0_in_cb() { return m_test_in_cb[0].bind(); }
+ auto t1_in_cb() { return m_test_in_cb[1].bind(); }
+ auto prog_out_cb() { return m_prog_out_cb.bind(); }
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 cb3c7f635f1..51ffe2978d5 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 = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(0, DEVCB_##_devcb);
+ downcast<mcs51_cpu_device &>(*device).set_port_in_cb(0, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P0_OUT_CB(_devcb) \
- devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(0, DEVCB_##_devcb);
+ downcast<mcs51_cpu_device &>(*device).set_port_out_cb(0, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P1_IN_CB(_devcb) \
- devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(1, DEVCB_##_devcb);
+ downcast<mcs51_cpu_device &>(*device).set_port_in_cb(1, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P1_OUT_CB(_devcb) \
- devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(1, DEVCB_##_devcb);
+ downcast<mcs51_cpu_device &>(*device).set_port_out_cb(1, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P2_IN_CB(_devcb) \
- devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(2, DEVCB_##_devcb);
+ downcast<mcs51_cpu_device &>(*device).set_port_in_cb(2, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P2_OUT_CB(_devcb) \
- devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(2, DEVCB_##_devcb);
+ downcast<mcs51_cpu_device &>(*device).set_port_out_cb(2, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P3_IN_CB(_devcb) \
- devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(3, DEVCB_##_devcb);
+ downcast<mcs51_cpu_device &>(*device).set_port_in_cb(3, DEVCB_##_devcb);
#define MCFG_MCS51_PORT_P3_OUT_CB(_devcb) \
- devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(3, DEVCB_##_devcb);
+ downcast<mcs51_cpu_device &>(*device).set_port_out_cb(3, DEVCB_##_devcb);
#define MCFG_MCS51_SERIAL_RX_CB(_devcb) \
- devcb = &downcast<mcs51_cpu_device &>(*device).set_serial_rx_cb(DEVCB_##_devcb);
+ downcast<mcs51_cpu_device &>(*device).set_serial_rx_cb(DEVCB_##_devcb);
#define MCFG_MCS51_SERIAL_TX_CB(_devcb) \
- devcb = &downcast<mcs51_cpu_device &>(*device).set_serial_tx_cb(DEVCB_##_devcb);
+ downcast<mcs51_cpu_device &>(*device).set_serial_tx_cb(DEVCB_##_devcb);
enum
@@ -100,6 +100,8 @@ public:
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)); }
+ template <unsigned N> auto port_in_cb() { return m_port_in_cb[N].bind(); }
+ template <unsigned N> auto port_out_cb() { return m_port_out_cb[N].bind(); }
void program_internal(address_map &map);
void data_internal(address_map &map);
diff --git a/src/devices/cpu/melps4/melps4.h b/src/devices/cpu/melps4/melps4.h
index e7bbe83b238..17b0c9ea623 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 = &downcast<melps4_cpu_device &>(*device).set_read_k_callback(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 = &downcast<melps4_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
+ downcast<melps4_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
#define MCFG_MELPS4_WRITE_D_CB(_devcb) \
- devcb = &downcast<melps4_cpu_device &>(*device).set_write_d_callback(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 = &downcast<melps4_cpu_device &>(*device).set_read_s_callback(DEVCB_##_devcb);
+ downcast<melps4_cpu_device &>(*device).set_read_s_callback(DEVCB_##_devcb);
#define MCFG_MELPS4_WRITE_S_CB(_devcb) \
- devcb = &downcast<melps4_cpu_device &>(*device).set_write_s_callback(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 = &downcast<melps4_cpu_device &>(*device).set_read_f_callback(DEVCB_##_devcb);
+ downcast<melps4_cpu_device &>(*device).set_read_f_callback(DEVCB_##_devcb);
#define MCFG_MELPS4_WRITE_F_CB(_devcb) \
- devcb = &downcast<melps4_cpu_device &>(*device).set_write_f_callback(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 = &downcast<melps4_cpu_device &>(*device).set_write_g_callback(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 = &downcast<melps4_cpu_device &>(*device).set_write_u_callback(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 = &downcast<melps4_cpu_device &>(*device).set_write_t_callback(DEVCB_##_devcb);
+ downcast<melps4_cpu_device &>(*device).set_write_t_callback(DEVCB_##_devcb);
#define MELPS4_PORTD_CLR 16
diff --git a/src/devices/cpu/mips/r3000.h b/src/devices/cpu/mips/r3000.h
index 79529b01195..db8313309e2 100644
--- a/src/devices/cpu/mips/r3000.h
+++ b/src/devices/cpu/mips/r3000.h
@@ -22,16 +22,16 @@
downcast<r3000_device &>(*device).set_endianness(_endianness);
#define MCFG_R3000_BRCOND0_INPUT(_devcb) \
- devcb = &downcast<r3000_device &>(*device).set_brcond0_input(DEVCB_##_devcb);
+ downcast<r3000_device &>(*device).set_brcond0_input(DEVCB_##_devcb);
#define MCFG_R3000_BRCOND1_INPUT(_devcb) \
- devcb = &downcast<r3000_device &>(*device).set_brcond1_input(DEVCB_##_devcb);
+ downcast<r3000_device &>(*device).set_brcond1_input(DEVCB_##_devcb);
#define MCFG_R3000_BRCOND2_INPUT(_devcb) \
- devcb = &downcast<r3000_device &>(*device).set_brcond2_input(DEVCB_##_devcb);
+ downcast<r3000_device &>(*device).set_brcond2_input(DEVCB_##_devcb);
#define MCFG_R3000_BRCOND3_INPUT(_devcb) \
- devcb = &downcast<r3000_device &>(*device).set_brcond3_input(DEVCB_##_devcb);
+ downcast<r3000_device &>(*device).set_brcond3_input(DEVCB_##_devcb);
/***************************************************************************
diff --git a/src/devices/cpu/mn10200/mn10200.h b/src/devices/cpu/mn10200/mn10200.h
index 714fd9385e7..8fd12ef5118 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 = &downcast<mn10200_device &>(*device).set_read_port##X##_callback(DEVCB_##_devcb);
+ downcast<mn10200_device &>(*device).set_read_port##X##_callback(DEVCB_##_devcb);
#define MCFG_MN10200_WRITE_PORT_CB(X, _devcb) \
- devcb = &downcast<mn10200_device &>(*device).set_write_port##X##_callback(DEVCB_##_devcb);
+ downcast<mn10200_device &>(*device).set_write_port##X##_callback(DEVCB_##_devcb);
enum
{
diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor.h b/src/devices/cpu/nanoprocessor/nanoprocessor.h
index a4de6b661fb..42f43c60e01 100644
--- a/src/devices/cpu/nanoprocessor/nanoprocessor.h
+++ b/src/devices/cpu/nanoprocessor/nanoprocessor.h
@@ -62,12 +62,12 @@ 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 = &downcast<hp_nanoprocessor_device &>(*device).set_dc_changed_func(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 = &downcast<hp_nanoprocessor_device &>(*device).set_read_dc_func(DEVCB_##_devcb);
+ downcast<hp_nanoprocessor_device &>(*device).set_read_dc_func(DEVCB_##_devcb);
class hp_nanoprocessor_device : public cpu_device
{
diff --git a/src/devices/cpu/nec/v25.h b/src/devices/cpu/nec/v25.h
index 9deaa0951ae..af7d5eb4d93 100644
--- a/src/devices/cpu/nec/v25.h
+++ b/src/devices/cpu/nec/v25.h
@@ -27,26 +27,26 @@ enum
#define MCFG_V25_PORT_PT_READ_CB(_devcb) \
- devcb = &downcast<v25_common_device &>(*device).set_pt_in_cb(DEVCB_##_devcb);
+ downcast<v25_common_device &>(*device).set_pt_in_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P0_READ_CB(_devcb) \
- devcb = &downcast<v25_common_device &>(*device).set_p0_in_cb(DEVCB_##_devcb);
+ downcast<v25_common_device &>(*device).set_p0_in_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P1_READ_CB(_devcb) \
- devcb = &downcast<v25_common_device &>(*device).set_p1_in_cb(DEVCB_##_devcb);
+ downcast<v25_common_device &>(*device).set_p1_in_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P2_READ_CB(_devcb) \
- devcb = &downcast<v25_common_device &>(*device).set_p2_in_cb(DEVCB_##_devcb);
+ downcast<v25_common_device &>(*device).set_p2_in_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P0_WRITE_CB(_devcb) \
- devcb = &downcast<v25_common_device &>(*device).set_p0_out_cb(DEVCB_##_devcb);
+ downcast<v25_common_device &>(*device).set_p0_out_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P1_WRITE_CB(_devcb) \
- devcb = &downcast<v25_common_device &>(*device).set_p1_out_cb(DEVCB_##_devcb);
+ downcast<v25_common_device &>(*device).set_p1_out_cb(DEVCB_##_devcb);
#define MCFG_V25_PORT_P2_WRITE_CB(_devcb) \
- devcb = &downcast<v25_common_device &>(*device).set_p2_out_cb(DEVCB_##_devcb);
+ downcast<v25_common_device &>(*device).set_p2_out_cb(DEVCB_##_devcb);
class v25_common_device : public cpu_device
{
@@ -58,10 +58,17 @@ public:
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)); }
+ auto pt_in_cb() { return m_pt_in.bind(); }
+ auto p0_in_cb() { return m_p0_in.bind(); }
+ auto p1_in_cb() { return m_p1_in.bind(); }
+ auto p2_in_cb() { return m_p2_in.bind(); }
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)); }
+ auto p0_out_cb() { return m_p0_out.bind(); }
+ auto p1_out_cb() { return m_p1_out.bind(); }
+ auto p2_out_cb() { return m_p2_out.bind(); }
TIMER_CALLBACK_MEMBER(v25_timer_callback);
diff --git a/src/devices/cpu/nec/v53.cpp b/src/devices/cpu/nec/v53.cpp
index fc30638836b..d71e9d89d62 100644
--- a/src/devices/cpu/nec/v53.cpp
+++ b/src/devices/cpu/nec/v53.cpp
@@ -496,7 +496,6 @@ MACHINE_CONFIG_START(v53_base_device::device_add_mconfig)
MCFG_PIT8253_OUT1_HANDLER(WRITELINE( *this, v53_base_device, tcu_out1_trampoline_cb ))
MCFG_PIT8253_OUT2_HANDLER(WRITELINE( *this, v53_base_device, tcu_out2_trampoline_cb ))
-
MCFG_DEVICE_ADD("upd71071dma", V53_DMAU, 4000000)
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(*this, v53_base_device, hreq_trampoline_cb))
MCFG_AM9517A_OUT_EOP_CB(WRITELINE(*this, v53_base_device, eop_trampoline_cb))
@@ -515,13 +514,10 @@ MACHINE_CONFIG_START(v53_base_device::device_add_mconfig)
MCFG_AM9517A_OUT_DACK_2_CB(WRITELINE(*this, v53_base_device, dma_dack2_trampoline_w))
MCFG_AM9517A_OUT_DACK_3_CB(WRITELINE(*this, v53_base_device, dma_dack3_trampoline_w))
-
- MCFG_DEVICE_ADD("upd71059pic", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, v53_base_device, internal_irq_w))
- MCFG_PIC8259_IN_SP_CB(VCC)
- MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, v53_base_device, get_pic_ack))
-
-
+ pic8259_device &upd71059pic(PIC8259(config, "upd71059pic", 0));
+ upd71059pic.out_int_callback().set(FUNC(v53_base_device::internal_irq_w));
+ upd71059pic.in_sp_callback().set_constant(1);
+ upd71059pic.read_slave_ack_callback().set(FUNC(v53_base_device::get_pic_ack));
MCFG_DEVICE_ADD("v53scu", V53_SCU, 0)
MCFG_I8251_TXD_HANDLER(WRITELINE(*this, v53_base_device, scu_txd_trampoline_cb))
diff --git a/src/devices/cpu/nec/v53.h b/src/devices/cpu/nec/v53.h
index ef3450bb74e..536b8f8f458 100644
--- a/src/devices/cpu/nec/v53.h
+++ b/src/devices/cpu/nec/v53.h
@@ -16,25 +16,25 @@
// SCU
#define MCFG_V53_SCU_TXD_HANDLER(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_txd_handler(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_txd_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_DTR_HANDLER(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_dtr_handler(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_dtr_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_RTS_HANDLER(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_rts_handler(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_rts_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_RXRDY_HANDLER(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_rxrdy_handler(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_rxrdy_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_TXRDY_HANDLER(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_txrdy_handler(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_txrdy_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_TXEMPTY_HANDLER(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_txempty_handler(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_txempty_handler(DEVCB_##_devcb);
#define MCFG_V53_SCU_SYNDET_HANDLER(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_syndet_handler(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_syndet_handler(DEVCB_##_devcb);
// TCU
#define MCFG_V53_TCU_CLK0(_clk) \
@@ -47,63 +47,63 @@
downcast<v53_base_device &>(*device).set_clk2(_clk);
#define MCFG_V53_TCU_OUT0_HANDLER(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out0_handler(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out0_handler(DEVCB_##_devcb);
#define MCFG_V53_TCU_OUT1_HANDLER(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out1_handler(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out1_handler(DEVCB_##_devcb);
#define MCFG_V53_TCU_OUT2_HANDLER(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out2_handler(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out2_handler(DEVCB_##_devcb);
// DMAU
#define MCFG_V53_DMAU_OUT_HREQ_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out_hreq_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out_hreq_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_EOP_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out_eop_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out_eop_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_IN_MEMR_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_in_memr_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_in_memr_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_MEMW_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out_memw_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out_memw_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_IN_IOR_0_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_in_ior_0_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_in_ior_0_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_IN_IOR_1_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_in_ior_1_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_in_ior_1_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_IN_IOR_2_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_in_ior_2_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_in_ior_2_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_IN_IOR_3_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_in_ior_3_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_in_ior_3_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_IOW_0_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out_iow_0_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out_iow_0_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_IOW_1_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out_iow_1_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out_iow_1_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_IOW_2_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out_iow_2_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out_iow_2_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_IOW_3_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out_iow_3_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out_iow_3_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_DACK_0_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out_dack_0_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out_dack_0_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_DACK_1_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out_dack_1_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out_dack_1_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_DACK_2_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out_dack_2_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out_dack_2_callback(DEVCB_##_devcb);
#define MCFG_V53_DMAU_OUT_DACK_3_CB(_devcb) \
- devcb = &downcast<v53_base_device &>(*device).set_out_dack_3_callback(DEVCB_##_devcb);
+ downcast<v53_base_device &>(*device).set_out_dack_3_callback(DEVCB_##_devcb);
diff --git a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h
index ecff53f7249..c1f0dafab7a 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 = &downcast<patinho_feio_cpu_device &>(*device).set_rc_read_callback(DEVCB_##_devcb);
+ downcast<patinho_feio_cpu_device &>(*device).set_rc_read_callback(DEVCB_##_devcb);
#define MCFG_PATINHO_BUTTONS_READ_CB(_devcb) \
- devcb = &downcast<patinho_feio_cpu_device &>(*device).set_buttons_read_callback(DEVCB_##_devcb);
+ downcast<patinho_feio_cpu_device &>(*device).set_buttons_read_callback(DEVCB_##_devcb);
#define MCFG_PATINHO_IODEV_READ_CB(devnumber, _devcb) \
- devcb = &downcast<patinho_feio_cpu_device &>(*device).set_iodev_read_callback(devnumber, DEVCB_##_devcb);
+ downcast<patinho_feio_cpu_device &>(*device).set_iodev_read_callback(devnumber, DEVCB_##_devcb);
#define MCFG_PATINHO_IODEV_WRITE_CB(devnumber, _devcb) \
- devcb = &downcast<patinho_feio_cpu_device &>(*device).set_iodev_write_callback(devnumber, DEVCB_##_devcb);
+ downcast<patinho_feio_cpu_device &>(*device).set_iodev_write_callback(devnumber, DEVCB_##_devcb);
/* register IDs */
enum
diff --git a/src/devices/cpu/pic16c5x/pic16c5x.h b/src/devices/cpu/pic16c5x/pic16c5x.h
index f83e2a420b4..e337ca196d5 100644
--- a/src/devices/cpu/pic16c5x/pic16c5x.h
+++ b/src/devices/cpu/pic16c5x/pic16c5x.h
@@ -37,27 +37,27 @@ enum
// port a, 4 or 8 bits, 2-way
#define MCFG_PIC16C5x_READ_A_CB(_devcb) \
- devcb = &downcast<pic16c5x_device &>(*device).set_read_a_callback(DEVCB_##_devcb);
+ downcast<pic16c5x_device &>(*device).set_read_a_callback(DEVCB_##_devcb);
#define MCFG_PIC16C5x_WRITE_A_CB(_devcb) \
- devcb = &downcast<pic16c5x_device &>(*device).set_write_a_callback(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 = &downcast<pic16c5x_device &>(*device).set_read_b_callback(DEVCB_##_devcb);
+ downcast<pic16c5x_device &>(*device).set_read_b_callback(DEVCB_##_devcb);
#define MCFG_PIC16C5x_WRITE_B_CB(_devcb) \
- devcb = &downcast<pic16c5x_device &>(*device).set_write_b_callback(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 = &downcast<pic16c5x_device &>(*device).set_read_c_callback(DEVCB_##_devcb);
+ downcast<pic16c5x_device &>(*device).set_read_c_callback(DEVCB_##_devcb);
#define MCFG_PIC16C5x_WRITE_C_CB(_devcb) \
- devcb = &downcast<pic16c5x_device &>(*device).set_write_c_callback(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 = &downcast<pic16c5x_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
+ downcast<pic16c5x_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
#define MCFG_PIC16C5x_WRITE_D_CB(_devcb) \
- devcb = &downcast<pic16c5x_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
+ downcast<pic16c5x_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
// CONFIG register
#define MCFG_PIC16C5x_SET_CONFIG(_data) \
diff --git a/src/devices/cpu/pps4/pps4.h b/src/devices/cpu/pps4/pps4.h
index d74621890b3..aceb23e2294 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 = &downcast<pps4_device &>(*device).set_dia_cb(DEVCB_##_devcb);
+ downcast<pps4_device &>(*device).set_dia_cb(DEVCB_##_devcb);
#define MCFG_PPS4_DISCRETE_INPUT_B_CB(_devcb) \
- devcb = &downcast<pps4_device &>(*device).set_dib_cb(DEVCB_##_devcb);
+ downcast<pps4_device &>(*device).set_dib_cb(DEVCB_##_devcb);
#define MCFG_PPS4_DISCRETE_OUTPUT_CB(_devcb) \
- devcb = &downcast<pps4_device &>(*device).set_do_cb(DEVCB_##_devcb);
+ downcast<pps4_device &>(*device).set_do_cb(DEVCB_##_devcb);
//**************************************************************************
// DEVICE TYPE DEFINITIONS
diff --git a/src/devices/cpu/psx/dma.h b/src/devices/cpu/psx/dma.h
index 7be62c0eb0d..97785439bb3 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 = &downcast<psxdma_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<psxdma_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class psxdma_device : public device_t
{
diff --git a/src/devices/cpu/psx/irq.h b/src/devices/cpu/psx/irq.h
index 93e0d6ce737..051c68a089d 100644
--- a/src/devices/cpu/psx/irq.h
+++ b/src/devices/cpu/psx/irq.h
@@ -16,7 +16,7 @@
DECLARE_DEVICE_TYPE(PSX_IRQ, psxirq_device)
#define MCFG_PSX_IRQ_HANDLER(_devcb) \
- devcb = &downcast<psxirq_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<psxirq_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class psxirq_device : public device_t
{
diff --git a/src/devices/cpu/psx/psx.h b/src/devices/cpu/psx/psx.h
index ca417ee9607..646c5e8a4b1 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 = &downcast<psxcpu_device &>(*device).set_gpu_read_handler(DEVCB_##_devcb);
+ downcast<psxcpu_device &>(*device).set_gpu_read_handler(DEVCB_##_devcb);
#define MCFG_PSX_GPU_WRITE_HANDLER(_devcb) \
- devcb = &downcast<psxcpu_device &>(*device).set_gpu_write_handler(DEVCB_##_devcb);
+ downcast<psxcpu_device &>(*device).set_gpu_write_handler(DEVCB_##_devcb);
#define MCFG_PSX_SPU_READ_HANDLER(_devcb) \
- devcb = &downcast<psxcpu_device &>(*device).set_spu_read_handler(DEVCB_##_devcb);
+ downcast<psxcpu_device &>(*device).set_spu_read_handler(DEVCB_##_devcb);
#define MCFG_PSX_SPU_WRITE_HANDLER(_devcb) \
- devcb = &downcast<psxcpu_device &>(*device).set_spu_write_handler(DEVCB_##_devcb);
+ downcast<psxcpu_device &>(*device).set_spu_write_handler(DEVCB_##_devcb);
#define MCFG_PSX_CD_READ_HANDLER(_devcb) \
- devcb = &downcast<psxcpu_device &>(*device).set_cd_read_handler(DEVCB_##_devcb);
+ downcast<psxcpu_device &>(*device).set_cd_read_handler(DEVCB_##_devcb);
#define MCFG_PSX_CD_WRITE_HANDLER(_devcb) \
- devcb = &downcast<psxcpu_device &>(*device).set_cd_write_handler(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);
diff --git a/src/devices/cpu/psx/rcnt.h b/src/devices/cpu/psx/rcnt.h
index 2047d229c3e..9332a5c174d 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 = &downcast<psxrcnt_device &>(*device).set_irq0_handler(DEVCB_##_devcb);
+ downcast<psxrcnt_device &>(*device).set_irq0_handler(DEVCB_##_devcb);
#define MCFG_PSX_RCNT_IRQ1_HANDLER(_devcb) \
- devcb = &downcast<psxrcnt_device &>(*device).set_irq1_handler(DEVCB_##_devcb);
+ downcast<psxrcnt_device &>(*device).set_irq1_handler(DEVCB_##_devcb);
#define MCFG_PSX_RCNT_IRQ2_HANDLER(_devcb) \
- devcb = &downcast<psxrcnt_device &>(*device).set_irq2_handler(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 )
diff --git a/src/devices/cpu/psx/sio.h b/src/devices/cpu/psx/sio.h
index fe2cb6af269..0548480abeb 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 = &downcast<psxsio_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<psxsio_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_PSX_SIO_SCK_HANDLER(_devcb) \
- devcb = &downcast<psxsio_device &>(*device).set_sck_handler(DEVCB_##_devcb);
+ downcast<psxsio_device &>(*device).set_sck_handler(DEVCB_##_devcb);
#define MCFG_PSX_SIO_TXD_HANDLER(_devcb) \
- devcb = &downcast<psxsio_device &>(*device).set_txd_handler(DEVCB_##_devcb);
+ downcast<psxsio_device &>(*device).set_txd_handler(DEVCB_##_devcb);
#define MCFG_PSX_SIO_DTR_HANDLER(_devcb) \
- devcb = &downcast<psxsio_device &>(*device).set_dtr_handler(DEVCB_##_devcb);
+ downcast<psxsio_device &>(*device).set_dtr_handler(DEVCB_##_devcb);
#define MCFG_PSX_SIO_RTS_HANDLER(_devcb) \
- devcb = &downcast<psxsio_device &>(*device).set_rts_handler(DEVCB_##_devcb);
+ downcast<psxsio_device &>(*device).set_rts_handler(DEVCB_##_devcb);
#define SIO_BUF_SIZE ( 8 )
diff --git a/src/devices/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h
index 4c4c315e111..0e07b732ad2 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 = &downcast<rsp_device &>(*device).set_dp_reg_r_callback(DEVCB_##_devcb);
+ downcast<rsp_device &>(*device).set_dp_reg_r_callback(DEVCB_##_devcb);
#define MCFG_RSP_DP_REG_W_CB(_devcb) \
- devcb = &downcast<rsp_device &>(*device).set_dp_reg_w_callback(DEVCB_##_devcb);
+ downcast<rsp_device &>(*device).set_dp_reg_w_callback(DEVCB_##_devcb);
#define MCFG_RSP_SP_REG_R_CB(_devcb) \
- devcb = &downcast<rsp_device &>(*device).set_sp_reg_r_callback(DEVCB_##_devcb);
+ downcast<rsp_device &>(*device).set_sp_reg_r_callback(DEVCB_##_devcb);
#define MCFG_RSP_SP_REG_W_CB(_devcb) \
- devcb = &downcast<rsp_device &>(*device).set_sp_reg_w_callback(DEVCB_##_devcb);
+ downcast<rsp_device &>(*device).set_sp_reg_w_callback(DEVCB_##_devcb);
#define MCFG_RSP_SP_SET_STATUS_CB(_devcb) \
- devcb = &downcast<rsp_device &>(*device).set_status_callback(DEVCB_##_devcb);
+ downcast<rsp_device &>(*device).set_status_callback(DEVCB_##_devcb);
class rsp_device : public cpu_device
diff --git a/src/devices/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h
index 666c79cad5b..9bf1f03cf2f 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 = &downcast<s2650_device &>(*device).set_sense_handler(DEVCB_##_devcb);
+ downcast<s2650_device &>(*device).set_sense_handler(DEVCB_##_devcb);
#define MCFG_S2650_FLAG_OUTPUT(_devcb) \
- devcb = &downcast<s2650_device &>(*device).set_flag_handler(DEVCB_##_devcb);
+ downcast<s2650_device &>(*device).set_flag_handler(DEVCB_##_devcb);
#define MCFG_S2650_INTACK_HANDLER(_devcb) \
- devcb = &downcast<s2650_device &>(*device).set_intack_handler(DEVCB_##_devcb);
+ downcast<s2650_device &>(*device).set_intack_handler(DEVCB_##_devcb);
class s2650_device : public cpu_device, public s2650_disassembler::config
{
@@ -46,6 +46,9 @@ public:
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)); }
+ auto sense_handler() { return m_sense_handler.bind(); }
+ auto flag_handler() { return m_flag_handler.bind(); }
+ auto intack_handler() { return m_intack_handler.bind(); }
protected:
// device-level overrides
diff --git a/src/devices/cpu/sc61860/sc61860.h b/src/devices/cpu/sc61860/sc61860.h
index 18ea784db2d..cd38606e486 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 = &downcast<sc61860_device &>(*device).set_reset_cb(DEVCB_##_devcb);
+ downcast<sc61860_device &>(*device).set_reset_cb(DEVCB_##_devcb);
#define MCFG_SC61860_READ_BRK_HANDLER(_devcb) \
- devcb = &downcast<sc61860_device &>(*device).set_brk_cb(DEVCB_##_devcb);
+ downcast<sc61860_device &>(*device).set_brk_cb(DEVCB_##_devcb);
#define MCFG_SC61860_READ_X_HANDLER(_devcb) \
- devcb = &downcast<sc61860_device &>(*device).set_x_cb(DEVCB_##_devcb);
+ downcast<sc61860_device &>(*device).set_x_cb(DEVCB_##_devcb);
#define MCFG_SC61860_READ_A_HANDLER(_devcb) \
- devcb = &downcast<sc61860_device &>(*device).set_ina_cb(DEVCB_##_devcb);
+ downcast<sc61860_device &>(*device).set_ina_cb(DEVCB_##_devcb);
#define MCFG_SC61860_WRITE_A_HANDLER(_devcb) \
- devcb = &downcast<sc61860_device &>(*device).set_outa_cb(DEVCB_##_devcb);
+ downcast<sc61860_device &>(*device).set_outa_cb(DEVCB_##_devcb);
#define MCFG_SC61860_READ_B_HANDLER(_devcb) \
- devcb = &downcast<sc61860_device &>(*device).set_inb_cb(DEVCB_##_devcb);
+ downcast<sc61860_device &>(*device).set_inb_cb(DEVCB_##_devcb);
#define MCFG_SC61860_WRITE_B_HANDLER(_devcb) \
- devcb = &downcast<sc61860_device &>(*device).set_outb_cb(DEVCB_##_devcb);
+ downcast<sc61860_device &>(*device).set_outb_cb(DEVCB_##_devcb);
#define MCFG_SC61860_WRITE_C_HANDLER(_devcb) \
- devcb = &downcast<sc61860_device &>(*device).set_outc_cb(DEVCB_##_devcb);
+ downcast<sc61860_device &>(*device).set_outc_cb(DEVCB_##_devcb);
class sc61860_device : public cpu_device
{
diff --git a/src/devices/cpu/scudsp/scudsp.h b/src/devices/cpu/scudsp/scudsp.h
index 6fb8133e51e..d7b7440acaf 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 = &downcast<scudsp_cpu_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<scudsp_cpu_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_SCUDSP_IN_DMA_CB(_devcb) \
- devcb = &downcast<scudsp_cpu_device &>(*device).set_in_dma_callback(DEVCB_##_devcb);
+ downcast<scudsp_cpu_device &>(*device).set_in_dma_callback(DEVCB_##_devcb);
#define MCFG_SCUDSP_OUT_DMA_CB(_devcb) \
- devcb = &downcast<scudsp_cpu_device &>(*device).set_out_dma_callback(DEVCB_##_devcb);
+ downcast<scudsp_cpu_device &>(*device).set_out_dma_callback(DEVCB_##_devcb);
#define SCUDSP_RESET INPUT_LINE_RESET /* Non-Maskable */
diff --git a/src/devices/cpu/sm510/sm500.h b/src/devices/cpu/sm510/sm500.h
index 813d9cf70e5..c0c9d112504 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 = &downcast<sm500_device &>(*device).set_write_o_callback(DEVCB_##_devcb);
+ downcast<sm500_device &>(*device).set_write_o_callback(DEVCB_##_devcb);
// see sm510.h for ACL, K, R, alpha, beta
diff --git a/src/devices/cpu/sm510/sm510.h b/src/devices/cpu/sm510/sm510.h
index 69521f8de4d..986381dd63c 100644
--- a/src/devices/cpu/sm510/sm510.h
+++ b/src/devices/cpu/sm510/sm510.h
@@ -15,26 +15,26 @@
// 4-bit K input port (pull-down)
#define MCFG_SM510_READ_K_CB(_devcb) \
- devcb = &downcast<sm510_base_device &>(*device).set_read_k_callback(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 = &downcast<sm510_base_device &>(*device).set_read_ba_callback(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 = &downcast<sm510_base_device &>(*device).set_read_b_callback(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 = &downcast<sm510_base_device &>(*device).set_write_s_callback(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 = &downcast<sm510_base_device &>(*device).set_write_r_callback(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)
@@ -45,15 +45,15 @@
// 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 = &downcast<sm510_base_device &>(*device).set_write_sega_callback(DEVCB_##_devcb);
+ downcast<sm510_base_device &>(*device).set_write_sega_callback(DEVCB_##_devcb);
#define MCFG_SM510_WRITE_SEGB_CB(_devcb) \
- devcb = &downcast<sm510_base_device &>(*device).set_write_segb_callback(DEVCB_##_devcb);
+ downcast<sm510_base_device &>(*device).set_write_segb_callback(DEVCB_##_devcb);
#define MCFG_SM510_WRITE_SEGC_CB(_devcb) \
- devcb = &downcast<sm510_base_device &>(*device).set_write_segc_callback(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 = &downcast<sm510_base_device &>(*device).set_write_segbs_callback(DEVCB_##_devcb);
+ downcast<sm510_base_device &>(*device).set_write_segbs_callback(DEVCB_##_devcb);
// LCD output lazy combination
#define MCFG_SM510_WRITE_SEGS_CB(_devcb) \
diff --git a/src/devices/cpu/sm8500/sm8500.h b/src/devices/cpu/sm8500/sm8500.h
index ddb4916fc1f..247a283685f 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 = &downcast<sm8500_cpu_device &>(*device).set_dma_cb(DEVCB_##_devcb);
+ downcast<sm8500_cpu_device &>(*device).set_dma_cb(DEVCB_##_devcb);
#define MCFG_SM8500_TIMER_CB(_devcb) \
- devcb = &downcast<sm8500_cpu_device &>(*device).set_timer_cb(DEVCB_##_devcb);
+ downcast<sm8500_cpu_device &>(*device).set_timer_cb(DEVCB_##_devcb);
enum
{
diff --git a/src/devices/cpu/superfx/superfx.h b/src/devices/cpu/superfx/superfx.h
index 14cc48d401f..90e98790d4f 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 = &downcast<superfx_device &>(*device).set_out_irq_func(DEVCB_##_devcb);
+ downcast<superfx_device &>(*device).set_out_irq_func(DEVCB_##_devcb);
class superfx_device : public cpu_device, public superfx_disassembler::config
diff --git a/src/devices/cpu/t11/t11.h b/src/devices/cpu/t11/t11.h
index a6e12b51518..5c4d964ff46 100644
--- a/src/devices/cpu/t11/t11.h
+++ b/src/devices/cpu/t11/t11.h
@@ -32,7 +32,7 @@ enum
downcast<t11_device &>(*device).set_initial_mode(_mode);
#define MCFG_T11_RESET(_devcb) \
- devcb = &downcast<t11_device &>(*device).set_out_reset_func(DEVCB_##_devcb);
+ downcast<t11_device &>(*device).set_out_reset_func(DEVCB_##_devcb);
class t11_device : public cpu_device
{
diff --git a/src/devices/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h
index 9fb16ad5bd4..73a168efb84 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 = &downcast<tlcs90_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P1_READ_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(1, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_read_cb(1, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P2_READ_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P3_READ_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P4_READ_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P5_READ_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(5, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_read_cb(5, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P6_READ_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(6, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_read_cb(6, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P7_READ_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(7, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_read_cb(7, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P8_READ_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(8, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_read_cb(8, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P0_WRITE_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P1_WRITE_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P2_WRITE_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P3_WRITE_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P4_WRITE_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P5_WRITE_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(5, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_write_cb(5, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P6_WRITE_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(6, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_write_cb(6, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P7_WRITE_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(7, DEVCB_##_devcb);
+ downcast<tlcs90_device &>(*device).set_port_write_cb(7, DEVCB_##_devcb);
#define MCFG_TLCS90_PORT_P8_WRITE_CB(_devcb) \
- devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(8, 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 };
diff --git a/src/devices/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h
index 0da3f597a61..2fd1d37fbaa 100644
--- a/src/devices/cpu/tlcs900/tlcs900.h
+++ b/src/devices/cpu/tlcs900/tlcs900.h
@@ -613,37 +613,37 @@ protected:
};
#define MCFG_TMP95C061_PORT1_READ( _port_read ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_port1_read(DEVCB_##_port_read);
+ downcast<tmp95c061_device &>(*device).set_port1_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORT1_WRITE( _port_write ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_port1_write(DEVCB_##_port_write);
+ downcast<tmp95c061_device &>(*device).set_port1_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT2_WRITE( _port_write ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_port2_write(DEVCB_##_port_write);
+ downcast<tmp95c061_device &>(*device).set_port2_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT5_READ( _port_read ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_port5_read(DEVCB_##_port_read);
+ downcast<tmp95c061_device &>(*device).set_port5_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORT5_WRITE( _port_write ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_port5_write(DEVCB_##_port_write);
+ downcast<tmp95c061_device &>(*device).set_port5_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT6_READ( _port_read ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_port6_read(DEVCB_##_port_read);
+ downcast<tmp95c061_device &>(*device).set_port6_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORT6_WRITE( _port_write ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_port6_write(DEVCB_##_port_write);
+ downcast<tmp95c061_device &>(*device).set_port6_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT7_READ( _port_read ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_port7_read(DEVCB_##_port_read);
+ downcast<tmp95c061_device &>(*device).set_port7_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORT7_WRITE( _port_write ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_port7_write(DEVCB_##_port_write);
+ downcast<tmp95c061_device &>(*device).set_port7_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT8_READ( _port_read ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_port8_read(DEVCB_##_port_read);
+ downcast<tmp95c061_device &>(*device).set_port8_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORT8_WRITE( _port_write ) \
- devcb = &downcast<mp95c061_device &>(*device).set_port8_write(DEVCB_##_port_write);
+ downcast<mp95c061_device &>(*device).set_port8_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORT9_READ( _port_read ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_port9_read(DEVCB_##_port_read);
+ downcast<tmp95c061_device &>(*device).set_port9_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORTA_READ( _port_read ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_porta_read(DEVCB_##_port_read);
+ downcast<tmp95c061_device &>(*device).set_porta_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORTA_WRITE( _port_write ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_porta_write(DEVCB_##_port_write);
+ downcast<tmp95c061_device &>(*device).set_porta_write(DEVCB_##_port_write);
#define MCFG_TMP95C061_PORTB_READ( _port_read ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_portb_read(DEVCB_##_port_read);
+ downcast<tmp95c061_device &>(*device).set_portb_read(DEVCB_##_port_read);
#define MCFG_TMP95C061_PORTB_WRITE( _port_write ) \
- devcb = &downcast<tmp95c061_device &>(*device).set_portb_write(DEVCB_##_port_write);
+ downcast<tmp95c061_device &>(*device).set_portb_write(DEVCB_##_port_write);
class tmp95c061_device : public tlcs900h_device
{
@@ -728,44 +728,44 @@ private:
};
-#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);
+#define MCFG_TMP95C063_PORT0_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port0_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT0_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port0_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT1_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port1_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT1_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port1_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT2_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port2_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT2_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port2_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT3_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port3_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT3_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port3_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT4_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port4_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT4_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port4_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT5_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port5_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT5_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port5_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT6_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port6_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT6_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port6_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT7_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port7_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT7_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port7_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT8_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port8_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT8_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port8_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORT9_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port9_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORT9_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port9_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORTA_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_porta_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORTA_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_porta_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORTB_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_portb_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORTB_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_portb_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORTC_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_portc_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORTC_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_portc_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORTD_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_portd_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORTD_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_portd_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_PORTE_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_porte_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_PORTE_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_porte_write(DEVCB_##_port_write);
+#define MCFG_TMP95C063_AN0_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an0_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN1_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an1_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN2_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an2_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN3_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an3_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN4_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an4_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN5_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an5_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN6_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an6_read(DEVCB_##_port_read);
+#define MCFG_TMP95C063_AN7_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an7_read(DEVCB_##_port_read);
class tmp95c063_device : public tlcs900h_device
{
diff --git a/src/devices/cpu/tms1000/tms0270.h b/src/devices/cpu/tms1000/tms0270.h
index 64f28d4b544..d0947e5bc47 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 = &downcast<tms0270_cpu_device &>(*device).set_read_ctl_callback(DEVCB_##_devcb);
+ downcast<tms0270_cpu_device &>(*device).set_read_ctl_callback(DEVCB_##_devcb);
#define MCFG_TMS0270_WRITE_CTL_CB(_devcb) \
- devcb = &downcast<tms0270_cpu_device &>(*device).set_write_ctl_callback(DEVCB_##_devcb);
+ downcast<tms0270_cpu_device &>(*device).set_write_ctl_callback(DEVCB_##_devcb);
#define MCFG_TMS0270_WRITE_PDC_CB(_devcb) \
- devcb = &downcast<tms0270_cpu_device &>(*device).set_write_pdc_callback(DEVCB_##_devcb);
+ downcast<tms0270_cpu_device &>(*device).set_write_pdc_callback(DEVCB_##_devcb);
class tms0270_cpu_device : public tms0980_cpu_device
diff --git a/src/devices/cpu/tms1000/tms1k_base.h b/src/devices/cpu/tms1000/tms1k_base.h
index ed7164f2d43..481e9ad0d49 100644
--- a/src/devices/cpu/tms1000/tms1k_base.h
+++ b/src/devices/cpu/tms1000/tms1k_base.h
@@ -19,11 +19,11 @@
// K input pins
#define MCFG_TMS1XXX_READ_K_CB(_devcb) \
- devcb = &downcast<tms1k_base_device &>(*device).set_read_k_callback(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 = &downcast<tms1k_base_device &>(*device).set_write_o_callback(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.
@@ -32,11 +32,11 @@
// R output pins (also called D on some chips)
#define MCFG_TMS1XXX_WRITE_R_CB(_devcb) \
- devcb = &downcast<tms1k_base_device &>(*device).set_write_r_callback(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 = &downcast<tms1k_base_device &>(*device).set_power_off_callback(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
diff --git a/src/devices/cpu/tms32010/tms32010.h b/src/devices/cpu/tms32010/tms32010.h
index 0c1e705ada9..023bb1787a4 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 = &downcast<tms32010_device &>(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */
+ downcast<tms32010_device &>(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */
#define TMS32010_INT_PENDING 0x80000000
diff --git a/src/devices/cpu/tms32025/tms32025.h b/src/devices/cpu/tms32025/tms32025.h
index 6a3354f5bbd..de7f2681bb7 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 = &downcast<tms32025_device &>(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */
+ downcast<tms32025_device &>(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */
#define MCFG_TMS32025_HOLD_IN_CB(_devcb) \
- devcb = &downcast<tms32025_device &>(*device).set_hold_in_cb(DEVCB_##_devcb); /* HOLD input */
+ downcast<tms32025_device &>(*device).set_hold_in_cb(DEVCB_##_devcb); /* HOLD input */
#define MCFG_TMS32025_HOLD_ACK_OUT_CB(_devcb) \
- devcb = &downcast<tms32025_device &>(*device).set_hold_ack_out_cb(DEVCB_##_devcb); /* HOLD Acknowledge output */
+ downcast<tms32025_device &>(*device).set_hold_ack_out_cb(DEVCB_##_devcb); /* HOLD Acknowledge output */
#define MCFG_TMS32025_XF_OUT_CB(_devcb) \
- devcb = &downcast<tms32025_device &>(*device).set_xf_out_cb(DEVCB_##_devcb); /* XF output */
+ downcast<tms32025_device &>(*device).set_xf_out_cb(DEVCB_##_devcb); /* XF output */
#define MCFG_TMS32025_DR_IN_CB(_devcb) \
- devcb = &downcast<tms32025_device &>(*device).set_dr_in_cb(DEVCB_##_devcb); /* Serial Data Receive input */
+ downcast<tms32025_device &>(*device).set_dr_in_cb(DEVCB_##_devcb); /* Serial Data Receive input */
#define MCFG_TMS32025_DX_OUT_CB(_devcb) \
- devcb = &downcast<tms32025_device &>(*device).set_dx_out_cb(DEVCB_##_devcb); /* Serial Data Transmit output */
+ downcast<tms32025_device &>(*device).set_dx_out_cb(DEVCB_##_devcb); /* Serial Data Transmit output */
/****************************************************************************
diff --git a/src/devices/cpu/tms32031/tms32031.h b/src/devices/cpu/tms32031/tms32031.h
index dc11f88d8dd..14b7ab015db 100644
--- a/src/devices/cpu/tms32031/tms32031.h
+++ b/src/devices/cpu/tms32031/tms32031.h
@@ -95,16 +95,16 @@ enum
downcast<tms3203x_device &>(*device).set_mcbl_mode(_mode);
#define MCFG_TMS3203X_XF0_CB(_devcb) \
- devcb = &downcast<tms3203x_device &>(*device).set_xf0_callback(DEVCB_##_devcb);
+ downcast<tms3203x_device &>(*device).set_xf0_callback(DEVCB_##_devcb);
#define MCFG_TMS3203X_XF1_CB(_devcb) \
- devcb = &downcast<tms3203x_device &>(*device).set_xf1_callback(DEVCB_##_devcb);
+ downcast<tms3203x_device &>(*device).set_xf1_callback(DEVCB_##_devcb);
#define MCFG_TMS3203X_IACK_CB(_devcb) \
- devcb = &downcast<tms3203x_device &>(*device).set_iack_callback(DEVCB_##_devcb);
+ downcast<tms3203x_device &>(*device).set_iack_callback(DEVCB_##_devcb);
#define MCFG_TMS3203X_HOLDA_CB(_devcb) \
- devcb = &downcast<tms3203x_device &>(*device).set_holda_callback(DEVCB_##_devcb);
+ downcast<tms3203x_device &>(*device).set_holda_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h
index 27176ceb54e..6d835a18975 100644
--- a/src/devices/cpu/tms34010/tms34010.h
+++ b/src/devices/cpu/tms34010/tms34010.h
@@ -125,7 +125,7 @@ enum
#define MCFG_TMS340X0_OUTPUT_INT_CB(_devcb) \
- devcb = &downcast<tms340x0_device &>(*device).set_output_int_callback(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)
diff --git a/src/devices/cpu/tms7000/tms7000.h b/src/devices/cpu/tms7000/tms7000.h
index 125a43d5dec..a1a50084b18 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 = &downcast<tms7000_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb);
+ downcast<tms7000_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTA_CB(_devcb) \
- devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb);
+ downcast<tms7000_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb);
// write-only
#define MCFG_TMS7000_OUT_PORTB_CB(_devcb) \
- devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb);
+ downcast<tms7000_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb);
#define MCFG_TMS7000_IN_PORTC_CB(_devcb) \
- devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb);
+ downcast<tms7000_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTC_CB(_devcb) \
- devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb);
+ downcast<tms7000_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb);
#define MCFG_TMS7000_IN_PORTD_CB(_devcb) \
- devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb);
+ downcast<tms7000_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTD_CB(_devcb) \
- devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb);
+ downcast<tms7000_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb);
// TMS70C46 only
#define MCFG_TMS7000_IN_PORTE_CB(_devcb) \
- devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb);
+ downcast<tms7000_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTE_CB(_devcb) \
- devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb);
+ downcast<tms7000_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb);
enum { TMS7000_PC=1, TMS7000_SP, TMS7000_ST };
diff --git a/src/devices/cpu/tms9900/tms9995.h b/src/devices/cpu/tms9900/tms9995.h
index 940ec0f43ee..956d35cf11c 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 = &downcast<tms9995_device &>(*device).set_extop_callback(DEVCB_##_extop);
+ downcast<tms9995_device &>(*device).set_extop_callback(DEVCB_##_extop);
#define MCFG_TMS9995_IAQ_HANDLER( _iaq ) \
- devcb = &downcast<tms9995_device &>(*device).set_iaq_callback(DEVCB_##_iaq);
+ downcast<tms9995_device &>(*device).set_iaq_callback(DEVCB_##_iaq);
#define MCFG_TMS9995_CLKOUT_HANDLER( _clkout ) \
- devcb = &downcast<tms9995_device &>(*device).set_clkout_callback(DEVCB_##_clkout);
+ downcast<tms9995_device &>(*device).set_clkout_callback(DEVCB_##_clkout);
#define MCFG_TMS9995_HOLDA_HANDLER( _holda ) \
- devcb = &downcast<tms9995_device &>(*device).set_holda_callback(DEVCB_##_holda);
+ downcast<tms9995_device &>(*device).set_holda_callback(DEVCB_##_holda);
#define MCFG_TMS9995_DBIN_HANDLER( _dbin ) \
- devcb = &downcast<tms9995_device &>(*device).set_dbin_callback(DEVCB_##_dbin);
+ downcast<tms9995_device &>(*device).set_dbin_callback(DEVCB_##_dbin);
#define MCFG_TMS9995_ENABLE_OVINT( _ovint ) \
downcast<tms9995_device*>(device)->set_overflow_interrupt( _ovint );
diff --git a/src/devices/cpu/tms9900/tms99com.h b/src/devices/cpu/tms9900/tms99com.h
index 2ee65b3f2cc..033511ef350 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 = &downcast<tms99xx_device &>(*device).set_extop_callback(DEVCB_##_extop);
+ downcast<tms99xx_device &>(*device).set_extop_callback(DEVCB_##_extop);
#define MCFG_TMS99xx_INTLEVEL_HANDLER( _intlevel ) \
- devcb = &downcast<tms99xx_device &>(*device).set_intlevel_callback(DEVCB_##_intlevel);
+ downcast<tms99xx_device &>(*device).set_intlevel_callback(DEVCB_##_intlevel);
#define MCFG_TMS99xx_IAQ_HANDLER( _iaq ) \
- devcb = &downcast<tms99xx_device &>(*device).set_iaq_callback(DEVCB_##_iaq);
+ downcast<tms99xx_device &>(*device).set_iaq_callback(DEVCB_##_iaq);
#define MCFG_TMS99xx_CLKOUT_HANDLER( _clkout ) \
- devcb = &downcast<tms99xx_device &>(*device).set_clkout_callback(DEVCB_##_clkout);
+ downcast<tms99xx_device &>(*device).set_clkout_callback(DEVCB_##_clkout);
#define MCFG_TMS99xx_WAIT_HANDLER( _wait ) \
- devcb = &downcast<tms99xx_device &>(*device).set_wait_callback(DEVCB_##_wait);
+ downcast<tms99xx_device &>(*device).set_wait_callback(DEVCB_##_wait);
#define MCFG_TMS99xx_HOLDA_HANDLER( _holda ) \
- devcb = &downcast<tms99xx_device &>(*device).set_holda_callback(DEVCB_##_holda);
+ downcast<tms99xx_device &>(*device).set_holda_callback(DEVCB_##_holda);
#define MCFG_TMS99xx_DBIN_HANDLER( _dbin ) \
- devcb = &downcast<tms99xx_device &>(*device).set_dbin_callback(DEVCB_##_dbin);
+ 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 77f963a61e9..fe93029ac91 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 = &downcast<ucom4_cpu_device &>(*device).set_read_a_callback(DEVCB_##_devcb);
+ downcast<ucom4_cpu_device &>(*device).set_read_a_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_READ_B_CB(_devcb) \
- devcb = &downcast<ucom4_cpu_device &>(*device).set_read_b_callback(DEVCB_##_devcb);
+ downcast<ucom4_cpu_device &>(*device).set_read_b_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_READ_C_CB(_devcb) \
- devcb = &downcast<ucom4_cpu_device &>(*device).set_read_c_callback(DEVCB_##_devcb);
+ downcast<ucom4_cpu_device &>(*device).set_read_c_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_C_CB(_devcb) \
- devcb = &downcast<ucom4_cpu_device &>(*device).set_write_c_callback(DEVCB_##_devcb);
+ downcast<ucom4_cpu_device &>(*device).set_write_c_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_READ_D_CB(_devcb) \
- devcb = &downcast<ucom4_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
+ downcast<ucom4_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_D_CB(_devcb) \
- devcb = &downcast<ucom4_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
+ downcast<ucom4_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_E_CB(_devcb) \
- devcb = &downcast<ucom4_cpu_device &>(*device).set_write_e_callback(DEVCB_##_devcb);
+ downcast<ucom4_cpu_device &>(*device).set_write_e_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_F_CB(_devcb) \
- devcb = &downcast<ucom4_cpu_device &>(*device).set_write_f_callback(DEVCB_##_devcb);
+ downcast<ucom4_cpu_device &>(*device).set_write_f_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_G_CB(_devcb) \
- devcb = &downcast<ucom4_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb);
+ downcast<ucom4_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_H_CB(_devcb) \
- devcb = &downcast<ucom4_cpu_device &>(*device).set_write_h_callback(DEVCB_##_devcb);
+ downcast<ucom4_cpu_device &>(*device).set_write_h_callback(DEVCB_##_devcb);
#define MCFG_UCOM4_WRITE_I_CB(_devcb) \
- devcb = &downcast<ucom4_cpu_device &>(*device).set_write_i_callback(DEVCB_##_devcb);
+ downcast<ucom4_cpu_device &>(*device).set_write_i_callback(DEVCB_##_devcb);
enum
{
diff --git a/src/devices/cpu/upd7725/upd7725.h b/src/devices/cpu/upd7725/upd7725.h
index 93d5019245b..0b4cb717f81 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 = &downcast<necdsp_device &>(*device).set_in_int_callback(DEVCB_##_devcb);
+ downcast<necdsp_device &>(*device).set_in_int_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_IN_SI_CB(_devcb) \
- devcb = &downcast<necdsp_device &>(*device).set_in_si_callback(DEVCB_##_devcb);
+ downcast<necdsp_device &>(*device).set_in_si_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_IN_SCK_CB(_devcb) \
- devcb = &downcast<necdsp_device &>(*device).set_in_sck_callback(DEVCB_##_devcb);
+ downcast<necdsp_device &>(*device).set_in_sck_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_IN_SIEN_CB(_devcb) \
- devcb = &downcast<necdsp_device &>(*device).set_in_sien_callback(DEVCB_##_devcb);
+ downcast<necdsp_device &>(*device).set_in_sien_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_IN_SOEN_CB(_devcb) \
- devcb = &downcast<necdsp_device &>(*device).set_in_soen_callback(DEVCB_##_devcb);
+ downcast<necdsp_device &>(*device).set_in_soen_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_IN_DACK_CB(_devcb) \
- devcb = &downcast<necdsp_device &>(*device).set_in_dack_callback(DEVCB_##_devcb);
+ downcast<necdsp_device &>(*device).set_in_dack_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_OUT_P0_CB(_devcb) \
- devcb = &downcast<necdsp_device &>(*device).set_out_p0_callback(DEVCB_##_devcb);
+ downcast<necdsp_device &>(*device).set_out_p0_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_OUT_P1_CB(_devcb) \
- devcb = &downcast<necdsp_device &>(*device).set_out_p1_callback(DEVCB_##_devcb);
+ downcast<necdsp_device &>(*device).set_out_p1_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_OUT_SO_CB(_devcb) \
- devcb = &downcast<necdsp_device &>(*device).set_out_so_callback(DEVCB_##_devcb);
+ downcast<necdsp_device &>(*device).set_out_so_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_OUT_SORQ_CB(_devcb) \
- devcb = &downcast<necdsp_device &>(*device).set_out_sorq_callback(DEVCB_##_devcb);
+ downcast<necdsp_device &>(*device).set_out_sorq_callback(DEVCB_##_devcb);
#define MCFG_NECDSP_OUT_DRQ_CB(_devcb) \
- devcb = &downcast<necdsp_device &>(*device).set_out_drq_callback(DEVCB_##_devcb);
+ downcast<necdsp_device &>(*device).set_out_drq_callback(DEVCB_##_devcb);
// ======================> necdsp_device
diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h
index a609707f1d9..497ffc0acb7 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 = &downcast<upd7810_device &>(*device).set_to_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_to_func(DEVCB_##_devcb);
#define MCFG_UPD7810_CO0(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_co0_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_co0_func(DEVCB_##_devcb);
#define MCFG_UPD7810_CO1(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_co1_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_co1_func(DEVCB_##_devcb);
#define MCFG_UPD7810_TXD(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_txd_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_txd_func(DEVCB_##_devcb);
#define MCFG_UPD7810_RXD(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_rxd_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_rxd_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN0(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_an0_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_an0_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN1(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_an1_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_an1_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN2(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_an2_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_an2_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN3(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_an3_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_an3_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN4(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_an4_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_an4_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN5(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_an5_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_an5_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN6(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_an6_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_an6_func(DEVCB_##_devcb);
#define MCFG_UPD7810_AN7(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_an7_func(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_an7_func(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTA_READ_CB(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_pa_in_cb(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_pa_in_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTB_READ_CB(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_pb_in_cb(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_pb_in_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTC_READ_CB(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_pc_in_cb(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_pc_in_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTD_READ_CB(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_pd_in_cb(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_pd_in_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTF_READ_CB(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_pf_in_cb(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_pf_in_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTA_WRITE_CB(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_pa_out_cb(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_pa_out_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTB_WRITE_CB(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_pb_out_cb(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_pb_out_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTC_WRITE_CB(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_pc_out_cb(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_pc_out_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTD_WRITE_CB(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_pd_out_cb(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_pd_out_cb(DEVCB_##_devcb);
#define MCFG_UPD7810_PORTF_WRITE_CB(_devcb) \
- devcb = &downcast<upd7810_device &>(*device).set_pf_out_cb(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 = &downcast<upd7810_device &>(*device).set_pt_in_cb(DEVCB_##_devcb);
+ downcast<upd7810_device &>(*device).set_pt_in_cb(DEVCB_##_devcb);
class upd7810_device : public cpu_device
diff --git a/src/devices/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h
index f0f135296e4..551ac1b87f0 100644
--- a/src/devices/cpu/z8/z8.h
+++ b/src/devices/cpu/z8/z8.h
@@ -13,29 +13,29 @@
#define MCFG_Z8_PORT_P0_READ_CB(_devcb) \
- devcb = &downcast<z8_device &>(*device).set_input_cb(0, DEVCB_##_devcb);
+ downcast<z8_device &>(*device).set_input_cb(0, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P1_READ_CB(_devcb) \
- devcb = &downcast<z8_device &>(*device).set_input_cb(1, DEVCB_##_devcb);
+ downcast<z8_device &>(*device).set_input_cb(1, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P2_READ_CB(_devcb) \
- devcb = &downcast<z8_device &>(*device).set_input_cb(2, DEVCB_##_devcb);
+ downcast<z8_device &>(*device).set_input_cb(2, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P3_READ_CB(_devcb) \
- devcb = &downcast<z8_device &>(*device).set_input_cb(3, DEVCB_##_devcb);
+ downcast<z8_device &>(*device).set_input_cb(3, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P0_WRITE_CB(_devcb) \
- devcb = &downcast<z8_device &>(*device).set_output_cb(0, DEVCB_##_devcb);
+ downcast<z8_device &>(*device).set_output_cb(0, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P1_WRITE_CB(_devcb) \
- devcb = &downcast<z8_device &>(*device).set_output_cb(1, DEVCB_##_devcb);
+ downcast<z8_device &>(*device).set_output_cb(1, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P2_WRITE_CB(_devcb) \
- devcb = &downcast<z8_device &>(*device).set_output_cb(2, DEVCB_##_devcb);
+ downcast<z8_device &>(*device).set_output_cb(2, DEVCB_##_devcb);
#define MCFG_Z8_PORT_P3_WRITE_CB(_devcb) \
- devcb = &downcast<z8_device &>(*device).set_output_cb(3, DEVCB_##_devcb);
+ downcast<z8_device &>(*device).set_output_cb(3, DEVCB_##_devcb);
class z8_device : public cpu_device
diff --git a/src/devices/cpu/z80/tmpz84c011.h b/src/devices/cpu/z80/tmpz84c011.h
index b210dbd1589..bef9986698c 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 = &downcast<tmpz84c011_device &>(*device).set_zc0_callback(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_zc0_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_ZC1_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_zc1_callback(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_zc1_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_ZC2_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_zc2_callback(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_zc2_callback(DEVCB_##_devcb);
// I/O callbacks
#define MCFG_TMPZ84C011_PORTA_READ_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_inportsa_cb(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_inportsa_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTB_READ_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_inportsb_cb(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_inportsb_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTC_READ_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_inportsc_cb(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_inportsc_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTD_READ_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_inportsd_cb(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_inportsd_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTE_READ_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_inportse_cb(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_inportse_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTA_WRITE_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_outportsa_cb(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_outportsa_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTB_WRITE_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_outportsb_cb(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_outportsb_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTC_WRITE_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_outportsc_cb(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_outportsc_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTD_WRITE_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_outportsd_cb(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_outportsd_cb(DEVCB_##_devcb);
#define MCFG_TMPZ84C011_PORTE_WRITE_CB(_devcb) \
- devcb = &downcast<tmpz84c011_device &>(*device).set_outportse_cb(DEVCB_##_devcb);
+ downcast<tmpz84c011_device &>(*device).set_outportse_cb(DEVCB_##_devcb);
/***************************************************************************
diff --git a/src/devices/cpu/z80/tmpz84c015.h b/src/devices/cpu/z80/tmpz84c015.h
index 18f221f3b34..93b4d897c16 100644
--- a/src/devices/cpu/z80/tmpz84c015.h
+++ b/src/devices/cpu/z80/tmpz84c015.h
@@ -24,80 +24,80 @@
// SIO callbacks
#define MCFG_TMPZ84C015_OUT_TXDA_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_txda_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_txda_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_DTRA_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_RTSA_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_WRDYA_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_wrdya_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_wrdya_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_SYNCA_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_synca_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_synca_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_TXDB_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_DTRB_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_RTSB_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_WRDYB_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_wrdyb_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_wrdyb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_SYNCB_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_RXDRQA_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_rxdrqa_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_rxdrqa_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_TXDRQA_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdrqa_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_txdrqa_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_RXDRQB_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_rxdrqb_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_rxdrqb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_TXDRQB_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdrqb_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_txdrqb_callback(DEVCB_##_devcb);
// CTC callbacks
#define MCFG_TMPZ84C015_ZC0_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_zc_callback<0>(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_zc_callback<0>(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_ZC1_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_zc_callback<1>(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_zc_callback<1>(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_ZC2_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_zc_callback<2>(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_zc_callback<2>(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_ZC3_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_zc_callback<3>(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_zc_callback<3>(DEVCB_##_devcb);
// PIO callbacks
#define MCFG_TMPZ84C015_IN_PA_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_PA_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_ARDY_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_ardy_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_ardy_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_IN_PB_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_PB_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
#define MCFG_TMPZ84C015_OUT_BRDY_CB(_devcb) \
- devcb = &downcast<tmpz84c015_device &>(*device).set_out_brdy_callback(DEVCB_##_devcb);
+ downcast<tmpz84c015_device &>(*device).set_out_brdy_callback(DEVCB_##_devcb);
/***************************************************************************
@@ -115,27 +115,48 @@ public:
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)); }
+ auto out_txda_callback() { return m_out_txda_cb.bind(); }
+ auto out_dtra_callback() { return m_out_dtra_cb.bind(); }
+ auto out_rtsa_callback() { return m_out_rtsa_cb.bind(); }
+ auto out_wrdya_callback() { return m_out_wrdya_cb.bind(); }
+ auto out_synca_callback() { return m_out_synca_cb.bind(); }
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)); }
+ auto out_txdb_callback() { return m_out_txdb_cb.bind(); }
+ auto out_dtrb_callback() { return m_out_dtrb_cb.bind(); }
+ auto out_rtsb_callback() { return m_out_rtsb_cb.bind(); }
+ auto out_wrdyb_callback() { return m_out_wrdyb_cb.bind(); }
+ auto out_syncb_callback() { return m_out_syncb_cb.bind(); }
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)); }
+ auto out_rxdrqa_callback() { return m_out_rxdrqa_cb.bind(); }
+ auto out_txdrqa_callback() { return m_out_txdrqa_cb.bind(); }
+ auto out_rxdrqb_callback() { return m_out_rxdrqb_cb.bind(); }
+ auto out_txdrqb_callback() { return m_out_txdrqb_cb.bind(); }
template<unsigned N, class Object> devcb_base &set_zc_callback(Object &&cb) { return m_zc_cb[N].set_callback(std::forward<Object>(cb)); }
+ template<unsigned N> auto zc_callback() { return m_zc_cb[N].bind(); }
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)); }
+ auto in_pa_callback() { return m_in_pa_cb.bind(); }
+ auto out_pa_callback() { return m_out_pa_cb.bind(); }
+ auto out_ardy_callback() { return m_out_ardy_cb.bind(); }
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)); }
+ auto in_pb_callback() { return m_in_pb_cb.bind(); }
+ auto out_pb_callback() { return m_out_pb_cb.bind(); }
+ auto out_brdy_callback() { return m_out_brdy_cb.bind(); }
// 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 9e7471c9826..8af446f9882 100644
--- a/src/devices/cpu/z80/z80.h
+++ b/src/devices/cpu/z80/z80.h
@@ -8,13 +8,13 @@
#include "machine/z80daisy.h"
#define MCFG_Z80_SET_IRQACK_CALLBACK(_devcb) \
- devcb = &downcast<z80_device &>(*device).set_irqack_cb(DEVCB_##_devcb);
+ downcast<z80_device &>(*device).set_irqack_cb(DEVCB_##_devcb);
#define MCFG_Z80_SET_REFRESH_CALLBACK(_devcb) \
- devcb = &downcast<z80_device &>(*device).set_refresh_cb(DEVCB_##_devcb);
+ downcast<z80_device &>(*device).set_refresh_cb(DEVCB_##_devcb);
#define MCFG_Z80_SET_HALT_CALLBACK(_devcb) \
- devcb = &downcast<z80_device &>(*device).set_halt_cb(DEVCB_##_devcb);
+ downcast<z80_device &>(*device).set_halt_cb(DEVCB_##_devcb);
enum
{
diff --git a/src/devices/cpu/z8000/z8000.h b/src/devices/cpu/z8000/z8000.h
index 93cab12a193..1bd2311c6ed 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 = &downcast<z8002_device &>(*device).set_mo_callback(DEVCB_##_devcb);
+ downcast<z8002_device &>(*device).set_mo_callback(DEVCB_##_devcb);
class z8002_device : public cpu_device, public z8000_disassembler::config
{
diff --git a/src/devices/imagedev/flopdrv.h b/src/devices/imagedev/flopdrv.h
index 1546eec8546..11182f2dc00 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 = &downcast<legacy_floppy_image_device &>(*device).set_out_idx_func(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
diff --git a/src/devices/imagedev/midiin.h b/src/devices/imagedev/midiin.h
index aaba86fc2d1..b429bc4f65f 100644
--- a/src/devices/imagedev/midiin.h
+++ b/src/devices/imagedev/midiin.h
@@ -16,7 +16,7 @@
#include "diserial.h"
#define MCFG_MIDIIN_INPUT_CB(_devcb) \
- devcb = &downcast<midiin_device &>(*device).set_input_callback(DEVCB_##_devcb);
+ downcast<midiin_device &>(*device).set_input_callback(DEVCB_##_devcb);
/***************************************************************************
diff --git a/src/devices/imagedev/printer.h b/src/devices/imagedev/printer.h
index 41f2dbb03cd..099d19cab9e 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 = &downcast<printer_image_device &>(*device).set_online_callback(DEVCB_##_devcb);
+ downcast<printer_image_device &>(*device).set_online_callback(DEVCB_##_devcb);
/***************************************************************************
TYPE DEFINITIONS
diff --git a/src/devices/machine/1mb5.h b/src/devices/machine/1mb5.h
index 9c7c76eab3e..09c05d2fd8c 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 = &downcast<hp_1mb5_device &>(*device).set_irl_handler(DEVCB_##_devcb);
+ downcast<hp_1mb5_device &>(*device).set_irl_handler(DEVCB_##_devcb);
#define MCFG_1MB5_HALT_HANDLER(_devcb) \
- devcb = &downcast<hp_1mb5_device &>(*device).set_halt_handler(DEVCB_##_devcb);
+ downcast<hp_1mb5_device &>(*device).set_halt_handler(DEVCB_##_devcb);
#define MCFG_1MB5_RESET_HANDLER(_devcb) \
- devcb = &downcast<hp_1mb5_device &>(*device).set_reset_handler(DEVCB_##_devcb);
+ downcast<hp_1mb5_device &>(*device).set_reset_handler(DEVCB_##_devcb);
#define MCFG_1MB5_INT_HANDLER(_devcb) \
- devcb = &downcast<hp_1mb5_device &>(*device).set_int_handler(DEVCB_##_devcb);
+ downcast<hp_1mb5_device &>(*device).set_int_handler(DEVCB_##_devcb);
class hp_1mb5_device : public device_t
{
diff --git a/src/devices/machine/40105.h b/src/devices/machine/40105.h
index 7b8b82819e0..77b58bbaf08 100644
--- a/src/devices/machine/40105.h
+++ b/src/devices/machine/40105.h
@@ -31,13 +31,13 @@
///*************************************************************************
#define MCFG_40105_DATA_IN_READY_CB(_dir) \
- devcb = &downcast<cmos_40105_device *>(device)->set_dir_callback(DEVCB_##_dir);
+ downcast<cmos_40105_device *>(device)->set_dir_callback(DEVCB_##_dir);
#define MCFG_40105_DATA_OUT_READY_CB(_dor) \
- devcb = &downcast<cmos_40105_device *>(device)->set_dor_callback(DEVCB_##_dor);
+ downcast<cmos_40105_device *>(device)->set_dor_callback(DEVCB_##_dor);
#define MCFG_40105_DATA_OUT_CB(_out) \
- devcb = &downcast<cmos_40105_device *>(device)->set_data_out_callback(DEVCB_##_out);
+ downcast<cmos_40105_device *>(device)->set_data_out_callback(DEVCB_##_out);
diff --git a/src/devices/machine/53c7xx.h b/src/devices/machine/53c7xx.h
index f2af9e616f8..8887a78a5ef 100644
--- a/src/devices/machine/53c7xx.h
+++ b/src/devices/machine/53c7xx.h
@@ -17,13 +17,13 @@
#define MCFG_NCR53C7XX_IRQ_HANDLER(_devcb) \
- devcb = &downcast<ncr53c7xx_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<ncr53c7xx_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_NCR53C7XX_HOST_WRITE(_devcb) \
- devcb = &downcast<ncr53c7xx_device &>(*device).set_host_write(DEVCB_##_devcb);
+ downcast<ncr53c7xx_device &>(*device).set_host_write(DEVCB_##_devcb);
#define MCFG_NCR53C7XX_HOST_READ(_devcb) \
- devcb = &downcast<ncr53c7xx_device &>(*device).set_host_read(DEVCB_##_devcb);
+ downcast<ncr53c7xx_device &>(*device).set_host_read(DEVCB_##_devcb);
class ncr53c7xx_device : public nscsi_device, public device_execute_interface
{
diff --git a/src/devices/machine/64h156.h b/src/devices/machine/64h156.h
index 62e1ccabff9..24244e64517 100644
--- a/src/devices/machine/64h156.h
+++ b/src/devices/machine/64h156.h
@@ -71,13 +71,13 @@
//**************************************************************************
#define MCFG_64H156_ATN_CALLBACK(_write) \
- devcb = &downcast<c64h156_device &>(*device).set_atn_wr_callback(DEVCB_##_write);
+ downcast<c64h156_device &>(*device).set_atn_wr_callback(DEVCB_##_write);
#define MCFG_64H156_SYNC_CALLBACK(_write) \
- devcb = &downcast<c64h156_device &>(*device).set_sync_wr_callback(DEVCB_##_write);
+ downcast<c64h156_device &>(*device).set_sync_wr_callback(DEVCB_##_write);
#define MCFG_64H156_BYTE_CALLBACK(_write) \
- devcb = &downcast<c64h156_device &>(*device).set_byte_wr_callback(DEVCB_##_write);
+ downcast<c64h156_device &>(*device).set_byte_wr_callback(DEVCB_##_write);
diff --git a/src/devices/machine/6522via.cpp b/src/devices/machine/6522via.cpp
index 9c6b2936c8c..cd6588374c5 100644
--- a/src/devices/machine/6522via.cpp
+++ b/src/devices/machine/6522via.cpp
@@ -954,7 +954,7 @@ WRITE8_MEMBER( via6522_device::write )
}
}
-void via6522_device::write_pa(int line, int state)
+void via6522_device::set_pa_line(int line, int state)
{
if (state)
m_in_a |= (1 << line);
@@ -1020,7 +1020,7 @@ WRITE_LINE_MEMBER( via6522_device::write_ca2 )
}
}
-void via6522_device::write_pb(int line, int state)
+void via6522_device::set_pb_line(int line, int state)
{
if (state)
m_in_b |= (1 << line);
diff --git a/src/devices/machine/6522via.h b/src/devices/machine/6522via.h
index facb67b34a3..5b3823b2b5c 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 = &downcast<via6522_device &>(*device).set_readpa_handler(DEVCB_##_devcb);
+ downcast<via6522_device &>(*device).set_readpa_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_READPB_HANDLER(_devcb) \
- devcb = &downcast<via6522_device &>(*device).set_readpb_handler(DEVCB_##_devcb);
+ downcast<via6522_device &>(*device).set_readpb_handler(DEVCB_##_devcb);
// TODO: CONVERT THESE TO WRITE LINE
#define MCFG_VIA6522_WRITEPA_HANDLER(_devcb) \
- devcb = &downcast<via6522_device &>(*device).set_writepa_handler(DEVCB_##_devcb);
+ downcast<via6522_device &>(*device).set_writepa_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_WRITEPB_HANDLER(_devcb) \
- devcb = &downcast<via6522_device &>(*device).set_writepb_handler(DEVCB_##_devcb);
+ downcast<via6522_device &>(*device).set_writepb_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_CA2_HANDLER(_devcb) \
- devcb = &downcast<via6522_device &>(*device).set_ca2_handler(DEVCB_##_devcb);
+ downcast<via6522_device &>(*device).set_ca2_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_CB1_HANDLER(_devcb) \
- devcb = &downcast<via6522_device &>(*device).set_cb1_handler(DEVCB_##_devcb);
+ downcast<via6522_device &>(*device).set_cb1_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_CB2_HANDLER(_devcb) \
- devcb = &downcast<via6522_device &>(*device).set_cb2_handler(DEVCB_##_devcb);
+ downcast<via6522_device &>(*device).set_cb2_handler(DEVCB_##_devcb);
#define MCFG_VIA6522_IRQ_HANDLER(_devcb) \
- devcb = &downcast<via6522_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<via6522_device &>(*device).set_irq_handler(DEVCB_##_devcb);
/***************************************************************************
@@ -85,41 +85,49 @@ public:
// TODO: REMOVE THESE
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)); }
+ auto readpa_handler() { return m_in_a_handler.bind(); }
+ auto readpb_handler() { return m_in_b_handler.bind(); }
// TODO: CONVERT THESE TO WRITE LINE
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)); }
+ auto writepa_handler() { return m_out_a_handler.bind(); }
+ auto writepb_handler() { return m_out_b_handler.bind(); }
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)); }
+ auto ca2_handler() { return m_ca2_handler.bind(); }
+ auto cb1_handler() { return m_cb1_handler.bind(); }
+ auto cb2_handler() { return m_cb2_handler.bind(); }
+ auto irq_handler() { return m_irq_handler.bind(); }
virtual void map(address_map &map);
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
- DECLARE_WRITE_LINE_MEMBER( write_pa0 ) { write_pa(0, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pa1 ) { write_pa(1, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pa2 ) { write_pa(2, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pa3 ) { write_pa(3, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pa4 ) { write_pa(4, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pa5 ) { write_pa(5, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pa6 ) { write_pa(6, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pa7 ) { write_pa(7, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pa0 ) { set_pa_line(0, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pa1 ) { set_pa_line(1, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pa2 ) { set_pa_line(2, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pa3 ) { set_pa_line(3, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pa4 ) { set_pa_line(4, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pa5 ) { set_pa_line(5, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pa6 ) { set_pa_line(6, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pa7 ) { set_pa_line(7, state); }
DECLARE_WRITE8_MEMBER( write_pa );
DECLARE_WRITE_LINE_MEMBER( write_ca1 );
DECLARE_WRITE_LINE_MEMBER( write_ca2 );
- DECLARE_WRITE_LINE_MEMBER( write_pb0 ) { write_pb(0, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pb1 ) { write_pb(1, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pb2 ) { write_pb(2, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pb3 ) { write_pb(3, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pb4 ) { write_pb(4, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pb5 ) { write_pb(5, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pb6 ) { write_pb(6, state); }
- DECLARE_WRITE_LINE_MEMBER( write_pb7 ) { write_pb(7, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pb0 ) { set_pb_line(0, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pb1 ) { set_pb_line(1, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pb2 ) { set_pb_line(2, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pb3 ) { set_pb_line(3, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pb4 ) { set_pb_line(4, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pb5 ) { set_pb_line(5, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pb6 ) { set_pb_line(6, state); }
+ DECLARE_WRITE_LINE_MEMBER( write_pb7 ) { set_pb_line(7, state); }
DECLARE_WRITE8_MEMBER( write_pb );
DECLARE_WRITE_LINE_MEMBER( write_cb1 );
DECLARE_WRITE_LINE_MEMBER( write_cb2 );
@@ -143,8 +151,8 @@ private:
void clear_int(int data);
void shift_out();
void shift_in();
- void write_pa(int line, int state);
- void write_pb(int line, int state);
+ void set_pa_line(int line, int state);
+ void set_pb_line(int line, int state);
uint8_t input_pa();
void output_pa();
diff --git a/src/devices/machine/6525tpi.h b/src/devices/machine/6525tpi.h
index a844de2ac0f..a17b0ebb01c 100644
--- a/src/devices/machine/6525tpi.h
+++ b/src/devices/machine/6525tpi.h
@@ -125,31 +125,31 @@ DECLARE_DEVICE_TYPE(TPI6525, tpi6525_device)
#define MCFG_TPI6525_OUT_IRQ_CB(_devcb) \
- devcb = &downcast<tpi6525_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<tpi6525_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_IN_PA_CB(_devcb) \
- devcb = &downcast<tpi6525_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
+ downcast<tpi6525_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_OUT_PA_CB(_devcb) \
- devcb = &downcast<tpi6525_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
+ downcast<tpi6525_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_IN_PB_CB(_devcb) \
- devcb = &downcast<tpi6525_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
+ downcast<tpi6525_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_OUT_PB_CB(_devcb) \
- devcb = &downcast<tpi6525_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
+ downcast<tpi6525_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_IN_PC_CB(_devcb) \
- devcb = &downcast<tpi6525_device &>(*device).set_in_pc_callback(DEVCB_##_devcb);
+ downcast<tpi6525_device &>(*device).set_in_pc_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_OUT_PC_CB(_devcb) \
- devcb = &downcast<tpi6525_device &>(*device).set_out_pc_callback(DEVCB_##_devcb);
+ downcast<tpi6525_device &>(*device).set_out_pc_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_OUT_CA_CB(_devcb) \
- devcb = &downcast<tpi6525_device &>(*device).set_out_ca_callback(DEVCB_##_devcb);
+ downcast<tpi6525_device &>(*device).set_out_ca_callback(DEVCB_##_devcb);
#define MCFG_TPI6525_OUT_CB_CB(_devcb) \
- devcb = &downcast<tpi6525_device &>(*device).set_out_cb_callback(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 f51aa8766f5..25dbbcb1acc 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 = &downcast<riot6532_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
+ downcast<riot6532_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_RIOT6532_OUT_PA_CB(_devcb) \
- devcb = &downcast<riot6532_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
+ downcast<riot6532_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_RIOT6532_IN_PB_CB(_devcb) \
- devcb = &downcast<riot6532_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
+ downcast<riot6532_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_RIOT6532_OUT_PB_CB(_devcb) \
- devcb = &downcast<riot6532_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
+ downcast<riot6532_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
#define MCFG_RIOT6532_IRQ_CB(_devcb) \
- devcb = &downcast<riot6532_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<riot6532_device &>(*device).set_irq_callback(DEVCB_##_devcb);
/***************************************************************************
diff --git a/src/devices/machine/68153bim.h b/src/devices/machine/68153bim.h
index 0a81715ca18..a0e223b6b2e 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 = &downcast<bim68153_device &>(*device).set_out_int_callback(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 = &downcast<bim68153_device &>(*device).set_out_intal0_callback(DEVCB_##_devcb);
+ downcast<bim68153_device &>(*device).set_out_intal0_callback(DEVCB_##_devcb);
#define MCFG_BIM68153_OUT_INTAL1_CB(_devcb) \
- devcb = &downcast<bim68153_device &>(*device).set_out_intal1_callback(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 = &downcast<bim68153_device &>(*device).set_out_iack0_callback(DEVCB_##_devcb);
+ downcast<bim68153_device &>(*device).set_out_iack0_callback(DEVCB_##_devcb);
#define MCFG_BIM68153_OUT_IACK1_CB(_devcb) \
- devcb = &downcast<bim68153_device &>(*device).set_out_iack1_callback(DEVCB_##_devcb);
+ downcast<bim68153_device &>(*device).set_out_iack1_callback(DEVCB_##_devcb);
#define MCFG_BIM68153_OUT_IACK2_CB(_devcb) \
- devcb = &downcast<bim68153_device &>(*device).set_out_iack2_callback(DEVCB_##_devcb);
+ downcast<bim68153_device &>(*device).set_out_iack2_callback(DEVCB_##_devcb);
#define MCFG_BIM68153_OUT_IACK3_CB(_devcb) \
- devcb = &downcast<bim68153_device &>(*device).set_out_iack3_callback(DEVCB_##_devcb);
+ downcast<bim68153_device &>(*device).set_out_iack3_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/6821pia.h b/src/devices/machine/6821pia.h
index 236aae0f301..76fd7f96e2b 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 = &downcast<pia6821_device &>(*device).set_readpa_handler(DEVCB_##_devcb);
+ downcast<pia6821_device &>(*device).set_readpa_handler(DEVCB_##_devcb);
#define MCFG_PIA_READPB_HANDLER(_devcb) \
- devcb = &downcast<pia6821_device &>(*device).set_readpb_handler(DEVCB_##_devcb);
+ downcast<pia6821_device &>(*device).set_readpb_handler(DEVCB_##_devcb);
#define MCFG_PIA_READCA1_HANDLER(_devcb) \
- devcb = &downcast<pia6821_device &>(*device).set_readca1_handler(DEVCB_##_devcb);
+ downcast<pia6821_device &>(*device).set_readca1_handler(DEVCB_##_devcb);
#define MCFG_PIA_READCA2_HANDLER(_devcb) \
- devcb = &downcast<pia6821_device &>(*device).set_readca2_handler(DEVCB_##_devcb);
+ downcast<pia6821_device &>(*device).set_readca2_handler(DEVCB_##_devcb);
#define MCFG_PIA_READCB1_HANDLER(_devcb) \
- devcb = &downcast<pia6821_device &>(*device).set_readcb1_handler(DEVCB_##_devcb);
+ downcast<pia6821_device &>(*device).set_readcb1_handler(DEVCB_##_devcb);
// TODO: CONVERT THESE TO WRITE LINE
#define MCFG_PIA_WRITEPA_HANDLER(_devcb) \
- devcb = &downcast<pia6821_device &>(*device).set_writepa_handler(DEVCB_##_devcb);
+ downcast<pia6821_device &>(*device).set_writepa_handler(DEVCB_##_devcb);
#define MCFG_PIA_WRITEPB_HANDLER(_devcb) \
- devcb = &downcast<pia6821_device &>(*device).set_writepb_handler(DEVCB_##_devcb);
+ downcast<pia6821_device &>(*device).set_writepb_handler(DEVCB_##_devcb);
#define MCFG_PIA_CA2_HANDLER(_devcb) \
- devcb = &downcast<pia6821_device &>(*device).set_ca2_handler(DEVCB_##_devcb);
+ downcast<pia6821_device &>(*device).set_ca2_handler(DEVCB_##_devcb);
#define MCFG_PIA_CB2_HANDLER(_devcb) \
- devcb = &downcast<pia6821_device &>(*device).set_cb2_handler(DEVCB_##_devcb);
+ downcast<pia6821_device &>(*device).set_cb2_handler(DEVCB_##_devcb);
#define MCFG_PIA_IRQA_HANDLER(_devcb) \
- devcb = &downcast<pia6821_device &>(*device).set_irqa_handler(DEVCB_##_devcb);
+ downcast<pia6821_device &>(*device).set_irqa_handler(DEVCB_##_devcb);
#define MCFG_PIA_IRQB_HANDLER(_devcb) \
- devcb = &downcast<pia6821_device &>(*device).set_irqb_handler(DEVCB_##_devcb);
+ downcast<pia6821_device &>(*device).set_irqb_handler(DEVCB_##_devcb);
/***************************************************************************
@@ -86,15 +86,26 @@ public:
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)); }
+ auto readpa_handler() { return m_in_a_handler.bind(); }
+ auto readpb_handler() { return m_in_b_handler.bind(); }
+ auto readca1_handler() { return m_in_ca1_handler.bind(); }
+ auto readca2_handler() { return m_in_ca2_handler.bind(); }
+ auto readcb1_handler() { return m_in_cb1_handler.bind(); }
// TODO: CONVERT THESE TO WRITE LINE
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)); }
+ auto writepa_handler() { return m_out_a_handler.bind(); }
+ auto writepb_handler() { return m_out_b_handler.bind(); }
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)); }
+ auto ca2_handler() { return m_ca2_handler.bind(); }
+ auto cb2_handler() { return m_cb2_handler.bind(); }
+ auto irqa_handler() { return m_irqa_handler.bind(); }
+ auto irqb_handler() { return m_irqb_handler.bind(); }
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 c155c1d6b29..eaf7356d202 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 = &downcast<pit68230_device &>(*device).set_pa_in_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_pa_in_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PA_OUTPUT_CB(_devcb) \
- devcb = &downcast<pit68230_device &>(*device).set_pa_out_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_pa_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PB_INPUT_CB(_devcb) \
- devcb = &downcast<pit68230_device &>(*device).set_pb_in_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_pb_in_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PB_OUTPUT_CB(_devcb) \
- devcb = &downcast<pit68230_device &>(*device).set_pb_out_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_pb_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PC_INPUT_CB(_devcb) \
- devcb = &downcast<pit68230_device &>(*device).set_pc_in_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_pc_in_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PC_OUTPUT_CB(_devcb) \
- devcb = &downcast<pit68230_device &>(*device).set_pc_out_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_pc_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_H1_CB(_devcb) \
- devcb = &downcast<pit68230_device &>(*device).set_h1_out_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_h1_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_H2_CB(_devcb) \
- devcb = &downcast<pit68230_device &>(*device).set_h2_out_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_h2_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_H3_CB(_devcb) \
- devcb = &downcast<pit68230_device &>(*device).set_h3_out_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_h3_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_H4_CB(_devcb) \
- devcb = &downcast<pit68230_device &>(*device).set_h4_out_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_h4_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_TIMER_IRQ_CB(_devcb) \
- devcb = &downcast<pit68230_device &>(*device).set_tirq_out_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_tirq_out_callback(DEVCB_##_devcb);
#define MCFG_PIT68230_PORT_IRQ_CB(_devcb) \
- devcb = &downcast<pit68230_device &>(*device).set_pirq_out_callback(DEVCB_##_devcb);
+ downcast<pit68230_device &>(*device).set_pirq_out_callback(DEVCB_##_devcb);
/*-----------------------------------------------------------------------
* Registers RS1-RS5 R/W Description
diff --git a/src/devices/machine/68307.h b/src/devices/machine/68307.h
index c159dfd796b..cce3630aede 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 = &downcast<m68307_cpu_device &>(*device).set_a_tx_cb(DEVCB_##_cb);
+ downcast<m68307_cpu_device &>(*device).set_a_tx_cb(DEVCB_##_cb);
#define MCFG_MC68307_SERIAL_B_TX_CALLBACK(_cb) \
- devcb = &downcast<m68307_cpu_device &>(*device).set_b_tx_cb(DEVCB_##_cb);
+ downcast<m68307_cpu_device &>(*device).set_b_tx_cb(DEVCB_##_cb);
// deprecated: use ipX_w() instead
#define MCFG_MC68307_SERIAL_INPORT_CALLBACK(_cb) \
- devcb = &downcast<m68307_cpu_device &>(*device).set_inport_cb(DEVCB_##_cb);
+ downcast<m68307_cpu_device &>(*device).set_inport_cb(DEVCB_##_cb);
#define MCFG_MC68307_SERIAL_OUTPORT_CALLBACK(_cb) \
- devcb = &downcast<m68307_cpu_device &>(*device).set_outport_cb(DEVCB_##_cb);
+ downcast<m68307_cpu_device &>(*device).set_outport_cb(DEVCB_##_cb);
class m68307_cpu_device : public m68000_device
diff --git a/src/devices/machine/68340.h b/src/devices/machine/68340.h
index fcec19e453d..29febd8ef75 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 = &downcast<m68340_cpu_device &>(*device).set_pa_in_callback(DEVCB_##_devcb);
+ downcast<m68340_cpu_device &>(*device).set_pa_in_callback(DEVCB_##_devcb);
#define MCFG_MC68340_PA_OUTPUT_CB(_devcb) \
- devcb = &downcast<m68340_cpu_device &>(*device).set_pa_out_callback(DEVCB_##_devcb);
+ downcast<m68340_cpu_device &>(*device).set_pa_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_PB_INPUT_CB(_devcb) \
- devcb = &downcast<m68340_cpu_device &>(*device).set_pb_in_callback(DEVCB_##_devcb);
+ downcast<m68340_cpu_device &>(*device).set_pb_in_callback(DEVCB_##_devcb);
#define MCFG_MC68340_PB_OUTPUT_CB(_devcb) \
- devcb = &downcast<m68340_cpu_device &>(*device).set_pb_out_callback(DEVCB_##_devcb);
+ downcast<m68340_cpu_device &>(*device).set_pb_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_ADD_CRYSTAL(_crystal) \
downcast<m68340_cpu_device &>(*device).set_crystal(_crystal);
#define MCFG_MC68340_TOUT1_OUTPUT_CB(_devcb) \
- devcb = &downcast<m68340_cpu_device &>(*device).set_tout1_out_callback(DEVCB_##_devcb);
+ downcast<m68340_cpu_device &>(*device).set_tout1_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_TIN1_INPUT_CB(_devcb) \
- devcb = &downcast<m68340_cpu_device &>(*device).set_tin1_out_callback(DEVCB_##_devcb);
+ downcast<m68340_cpu_device &>(*device).set_tin1_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_TGATE1_INPUT_CB(_devcb) \
- devcb = &downcast<m68340_cpu_device &>(*device).set_tgate1_out_callback(DEVCB_##_devcb);
+ downcast<m68340_cpu_device &>(*device).set_tgate1_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_TOUT2_OUTPUT_CB(_devcb) \
- devcb = &downcast<m68340_cpu_device &>(*device).set_tout2_out_callback(DEVCB_##_devcb);
+ downcast<m68340_cpu_device &>(*device).set_tout2_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_TIN2_INPUT_CB(_devcb) \
- devcb = &downcast<m68340_cpu_device &>(*device).set_tin2_out_callback(DEVCB_##_devcb);
+ downcast<m68340_cpu_device &>(*device).set_tin2_out_callback(DEVCB_##_devcb);
#define MCFG_MC68340_TGATE2_INPUT_CB(_devcb) \
- devcb = &downcast<m68340_cpu_device &>(*device).set_tgate2_out_callback(DEVCB_##_devcb);
+ downcast<m68340_cpu_device &>(*device).set_tgate2_out_callback(DEVCB_##_devcb);
class m68340_cpu_device : public fscpu32_device
{
diff --git a/src/devices/machine/6840ptm.h b/src/devices/machine/6840ptm.h
index 0fd9f3b1196..dbae5eeeb23 100644
--- a/src/devices/machine/6840ptm.h
+++ b/src/devices/machine/6840ptm.h
@@ -23,16 +23,16 @@
downcast<ptm6840_device &>(*device).set_external_clocks(_clk0, _clk1, _clk2);
#define MCFG_PTM6840_O1_CB(_devcb) \
- devcb = &downcast<ptm6840_device &>(*device).set_out_callback(0, DEVCB_##_devcb);
+ downcast<ptm6840_device &>(*device).set_out_callback(0, DEVCB_##_devcb);
#define MCFG_PTM6840_O2_CB(_devcb) \
- devcb = &downcast<ptm6840_device &>(*device).set_out_callback(1, DEVCB_##_devcb);
+ downcast<ptm6840_device &>(*device).set_out_callback(1, DEVCB_##_devcb);
#define MCFG_PTM6840_O3_CB(_devcb) \
- devcb = &downcast<ptm6840_device &>(*device).set_out_callback(2, DEVCB_##_devcb);
+ downcast<ptm6840_device &>(*device).set_out_callback(2, DEVCB_##_devcb);
#define MCFG_PTM6840_IRQ_CB(_devcb) \
- devcb = &downcast<ptm6840_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<ptm6840_device &>(*device).set_irq_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -50,6 +50,10 @@ public:
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)); }
+ auto o1_callback() { return m_out_cb[0].bind(); }
+ auto o2_callback() { return m_out_cb[1].bind(); }
+ auto o3_callback() { return m_out_cb[2].bind(); }
+ auto irq_callback() { return m_irq_cb.bind(); }
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 1dc975911d8..4d4086fd4af 100644
--- a/src/devices/machine/6850acia.h
+++ b/src/devices/machine/6850acia.h
@@ -15,13 +15,13 @@
#define MCFG_ACIA6850_TXD_HANDLER(_devcb) \
- devcb = &downcast<acia6850_device &>(*device).set_txd_handler(DEVCB_##_devcb);
+ downcast<acia6850_device &>(*device).set_txd_handler(DEVCB_##_devcb);
#define MCFG_ACIA6850_RTS_HANDLER(_devcb) \
- devcb = &downcast<acia6850_device &>(*device).set_rts_handler(DEVCB_##_devcb);
+ downcast<acia6850_device &>(*device).set_rts_handler(DEVCB_##_devcb);
#define MCFG_ACIA6850_IRQ_HANDLER(_devcb) \
- devcb = &downcast<acia6850_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<acia6850_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class acia6850_device : public device_t
{
@@ -33,6 +33,9 @@ public:
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)); }
+ auto txd_handler() { return m_txd_handler.bind(); }
+ auto rts_handler() { return m_rts_handler.bind(); }
+ auto irq_handler() { return m_irq_handler.bind(); }
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 ad4f4f2dda4..24b3c3c7da7 100644
--- a/src/devices/machine/68561mpcc.h
+++ b/src/devices/machine/68561mpcc.h
@@ -68,22 +68,22 @@
/* Callbacks to be called by us for signals driven by the MPCC */
#define MCFG_MPCC_OUT_TXD_CB(_devcb) \
- devcb = &downcast<mpcc_device &>(*device).set_out_txd_callback(DEVCB_##_devcb);
+ downcast<mpcc_device &>(*device).set_out_txd_callback(DEVCB_##_devcb);
#define MCFG_MPCC_OUT_DTR_CB(_devcb) \
- devcb = &downcast<mpcc_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
+ downcast<mpcc_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
#define MCFG_MPCC_OUT_RTS_CB(_devcb) \
- devcb = &downcast<mpcc_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
+ downcast<mpcc_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
#define MCFG_MPCC_OUT_TRXC_CB(_devcb) \
- devcb = &downcast<mpcc_device &>(*device).set_out_trxc_callback(DEVCB_##_devcb);
+ downcast<mpcc_device &>(*device).set_out_trxc_callback(DEVCB_##_devcb);
#define MCFG_MPCC_OUT_RTXC_CB(_devcb) \
- devcb = &downcast<mpcc_device &>(*device).set_out_rtxc_callback(DEVCB_##_devcb);
+ downcast<mpcc_device &>(*device).set_out_rtxc_callback(DEVCB_##_devcb);
#define MCFG_MPCC_OUT_INT_CB(_devcb) \
- devcb = &downcast<mpcc_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
+ downcast<mpcc_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
diff --git a/src/devices/machine/7200fifo.h b/src/devices/machine/7200fifo.h
index 1b89b53406b..642932691c0 100644
--- a/src/devices/machine/7200fifo.h
+++ b/src/devices/machine/7200fifo.h
@@ -61,13 +61,13 @@ The following chips are functionally equivalent and pin-compatible.
downcast<fifo7200_device &>(*device).set_ram_size(_ramsize);
#define MCFG_FIFO7200_EF_HANDLER(_devcb) \
- devcb = &downcast<fifo7200_device &>(*device).set_ef_handler(DEVCB_##_devcb);
+ downcast<fifo7200_device &>(*device).set_ef_handler(DEVCB_##_devcb);
#define MCFG_FIFO7200_FF_HANDLER(_devcb) \
- devcb = &downcast<fifo7200_device &>(*device).set_ff_handler(DEVCB_##_devcb);
+ downcast<fifo7200_device &>(*device).set_ff_handler(DEVCB_##_devcb);
#define MCFG_FIFO7200_HF_HANDLER(_devcb) \
- devcb = &downcast<fifo7200_device &>(*device).set_hf_handler(DEVCB_##_devcb);
+ downcast<fifo7200_device &>(*device).set_hf_handler(DEVCB_##_devcb);
diff --git a/src/devices/machine/7400.h b/src/devices/machine/7400.h
index 0f7d7cb67a6..a96c02bcf87 100644
--- a/src/devices/machine/7400.h
+++ b/src/devices/machine/7400.h
@@ -35,16 +35,16 @@
#define MCFG_7400_Y1_CB(_devcb) \
- devcb = &downcast<ttl7400_device &>(*device).set_y1_cb(DEVCB_##_devcb);
+ downcast<ttl7400_device &>(*device).set_y1_cb(DEVCB_##_devcb);
#define MCFG_7400_Y2_CB(_devcb) \
- devcb = &downcast<ttl7400_device &>(*device).set_y2_cb(DEVCB_##_devcb);
+ downcast<ttl7400_device &>(*device).set_y2_cb(DEVCB_##_devcb);
#define MCFG_7400_Y3_CB(_devcb) \
- devcb = &downcast<ttl7400_device &>(*device).set_y3_cb(DEVCB_##_devcb);
+ downcast<ttl7400_device &>(*device).set_y3_cb(DEVCB_##_devcb);
#define MCFG_7400_Y4_CB(_devcb) \
- devcb = &downcast<ttl7400_device &>(*device).set_y4_cb(DEVCB_##_devcb);
+ downcast<ttl7400_device &>(*device).set_y4_cb(DEVCB_##_devcb);
class ttl7400_device : public device_t
diff --git a/src/devices/machine/7404.h b/src/devices/machine/7404.h
index 31900c1ac9d..4d767fbfed4 100644
--- a/src/devices/machine/7404.h
+++ b/src/devices/machine/7404.h
@@ -62,22 +62,22 @@
#define MCFG_7404_Y1_CB(_devcb) \
- devcb = &downcast<ttl7404_device &>(*device).set_y1_cb(DEVCB_##_devcb);
+ downcast<ttl7404_device &>(*device).set_y1_cb(DEVCB_##_devcb);
#define MCFG_7404_Y2_CB(_devcb) \
- devcb = &downcast<ttl7404_device &>(*device).set_y2_cb(DEVCB_##_devcb);
+ downcast<ttl7404_device &>(*device).set_y2_cb(DEVCB_##_devcb);
#define MCFG_7404_Y3_CB(_devcb) \
- devcb = &downcast<ttl7404_device &>(*device).set_y3_cb(DEVCB_##_devcb);
+ downcast<ttl7404_device &>(*device).set_y3_cb(DEVCB_##_devcb);
#define MCFG_7404_Y4_CB(_devcb) \
- devcb = &downcast<ttl7404_device &>(*device).set_y4_cb(DEVCB_##_devcb);
+ downcast<ttl7404_device &>(*device).set_y4_cb(DEVCB_##_devcb);
#define MCFG_7404_Y5_CB(_devcb) \
- devcb = &downcast<ttl7404_device &>(*device).set_y5_cb(DEVCB_##_devcb);
+ downcast<ttl7404_device &>(*device).set_y5_cb(DEVCB_##_devcb);
#define MCFG_7404_Y6_CB(_devcb) \
- devcb = &downcast<ttl7404_device &>(*device).set_y6_cb(DEVCB_##_devcb);
+ downcast<ttl7404_device &>(*device).set_y6_cb(DEVCB_##_devcb);
class ttl7404_device : public device_t
{
diff --git a/src/devices/machine/74123.h b/src/devices/machine/74123.h
index 075e56c8206..b5f0fc7e15b 100644
--- a/src/devices/machine/74123.h
+++ b/src/devices/machine/74123.h
@@ -76,7 +76,7 @@
downcast<ttl74123_device &>(*device).set_clear_pin_value(_value);
#define MCFG_TTL74123_OUTPUT_CHANGED_CB(_devcb) \
- devcb = &downcast<ttl74123_device &>(*device).set_output_changed_callback(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 */
diff --git a/src/devices/machine/74145.h b/src/devices/machine/74145.h
index 553d4ee86db..c396c1c1fbf 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 = &downcast<ttl74145_device &>(*device).set_output_line_0_callback(DEVCB_##_devcb);
+ downcast<ttl74145_device &>(*device).set_output_line_0_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_1_CB(_devcb) \
- devcb = &downcast<ttl74145_device &>(*device).set_output_line_1_callback(DEVCB_##_devcb);
+ downcast<ttl74145_device &>(*device).set_output_line_1_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_2_CB(_devcb) \
- devcb = &downcast<ttl74145_device &>(*device).set_output_line_2_callback(DEVCB_##_devcb);
+ downcast<ttl74145_device &>(*device).set_output_line_2_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_3_CB(_devcb) \
- devcb = &downcast<ttl74145_device &>(*device).set_output_line_3_callback(DEVCB_##_devcb);
+ downcast<ttl74145_device &>(*device).set_output_line_3_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_4_CB(_devcb) \
- devcb = &downcast<ttl74145_device &>(*device).set_output_line_4_callback(DEVCB_##_devcb);
+ downcast<ttl74145_device &>(*device).set_output_line_4_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_5_CB(_devcb) \
- devcb = &downcast<ttl74145_device &>(*device).set_output_line_5_callback(DEVCB_##_devcb);
+ downcast<ttl74145_device &>(*device).set_output_line_5_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_6_CB(_devcb) \
- devcb = &downcast<ttl74145_device &>(*device).set_output_line_6_callback(DEVCB_##_devcb);
+ downcast<ttl74145_device &>(*device).set_output_line_6_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_7_CB(_devcb) \
- devcb = &downcast<ttl74145_device &>(*device).set_output_line_7_callback(DEVCB_##_devcb);
+ downcast<ttl74145_device &>(*device).set_output_line_7_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_8_CB(_devcb) \
- devcb = &downcast<ttl74145_device &>(*device).set_output_line_8_callback(DEVCB_##_devcb);
+ downcast<ttl74145_device &>(*device).set_output_line_8_callback(DEVCB_##_devcb);
#define MCFG_TTL74145_OUTPUT_LINE_9_CB(_devcb) \
- devcb = &downcast<ttl74145_device &>(*device).set_output_line_9_callback(DEVCB_##_devcb);
+ downcast<ttl74145_device &>(*device).set_output_line_9_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/74153.h b/src/devices/machine/74153.h
index 4ce38d32a9e..fc234463e30 100644
--- a/src/devices/machine/74153.h
+++ b/src/devices/machine/74153.h
@@ -30,10 +30,10 @@
//**************************************************************************
#define MCFG_TTL153_ZA_CB(_devcb) \
- devcb = &downcast<ttl153_device &>(*device).set_za_callback(DEVCB_##_devcb);
+ downcast<ttl153_device &>(*device).set_za_callback(DEVCB_##_devcb);
#define MCFG_TTL153_ZB_CB(_devcb) \
- devcb = &downcast<ttl153_device &>(*device).set_zb_callback(DEVCB_##_devcb);
+ downcast<ttl153_device &>(*device).set_zb_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/74157.h b/src/devices/machine/74157.h
index 196194c8ddb..96a23d64235 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 = &downcast<ls157_device &>(*device).set_a_in_callback(DEVCB_##_devcb);
+ downcast<ls157_device &>(*device).set_a_in_callback(DEVCB_##_devcb);
#define MCFG_74157_B_IN_CB(_devcb) \
- devcb = &downcast<ls157_device &>(*device).set_b_in_callback(DEVCB_##_devcb);
+ downcast<ls157_device &>(*device).set_b_in_callback(DEVCB_##_devcb);
#define MCFG_74157_OUT_CB(_devcb) \
- devcb = &downcast<ls157_device &>(*device).set_out_callback(DEVCB_##_devcb);
+ downcast<ls157_device &>(*device).set_out_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -49,12 +49,15 @@ class ls157_device : public device_t
{
public:
// construction/destruction
- ls157_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+ ls157_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
// static configuration
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)); }
+ auto a_in_callback() { return m_a_in_cb.bind(); }
+ auto b_in_callback() { return m_b_in_cb.bind(); }
+ auto out_callback() { return m_out_cb.bind(); }
// data writes
DECLARE_WRITE8_MEMBER(a_w) { write_a(data); }
diff --git a/src/devices/machine/74161.h b/src/devices/machine/74161.h
index 8428411c05b..932428bdb78 100644
--- a/src/devices/machine/74161.h
+++ b/src/devices/machine/74161.h
@@ -59,22 +59,22 @@
#define MCFG_7416x_QA_CB(_devcb) \
- devcb = &downcast<ttl7416x_device &>(*device).set_qa_cb(DEVCB_##_devcb);
+ downcast<ttl7416x_device &>(*device).set_qa_cb(DEVCB_##_devcb);
#define MCFG_7416x_QB_CB(_devcb) \
- devcb = &downcast<ttl7416x_device &>(*device).set_qb_cb(DEVCB_##_devcb);
+ downcast<ttl7416x_device &>(*device).set_qb_cb(DEVCB_##_devcb);
#define MCFG_7416x_QC_CB(_devcb) \
- devcb = &downcast<ttl7416x_device &>(*device).set_qc_cb(DEVCB_##_devcb);
+ downcast<ttl7416x_device &>(*device).set_qc_cb(DEVCB_##_devcb);
#define MCFG_7416x_QD_CB(_devcb) \
- devcb = &downcast<ttl7416x_device &>(*device).set_qd_cb(DEVCB_##_devcb);
+ downcast<ttl7416x_device &>(*device).set_qd_cb(DEVCB_##_devcb);
#define MCFG_7416x_OUTPUT_CB(_devcb) \
- devcb = &downcast<ttl7416x_device &>(*device).set_output_cb(DEVCB_##_devcb);
+ downcast<ttl7416x_device &>(*device).set_output_cb(DEVCB_##_devcb);
#define MCFG_7416x_TC_CB(_devcb) \
- devcb = &downcast<ttl7416x_device &>(*device).set_tc_cb(DEVCB_##_devcb);
+ downcast<ttl7416x_device &>(*device).set_tc_cb(DEVCB_##_devcb);
class ttl7416x_device : public device_t
{
diff --git a/src/devices/machine/74165.h b/src/devices/machine/74165.h
index 8b608760572..1db3f2809fe 100644
--- a/src/devices/machine/74165.h
+++ b/src/devices/machine/74165.h
@@ -31,10 +31,10 @@
//**************************************************************************
#define MCFG_TTL165_DATA_CB(_devcb) \
- devcb = &downcast<ttl165_device &>(*device).set_data_callback(DEVCB_##_devcb);
+ downcast<ttl165_device &>(*device).set_data_callback(DEVCB_##_devcb);
#define MCFG_TTL165_QH_CB(_devcb) \
- devcb = &downcast<ttl165_device &>(*device).set_qh_callback(DEVCB_##_devcb);
+ downcast<ttl165_device &>(*device).set_qh_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/74166.h b/src/devices/machine/74166.h
index 77497b1be5e..a256f904bf4 100644
--- a/src/devices/machine/74166.h
+++ b/src/devices/machine/74166.h
@@ -31,10 +31,10 @@
//**************************************************************************
#define MCFG_TTL166_DATA_CB(_devcb) \
- devcb = &downcast<ttl166_device &>(*device).set_data_callback(DEVCB_##_devcb);
+ downcast<ttl166_device &>(*device).set_data_callback(DEVCB_##_devcb);
#define MCFG_TTL166_QH_CB(_devcb) \
- devcb = &downcast<ttl166_device &>(*device).set_qh_callback(DEVCB_##_devcb);
+ downcast<ttl166_device &>(*device).set_qh_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/74175.h b/src/devices/machine/74175.h
index e8f17a5ecbb..f4f1912f085 100644
--- a/src/devices/machine/74175.h
+++ b/src/devices/machine/74175.h
@@ -49,46 +49,46 @@
#define MCFG_74174_Q1_CB(_devcb) \
- devcb = &downcast<ttl741745_device &>(*device).set_q1_cb(DEVCB_##_devcb);
+ downcast<ttl741745_device &>(*device).set_q1_cb(DEVCB_##_devcb);
#define MCFG_74174_Q2_CB(_devcb) \
- devcb = &downcast<ttl741745_device &>(*device).set_q2_cb(DEVCB_##_devcb);
+ downcast<ttl741745_device &>(*device).set_q2_cb(DEVCB_##_devcb);
#define MCFG_74174_Q3_CB(_devcb) \
- devcb = &downcast<ttl741745_device &>(*device).set_q3_cb(DEVCB_##_devcb);
+ downcast<ttl741745_device &>(*device).set_q3_cb(DEVCB_##_devcb);
#define MCFG_74174_Q4_CB(_devcb) \
- devcb = &downcast<ttl741745_device &>(*device).set_q4_cb(DEVCB_##_devcb);
+ downcast<ttl741745_device &>(*device).set_q4_cb(DEVCB_##_devcb);
#define MCFG_74175_Q1_CB(_devcb) \
- devcb = &downcast<ttl741745_device &>(*device).set_q1_cb(DEVCB_##_devcb);
+ downcast<ttl741745_device &>(*device).set_q1_cb(DEVCB_##_devcb);
#define MCFG_74175_Q2_CB(_devcb) \
- devcb = &downcast<ttl741745_device &>(*device).set_q2_cb(DEVCB_##_devcb);
+ downcast<ttl741745_device &>(*device).set_q2_cb(DEVCB_##_devcb);
#define MCFG_74175_Q3_CB(_devcb) \
- devcb = &downcast<ttl741745_device &>(*device).set_q3_cb(DEVCB_##_devcb);
+ downcast<ttl741745_device &>(*device).set_q3_cb(DEVCB_##_devcb);
#define MCFG_74175_Q4_CB(_devcb) \
- devcb = &downcast<ttl741745_device &>(*device).set_q4_cb(DEVCB_##_devcb);
+ downcast<ttl741745_device &>(*device).set_q4_cb(DEVCB_##_devcb);
#define MCFG_74174_Q5_CB(_devcb) \
- devcb = &downcast<ttl74174_device &>(*device).set_q5_cb(DEVCB_##_devcb);
+ downcast<ttl74174_device &>(*device).set_q5_cb(DEVCB_##_devcb);
#define MCFG_74174_Q6_CB(_devcb) \
- devcb = &downcast<ttl74174_device &>(*device).set_q6_cb(DEVCB_##_devcb);
+ downcast<ttl74174_device &>(*device).set_q6_cb(DEVCB_##_devcb);
#define MCFG_74175_NOT_Q1_CB(_devcb) \
- devcb = &downcast<ttl74175_device &>(*device).set_not_q1_cb(DEVCB_##_devcb);
+ downcast<ttl74175_device &>(*device).set_not_q1_cb(DEVCB_##_devcb);
#define MCFG_74175_NOT_Q2_CB(_devcb) \
- devcb = &downcast<ttl74175_device &>(*device).set_not_q2_cb(DEVCB_##_devcb);
+ downcast<ttl74175_device &>(*device).set_not_q2_cb(DEVCB_##_devcb);
#define MCFG_74175_NOT_Q3_CB(_devcb) \
- devcb = &downcast<ttl74175_device &>(*device).set_not_q3_cb(DEVCB_##_devcb);
+ downcast<ttl74175_device &>(*device).set_not_q3_cb(DEVCB_##_devcb);
#define MCFG_74175_NOT_Q4_CB(_devcb) \
- devcb = &downcast<ttl74175_device &>(*device).set_not_q1_cb(DEVCB_##_devcb);
+ downcast<ttl74175_device &>(*device).set_not_q1_cb(DEVCB_##_devcb);
class ttl741745_device : public device_t
diff --git a/src/devices/machine/74259.h b/src/devices/machine/74259.h
index 60a43a2a55d..990c1f1ca58 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 = &downcast<addressable_latch_device &>(*device).set_q_out_cb<0>(DEVCB_##_devcb);
+ downcast<addressable_latch_device &>(*device).set_q_out_cb<0>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(_devcb) \
- devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<1>(DEVCB_##_devcb);
+ downcast<addressable_latch_device &>(*device).set_q_out_cb<1>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(_devcb) \
- devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<2>(DEVCB_##_devcb);
+ downcast<addressable_latch_device &>(*device).set_q_out_cb<2>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(_devcb) \
- devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<3>(DEVCB_##_devcb);
+ downcast<addressable_latch_device &>(*device).set_q_out_cb<3>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(_devcb) \
- devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<4>(DEVCB_##_devcb);
+ downcast<addressable_latch_device &>(*device).set_q_out_cb<4>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(_devcb) \
- devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<5>(DEVCB_##_devcb);
+ downcast<addressable_latch_device &>(*device).set_q_out_cb<5>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(_devcb) \
- devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<6>(DEVCB_##_devcb);
+ downcast<addressable_latch_device &>(*device).set_q_out_cb<6>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(_devcb) \
- devcb = &downcast<addressable_latch_device &>(*device).set_q_out_cb<7>(DEVCB_##_devcb);
+ downcast<addressable_latch_device &>(*device).set_q_out_cb<7>(DEVCB_##_devcb);
#define MCFG_ADDRESSABLE_LATCH_PARALLEL_OUT_CB(_devcb) \
- devcb = &downcast<addressable_latch_device &>(*device).set_parallel_out_cb(DEVCB_##_devcb);
+ downcast<addressable_latch_device &>(*device).set_parallel_out_cb(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -68,6 +68,8 @@ public:
// static configuration
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)); }
+ template <unsigned Bit> auto q_out_cb() { return m_q_out_cb[Bit].bind(); }
+ auto parallel_out_cb() { return m_parallel_out_cb.bind(); }
// 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 2d4cab1a9df..0a6a678ddfb 100644
--- a/src/devices/machine/7474.h
+++ b/src/devices/machine/7474.h
@@ -52,10 +52,10 @@
//**************************************************************************
#define MCFG_7474_OUTPUT_CB(_devcb) \
- devcb = &downcast<ttl7474_device &>(*device).set_output_cb(DEVCB_##_devcb);
+ downcast<ttl7474_device &>(*device).set_output_cb(DEVCB_##_devcb);
#define MCFG_7474_COMP_OUTPUT_CB(_devcb) \
- devcb = &downcast<ttl7474_device &>(*device).set_comp_output_cb(DEVCB_##_devcb);
+ downcast<ttl7474_device &>(*device).set_comp_output_cb(DEVCB_##_devcb);
//**************************************************************************
@@ -73,6 +73,8 @@ public:
// static configuration helpers
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)); }
+ auto output_cb() { return m_output_func.bind(); }
+ auto comp_output_cb() { return m_comp_output_func.bind(); }
// public interfaces
DECLARE_WRITE_LINE_MEMBER( clear_w );
diff --git a/src/devices/machine/8042kbdc.h b/src/devices/machine/8042kbdc.h
index b7f1610497e..2d5b63d96bc 100644
--- a/src/devices/machine/8042kbdc.h
+++ b/src/devices/machine/8042kbdc.h
@@ -24,19 +24,19 @@
downcast<kbdc8042_device &>(*device).set_keyboard_type(kbdc8042_device::_kbdt);
#define MCFG_KBDC8042_SYSTEM_RESET_CB(_devcb) \
- devcb = &downcast<kbdc8042_device &>(*device).set_system_reset_callback(DEVCB_##_devcb);
+ downcast<kbdc8042_device &>(*device).set_system_reset_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_GATE_A20_CB(_devcb) \
- devcb = &downcast<kbdc8042_device &>(*device).set_gate_a20_callback(DEVCB_##_devcb);
+ downcast<kbdc8042_device &>(*device).set_gate_a20_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(_devcb) \
- devcb = &downcast<kbdc8042_device &>(*device).set_input_buffer_full_callback(DEVCB_##_devcb);
+ downcast<kbdc8042_device &>(*device).set_input_buffer_full_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_OUTPUT_BUFFER_EMPTY_CB(_devcb) \
- devcb = &downcast<kbdc8042_device &>(*device).set_output_buffer_empty_callback(DEVCB_##_devcb);
+ downcast<kbdc8042_device &>(*device).set_output_buffer_empty_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_SPEAKER_CB(_devcb) \
- devcb = &downcast<kbdc8042_device &>(*device).set_speaker_callback(DEVCB_##_devcb);
+ downcast<kbdc8042_device &>(*device).set_speaker_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/82s129.h b/src/devices/machine/82s129.h
index 1eb79166a30..9b5ef9d3bf1 100644
--- a/src/devices/machine/82s129.h
+++ b/src/devices/machine/82s129.h
@@ -47,34 +47,34 @@
#define MCFG_82S126_OUTPUT_CB(_devcb) \
- devcb = &downcast<prom82s129_base_device &>(*device).set_out_cb(DEVCB_##_devcb);
+ downcast<prom82s129_base_device &>(*device).set_out_cb(DEVCB_##_devcb);
#define MCFG_82S126_O1_CB(_devcb) \
- devcb = &downcast<prom82s129_base_device &>(*device).set_o1_cb(DEVCB_##_devcb);
+ downcast<prom82s129_base_device &>(*device).set_o1_cb(DEVCB_##_devcb);
#define MCFG_82S126_O2_CB(_devcb) \
- devcb = &downcast<prom82s129_base_device &>(*device).set_o2_cb(DEVCB_##_devcb);
+ downcast<prom82s129_base_device &>(*device).set_o2_cb(DEVCB_##_devcb);
#define MCFG_82S126_O3_CB(_devcb) \
- devcb = &downcast<prom82s129_base_device &>(*device).set_o3_cb(DEVCB_##_devcb);
+ downcast<prom82s129_base_device &>(*device).set_o3_cb(DEVCB_##_devcb);
#define MCFG_82S126_O4_CB(_devcb) \
- devcb = &downcast<prom82s129_base_device &>(*device).set_o4_cb(DEVCB_##_devcb);
+ downcast<prom82s129_base_device &>(*device).set_o4_cb(DEVCB_##_devcb);
#define MCFG_82S129_OUTPUT_CB(_devcb) \
- devcb = &downcast<prom82s129_base_device &>(*device).set_out_cb(DEVCB_##_devcb);
+ downcast<prom82s129_base_device &>(*device).set_out_cb(DEVCB_##_devcb);
#define MCFG_82S129_O1_CB(_devcb) \
- devcb = &downcast<prom82s129_base_device &>(*device).set_o1_cb(DEVCB_##_devcb);
+ downcast<prom82s129_base_device &>(*device).set_o1_cb(DEVCB_##_devcb);
#define MCFG_82S129_O2_CB(_devcb) \
- devcb = &downcast<prom82s129_base_device &>(*device).set_o2_cb(DEVCB_##_devcb);
+ downcast<prom82s129_base_device &>(*device).set_o2_cb(DEVCB_##_devcb);
#define MCFG_82S129_O3_CB(_devcb) \
- devcb = &downcast<prom82s129_base_device &>(*device).set_o3_cb(DEVCB_##_devcb);
+ downcast<prom82s129_base_device &>(*device).set_o3_cb(DEVCB_##_devcb);
#define MCFG_82S129_O4_CB(_devcb) \
- devcb = &downcast<prom82s129_base_device &>(*device).set_o4_cb(DEVCB_##_devcb);
+ downcast<prom82s129_base_device &>(*device).set_o4_cb(DEVCB_##_devcb);
#define MCFG_82S129_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, PROM82S129, 0)
diff --git a/src/devices/machine/8364_paula.h b/src/devices/machine/8364_paula.h
index db9ed3727c0..31e2c2661bf 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 = &downcast<paula_8364_device &>(*device).set_mem_r_callback(DEVCB_##_devcb);
+ downcast<paula_8364_device &>(*device).set_mem_r_callback(DEVCB_##_devcb);
#define MCFG_PAULA_INT_CB(_devcb) \
- devcb = &downcast<paula_8364_device &>(*device).set_int_w_callback(DEVCB_##_devcb);
+ downcast<paula_8364_device &>(*device).set_int_w_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/8530scc.h b/src/devices/machine/8530scc.h
index 5333fda0060..457a0d36334 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 = &downcast<scc8530_t &>(*device).set_intrq_wr_callback(DEVCB_##_write);
+ downcast<scc8530_t &>(*device).set_intrq_wr_callback(DEVCB_##_write);
class scc8530_t : public device_t
{
diff --git a/src/devices/machine/aakart.h b/src/devices/machine/aakart.h
index f432055f59c..661a1f33086 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 = &downcast<aakart_device &>(*device).set_out_tx_callback(DEVCB_##_devcb);
+ downcast<aakart_device &>(*device).set_out_tx_callback(DEVCB_##_devcb);
#define MCFG_AAKART_OUT_RX_CB(_devcb) \
- devcb = &downcast<aakart_device &>(*device).set_out_rx_callback(DEVCB_##_devcb);
+ downcast<aakart_device &>(*device).set_out_rx_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/adc0808.h b/src/devices/machine/adc0808.h
index ace9fcf4682..4d717446be0 100644
--- a/src/devices/machine/adc0808.h
+++ b/src/devices/machine/adc0808.h
@@ -42,35 +42,35 @@
//**************************************************************************
#define MCFG_ADC0808_EOC_CB(_devcb) \
- devcb = &downcast<adc0808_device &>(*device).set_eoc_callback(DEVCB_##_devcb);
+ downcast<adc0808_device &>(*device).set_eoc_callback(DEVCB_##_devcb);
// common hookup where the eoc output is connected to a flip-flop
#define MCFG_ADC0808_EOC_FF_CB(_devcb) \
- devcb = &downcast<adc0808_device &>(*device).set_eoc_ff_callback(DEVCB_##_devcb);
+ downcast<adc0808_device &>(*device).set_eoc_ff_callback(DEVCB_##_devcb);
#define MCFG_ADC0808_IN0_CB(_devcb) \
- devcb = &downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 0);
+ downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 0);
#define MCFG_ADC0808_IN1_CB(_devcb) \
- devcb = &downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 1);
+ downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 1);
#define MCFG_ADC0808_IN2_CB(_devcb) \
- devcb = &downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 2);
+ downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 2);
#define MCFG_ADC0808_IN3_CB(_devcb) \
- devcb = &downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 3);
+ downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 3);
#define MCFG_ADC0808_IN4_CB(_devcb) \
- devcb = &downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 4);
+ downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 4);
#define MCFG_ADC0808_IN5_CB(_devcb) \
- devcb = &downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 5);
+ downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 5);
#define MCFG_ADC0808_IN6_CB(_devcb) \
- devcb = &downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 6);
+ downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 6);
#define MCFG_ADC0808_IN7_CB(_devcb) \
- devcb = &downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 7);
+ downcast<adc0808_device &>(*device).set_in_callback(DEVCB_##_devcb, 7);
//**************************************************************************
diff --git a/src/devices/machine/adc0844.h b/src/devices/machine/adc0844.h
index e31740b3d09..d7133695128 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 = &downcast<adc0844_device &>(*device).set_intr_callback(DEVCB_##_devcb);
+ downcast<adc0844_device &>(*device).set_intr_callback(DEVCB_##_devcb);
#define MCFG_ADC0844_CH1_CB(_devcb) \
- devcb = &downcast<adc0844_device &>(*device).set_ch1_callback(DEVCB_##_devcb);
+ downcast<adc0844_device &>(*device).set_ch1_callback(DEVCB_##_devcb);
#define MCFG_ADC0844_CH2_CB(_devcb) \
- devcb = &downcast<adc0844_device &>(*device).set_ch2_callback(DEVCB_##_devcb);
+ downcast<adc0844_device &>(*device).set_ch2_callback(DEVCB_##_devcb);
#define MCFG_ADC0844_CH3_CB(_devcb) \
- devcb = &downcast<adc0844_device &>(*device).set_ch3_callback(DEVCB_##_devcb);
+ downcast<adc0844_device &>(*device).set_ch3_callback(DEVCB_##_devcb);
#define MCFG_ADC0844_CH4_CB(_devcb) \
- devcb = &downcast<adc0844_device &>(*device).set_ch4_callback(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 = &downcast<adc0848_device &>(*device).set_ch5_callback(DEVCB_##_devcb);
+ downcast<adc0848_device &>(*device).set_ch5_callback(DEVCB_##_devcb);
#define MCFG_ADC0848_CH6_CB(_devcb) \
- devcb = &downcast<adc0848_device &>(*device).set_ch6_callback(DEVCB_##_devcb);
+ downcast<adc0848_device &>(*device).set_ch6_callback(DEVCB_##_devcb);
#define MCFG_ADC0848_CH7_CB(_devcb) \
- devcb = &downcast<adc0848_device &>(*device).set_ch7_callback(DEVCB_##_devcb);
+ downcast<adc0848_device &>(*device).set_ch7_callback(DEVCB_##_devcb);
#define MCFG_ADC0848_CH8_CB(_devcb) \
- devcb = &downcast<adc0848_device &>(*device).set_ch8_callback(DEVCB_##_devcb);
+ downcast<adc0848_device &>(*device).set_ch8_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/akiko.h b/src/devices/machine/akiko.h
index d72b5b58ce5..49e2623adbe 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 = &downcast<akiko_device &>(*device).set_mem_r_callback(DEVCB_##_devcb);
+ downcast<akiko_device &>(*device).set_mem_r_callback(DEVCB_##_devcb);
#define MCFG_AKIKO_MEM_WRITE_CB(_devcb) \
- devcb = &downcast<akiko_device &>(*device).set_mem_w_callback(DEVCB_##_devcb);
+ downcast<akiko_device &>(*device).set_mem_w_callback(DEVCB_##_devcb);
#define MCFG_AKIKO_INT_CB(_devcb) \
- devcb = &downcast<akiko_device &>(*device).set_int_w_callback(DEVCB_##_devcb);
+ downcast<akiko_device &>(*device).set_int_w_callback(DEVCB_##_devcb);
#define MCFG_AKIKO_SCL_HANDLER(_devcb) \
- devcb = &downcast<akiko_device &>(*device).set_scl_handler(DEVCB_##_devcb);
+ downcast<akiko_device &>(*device).set_scl_handler(DEVCB_##_devcb);
#define MCFG_AKIKO_SDA_READ_HANDLER(_devcb) \
- devcb = &downcast<akiko_device &>(*device).set_sda_read_handler(DEVCB_##_devcb);
+ downcast<akiko_device &>(*device).set_sda_read_handler(DEVCB_##_devcb);
#define MCFG_AKIKO_SDA_WRITE_HANDLER(_devcb) \
- devcb = &downcast<akiko_device &>(*device).set_sda_write_handler(DEVCB_##_devcb);
+ downcast<akiko_device &>(*device).set_sda_write_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/am53cf96.h b/src/devices/machine/am53cf96.h
index ba7b46ab2c7..02e64599827 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 = &downcast<am53cf96_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<am53cf96_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class am53cf96_device : public legacy_scsi_host_adapter
{
diff --git a/src/devices/machine/am9513.h b/src/devices/machine/am9513.h
index c11a659624f..51fdfd54091 100644
--- a/src/devices/machine/am9513.h
+++ b/src/devices/machine/am9513.h
@@ -39,17 +39,17 @@
//**************************************************************************
#define MCFG_AM9513_OUT1_CALLBACK(_devcb) \
- devcb = &downcast<am9513_device &>(*device).set_out_cb(0, DEVCB_##_devcb);
+ downcast<am9513_device &>(*device).set_out_cb(0, DEVCB_##_devcb);
#define MCFG_AM9513_OUT2_CALLBACK(_devcb) \
- devcb = &downcast<am9513_device &>(*device).set_out_cb(1, DEVCB_##_devcb);
+ downcast<am9513_device &>(*device).set_out_cb(1, DEVCB_##_devcb);
#define MCFG_AM9513_OUT3_CALLBACK(_devcb) \
- devcb = &downcast<am9513_device &>(*device).set_out_cb(2, DEVCB_##_devcb);
+ downcast<am9513_device &>(*device).set_out_cb(2, DEVCB_##_devcb);
#define MCFG_AM9513_OUT4_CALLBACK(_devcb) \
- devcb = &downcast<am9513_device &>(*device).set_out_cb(3, DEVCB_##_devcb);
+ downcast<am9513_device &>(*device).set_out_cb(3, DEVCB_##_devcb);
#define MCFG_AM9513_OUT5_CALLBACK(_devcb) \
- devcb = &downcast<am9513_device &>(*device).set_out_cb(4, DEVCB_##_devcb);
+ downcast<am9513_device &>(*device).set_out_cb(4, DEVCB_##_devcb);
#define MCFG_AM9513_FOUT_CALLBACK(_devcb) \
- devcb = &downcast<am9513_device &>(*device).set_fout_cb(DEVCB_##_devcb);
+ downcast<am9513_device &>(*device).set_fout_cb(DEVCB_##_devcb);
@@ -68,6 +68,12 @@ public:
// static configuration
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)); }
+ auto out1_cb() { return m_out_cb[0].bind(); }
+ auto out2_cb() { return m_out_cb[1].bind(); }
+ auto out3_cb() { return m_out_cb[2].bind(); }
+ auto out4_cb() { return m_out_cb[3].bind(); }
+ auto out5_cb() { return m_out_cb[4].bind(); }
+ auto fout_cb() { return m_fout_cb.bind(); }
// 8-bit data bus interface
DECLARE_READ8_MEMBER(read8);
diff --git a/src/devices/machine/am9517a.h b/src/devices/machine/am9517a.h
index 8527dfaa42f..dd262cec356 100644
--- a/src/devices/machine/am9517a.h
+++ b/src/devices/machine/am9517a.h
@@ -53,13 +53,20 @@ public:
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)); }
+ auto out_hreq_callback() { return m_out_hreq_cb.bind(); }
+ auto out_eop_callback() { return m_out_eop_cb.bind(); }
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)); }
+ auto in_memr_callback() { return m_in_memr_cb.bind(); }
+ auto out_memw_callback() { return m_out_memw_cb.bind(); }
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)); }
+ template <unsigned C> auto in_ior_callback() { return m_in_ior_cb[C].bind(); }
+ template <unsigned C> auto out_iow_callback() { return m_out_iow_cb[C].bind(); }
+ template <unsigned C> auto out_dack_callback() { return m_out_dack_cb[C].bind(); }
virtual DECLARE_READ8_MEMBER( read );
virtual DECLARE_WRITE8_MEMBER( write );
@@ -179,52 +186,52 @@ DECLARE_DEVICE_TYPE(PCXPORT_DMAC, pcxport_dmac_device)
***************************************************************************/
#define MCFG_AM9517A_OUT_HREQ_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_out_hreq_callback(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_out_hreq_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_EOP_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_out_eop_callback(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_out_eop_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_MEMR_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_in_memr_callback(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_in_memr_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_MEMW_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_out_memw_callback(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_out_memw_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_0_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<0>(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_in_ior_callback<0>(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_1_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<1>(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_in_ior_callback<1>(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_2_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<2>(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_in_ior_callback<2>(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_3_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_in_ior_callback<3>(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_in_ior_callback<3>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_0_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<0>(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_out_iow_callback<0>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_1_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<1>(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_out_iow_callback<1>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_2_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<2>(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_out_iow_callback<2>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_3_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_out_iow_callback<3>(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_out_iow_callback<3>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_0_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<0>(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_out_dack_callback<0>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_1_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<1>(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_out_dack_callback<1>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_2_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<2>(DEVCB_##_devcb);
+ downcast<am9517a_device &>(*device).set_out_dack_callback<2>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_3_CB(_devcb) \
- devcb = &downcast<am9517a_device &>(*device).set_out_dack_callback<3>(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 27ac1e9a46e..cae08467b40 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 = &downcast<am9519_device &>(*device).static_set_out_int_callback(DEVCB_##_devcb);
+ downcast<am9519_device &>(*device).static_set_out_int_callback(DEVCB_##_devcb);
class am9519_device : public device_t
diff --git a/src/devices/machine/amigafdc.h b/src/devices/machine/amigafdc.h
index e95e1ed0137..1cd55ca1d18 100644
--- a/src/devices/machine/amigafdc.h
+++ b/src/devices/machine/amigafdc.h
@@ -8,19 +8,19 @@
#include "imagedev/floppy.h"
#define MCFG_AMIGA_FDC_INDEX_CALLBACK(_write) \
- devcb = &downcast<amiga_fdc_device &>(*device).set_index_wr_callback(DEVCB_##_write);
+ downcast<amiga_fdc_device &>(*device).set_index_wr_callback(DEVCB_##_write);
#define MCFG_AMIGA_FDC_READ_DMA_CALLBACK(_read) \
- devcb = &downcast<amiga_fdc_device &>(*device).set_dma_rd_callback(DEVCB_##_read);
+ downcast<amiga_fdc_device &>(*device).set_dma_rd_callback(DEVCB_##_read);
#define MCFG_AMIGA_FDC_WRITE_DMA_CALLBACK(_write) \
- devcb = &downcast<amiga_fdc_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
+ downcast<amiga_fdc_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
#define MCFG_AMIGA_FDC_DSKBLK_CALLBACK(_write) \
- devcb = &downcast<amiga_fdc_device &>(*device).set_dskblk_wr_callback(DEVCB_##_write);
+ downcast<amiga_fdc_device &>(*device).set_dskblk_wr_callback(DEVCB_##_write);
#define MCFG_AMIGA_FDC_DSKSYN_CALLBACK(_write) \
- devcb = &downcast<amiga_fdc_device &>(*device).set_dsksyn_wr_callback(DEVCB_##_write);
+ downcast<amiga_fdc_device &>(*device).set_dsksyn_wr_callback(DEVCB_##_write);
class amiga_fdc_device : public device_t {
public:
diff --git a/src/devices/machine/at45dbxx.h b/src/devices/machine/at45dbxx.h
index f215a22c7fe..c0df28a49f4 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 = &downcast<at45db041_device &>(*device).set_so_cb(DEVCB_##_cb);
+ downcast<at45db041_device &>(*device).set_so_cb(DEVCB_##_cb);
// ======================> at45db041_device
diff --git a/src/devices/machine/at_keybc.h b/src/devices/machine/at_keybc.h
index b32a85286d1..a80887d2918 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 = &downcast<at_keyboard_controller_device &>(*device).set_system_reset_callback(DEVCB_##_devcb);
+ downcast<at_keyboard_controller_device &>(*device).set_system_reset_callback(DEVCB_##_devcb);
#define MCFG_AT_KEYBOARD_CONTROLLER_GATE_A20_CB(_devcb) \
- devcb = &downcast<at_keyboard_controller_device &>(*device).set_gate_a20_callback(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 = &downcast<at_keyboard_controller_device &>(*device).set_input_buffer_full_callback(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 = &downcast<at_keyboard_controller_device &>(*device).set_output_buffer_empty_callback(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 = &downcast<at_keyboard_controller_device &>(*device).set_keyboard_clock_callback(DEVCB_##_devcb);
+ downcast<at_keyboard_controller_device &>(*device).set_keyboard_clock_callback(DEVCB_##_devcb);
#define MCFG_AT_KEYBOARD_CONTROLLER_KEYBOARD_DATA_CB(_devcb) \
- devcb = &downcast<at_keyboard_controller_device &>(*device).set_keyboard_data_callback(DEVCB_##_devcb);
+ downcast<at_keyboard_controller_device &>(*device).set_keyboard_data_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/ataintf.h b/src/devices/machine/ataintf.h
index 202803e70e8..cd11d90180c 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 = &downcast<abstract_ata_interface_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<abstract_ata_interface_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_ATA_INTERFACE_DMARQ_HANDLER(_devcb) \
- devcb = &downcast<abstract_ata_interface_device &>(*device).set_dmarq_handler(DEVCB_##_devcb);
+ downcast<abstract_ata_interface_device &>(*device).set_dmarq_handler(DEVCB_##_devcb);
#define MCFG_ATA_INTERFACE_DASP_HANDLER(_devcb) \
- devcb = &downcast<abstract_ata_interface_device &>(*device).set_dasp_handler(DEVCB_##_devcb);
+ downcast<abstract_ata_interface_device &>(*device).set_dasp_handler(DEVCB_##_devcb);
void ata_devices(device_slot_interface &device);
diff --git a/src/devices/machine/atmel_arm_aic.h b/src/devices/machine/atmel_arm_aic.h
index db30986bb2d..b91c1b2598f 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 = &downcast<arm_aic_device &>(*device).set_line_callback(DEVCB_##_devcb);
+ downcast<arm_aic_device &>(*device).set_line_callback(DEVCB_##_devcb);
class arm_aic_device : public device_t
{
diff --git a/src/devices/machine/ay31015.h b/src/devices/machine/ay31015.h
index 85206d673c3..35169536e31 100644
--- a/src/devices/machine/ay31015.h
+++ b/src/devices/machine/ay31015.h
@@ -33,6 +33,14 @@ public:
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)); }
+ auto read_si_callback() { return m_read_si_cb.bind(); }
+ auto write_so_callback() { return m_write_so_cb.bind(); }
+ auto write_pe_callback() { return m_write_pe_cb.bind(); }
+ auto write_fe_callback() { return m_write_fe_cb.bind(); }
+ auto write_or_callback() { return m_write_or_cb.bind(); }
+ auto write_dav_callback() { return m_write_dav_cb.bind(); }
+ auto write_tbmt_callback() { return m_write_tbmt_cb.bind(); }
+ auto write_eoc_callback() { return m_write_eoc_cb.bind(); }
/* Set an input pin */
DECLARE_WRITE_LINE_MEMBER(write_swe) { set_input_pin(SWE, state); }
@@ -208,28 +216,28 @@ DECLARE_DEVICE_TYPE(AY51013, ay51013_device) // For AY-3-1014, AY-5-1013 and A
downcast<ay31015_device &>(*device).set_auto_rdav(_auto_rdav);
#define MCFG_AY31015_READ_SI_CB(_devcb) \
- devcb = &downcast<ay31015_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
+ downcast<ay31015_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_SO_CB(_devcb) \
- devcb = &downcast<ay31015_device &>(*device).set_write_so_callback(DEVCB_##_devcb);
+ downcast<ay31015_device &>(*device).set_write_so_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_PE_CB(_devcb) \
- devcb = &downcast<ay31015_device &>(*device).set_write_pe_callback(DEVCB_##_devcb);
+ downcast<ay31015_device &>(*device).set_write_pe_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_FE_CB(_devcb) \
- devcb = &downcast<ay31015_device &>(*device).set_write_fe_callback(DEVCB_##_devcb);
+ downcast<ay31015_device &>(*device).set_write_fe_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_OR_CB(_devcb) \
- devcb = &downcast<ay31015_device &>(*device).set_write_or_callback(DEVCB_##_devcb);
+ downcast<ay31015_device &>(*device).set_write_or_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_DAV_CB(_devcb) \
- devcb = &downcast<ay31015_device &>(*device).set_write_dav_callback(DEVCB_##_devcb);
+ downcast<ay31015_device &>(*device).set_write_dav_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_TBMT_CB(_devcb) \
- devcb = &downcast<ay31015_device &>(*device).set_write_tbmt_callback(DEVCB_##_devcb);
+ downcast<ay31015_device &>(*device).set_write_tbmt_callback(DEVCB_##_devcb);
#define MCFG_AY31015_WRITE_EOC_CB(_devcb) \
- devcb = &downcast<ay31015_device &>(*device).set_write_eoc_callback(DEVCB_##_devcb);
+ downcast<ay31015_device &>(*device).set_write_eoc_callback(DEVCB_##_devcb);
#define MCFG_AY51013_TX_CLOCK(_txclk) \
@@ -242,27 +250,27 @@ DECLARE_DEVICE_TYPE(AY51013, ay51013_device) // For AY-3-1014, AY-5-1013 and A
downcast<ay51013_device &>(*device).set_auto_rdav(_auto_rdav);
#define MCFG_AY51013_READ_SI_CB(_devcb) \
- devcb = &downcast<ay51013_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
+ downcast<ay51013_device &>(*device).set_read_si_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_SO_CB(_devcb) \
- devcb = &downcast<ay51013_device &>(*device).set_write_so_callback(DEVCB_##_devcb);
+ downcast<ay51013_device &>(*device).set_write_so_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_PE_CB(_devcb) \
- devcb = &downcast<ay51013_device &>(*device).set_write_pe_callback(DEVCB_##_devcb);
+ downcast<ay51013_device &>(*device).set_write_pe_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_FE_CB(_devcb) \
- devcb = &downcast<ay51013_device &>(*device).set_write_fe_callback(DEVCB_##_devcb);
+ downcast<ay51013_device &>(*device).set_write_fe_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_OR_CB(_devcb) \
- devcb = &downcast<ay51013_device &>(*device).set_write_or_callback(DEVCB_##_devcb);
+ downcast<ay51013_device &>(*device).set_write_or_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_DAV_CB(_devcb) \
- devcb = &downcast<ay51013_device &>(*device).set_write_dav_callback(DEVCB_##_devcb);
+ downcast<ay51013_device &>(*device).set_write_dav_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_TBMT_CB(_devcb) \
- devcb = &downcast<ay51013_device &>(*device).set_write_tbmt_callback(DEVCB_##_devcb);
+ downcast<ay51013_device &>(*device).set_write_tbmt_callback(DEVCB_##_devcb);
#define MCFG_AY51013_WRITE_EOC_CB(_devcb) \
- devcb = &downcast<ay51013_device &>(*device).set_write_eoc_callback(DEVCB_##_devcb);
+ downcast<ay51013_device &>(*device).set_write_eoc_callback(DEVCB_##_devcb);
#endif // MAME_MACHINE_AY31015_H
diff --git a/src/devices/machine/busmouse.h b/src/devices/machine/busmouse.h
index 07860904e89..b0e4a23370c 100644
--- a/src/devices/machine/busmouse.h
+++ b/src/devices/machine/busmouse.h
@@ -17,7 +17,7 @@
//**************************************************************************
#define MCFG_BUS_MOUSE_EXTINT_CALLBACK(_write) \
- devcb = &bus_mouse_device::set_extint_wr_callback(*device, DEVCB_##_write);
+ bus_mouse_device::set_extint_wr_callback(*device, DEVCB_##_write);
//**************************************************************************
diff --git a/src/devices/machine/cdp1852.h b/src/devices/machine/cdp1852.h
index 70562f85e7e..ed22bfccaff 100644
--- a/src/devices/machine/cdp1852.h
+++ b/src/devices/machine/cdp1852.h
@@ -34,16 +34,16 @@
//**************************************************************************
#define MCFG_CDP1852_MODE_CALLBACK(_read) \
- devcb = &downcast<cdp1852_device &>(*device).set_mode_rd_callback(DEVCB_##_read);
+ downcast<cdp1852_device &>(*device).set_mode_rd_callback(DEVCB_##_read);
#define MCFG_CDP1852_SR_CALLBACK(_write) \
- devcb = &downcast<cdp1852_device &>(*device).set_sr_wr_callback(DEVCB_##_write);
+ downcast<cdp1852_device &>(*device).set_sr_wr_callback(DEVCB_##_write);
#define MCFG_CDP1852_DI_CALLBACK(_read) \
- devcb = &downcast<cdp1852_device &>(*device).set_data_rd_callback(DEVCB_##_read);
+ downcast<cdp1852_device &>(*device).set_data_rd_callback(DEVCB_##_read);
#define MCFG_CDP1852_DO_CALLBACK(_write) \
- devcb = &downcast<cdp1852_device &>(*device).set_data_wr_callback(DEVCB_##_write);
+ downcast<cdp1852_device &>(*device).set_data_wr_callback(DEVCB_##_write);
diff --git a/src/devices/machine/cdp1871.h b/src/devices/machine/cdp1871.h
index 74ce06d4b9a..31215164a6f 100644
--- a/src/devices/machine/cdp1871.h
+++ b/src/devices/machine/cdp1871.h
@@ -42,43 +42,43 @@
//**************************************************************************
#define MCFG_CDP1871_D1_CALLBACK(_read) \
- devcb = &downcast<cdp1871_device &>(*device).set_d1_rd_callback(DEVCB_##_read);
+ downcast<cdp1871_device &>(*device).set_d1_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D2_CALLBACK(_read) \
- devcb = &downcast<cdp1871_device &>(*device).set_d2_rd_callback(DEVCB_##_read);
+ downcast<cdp1871_device &>(*device).set_d2_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D3_CALLBACK(_read) \
- devcb = &downcast<cdp1871_device &>(*device).set_d3_rd_callback(DEVCB_##_read);
+ downcast<cdp1871_device &>(*device).set_d3_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D4_CALLBACK(_read) \
- devcb = &downcast<cdp1871_device &>(*device).set_d4_rd_callback(DEVCB_##_read);
+ downcast<cdp1871_device &>(*device).set_d4_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D5_CALLBACK(_read) \
- devcb = &downcast<cdp1871_device &>(*device).set_d5_rd_callback(DEVCB_##_read);
+ downcast<cdp1871_device &>(*device).set_d5_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D6_CALLBACK(_read) \
- devcb = &downcast<cdp1871_device &>(*device).set_d6_rd_callback(DEVCB_##_read);
+ downcast<cdp1871_device &>(*device).set_d6_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D7_CALLBACK(_read) \
- devcb = &downcast<cdp1871_device &>(*device).set_d7_rd_callback(DEVCB_##_read);
+ downcast<cdp1871_device &>(*device).set_d7_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D8_CALLBACK(_read) \
- devcb = &downcast<cdp1871_device &>(*device).set_d8_rd_callback(DEVCB_##_read);
+ downcast<cdp1871_device &>(*device).set_d8_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D9_CALLBACK(_read) \
- devcb = &downcast<cdp1871_device &>(*device).set_d9_rd_callback(DEVCB_##_read);
+ downcast<cdp1871_device &>(*device).set_d9_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D10_CALLBACK(_read) \
- devcb = &downcast<cdp1871_device &>(*device).set_d10_rd_callback(DEVCB_##_read);
+ downcast<cdp1871_device &>(*device).set_d10_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_D11_CALLBACK(_read) \
- devcb = &downcast<cdp1871_device &>(*device).set_d11_rd_callback(DEVCB_##_read);
+ downcast<cdp1871_device &>(*device).set_d11_rd_callback(DEVCB_##_read);
#define MCFG_CDP1871_DA_CALLBACK(_write) \
- devcb = &downcast<cdp1871_device &>(*device).set_da_wr_callback(DEVCB_##_write);
+ downcast<cdp1871_device &>(*device).set_da_wr_callback(DEVCB_##_write);
#define MCFG_CDP1871_RPT_CALLBACK(_write) \
- devcb = &downcast<cdp1871_device &>(*device).set_rpt_wr_callback(DEVCB_##_write);
+ downcast<cdp1871_device &>(*device).set_rpt_wr_callback(DEVCB_##_write);
diff --git a/src/devices/machine/cdp1879.h b/src/devices/machine/cdp1879.h
index 6a3a1faaa36..4563fe7376a 100644
--- a/src/devices/machine/cdp1879.h
+++ b/src/devices/machine/cdp1879.h
@@ -19,7 +19,7 @@
//**************************************************************************
#define MCFG_CDP1879_IRQ_CALLBACK(_cb) \
- devcb = &downcast<cdp1879_device &>(*device).set_irq_cb(DEVCB_##_cb);
+ downcast<cdp1879_device &>(*device).set_irq_cb(DEVCB_##_cb);
//**************************************************************************
diff --git a/src/devices/machine/clock.h b/src/devices/machine/clock.h
index dc87e7a4f60..dbe6cd00bd9 100644
--- a/src/devices/machine/clock.h
+++ b/src/devices/machine/clock.h
@@ -10,14 +10,15 @@
MCFG_DEVICE_ADD(_tag, CLOCK, _clock)
#define MCFG_CLOCK_SIGNAL_HANDLER(_devcb) \
- devcb = &downcast<clock_device &>(*device).set_signal_handler(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> devcb_base &set_signal_handler(Object &&cb) { return m_signal_handler.set_callback(std::forward<Object>(cb)); }
+ auto signal_handler() { return m_signal_handler.bind(); }
+
+ clock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual void device_start() override;
diff --git a/src/devices/machine/com8116.h b/src/devices/machine/com8116.h
index 44b78920925..1981571fa5c 100644
--- a/src/devices/machine/com8116.h
+++ b/src/devices/machine/com8116.h
@@ -34,13 +34,13 @@
///*************************************************************************
#define MCFG_COM8116_FX4_HANDLER(_devcb) \
- devcb = &downcast<com8116_device &>(*device).set_fx4_handler(DEVCB_##_devcb);
+ downcast<com8116_device &>(*device).set_fx4_handler(DEVCB_##_devcb);
#define MCFG_COM8116_FR_HANDLER(_devcb) \
- devcb = &downcast<com8116_device &>(*device).set_fr_handler(DEVCB_##_devcb);
+ downcast<com8116_device &>(*device).set_fr_handler(DEVCB_##_devcb);
#define MCFG_COM8116_FT_HANDLER(_devcb) \
- devcb = &downcast<com8116_device &>(*device).set_ft_handler(DEVCB_##_devcb);
+ downcast<com8116_device &>(*device).set_ft_handler(DEVCB_##_devcb);
///*************************************************************************
@@ -58,6 +58,9 @@ public:
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)); }
+ auto fx4_handler() { return m_fx4_handler.bind(); }
+ auto fr_handler() { return m_fr_handler.bind(); }
+ auto ft_handler() { return m_ft_handler.bind(); }
void write_str(uint8_t data);
void write_stt(uint8_t data);
diff --git a/src/devices/machine/cr511b.h b/src/devices/machine/cr511b.h
index d305880a87c..e75eb84d4da 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 = &downcast<cr511b_device &>(*device).set_stch_handler(DEVCB_##_devcb);
+ downcast<cr511b_device &>(*device).set_stch_handler(DEVCB_##_devcb);
#define MCFG_CR511B_STEN_HANDLER(_devcb) \
- devcb = &downcast<cr511b_device &>(*device).set_sten_handler(DEVCB_##_devcb);
+ downcast<cr511b_device &>(*device).set_sten_handler(DEVCB_##_devcb);
#define MCFG_CR511B_DRQ_HANDLER(_devcb) \
- devcb = &downcast<cr511b_device &>(*device).set_drq_handler(DEVCB_##_devcb);
+ downcast<cr511b_device &>(*device).set_drq_handler(DEVCB_##_devcb);
#define MCFG_CR511B_DTEN_HANDLER(_devcb) \
- devcb = &downcast<cr511b_device &>(*device).set_dten_handler(DEVCB_##_devcb);
+ downcast<cr511b_device &>(*device).set_dten_handler(DEVCB_##_devcb);
#define MCFG_CR511B_SCOR_HANDLER(_devcb) \
- devcb = &downcast<cr511b_device &>(*device).set_scor_handler(DEVCB_##_devcb);
+ downcast<cr511b_device &>(*device).set_scor_handler(DEVCB_##_devcb);
#define MCFG_CR511B_XAEN_HANDLER(_devcb) \
- devcb = &downcast<cr511b_device &>(*device).set_xaen_handler(DEVCB_##_devcb);
+ downcast<cr511b_device &>(*device).set_xaen_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -83,6 +83,12 @@ public:
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)); }
+ auto stch_handler() { return m_stch_handler.bind(); }
+ auto sten_handler() { return m_sten_handler.bind(); }
+ auto drq_handler() { return m_drq_handler.bind(); }
+ auto dten_handler() { return m_dten_handler.bind(); }
+ auto scor_handler() { return m_scor_handler.bind(); }
+ auto xaen_handler() { return m_xaen_handler.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER ( write );
diff --git a/src/devices/machine/cs4031.cpp b/src/devices/machine/cs4031.cpp
index b6d66bfea25..371cf24270d 100644
--- a/src/devices/machine/cs4031.cpp
+++ b/src/devices/machine/cs4031.cpp
@@ -131,12 +131,12 @@ MACHINE_CONFIG_START(cs4031_device::device_add_mconfig)
MCFG_DEVICE_ADD("intc1", PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, cs4031_device, intc1_int_w))
- MCFG_PIC8259_IN_SP_CB(VCC)
+ MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, cs4031_device, intc1_slave_ack_r))
MCFG_DEVICE_ADD("intc2", PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(WRITELINE("intc1", pic8259_device, ir2_w))
- MCFG_PIC8259_IN_SP_CB(GND)
+ MCFG_PIC8259_IN_SP_CB(CONSTANT(0))
MCFG_DEVICE_ADD("ctc", PIT8254, 0)
MCFG_PIT8253_CLK0(XTAL(14'318'181) / 12.0)
diff --git a/src/devices/machine/cs4031.h b/src/devices/machine/cs4031.h
index 9b1f209b9b6..c03a1cc0e43 100644
--- a/src/devices/machine/cs4031.h
+++ b/src/devices/machine/cs4031.h
@@ -44,31 +44,31 @@
downcast<cs4031_device &>(*device).set_keybctag(_keybctag);
#define MCFG_CS4031_IOR(_ior) \
- devcb = &downcast<cs4031_device *>(device)->set_ior_callback(DEVCB_##_ior);
+ downcast<cs4031_device *>(device)->set_ior_callback(DEVCB_##_ior);
#define MCFG_CS4031_IOW(_iow) \
- devcb = &downcast<cs4031_device *>(device)->set_iow_callback(DEVCB_##_iow);
+ downcast<cs4031_device *>(device)->set_iow_callback(DEVCB_##_iow);
#define MCFG_CS4031_TC(_tc) \
- devcb = &downcast<cs4031_device *>(device)->set_tc_callback(DEVCB_##_tc);
+ downcast<cs4031_device *>(device)->set_tc_callback(DEVCB_##_tc);
#define MCFG_CS4031_HOLD(_hold) \
- devcb = &downcast<cs4031_device *>(device)->set_hold_callback(DEVCB_##_hold);
+ downcast<cs4031_device *>(device)->set_hold_callback(DEVCB_##_hold);
#define MCFG_CS4031_NMI(_nmi) \
- devcb = &downcast<cs4031_device *>(device)->set_nmi_callback(DEVCB_##_nmi);
+ downcast<cs4031_device *>(device)->set_nmi_callback(DEVCB_##_nmi);
#define MCFG_CS4031_INTR(_intr) \
- devcb = &downcast<cs4031_device *>(device)->set_intr_callback(DEVCB_##_intr);
+ downcast<cs4031_device *>(device)->set_intr_callback(DEVCB_##_intr);
#define MCFG_CS4031_CPURESET(_cpureset) \
- devcb = &downcast<cs4031_device *>(device)->set_cpureset_callback(DEVCB_##_cpureset);
+ downcast<cs4031_device *>(device)->set_cpureset_callback(DEVCB_##_cpureset);
#define MCFG_CS4031_A20M(_a20m) \
- devcb = &downcast<cs4031_device *>(device)->set_a20m_callback(DEVCB_##_a20m);
+ downcast<cs4031_device *>(device)->set_a20m_callback(DEVCB_##_a20m);
#define MCFG_CS4031_SPKR(_spkr) \
- devcb = &downcast<cs4031_device *>(device)->set_spkr_callback(DEVCB_##_spkr);
+ downcast<cs4031_device *>(device)->set_spkr_callback(DEVCB_##_spkr);
//**************************************************************************
diff --git a/src/devices/machine/cxd1095.h b/src/devices/machine/cxd1095.h
index 83b04b6b98e..86ecb58de65 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 = &downcast<cxd1095_device &>(*device).set_input_cb(0, DEVCB_##_devcb);
+ downcast<cxd1095_device &>(*device).set_input_cb(0, DEVCB_##_devcb);
#define MCFG_CXD1095_IN_PORTB_CB(_devcb) \
- devcb = &downcast<cxd1095_device &>(*device).set_input_cb(1, DEVCB_##_devcb);
+ downcast<cxd1095_device &>(*device).set_input_cb(1, DEVCB_##_devcb);
#define MCFG_CXD1095_IN_PORTC_CB(_devcb) \
- devcb = &downcast<cxd1095_device &>(*device).set_input_cb(2, DEVCB_##_devcb);
+ downcast<cxd1095_device &>(*device).set_input_cb(2, DEVCB_##_devcb);
#define MCFG_CXD1095_IN_PORTD_CB(_devcb) \
- devcb = &downcast<cxd1095_device &>(*device).set_input_cb(3, DEVCB_##_devcb);
+ downcast<cxd1095_device &>(*device).set_input_cb(3, DEVCB_##_devcb);
#define MCFG_CXD1095_IN_PORTE_CB(_devcb) \
- devcb = &downcast<cxd1095_device &>(*device).set_input_cb(4, DEVCB_##_devcb);
+ downcast<cxd1095_device &>(*device).set_input_cb(4, DEVCB_##_devcb);
#define MCFG_CXD1095_OUT_PORTA_CB(_devcb) \
- devcb = &downcast<cxd1095_device &>(*device).set_output_cb(0, DEVCB_##_devcb);
+ downcast<cxd1095_device &>(*device).set_output_cb(0, DEVCB_##_devcb);
#define MCFG_CXD1095_OUT_PORTB_CB(_devcb) \
- devcb = &downcast<cxd1095_device &>(*device).set_output_cb(1, DEVCB_##_devcb);
+ downcast<cxd1095_device &>(*device).set_output_cb(1, DEVCB_##_devcb);
#define MCFG_CXD1095_OUT_PORTC_CB(_devcb) \
- devcb = &downcast<cxd1095_device &>(*device).set_output_cb(2, DEVCB_##_devcb);
+ downcast<cxd1095_device &>(*device).set_output_cb(2, DEVCB_##_devcb);
#define MCFG_CXD1095_OUT_PORTD_CB(_devcb) \
- devcb = &downcast<cxd1095_device &>(*device).set_output_cb(3, DEVCB_##_devcb);
+ downcast<cxd1095_device &>(*device).set_output_cb(3, DEVCB_##_devcb);
#define MCFG_CXD1095_OUT_PORTE_CB(_devcb) \
- devcb = &downcast<cxd1095_device &>(*device).set_output_cb(4, DEVCB_##_devcb);
+ downcast<cxd1095_device &>(*device).set_output_cb(4, DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/dmac.h b/src/devices/machine/dmac.h
index 7fad643c69b..8c72c02d05d 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 = &downcast<amiga_dmac_device &>(*device).set_cfgout_handler(DEVCB_##_devcb);
+ downcast<amiga_dmac_device &>(*device).set_cfgout_handler(DEVCB_##_devcb);
#define MCFG_DMAC_INT_HANDLER(_devcb) \
- devcb = &downcast<amiga_dmac_device &>(*device).set_int_handler(DEVCB_##_devcb);
+ downcast<amiga_dmac_device &>(*device).set_int_handler(DEVCB_##_devcb);
#define MCFG_DMAC_XDACK_HANDLER(_devcb) \
- devcb = &downcast<amiga_dmac_device &>(*device).set_xdack_handler(DEVCB_##_devcb);
+ downcast<amiga_dmac_device &>(*device).set_xdack_handler(DEVCB_##_devcb);
#define MCFG_DMAC_SCSI_READ_HANDLER(_devcb) \
- devcb = &downcast<amiga_dmac_device &>(*device).set_scsi_read_handler(DEVCB_##_devcb);
+ downcast<amiga_dmac_device &>(*device).set_scsi_read_handler(DEVCB_##_devcb);
#define MCFG_DMAC_SCSI_WRITE_HANDLER(_devcb) \
- devcb = &downcast<amiga_dmac_device &>(*device).set_scsi_write_handler(DEVCB_##_devcb);
+ downcast<amiga_dmac_device &>(*device).set_scsi_write_handler(DEVCB_##_devcb);
#define MCFG_DMAC_IO_READ_HANDLER(_devcb) \
- devcb = &downcast<amiga_dmac_device &>(*device).set_io_read_handler(DEVCB_##_devcb);
+ downcast<amiga_dmac_device &>(*device).set_io_read_handler(DEVCB_##_devcb);
#define MCFG_DMAC_IO_WRITE_HANDLER(_devcb) \
- devcb = &downcast<amiga_dmac_device &>(*device).set_io_write_handler(DEVCB_##_devcb);
+ downcast<amiga_dmac_device &>(*device).set_io_write_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/dp8390.h b/src/devices/machine/dp8390.h
index da1bf993833..74b57f027d1 100644
--- a/src/devices/machine/dp8390.h
+++ b/src/devices/machine/dp8390.h
@@ -9,28 +9,28 @@
// device stuff
#define MCFG_DP8390D_IRQ_CB(_devcb) \
- devcb = &downcast<dp8390_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<dp8390_device &>(*device).set_irq_callback(DEVCB_##_devcb);
#define MCFG_DP8390D_BREQ_CB(_devcb) \
- devcb = &downcast<dp8390_device &>(*device).set_breq_callback(DEVCB_##_devcb);
+ downcast<dp8390_device &>(*device).set_breq_callback(DEVCB_##_devcb);
#define MCFG_DP8390D_MEM_READ_CB(_devcb) \
- devcb = &downcast<dp8390_device &>(*device).set_mem_read_callback(DEVCB_##_devcb);
+ downcast<dp8390_device &>(*device).set_mem_read_callback(DEVCB_##_devcb);
#define MCFG_DP8390D_MEM_WRITE_CB(_devcb) \
- devcb = &downcast<dp8390_device &>(*device).set_mem_write_callback(DEVCB_##_devcb);
+ downcast<dp8390_device &>(*device).set_mem_write_callback(DEVCB_##_devcb);
#define MCFG_RTL8019A_IRQ_CB(_devcb) \
- devcb = &downcast<rtl8019a_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<rtl8019a_device &>(*device).set_irq_callback(DEVCB_##_devcb);
#define MCFG_RTL8019A_BREQ_CB(_devcb) \
- devcb = &downcast<rtl8019a_device &>(*device).set_breq_callback(DEVCB_##_devcb);
+ downcast<rtl8019a_device &>(*device).set_breq_callback(DEVCB_##_devcb);
#define MCFG_RTL8019A_MEM_READ_CB(_devcb) \
- devcb = &downcast<rtl8019a_device &>(*device).set_mem_read_callback(DEVCB_##_devcb);
+ downcast<rtl8019a_device &>(*device).set_mem_read_callback(DEVCB_##_devcb);
#define MCFG_RTL8019A_MEM_WRITE_CB(_devcb) \
- devcb = &downcast<rtl8019a_device &>(*device).set_mem_write_callback(DEVCB_##_devcb);
+ downcast<rtl8019a_device &>(*device).set_mem_write_callback(DEVCB_##_devcb);
class dp8390_device : public device_t, public device_network_interface
diff --git a/src/devices/machine/ds1315.h b/src/devices/machine/ds1315.h
index b1f8b11b399..21a7f37c14f 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 = &downcast<ds1315_device &>(*device).set_backing_handler(DEVCB_##_devcb);
+ downcast<ds1315_device &>(*device).set_backing_handler(DEVCB_##_devcb);
/***************************************************************************
MACROS
diff --git a/src/devices/machine/ds1386.h b/src/devices/machine/ds1386.h
index e01082cf578..5188cf949b9 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 = &downcast<ds1386_device &>(*device).set_inta_cb(DEVCB_##_devcb);
+ downcast<ds1386_device &>(*device).set_inta_cb(DEVCB_##_devcb);
#define MCFG_DS1386_INTB_HANDLER(_devcb) \
- devcb = &downcast<ds1386_device &>(*device).set_intb_cb(DEVCB_##_devcb);
+ downcast<ds1386_device &>(*device).set_intb_cb(DEVCB_##_devcb);
#define MCFG_DS1386_SQW_HANDLER(_devcb) \
- devcb = &downcast<ds1386_device &>(*device).set_sqw_cb(DEVCB_##_devcb);
+ downcast<ds1386_device &>(*device).set_sqw_cb(DEVCB_##_devcb);
// devices
diff --git a/src/devices/machine/ds75161a.h b/src/devices/machine/ds75161a.h
index 71c93dc2b6b..58d257a27ae 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 = &downcast<ds75161a_device &>(*device).set_in_ren_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_in_ren_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_IFC_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_in_ifc_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_in_ifc_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_NDAC_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_in_ndac_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_in_ndac_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_NRFD_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_in_nrfd_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_in_nrfd_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_DAV_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_in_dav_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_in_dav_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_EOI_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_in_eoi_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_in_eoi_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_ATN_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_in_atn_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_in_atn_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_IN_SRQ_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_in_srq_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_in_srq_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_REN_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_out_ren_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_out_ren_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_IFC_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_out_ifc_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_out_ifc_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_NDAC_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_out_ndac_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_out_ndac_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_NRFD_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_out_nrfd_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_out_nrfd_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_DAV_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_out_dav_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_out_dav_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_EOI_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_out_eoi_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_out_eoi_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_ATN_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_out_atn_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_out_atn_callback(DEVCB_##_devcb);
#define MCFG_DS75161A_OUT_SRQ_CB(_devcb) \
- devcb = &downcast<ds75161a_device &>(*device).set_out_srq_callback(DEVCB_##_devcb);
+ downcast<ds75161a_device &>(*device).set_out_srq_callback(DEVCB_##_devcb);
///*************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/e05a03.h b/src/devices/machine/e05a03.h
index fccb187b085..6623c7e4c53 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 = &downcast<e05a03_device &>(*device).set_nlq_lp_wr_callback(DEVCB_##_write);
+ downcast<e05a03_device &>(*device).set_nlq_lp_wr_callback(DEVCB_##_write);
#define MCFG_E05A03_PE_LP_CALLBACK(_write) \
- devcb = &downcast<e05a03_device &>(*device).set_pe_lp_wr_callback(DEVCB_##_write);
+ downcast<e05a03_device &>(*device).set_pe_lp_wr_callback(DEVCB_##_write);
#define MCFG_E05A03_RESO_CALLBACK(_write) \
- devcb = &downcast<e05a03_device &>(*device).set_reso_wr_callback(DEVCB_##_write);
+ downcast<e05a03_device &>(*device).set_reso_wr_callback(DEVCB_##_write);
#define MCFG_E05A03_PE_CALLBACK(_write) \
- devcb = &downcast<e05a03_device &>(*device).set_pe_wr_callback(DEVCB_##_write);
+ downcast<e05a03_device &>(*device).set_pe_wr_callback(DEVCB_##_write);
#define MCFG_E05A03_DATA_CALLBACK(_read) \
- devcb = &downcast<e05a03_device &>(*device).set_data_rd_callback(DEVCB_##_read);
+ downcast<e05a03_device &>(*device).set_data_rd_callback(DEVCB_##_read);
/***************************************************************************
diff --git a/src/devices/machine/e05a30.h b/src/devices/machine/e05a30.h
index 0f79a2fe491..7875dbef4c2 100644
--- a/src/devices/machine/e05a30.h
+++ b/src/devices/machine/e05a30.h
@@ -13,31 +13,31 @@
***************************************************************************/
#define MCFG_E05A30_PRINTHEAD_CALLBACK(_write) \
- devcb = &downcast<e05a30_device &>(*device).set_printhead_wr_callback(DEVCB_##_write);
+ downcast<e05a30_device &>(*device).set_printhead_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_PF_STEPPER_CALLBACK(_write) \
- devcb = &downcast<e05a30_device &>(*device).set_pf_stepper_wr_callback(DEVCB_##_write);
+ downcast<e05a30_device &>(*device).set_pf_stepper_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CR_STEPPER_CALLBACK(_write) \
- devcb = &downcast<e05a30_device &>(*device).set_cr_stepper_wr_callback(DEVCB_##_write);
+ downcast<e05a30_device &>(*device).set_cr_stepper_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_READY_CALLBACK(_write) \
- devcb = &downcast<e05a30_device &>(*device).set_ready_wr_callback(DEVCB_##_write);
+ downcast<e05a30_device &>(*device).set_ready_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CENTRONICS_ACK_CALLBACK(_write) \
- devcb = &downcast<e05a30_device &>(*device).set_centronics_ack_wr_callback(DEVCB_##_write);
+ downcast<e05a30_device &>(*device).set_centronics_ack_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CENTRONICS_BUSY_CALLBACK(_write) \
- devcb = &downcast<e05a30_device &>(*device).set_centronics_busy_wr_callback(DEVCB_##_write);
+ downcast<e05a30_device &>(*device).set_centronics_busy_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CENTRONICS_PERROR_CALLBACK(_write) \
- devcb = &downcast<e05a30_device &>(*device).set_centronics_perror_wr_callback(DEVCB_##_write);
+ downcast<e05a30_device &>(*device).set_centronics_perror_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CENTRONICS_FAULT_CALLBACK(_write) \
- devcb = &downcast<e05a30_device &>(*device).set_centronics_fault_wr_callback(DEVCB_##_write);
+ downcast<e05a30_device &>(*device).set_centronics_fault_wr_callback(DEVCB_##_write);
#define MCFG_E05A30_CENTRONICS_SELECT_CALLBACK(_write) \
- devcb = &downcast<e05a30_device &>(*device).set_centronics_select_wr_callback(DEVCB_##_write);
+ downcast<e05a30_device &>(*device).set_centronics_select_wr_callback(DEVCB_##_write);
/***************************************************************************
TYPE DEFINITIONS
diff --git a/src/devices/machine/eepromser.h b/src/devices/machine/eepromser.h
index c68276da19a..c4a83365e26 100644
--- a/src/devices/machine/eepromser.h
+++ b/src/devices/machine/eepromser.h
@@ -21,7 +21,7 @@
//**************************************************************************
#define MCFG_EEPROM_SERIAL_DO_CALLBACK(_devcb) \
- devcb = &downcast<eeprom_serial_base_device &>(*device).set_do_callback(DEVCB_##_devcb);
+ downcast<eeprom_serial_base_device &>(*device).set_do_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -43,6 +43,7 @@ public:
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)); }
+ auto do_callback() { return m_do_cb.bind(); }
protected:
// construction/destruction
diff --git a/src/devices/machine/fdc37c93x.h b/src/devices/machine/fdc37c93x.h
index 8638fcfa173..d334a0ab2eb 100644
--- a/src/devices/machine/fdc37c93x.h
+++ b/src/devices/machine/fdc37c93x.h
@@ -168,18 +168,18 @@ DECLARE_DEVICE_TYPE(FDC37C93X, fdc37c93x_device);
fdc37c93x_device::static_set_sysopt_pin(*device, _pinvalue);
#define MCFG_FDC37C93X_GP20_RESET_CB(_devcb) \
- devcb = &downcast<fdc37c93x_device &>(*device).set_gp20_reset_callback(DEVCB_##_devcb);
+ downcast<fdc37c93x_device &>(*device).set_gp20_reset_callback(DEVCB_##_devcb);
#define MCFG_FDC37C93X_GP25_GATEA20_CB(_devcb) \
- devcb = &downcast<fdc37c93x_device &>(*device).set_gp25_gatea20_callback(DEVCB_##_devcb);
+ downcast<fdc37c93x_device &>(*device).set_gp25_gatea20_callback(DEVCB_##_devcb);
#define MCFG_FDC37C93X_IRQ1_CB(_devcb) \
- devcb = &downcast<fdc37c93x_device &>(*device).set_irq1_callback(DEVCB_##_devcb);
+ downcast<fdc37c93x_device &>(*device).set_irq1_callback(DEVCB_##_devcb);
#define MCFG_FDC37C93X_IRQ8_CB(_devcb) \
- devcb = &downcast<fdc37c93x_device &>(*device).set_irq8_callback(DEVCB_##_devcb);
+ downcast<fdc37c93x_device &>(*device).set_irq8_callback(DEVCB_##_devcb);
#define MCFG_FDC37C93X_IRQ9_CB(_devcb) \
- devcb = &downcast<fdc37c93x_device &>(*device).set_irq9_callback(DEVCB_##_devcb);
+ downcast<fdc37c93x_device &>(*device).set_irq9_callback(DEVCB_##_devcb);
#endif // MAME_MACHINE_FDC37C93X_H
diff --git a/src/devices/machine/fga002.h b/src/devices/machine/fga002.h
index 01372e41231..aab16fdaf9d 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 = &downcast<fga002_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
+ downcast<fga002_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
#define MCFG_FGA002_OUT_LIACK4_CB(_devcb) \
- devcb = &downcast<fga002_device &>(*device).set_liack4_callback(DEVCB_##_devcb);
+ downcast<fga002_device &>(*device).set_liack4_callback(DEVCB_##_devcb);
#define MCFG_FGA002_OUT_LIACK5_CB(_devcb) \
- devcb = &downcast<fga002_device &>(*device).set_liack5_callback(DEVCB_##_devcb);
+ downcast<fga002_device &>(*device).set_liack5_callback(DEVCB_##_devcb);
#define MCFG_FGA002_OUT_LIACK6_CB(_devcb) \
- devcb = &downcast<fga002_device &>(*device).set_liack6_callback(DEVCB_##_devcb);
+ downcast<fga002_device &>(*device).set_liack6_callback(DEVCB_##_devcb);
#define MCFG_FGA002_OUT_LIACK7_CB(_devcb) \
- devcb = &downcast<fga002_device &>(*device).set_liack7_callback(DEVCB_##_devcb);
+ downcast<fga002_device &>(*device).set_liack7_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/gayle.h b/src/devices/machine/gayle.h
index 81b0f6bafaa..64a75c6f518 100644
--- a/src/devices/machine/gayle.h
+++ b/src/devices/machine/gayle.h
@@ -24,19 +24,19 @@
downcast<gayle_device &>(*device).set_id(_id);
#define MCFG_GAYLE_INT2_HANDLER(_devcb) \
- devcb = &downcast<gayle_device &>(*device).set_int2_handler(DEVCB_##_devcb);
+ downcast<gayle_device &>(*device).set_int2_handler(DEVCB_##_devcb);
#define MCFG_GAYLE_CS0_READ_HANDLER(_devcb) \
- devcb = &downcast<gayle_device &>(*device).set_cs0_read_handler(DEVCB_##_devcb);
+ downcast<gayle_device &>(*device).set_cs0_read_handler(DEVCB_##_devcb);
#define MCFG_GAYLE_CS0_WRITE_HANDLER(_devcb) \
- devcb = &downcast<gayle_device &>(*device).set_cs0_write_handler(DEVCB_##_devcb);
+ downcast<gayle_device &>(*device).set_cs0_write_handler(DEVCB_##_devcb);
#define MCFG_GAYLE_CS1_READ_HANDLER(_devcb) \
- devcb = &downcast<gayle_device &>(*device).set_cs1_read_handler(DEVCB_##_devcb);
+ downcast<gayle_device &>(*device).set_cs1_read_handler(DEVCB_##_devcb);
#define MCFG_GAYLE_CS1_WRITE_HANDLER(_devcb) \
- devcb = &downcast<gayle_device &>(*device).set_cs1_write_handler(DEVCB_##_devcb);
+ downcast<gayle_device &>(*device).set_cs1_write_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/gen_fifo.h b/src/devices/machine/gen_fifo.h
index 430a760aaec..4db8a75d8c1 100644
--- a/src/devices/machine/gen_fifo.h
+++ b/src/devices/machine/gen_fifo.h
@@ -73,10 +73,10 @@
#define MCFG_GENERIC_FIFO_EMPTY_CALLBACK(_devcb) \
- devcb = &downcast<screen_device &>(*device).set_empty_cb(DEVCB_##_devcb);
+ downcast<screen_device &>(*device).set_empty_cb(DEVCB_##_devcb);
#define MCFG_GENERIC_FIFO_FULL_CALLBACK(_devcb) \
- devcb = &downcast<screen_device &>(*device).set_full_cb(DEVCB_##_devcb);
+ downcast<screen_device &>(*device).set_full_cb(DEVCB_##_devcb);
template<typename T> class generic_fifo_device_base : public device_t {
diff --git a/src/devices/machine/gen_latch.h b/src/devices/machine/gen_latch.h
index 702c26ff333..456bbaba8f7 100644
--- a/src/devices/machine/gen_latch.h
+++ b/src/devices/machine/gen_latch.h
@@ -32,7 +32,7 @@ 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 = &downcast<generic_latch_base_device &>(*device).set_data_pending_callback(DEVCB_##_devcb);
+ downcast<generic_latch_base_device &>(*device).set_data_pending_callback(DEVCB_##_devcb);
#define MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(_ack) \
downcast<generic_latch_base_device &>(*device).set_separate_acknowledge(_ack);
@@ -49,6 +49,7 @@ class generic_latch_base_device : public device_t
public:
// configuration
template <class Object> devcb_base &set_data_pending_callback(Object &&cb) { return m_data_pending_cb.set_callback(std::forward<Object>(cb)); }
+ auto data_pending_callback() { return m_data_pending_cb.bind(); }
void set_separate_acknowledge(bool ack) { m_separate_acknowledge = ack; }
DECLARE_READ_LINE_MEMBER(pending_r);
diff --git a/src/devices/machine/hd63450.h b/src/devices/machine/hd63450.h
index 8f0e6a654ad..67a5c6cfd88 100644
--- a/src/devices/machine/hd63450.h
+++ b/src/devices/machine/hd63450.h
@@ -11,34 +11,34 @@
#define MCFG_HD63450_DMA_END_CB(_devcb) \
- devcb = &downcast<hd63450_device &>(*device).set_dma_end_callback(DEVCB_##_devcb);
+ downcast<hd63450_device &>(*device).set_dma_end_callback(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_ERROR_CB(_devcb) \
- devcb = &downcast<hd63450_device &>(*device).set_dma_error_callback(DEVCB_##_devcb);
+ downcast<hd63450_device &>(*device).set_dma_error_callback(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_READ_0_CB(_devcb) \
- devcb = &downcast<hd63450_device &>(*device).set_dma_read_callback<0>(DEVCB_##_devcb);
+ downcast<hd63450_device &>(*device).set_dma_read_callback<0>(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_READ_1_CB(_devcb) \
- devcb = &downcast<hd63450_device &>(*device).set_dma_read_callback<1>(DEVCB_##_devcb);
+ downcast<hd63450_device &>(*device).set_dma_read_callback<1>(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_READ_2_CB(_devcb) \
- devcb = &downcast<hd63450_device &>(*device).set_dma_read_callback<2>(DEVCB_##_devcb);
+ downcast<hd63450_device &>(*device).set_dma_read_callback<2>(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_READ_3_CB(_devcb) \
- devcb = &downcast<hd63450_device &>(*device).set_dma_read_callback<3>(DEVCB_##_devcb);
+ downcast<hd63450_device &>(*device).set_dma_read_callback<3>(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_WRITE_0_CB(_devcb) \
- devcb = &downcast<hd63450_device &>(*device).set_dma_write_callback<0>(DEVCB_##_devcb);
+ downcast<hd63450_device &>(*device).set_dma_write_callback<0>(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_WRITE_1_CB(_devcb) \
- devcb = &downcast<hd63450_device &>(*device).set_dma_write_callback<1>(DEVCB_##_devcb);
+ downcast<hd63450_device &>(*device).set_dma_write_callback<1>(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_WRITE_2_CB(_devcb) \
- devcb = &downcast<hd63450_device &>(*device).set_dma_write_callback<2>(DEVCB_##_devcb);
+ downcast<hd63450_device &>(*device).set_dma_write_callback<2>(DEVCB_##_devcb);
#define MCFG_HD63450_DMA_WRITE_3_CB(_devcb) \
- devcb = &downcast<hd63450_device &>(*device).set_dma_write_callback<3>(DEVCB_##_devcb);
+ downcast<hd63450_device &>(*device).set_dma_write_callback<3>(DEVCB_##_devcb);
#define MCFG_HD63450_CPU(_tag) \
downcast<hd63450_device &>(*device).set_cpu_tag(_tag);
diff --git a/src/devices/machine/hd64610.h b/src/devices/machine/hd64610.h
index 948f6b4e549..38ffd560f4d 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 = &downcast<hd64610_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<hd64610_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_HD64610_OUT_1HZ_CB(_devcb) \
- devcb = &downcast<hd64610_device &>(*device).set_out_1hz_callback(DEVCB_##_devcb);
+ downcast<hd64610_device &>(*device).set_out_1hz_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/hdc92x4.h b/src/devices/machine/hdc92x4.h
index 9eb2e6f827b..08f3fea3b44 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 = &downcast<hdc92x4_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
+ 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 = &downcast<hdc92x4_device &>(*device).set_dmarq_wr_callback(DEVCB_##_write);
+ 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 = &downcast<hdc92x4_device &>(*device).set_dip_wr_callback(DEVCB_##_write);
+ 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 = &downcast<hdc92x4_device &>(*device).set_auxbus_wr_callback(DEVCB_##_write);
+ 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 = &downcast<hdc92x4_device &>(*device).set_dma_rd_callback(DEVCB_##_read);
+ 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 = &downcast<hdc92x4_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
+ downcast<hdc92x4_device &>(*device).set_dma_wr_callback(DEVCB_##_write);
//===================================================================
diff --git a/src/devices/machine/hp_taco.h b/src/devices/machine/hp_taco.h
index 3b926a0946a..42682aa76a4 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 = &downcast<hp_taco_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<hp_taco_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_TACO_FLG_HANDLER(_devcb) \
- devcb = &downcast<hp_taco_device &>(*device).set_flg_handler(DEVCB_##_devcb);
+ downcast<hp_taco_device &>(*device).set_flg_handler(DEVCB_##_devcb);
#define MCFG_TACO_STS_HANDLER(_devcb) \
- devcb = &downcast<hp_taco_device &>(*device).set_sts_handler(DEVCB_##_devcb);
+ downcast<hp_taco_device &>(*device).set_sts_handler(DEVCB_##_devcb);
class hp_taco_device : public device_t ,
public device_image_interface
diff --git a/src/devices/machine/i7220.h b/src/devices/machine/i7220.h
index 78aef97bdab..51eaf3ce917 100644
--- a/src/devices/machine/i7220.h
+++ b/src/devices/machine/i7220.h
@@ -43,10 +43,10 @@
///*************************************************************************
#define MCFG_I7220_IRQ_CALLBACK(_write) \
- devcb = &downcast<i7220_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
+ downcast<i7220_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
#define MCFG_I7220_DRQ_CALLBACK(_write) \
- devcb = &downcast<i7220_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
+ downcast<i7220_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
#define MCFG_I7220_DATA_SIZE(data_size) \
downcast<i7220_device &>(*device).set_data_size(data_size);
diff --git a/src/devices/machine/i80130.h b/src/devices/machine/i80130.h
index 385d361c423..c4ce3d855aa 100644
--- a/src/devices/machine/i80130.h
+++ b/src/devices/machine/i80130.h
@@ -21,22 +21,22 @@
///*************************************************************************
#define MCFG_I80130_IRQ_CALLBACK(_write) \
- devcb = &downcast<i80130_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<i80130_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_I80130_ACK_CALLBACK(_write) \
- devcb = &downcast<i80130_device &>(*device).set_ack_wr_callback(DEVCB_##_write);
+ downcast<i80130_device &>(*device).set_ack_wr_callback(DEVCB_##_write);
#define MCFG_I80130_LIR_CALLBACK(_write) \
- devcb = &downcast<i80130_device &>(*device).set_lir_wr_callback(DEVCB_##_write);
+ downcast<i80130_device &>(*device).set_lir_wr_callback(DEVCB_##_write);
#define MCFG_I80130_SYSTICK_CALLBACK(_write) \
- devcb = &downcast<i80130_device &>(*device).set_systick_wr_callback(DEVCB_##_write);
+ downcast<i80130_device &>(*device).set_systick_wr_callback(DEVCB_##_write);
#define MCFG_I80130_DELAY_CALLBACK(_write) \
- devcb = &downcast<i80130_device &>(*device).set_delay_wr_callback(DEVCB_##_write);
+ downcast<i80130_device &>(*device).set_delay_wr_callback(DEVCB_##_write);
#define MCFG_I80130_BAUD_CALLBACK(_write) \
- devcb = &downcast<i80130_device &>(*device).set_baud_wr_callback(DEVCB_##_write);
+ downcast<i80130_device &>(*device).set_baud_wr_callback(DEVCB_##_write);
diff --git a/src/devices/machine/i8087.h b/src/devices/machine/i8087.h
index 62c847e2cbf..e0d5ab7e87e 100644
--- a/src/devices/machine/i8087.h
+++ b/src/devices/machine/i8087.h
@@ -12,10 +12,10 @@
downcast<i8087_device &>(*device).set_data_width(_data_width);
#define MCFG_I8087_INT_HANDLER(_devcb) \
- devcb = &downcast<i8087_device &>(*device).set_int(DEVCB_##_devcb);
+ downcast<i8087_device &>(*device).set_int(DEVCB_##_devcb);
#define MCFG_I8087_BUSY_HANDLER(_devcb) \
- devcb = &downcast<i8087_device &>(*device).set_busy(DEVCB_##_devcb);
+ downcast<i8087_device &>(*device).set_busy(DEVCB_##_devcb);
DECLARE_DEVICE_TYPE(I8087, i8087_device)
diff --git a/src/devices/machine/i8155.h b/src/devices/machine/i8155.h
index 0c1f387ea2b..ed1b193849d 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 = &downcast<i8155_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
+ downcast<i8155_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_I8155_IN_PORTB_CB(_devcb) \
- devcb = &downcast<i8155_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
+ downcast<i8155_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_I8155_IN_PORTC_CB(_devcb) \
- devcb = &downcast<i8155_device &>(*device).set_in_pc_callback(DEVCB_##_devcb);
+ downcast<i8155_device &>(*device).set_in_pc_callback(DEVCB_##_devcb);
#define MCFG_I8155_OUT_PORTA_CB(_devcb) \
- devcb = &downcast<i8155_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
+ downcast<i8155_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_I8155_OUT_PORTB_CB(_devcb) \
- devcb = &downcast<i8155_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
+ downcast<i8155_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
#define MCFG_I8155_OUT_PORTC_CB(_devcb) \
- devcb = &downcast<i8155_device &>(*device).set_out_pc_callback(DEVCB_##_devcb);
+ downcast<i8155_device &>(*device).set_out_pc_callback(DEVCB_##_devcb);
#define MCFG_I8155_OUT_TIMEROUT_CB(_devcb) \
- devcb = &downcast<i8155_device &>(*device).set_out_to_callback(DEVCB_##_devcb);
+ downcast<i8155_device &>(*device).set_out_to_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -82,6 +82,13 @@ public:
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)); }
+ auto in_pa_callback() { return m_in_pa_cb.bind(); }
+ auto in_pb_callback() { return m_in_pb_cb.bind(); }
+ auto in_pc_callback() { return m_in_pc_cb.bind(); }
+ auto out_pa_callback() { return m_out_pa_cb.bind(); }
+ auto out_pb_callback() { return m_out_pb_cb.bind(); }
+ auto out_pc_callback() { return m_out_pc_cb.bind(); }
+ auto out_to_callback() { return m_out_to_cb.bind(); }
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 b98ab2c0c55..0d4accbb5c0 100644
--- a/src/devices/machine/i8212.h
+++ b/src/devices/machine/i8212.h
@@ -34,16 +34,16 @@
///*************************************************************************
#define MCFG_I8212_INT_CALLBACK(_write) \
- devcb = &downcast<i8212_device &>(*device).set_int_wr_callback(DEVCB_##_write);
+ downcast<i8212_device &>(*device).set_int_wr_callback(DEVCB_##_write);
#define MCFG_I8212_DI_CALLBACK(_read) \
- devcb = &downcast<i8212_device &>(*device).set_di_rd_callback(DEVCB_##_read);
+ downcast<i8212_device &>(*device).set_di_rd_callback(DEVCB_##_read);
#define MCFG_I8212_DO_CALLBACK(_write) \
- devcb = &downcast<i8212_device &>(*device).set_do_wr_callback(DEVCB_##_write);
+ downcast<i8212_device &>(*device).set_do_wr_callback(DEVCB_##_write);
#define MCFG_I8212_MD_CALLBACK(_read) \
- devcb = &downcast<i8212_device &>(*device).set_md_rd_callback(DEVCB_##_read);
+ downcast<i8212_device &>(*device).set_md_rd_callback(DEVCB_##_read);
diff --git a/src/devices/machine/i8214.h b/src/devices/machine/i8214.h
index aafcde5f908..dc609c24f15 100644
--- a/src/devices/machine/i8214.h
+++ b/src/devices/machine/i8214.h
@@ -33,10 +33,10 @@
///*************************************************************************
#define MCFG_I8214_INT_CALLBACK(_write) \
- devcb = &downcast<i8214_device &>(*device).set_int_wr_callback(DEVCB_##_write);
+ downcast<i8214_device &>(*device).set_int_wr_callback(DEVCB_##_write);
#define MCFG_I8214_ENLG_CALLBACK(_write) \
- devcb = &downcast<i8214_device &>(*device).set_enlg_wr_callback(DEVCB_##_write);
+ downcast<i8214_device &>(*device).set_enlg_wr_callback(DEVCB_##_write);
@@ -54,6 +54,8 @@ public:
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)); }
+ auto int_wr_callback() { return m_write_int.bind(); }
+ auto enlg_wr_callback() { return m_write_enlg.bind(); }
DECLARE_WRITE_LINE_MEMBER( sgs_w );
DECLARE_WRITE_LINE_MEMBER( etlg_w );
diff --git a/src/devices/machine/i82371sb.cpp b/src/devices/machine/i82371sb.cpp
index ff757cdbf6b..291e9fb0c56 100644
--- a/src/devices/machine/i82371sb.cpp
+++ b/src/devices/machine/i82371sb.cpp
@@ -90,12 +90,12 @@ MACHINE_CONFIG_START(i82371sb_isa_device::device_add_mconfig)
MCFG_DEVICE_ADD("pic8259_master", PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(INPUTLINE(":maincpu", 0))
- MCFG_PIC8259_IN_SP_CB(VCC)
+ MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, i82371sb_isa_device, get_slave_ack))
MCFG_DEVICE_ADD("pic8259_slave", PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_master", pic8259_device, ir2_w))
- MCFG_PIC8259_IN_SP_CB(GND)
+ MCFG_PIC8259_IN_SP_CB(CONSTANT(0))
/* sound hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/devices/machine/i82371sb.h b/src/devices/machine/i82371sb.h
index 8289dc47b40..6118ff61b6a 100644
--- a/src/devices/machine/i82371sb.h
+++ b/src/devices/machine/i82371sb.h
@@ -25,10 +25,10 @@
#define MCFG_I82371SB_SMI_CB(_devcb) \
- devcb = &downcast<i82371sb_isa_device &>(*device).set_smi_callback(DEVCB_##_devcb);
+ downcast<i82371sb_isa_device &>(*device).set_smi_callback(DEVCB_##_devcb);
#define MCFG_I82371SB_BOOT_STATE_HOOK(_devcb) \
- devcb = &downcast<i82371sb_isa_device &>(*device).set_boot_state_hook(DEVCB_##_devcb);
+ downcast<i82371sb_isa_device &>(*device).set_boot_state_hook(DEVCB_##_devcb);
class i82371sb_isa_device : public pci_device {
public:
@@ -182,10 +182,10 @@ private:
DECLARE_DEVICE_TYPE(I82371SB_ISA, i82371sb_isa_device)
#define MCFG_I82371SB_IDE_IRQ_PRI_CB(_devcb) \
- devcb = &downcast<i82371sb_ide_device &>(*device).set_irq_pri_callback(DEVCB_##_devcb);
+ downcast<i82371sb_ide_device &>(*device).set_irq_pri_callback(DEVCB_##_devcb);
#define MCFG_I82371SB_IDE_IRQ_SEC_CB(_devcb) \
- devcb = &downcast<i82371sb_ide_device &>(*device).set_irq_sec_callback(DEVCB_##_devcb);
+ downcast<i82371sb_ide_device &>(*device).set_irq_sec_callback(DEVCB_##_devcb);
#define MCFG_I82371SB_IDE_INTERRUPTS(_tag, _dev, _irq_pri, _irq_sec) \
MCFG_I82371SB_IDE_IRQ_PRI_CB(WRITELINE(_tag, _dev, _irq_pri)) \
diff --git a/src/devices/machine/i8243.h b/src/devices/machine/i8243.h
index fef950ffacb..76c4b601bd8 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 = &downcast<i8243_device &>(*device).set_read_handler(DEVCB_##_devcb);
+ downcast<i8243_device &>(*device).set_read_handler(DEVCB_##_devcb);
#define MCFG_I8243_WRITEHANDLER(_devcb) \
- devcb = &downcast<i8243_device &>(*device).set_write_handler(DEVCB_##_devcb);
+ downcast<i8243_device &>(*device).set_write_handler(DEVCB_##_devcb);
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
diff --git a/src/devices/machine/i8251.h b/src/devices/machine/i8251.h
index a475e39ae36..4eab12602d9 100644
--- a/src/devices/machine/i8251.h
+++ b/src/devices/machine/i8251.h
@@ -20,25 +20,25 @@
//**************************************************************************
#define MCFG_I8251_TXD_HANDLER(_devcb) \
- devcb = &downcast<i8251_device &>(*device).set_txd_handler(DEVCB_##_devcb);
+ downcast<i8251_device &>(*device).set_txd_handler(DEVCB_##_devcb);
#define MCFG_I8251_DTR_HANDLER(_devcb) \
- devcb = &downcast<i8251_device &>(*device).set_dtr_handler(DEVCB_##_devcb);
+ downcast<i8251_device &>(*device).set_dtr_handler(DEVCB_##_devcb);
#define MCFG_I8251_RTS_HANDLER(_devcb) \
- devcb = &downcast<i8251_device &>(*device).set_rts_handler(DEVCB_##_devcb);
+ downcast<i8251_device &>(*device).set_rts_handler(DEVCB_##_devcb);
#define MCFG_I8251_RXRDY_HANDLER(_devcb) \
- devcb = &downcast<i8251_device &>(*device).set_rxrdy_handler(DEVCB_##_devcb);
+ downcast<i8251_device &>(*device).set_rxrdy_handler(DEVCB_##_devcb);
#define MCFG_I8251_TXRDY_HANDLER(_devcb) \
- devcb = &downcast<i8251_device &>(*device).set_txrdy_handler(DEVCB_##_devcb);
+ downcast<i8251_device &>(*device).set_txrdy_handler(DEVCB_##_devcb);
#define MCFG_I8251_TXEMPTY_HANDLER(_devcb) \
- devcb = &downcast<i8251_device &>(*device).set_txempty_handler(DEVCB_##_devcb);
+ downcast<i8251_device &>(*device).set_txempty_handler(DEVCB_##_devcb);
#define MCFG_I8251_SYNDET_HANDLER(_devcb) \
- devcb = &downcast<i8251_device &>(*device).set_syndet_handler(DEVCB_##_devcb);
+ downcast<i8251_device &>(*device).set_syndet_handler(DEVCB_##_devcb);
class i8251_device : public device_t,
public device_serial_interface
@@ -55,6 +55,13 @@ public:
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)); }
+ auto txd_handler() { return m_txd_handler.bind(); }
+ auto dtr_handler() { return m_dtr_handler.bind(); }
+ auto rts_handler() { return m_rts_handler.bind(); }
+ auto rxrdy_handler() { return m_rxrdy_handler.bind(); }
+ auto txrdy_handler() { return m_txrdy_handler.bind(); }
+ auto txempty_handler() { return m_txempty_handler.bind(); }
+ auto syndet_handler() { return m_syndet_handler.bind(); }
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 4c2c28c42db..3d7e1e0daa7 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 = &downcast<i8255_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
+ downcast<i8255_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_I8255_IN_PORTB_CB(_devcb) \
- devcb = &downcast<i8255_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
+ downcast<i8255_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_I8255_IN_PORTC_CB(_devcb) \
- devcb = &downcast<i8255_device &>(*device).set_in_pc_callback(DEVCB_##_devcb);
+ downcast<i8255_device &>(*device).set_in_pc_callback(DEVCB_##_devcb);
#define MCFG_I8255_OUT_PORTA_CB(_devcb) \
- devcb = &downcast<i8255_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
+ downcast<i8255_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_I8255_OUT_PORTB_CB(_devcb) \
- devcb = &downcast<i8255_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
+ downcast<i8255_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
#define MCFG_I8255_OUT_PORTC_CB(_devcb) \
- devcb = &downcast<i8255_device &>(*device).set_out_pc_callback(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 = &downcast<i8255_device &>(*device).set_tri_pa_callback(DEVCB_##_devcb);
+ downcast<i8255_device &>(*device).set_tri_pa_callback(DEVCB_##_devcb);
#define MCFG_I8255_TRISTATE_PORTB_CB(_devcb) \
- devcb = &downcast<i8255_device &>(*device).set_tri_pb_callback(DEVCB_##_devcb);
+ downcast<i8255_device &>(*device).set_tri_pb_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -84,6 +84,14 @@ public:
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)); }
+ auto in_pa_callback() { return m_in_pa_cb.bind(); }
+ auto in_pb_callback() { return m_in_pb_cb.bind(); }
+ auto in_pc_callback() { return m_in_pc_cb.bind(); }
+ auto out_pa_callback() { return m_out_pa_cb.bind(); }
+ auto out_pb_callback() { return m_out_pb_cb.bind(); }
+ auto out_pc_callback() { return m_out_pc_cb.bind(); }
+ auto tri_pa_callback() { return m_tri_pa_cb.bind(); }
+ auto tri_pb_callback() { return m_tri_pb_cb.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/i8257.h b/src/devices/machine/i8257.h
index 80e268f1b2d..b1311314aee 100644
--- a/src/devices/machine/i8257.h
+++ b/src/devices/machine/i8257.h
@@ -42,52 +42,52 @@
***************************************************************************/
#define MCFG_I8257_OUT_HRQ_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_out_hrq_callback(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_out_hrq_callback(DEVCB_##_devcb);
#define MCFG_I8257_OUT_TC_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_out_tc_callback(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_out_tc_callback(DEVCB_##_devcb);
#define MCFG_I8257_IN_MEMR_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_in_memr_callback(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_in_memr_callback(DEVCB_##_devcb);
#define MCFG_I8257_OUT_MEMW_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_out_memw_callback(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_out_memw_callback(DEVCB_##_devcb);
#define MCFG_I8257_IN_IOR_0_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_in_ior_callback<0>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_in_ior_callback<0>(DEVCB_##_devcb);
#define MCFG_I8257_IN_IOR_1_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_in_ior_callback<1>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_in_ior_callback<1>(DEVCB_##_devcb);
#define MCFG_I8257_IN_IOR_2_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_in_ior_callback<2>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_in_ior_callback<2>(DEVCB_##_devcb);
#define MCFG_I8257_IN_IOR_3_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_in_ior_callback<3>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_in_ior_callback<3>(DEVCB_##_devcb);
#define MCFG_I8257_OUT_IOW_0_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_out_iow_callback<0>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_out_iow_callback<0>(DEVCB_##_devcb);
#define MCFG_I8257_OUT_IOW_1_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_out_iow_callback<1>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_out_iow_callback<1>(DEVCB_##_devcb);
#define MCFG_I8257_OUT_IOW_2_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_out_iow_callback<2>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_out_iow_callback<2>(DEVCB_##_devcb);
#define MCFG_I8257_OUT_IOW_3_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_out_iow_callback<3>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_out_iow_callback<3>(DEVCB_##_devcb);
#define MCFG_I8257_OUT_DACK_0_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_out_dack_callback<0>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_out_dack_callback<0>(DEVCB_##_devcb);
#define MCFG_I8257_OUT_DACK_1_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_out_dack_callback<1>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_out_dack_callback<1>(DEVCB_##_devcb);
#define MCFG_I8257_OUT_DACK_2_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_out_dack_callback<2>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_out_dack_callback<2>(DEVCB_##_devcb);
#define MCFG_I8257_OUT_DACK_3_CB(_devcb) \
- devcb = &downcast<i8257_device &>(*device).set_out_dack_callback<3>(DEVCB_##_devcb);
+ downcast<i8257_device &>(*device).set_out_dack_callback<3>(DEVCB_##_devcb);
// HACK: the radio86 and alikes require this, is it a bug in the soviet clone or is there something else happening?
#define MCFG_I8257_REVERSE_RW_MODE(_flag) \
diff --git a/src/devices/machine/i82586.h b/src/devices/machine/i82586.h
index dfd073190ae..93f45d82574 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 = &downcast<i82586_base_device &>(*device).set_out_irq_callback(DEVCB_##_out_irq);
+ downcast<i82586_base_device &>(*device).set_out_irq_callback(DEVCB_##_out_irq);
class i82586_base_device :
public device_t,
diff --git a/src/devices/machine/i8271.h b/src/devices/machine/i8271.h
index 3db17379760..32d70b507a0 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 = &downcast<i8271_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
+ downcast<i8271_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
#define MCFG_I8271_DRQ_CALLBACK(_write) \
- devcb = &downcast<i8271_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
+ downcast<i8271_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
#define MCFG_I8271_HDL_CALLBACK(_write) \
- devcb = &downcast<i8271_device &>(*device).set_hdl_wr_callback(DEVCB_##_write);
+ downcast<i8271_device &>(*device).set_hdl_wr_callback(DEVCB_##_write);
#define MCFG_I8271_OPT_CALLBACK(_write) \
- devcb = &downcast<i8271_device &>(*device).set_opt_wr_callback(DEVCB_##_write);
+ downcast<i8271_device &>(*device).set_opt_wr_callback(DEVCB_##_write);
/***************************************************************************
MACROS
diff --git a/src/devices/machine/i8279.h b/src/devices/machine/i8279.h
index c50dfd1d54d..80c492b2b6e 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 = &downcast<i8279_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<i8279_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_I8279_OUT_SL_CB(_devcb) \
- devcb = &downcast<i8279_device &>(*device).set_out_sl_callback(DEVCB_##_devcb);
+ downcast<i8279_device &>(*device).set_out_sl_callback(DEVCB_##_devcb);
#define MCFG_I8279_OUT_DISP_CB(_devcb) \
- devcb = &downcast<i8279_device &>(*device).set_out_disp_callback(DEVCB_##_devcb);
+ downcast<i8279_device &>(*device).set_out_disp_callback(DEVCB_##_devcb);
#define MCFG_I8279_OUT_BD_CB(_devcb) \
- devcb = &downcast<i8279_device &>(*device).set_out_bd_callback(DEVCB_##_devcb);
+ downcast<i8279_device &>(*device).set_out_bd_callback(DEVCB_##_devcb);
#define MCFG_I8279_IN_RL_CB(_devcb) \
- devcb = &downcast<i8279_device &>(*device).set_in_rl_callback(DEVCB_##_devcb);
+ downcast<i8279_device &>(*device).set_in_rl_callback(DEVCB_##_devcb);
#define MCFG_I8279_IN_SHIFT_CB(_devcb) \
- devcb = &downcast<i8279_device &>(*device).set_in_shift_callback(DEVCB_##_devcb);
+ downcast<i8279_device &>(*device).set_in_shift_callback(DEVCB_##_devcb);
#define MCFG_I8279_IN_CTRL_CB(_devcb) \
- devcb = &downcast<i8279_device &>(*device).set_in_ctrl_callback(DEVCB_##_devcb);
+ downcast<i8279_device &>(*device).set_in_ctrl_callback(DEVCB_##_devcb);
/***************************************************************************
TYPE DEFINITIONS
diff --git a/src/devices/machine/i8355.h b/src/devices/machine/i8355.h
index a9d5297bc26..be2e83d17eb 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 = &downcast<i8355_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
+ downcast<i8355_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_I8355_OUT_PA_CB(_devcb) \
- devcb = &downcast<i8355_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
+ downcast<i8355_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_I8355_IN_PB_CB(_devcb) \
- devcb = &downcast<i8355_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
+ downcast<i8355_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_I8355_OUT_PB_CB(_devcb) \
- devcb = &downcast<i8355_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
+ downcast<i8355_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
///*************************************************************************
diff --git a/src/devices/machine/ie15_kbd.h b/src/devices/machine/ie15_kbd.h
index 4d5c7370160..d0d38286b8d 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 = &downcast<ie15_keyboard_device &>(*device).set_keyboard_callback(DEVCB_##_devcb);
+ downcast<ie15_keyboard_device &>(*device).set_keyboard_callback(DEVCB_##_devcb);
/***************************************************************************
FUNCTION PROTOTYPES
diff --git a/src/devices/machine/im6402.h b/src/devices/machine/im6402.h
index ae505ef54c1..6908db0d9c6 100644
--- a/src/devices/machine/im6402.h
+++ b/src/devices/machine/im6402.h
@@ -55,16 +55,16 @@
downcast<im6402_device &>(*device).set_trc(_trc);
#define MCFG_IM6402_TRO_CALLBACK(_write) \
- devcb = &downcast<im6402_device &>(*device).set_tro_wr_callback(DEVCB_##_write);
+ downcast<im6402_device &>(*device).set_tro_wr_callback(DEVCB_##_write);
#define MCFG_IM6402_DR_CALLBACK(_write) \
- devcb = &downcast<im6402_device &>(*device).set_dr_wr_callback(DEVCB_##_write);
+ downcast<im6402_device &>(*device).set_dr_wr_callback(DEVCB_##_write);
#define MCFG_IM6402_TBRE_CALLBACK(_write) \
- devcb = &downcast<im6402_device &>(*device).set_tbre_wr_callback(DEVCB_##_write);
+ downcast<im6402_device &>(*device).set_tbre_wr_callback(DEVCB_##_write);
#define MCFG_IM6402_TRE_CALLBACK(_write) \
- devcb = &downcast<im6402_device &>(*device).set_tre_wr_callback(DEVCB_##_write);
+ downcast<im6402_device &>(*device).set_tre_wr_callback(DEVCB_##_write);
diff --git a/src/devices/machine/input_merger.h b/src/devices/machine/input_merger.h
index 6cf9701b6df..53af1a38cfd 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 = &downcast<input_merger_device &>(*device).set_output_handler(DEVCB_##_devcb);
+ downcast<input_merger_device &>(*device).set_output_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -45,6 +45,7 @@ class input_merger_device : public device_t
public:
// callback
template <class Object> devcb_base &set_output_handler(Object &&cb) { return m_output_handler.set_callback(std::forward<Object>(cb)); }
+ auto output_handler() { return m_output_handler.bind(); }
// 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 1c6596ccc13..9f401c87f2d 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 = &downcast<ins8154_device &>(*device).set_in_a_callback(DEVCB_##_devcb);
+ downcast<ins8154_device &>(*device).set_in_a_callback(DEVCB_##_devcb);
#define MCFG_INS8154_OUT_A_CB(_devcb) \
- devcb = &downcast<ins8154_device &>(*device).set_out_a_callback(DEVCB_##_devcb);
+ downcast<ins8154_device &>(*device).set_out_a_callback(DEVCB_##_devcb);
#define MCFG_INS8154_IN_B_CB(_devcb) \
- devcb = &downcast<ins8154_device &>(*device).set_in_b_callback(DEVCB_##_devcb);
+ downcast<ins8154_device &>(*device).set_in_b_callback(DEVCB_##_devcb);
#define MCFG_INS8154_OUT_B_CB(_devcb) \
- devcb = &downcast<ins8154_device &>(*device).set_out_b_callback(DEVCB_##_devcb);
+ downcast<ins8154_device &>(*device).set_out_b_callback(DEVCB_##_devcb);
#define MCFG_INS8154_OUT_IRQ_CB(_devcb) \
- devcb = &downcast<ins8154_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); //currently unused
+ downcast<ins8154_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); //currently unused
/***************************************************************************
TYPE DEFINITIONS
diff --git a/src/devices/machine/ins8250.h b/src/devices/machine/ins8250.h
index 7bd6753b391..af68f36887b 100644
--- a/src/devices/machine/ins8250.h
+++ b/src/devices/machine/ins8250.h
@@ -17,8 +17,7 @@
CLASS DEFINITIONS
***************************************************************************/
-class ins8250_uart_device : public device_t,
- public device_serial_interface
+class ins8250_uart_device : public device_t, public device_serial_interface
{
public:
template <class Object> devcb_base &set_out_tx_callback(Object &&cb) { return m_out_tx_cb.set_callback(std::forward<Object>(cb)); }
@@ -27,6 +26,12 @@ public:
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)); }
+ auto out_tx_callback() { return m_out_tx_cb.bind(); }
+ auto out_dtr_callback() { return m_out_dtr_cb.bind(); }
+ auto out_rts_callback() { return m_out_rts_cb.bind(); }
+ auto out_int_callback() { return m_out_int_cb.bind(); }
+ auto out_out1_callback() { return m_out_out1_cb.bind(); }
+ auto out_out2_callback() { return m_out_out2_cb.bind(); }
DECLARE_WRITE8_MEMBER( ins8250_w );
DECLARE_READ8_MEMBER( ins8250_r );
@@ -159,21 +164,21 @@ DECLARE_DEVICE_TYPE(NS16550, ns16550_device)
***************************************************************************/
#define MCFG_INS8250_OUT_TX_CB(_devcb) \
- devcb = &downcast<ins8250_uart_device &>(*device).set_out_tx_callback(DEVCB_##_devcb);
+ downcast<ins8250_uart_device &>(*device).set_out_tx_callback(DEVCB_##_devcb);
#define MCFG_INS8250_OUT_DTR_CB(_devcb) \
- devcb = &downcast<ins8250_uart_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
+ downcast<ins8250_uart_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
#define MCFG_INS8250_OUT_RTS_CB(_devcb) \
- devcb = &downcast<ins8250_uart_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
+ downcast<ins8250_uart_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
#define MCFG_INS8250_OUT_INT_CB(_devcb) \
- devcb = &downcast<ins8250_uart_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
+ downcast<ins8250_uart_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
#define MCFG_INS8250_OUT_OUT1_CB(_devcb) \
- devcb = &downcast<ins8250_uart_device &>(*device).set_out_out1_callback(DEVCB_##_devcb);
+ downcast<ins8250_uart_device &>(*device).set_out_out1_callback(DEVCB_##_devcb);
#define MCFG_INS8250_OUT_OUT2_CB(_devcb) \
- devcb = &downcast<ins8250_uart_device &>(*device).set_out_out2_callback(DEVCB_##_devcb);
+ downcast<ins8250_uart_device &>(*device).set_out_out2_callback(DEVCB_##_devcb);
#endif // MAME_MACHINE_INS8250_H
diff --git a/src/devices/machine/k053252.h b/src/devices/machine/k053252.h
index 7fe29893479..c8a76b8ff20 100644
--- a/src/devices/machine/k053252.h
+++ b/src/devices/machine/k053252.h
@@ -11,19 +11,19 @@
#include "screen.h"
#define MCFG_K053252_INT1_EN_CB(_devcb) \
- devcb = &downcast<k053252_device &>(*device).set_int1_en_callback(DEVCB_##_devcb);
+ downcast<k053252_device &>(*device).set_int1_en_callback(DEVCB_##_devcb);
#define MCFG_K053252_INT2_EN_CB(_devcb) \
- devcb = &downcast<k053252_device &>(*device).set_int2_en_callback(DEVCB_##_devcb);
+ downcast<k053252_device &>(*device).set_int2_en_callback(DEVCB_##_devcb);
#define MCFG_K053252_INT1_ACK_CB(_devcb) \
- devcb = &downcast<k053252_device &>(*device).set_int1_ack_callback(DEVCB_##_devcb);
+ downcast<k053252_device &>(*device).set_int1_ack_callback(DEVCB_##_devcb);
#define MCFG_K053252_INT2_ACK_CB(_devcb) \
- devcb = &downcast<k053252_device &>(*device).set_int2_ack_callback(DEVCB_##_devcb);
+ downcast<k053252_device &>(*device).set_int2_ack_callback(DEVCB_##_devcb);
#define MCFG_K053252_INT_TIME_CB(_devcb) \
- devcb = &downcast<k053252_device &>(*device).set_int_time_callback(DEVCB_##_devcb);
+ downcast<k053252_device &>(*device).set_int_time_callback(DEVCB_##_devcb);
#define MCFG_K053252_OFFSETS(_offsx, _offsy) \
downcast<k053252_device &>(*device).set_offsets(_offsx, _offsy);
diff --git a/src/devices/machine/kb3600.h b/src/devices/machine/kb3600.h
index 14c738d9f22..e77de332bc2 100644
--- a/src/devices/machine/kb3600.h
+++ b/src/devices/machine/kb3600.h
@@ -64,31 +64,31 @@
//**************************************************************************
#define MCFG_AY3600_MATRIX_X0(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_x0_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_x0_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X1(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_x1_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_x1_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X2(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_x2_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_x2_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X3(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_x3_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_x3_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X4(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_x4_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_x4_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X5(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_x5_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_x5_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X6(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_x6_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_x6_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X7(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_x7_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_x7_cb(DEVCB_##_cb);
#define MCFG_AY3600_MATRIX_X8(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_x8_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_x8_cb(DEVCB_##_cb);
#define MCFG_AY3600_SHIFT_CB(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_shift_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_shift_cb(DEVCB_##_cb);
#define MCFG_AY3600_CONTROL_CB(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_control_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_control_cb(DEVCB_##_cb);
#define MCFG_AY3600_DATA_READY_CB(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_data_ready_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_data_ready_cb(DEVCB_##_cb);
#define MCFG_AY3600_AKO_CB(_cb) \
- devcb = &downcast<ay3600_device &>(*device).set_ako_cb(DEVCB_##_cb);
+ downcast<ay3600_device &>(*device).set_ako_cb(DEVCB_##_cb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/kr2376.h b/src/devices/machine/kr2376.h
index 49cfbb4f9cd..5a9529fd7c7 100644
--- a/src/devices/machine/kr2376.h
+++ b/src/devices/machine/kr2376.h
@@ -40,27 +40,27 @@
//**************************************************************************
#define MCFG_KR2376_MATRIX_X0(_cb) \
- devcb = &downcast<kr2376_device &>(*device).set_x_cb<0>(DEVCB_##_cb);
+ downcast<kr2376_device &>(*device).set_x_cb<0>(DEVCB_##_cb);
#define MCFG_KR2376_MATRIX_X1(_cb) \
- devcb = &downcast<kr2376_device &>(*device).set_x_cb<1>(DEVCB_##_cb);
+ downcast<kr2376_device &>(*device).set_x_cb<1>(DEVCB_##_cb);
#define MCFG_KR2376_MATRIX_X2(_cb) \
- devcb = &downcast<kr2376_device &>(*device).set_x_cb<2>(DEVCB_##_cb);
+ downcast<kr2376_device &>(*device).set_x_cb<2>(DEVCB_##_cb);
#define MCFG_KR2376_MATRIX_X3(_cb) \
- devcb = &downcast<kr2376_device &>(*device).set_x_cb<3>(DEVCB_##_cb);
+ downcast<kr2376_device &>(*device).set_x_cb<3>(DEVCB_##_cb);
#define MCFG_KR2376_MATRIX_X4(_cb) \
- devcb = &downcast<kr2376_device &>(*device).set_x_cb<4>(DEVCB_##_cb);
+ downcast<kr2376_device &>(*device).set_x_cb<4>(DEVCB_##_cb);
#define MCFG_KR2376_MATRIX_X5(_cb) \
- devcb = &downcast<kr2376_device &>(*device).set_x_cb<5>(DEVCB_##_cb);
+ downcast<kr2376_device &>(*device).set_x_cb<5>(DEVCB_##_cb);
#define MCFG_KR2376_MATRIX_X6(_cb) \
- devcb = &downcast<kr2376_device &>(*device).set_x_cb<6>(DEVCB_##_cb);
+ downcast<kr2376_device &>(*device).set_x_cb<6>(DEVCB_##_cb);
#define MCFG_KR2376_MATRIX_X7(_cb) \
- devcb = &downcast<kr2376_device &>(*device).set_x_cb<7>(DEVCB_##_cb);
+ downcast<kr2376_device &>(*device).set_x_cb<7>(DEVCB_##_cb);
#define MCFG_KR2376_SHIFT_CB(_cb) \
- devcb = &downcast<kr2376_device &>(*device).set_shift_cb(DEVCB_##_cb);
+ downcast<kr2376_device &>(*device).set_shift_cb(DEVCB_##_cb);
#define MCFG_KR2376_CONTROL_CB(_cb) \
- devcb = &downcast<kr2376_device &>(*device).set_control_cb(DEVCB_##_cb);
+ downcast<kr2376_device &>(*device).set_control_cb(DEVCB_##_cb);
#define MCFG_KR2376_STROBE_CB(_cb) \
- devcb = &downcast<kr2376_device &>(*device).set_strobe_cb(DEVCB_##_cb);
+ downcast<kr2376_device &>(*device).set_strobe_cb(DEVCB_##_cb);
class kr2376_device : public device_t
{
diff --git a/src/devices/machine/latch8.h b/src/devices/machine/latch8.h
index e7d3e0bb006..44644c5952c 100644
--- a/src/devices/machine/latch8.h
+++ b/src/devices/machine/latch8.h
@@ -131,53 +131,53 @@ DECLARE_DEVICE_TYPE(LATCH8, latch8_device)
/* Write bit to discrete node */
#define MCFG_LATCH8_WRITE_0(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_write_cb<0>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_write_cb<0>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_1(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_write_cb<1>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_write_cb<1>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_2(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_write_cb<2>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_write_cb<2>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_3(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_write_cb<3>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_write_cb<3>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_4(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_write_cb<4>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_write_cb<4>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_5(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_write_cb<5>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_write_cb<5>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_6(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_write_cb<6>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_write_cb<6>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_7(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_write_cb<7>(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 = &downcast<latch8_device &>(*device).set_read_cb<0>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_read_cb<0>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_1(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_read_cb<1>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_read_cb<1>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_2(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_read_cb<2>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_read_cb<2>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_3(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_read_cb<3>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_read_cb<3>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_4(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_read_cb<4>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_read_cb<4>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_5(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_read_cb<5>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_read_cb<5>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_6(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_read_cb<6>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_read_cb<6>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_7(_devcb) \
- devcb = &downcast<latch8_device &>(*device).set_read_cb<7>(DEVCB_##_devcb);
+ downcast<latch8_device &>(*device).set_read_cb<7>(DEVCB_##_devcb);
#endif // MAME_MACHINE_LATCH8_H
diff --git a/src/devices/machine/ldv1000.h b/src/devices/machine/ldv1000.h
index 11abc109f51..661d0a44f0b 100644
--- a/src/devices/machine/ldv1000.h
+++ b/src/devices/machine/ldv1000.h
@@ -27,7 +27,7 @@
MCFG_DEVICE_ADD(_tag, PIONEER_LDV1000, 0)
#define MCFG_LASERDISC_LDV1000_COMMAND_STROBE_CB(_cb) \
- devcb = &downcast<pioneer_ldv1000_device *>(device)->set_command_strobe_callback(DEVCB_##_cb);
+ downcast<pioneer_ldv1000_device *>(device)->set_command_strobe_callback(DEVCB_##_cb);
diff --git a/src/devices/machine/lh5810.h b/src/devices/machine/lh5810.h
index 51b288be8e3..776e5497d56 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 = &downcast<lh5810_device &>(*device).set_porta_r_callback(DEVCB_##_devcb);
+ downcast<lh5810_device &>(*device).set_porta_r_callback(DEVCB_##_devcb);
#define MCFG_LH5810_PORTA_W_CB(_devcb) \
- devcb = &downcast<lh5810_device &>(*device).set_porta_w_callback(DEVCB_##_devcb);
+ downcast<lh5810_device &>(*device).set_porta_w_callback(DEVCB_##_devcb);
#define MCFG_LH5810_PORTB_R_CB(_devcb) \
- devcb = &downcast<lh5810_device &>(*device).set_portb_r_callback(DEVCB_##_devcb);
+ downcast<lh5810_device &>(*device).set_portb_r_callback(DEVCB_##_devcb);
#define MCFG_LH5810_PORTB_W_CB(_devcb) \
- devcb = &downcast<lh5810_device &>(*device).set_portb_w_callback(DEVCB_##_devcb);
+ downcast<lh5810_device &>(*device).set_portb_w_callback(DEVCB_##_devcb);
#define MCFG_LH5810_PORTC_W_CB(_devcb) \
- devcb = &downcast<lh5810_device &>(*device).set_portc_w_callback(DEVCB_##_devcb);
+ downcast<lh5810_device &>(*device).set_portc_w_callback(DEVCB_##_devcb);
#define MCFG_LH5810_OUT_INT_CB(_devcb) \
- devcb = &downcast<lh5810_device &>(*device).set_out_int_callback(DEVCB_##_devcb); //currently unused
+ downcast<lh5810_device &>(*device).set_out_int_callback(DEVCB_##_devcb); //currently unused
diff --git a/src/devices/machine/mb8421.h b/src/devices/machine/mb8421.h
index 705e4c0c1e7..e0ac6edd610 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 = &downcast<mb8421_master_device &>(*device).set_intl_handler(DEVCB_##_devcb);
+ downcast<mb8421_master_device &>(*device).set_intl_handler(DEVCB_##_devcb);
#define MCFG_MB8421_INTR_HANDLER(_devcb) \
- devcb = &downcast<mb8421_master_device &>(*device).set_intr_handler(DEVCB_##_devcb);
+ downcast<mb8421_master_device &>(*device).set_intr_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/mb87078.h b/src/devices/machine/mb87078.h
index bb7700bbfcf..61ef9aac8ea 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 = &downcast<mb87078_device &>(*device).set_gain_changed_callback(DEVCB_##_devcb);
+ downcast<mb87078_device &>(*device).set_gain_changed_callback(DEVCB_##_devcb);
/***************************************************************************
TYPE DEFINITIONS
diff --git a/src/devices/machine/mb8795.h b/src/devices/machine/mb8795.h
index 018ef6ef1e6..a3b6e6244cc 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 = &downcast<mb8795_device &>(*device).set_tx_irq_wr_callback(DEVCB_##_write);
+ downcast<mb8795_device &>(*device).set_tx_irq_wr_callback(DEVCB_##_write);
#define MCFG_MB8795_RX_IRQ_CALLBACK(_write) \
- devcb = &downcast<mb8795_device &>(*device).set_rx_irq_wr_callback(DEVCB_##_write);
+ downcast<mb8795_device &>(*device).set_rx_irq_wr_callback(DEVCB_##_write);
#define MCFG_MB8795_TX_DRQ_CALLBACK(_write) \
- devcb = &downcast<mb8795_device &>(*device).set_tx_drq_wr_callback(DEVCB_##_write);
+ downcast<mb8795_device &>(*device).set_tx_drq_wr_callback(DEVCB_##_write);
#define MCFG_MB8795_RX_DRQ_CALLBACK(_write) \
- devcb = &downcast<mb8795_device &>(*device).set_rx_drq_wr_callback(DEVCB_##_write);
+ downcast<mb8795_device &>(*device).set_rx_drq_wr_callback(DEVCB_##_write);
class mb8795_device : public device_t,
public device_network_interface
diff --git a/src/devices/machine/mb89352.h b/src/devices/machine/mb89352.h
index b30b1601fd0..dce6fe59ce9 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 = &downcast<mb89352_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<mb89352_device &>(*device).set_irq_callback(DEVCB_##_devcb);
#define MCFG_MB89352A_DRQ_CB(_devcb) \
- devcb = &downcast<mb89352_device &>(*device).set_drq_callback(DEVCB_##_devcb);
+ downcast<mb89352_device &>(*device).set_drq_callback(DEVCB_##_devcb);
class mb89352_device : public legacy_scsi_host_adapter
{
diff --git a/src/devices/machine/mb89363b.h b/src/devices/machine/mb89363b.h
index 2aaad46c28e..755730d05aa 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 = &downcast<mb89363b_device &>(*device).set_in_a_pa_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_in_a_pa_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_IN_PORTB_CB(_devcb) \
- devcb = &downcast<mb89363b_device &>(*device).set_in_a_pb_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_in_a_pb_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_IN_PORTC_CB(_devcb) \
- devcb = &downcast<mb89363b_device &>(*device).set_in_a_pc_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_in_a_pc_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTA_CB(_devcb) \
- devcb = &downcast<mb89363b_device &>(*device).set_out_a_pa_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_out_a_pa_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTB_CB(_devcb) \
- devcb = &downcast<mb89363b_device &>(*device).set_out_a_pb_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_out_a_pb_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTC_CB(_devcb) \
- devcb = &downcast<mb89363b_device &>(*device).set_out_a_pc_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_out_a_pc_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_IN_PORTD_CB(_devcb) \
- devcb = &downcast<mb89363b_device &>(*device).set_in_b_pa_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_in_b_pa_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_IN_PORTE_CB(_devcb) \
- devcb = &downcast<mb89363b_device &>(*device).set_in_b_pb_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_in_b_pb_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_IN_PORTF_CB(_devcb) \
- devcb = &downcast<mb89363b_device &>(*device).set_in_b_pc_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_in_b_pc_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTD_CB(_devcb) \
- devcb = &downcast<mb89363b_device &>(*device).set_out_b_pa_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_out_b_pa_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTE_CB(_devcb) \
- devcb = &downcast<mb89363b_device &>(*device).set_out_b_pb_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_out_b_pb_callback(DEVCB_##_devcb);
#define MCFG_MB89363B_OUT_PORTF_CB(_devcb) \
- devcb = &downcast<mb89363b_device &>(*device).set_out_b_pc_callback(DEVCB_##_devcb);
+ downcast<mb89363b_device &>(*device).set_out_b_pc_callback(DEVCB_##_devcb);
diff --git a/src/devices/machine/mb89374.h b/src/devices/machine/mb89374.h
index 460a4c2c6dc..1ee70cfff58 100644
--- a/src/devices/machine/mb89374.h
+++ b/src/devices/machine/mb89374.h
@@ -42,19 +42,19 @@ Data Link Controller
//**************************************************************************
#define MCFG_MB89374_IRQ_CB(_devcb) \
- devcb = &downcast<mb89374_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<mb89374_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_MB89374_PO0_CB(_devcb) \
- devcb = &downcast<mb89374_device &>(*device).set_out_po_callback<0>(DEVCB_##_devcb);
+ downcast<mb89374_device &>(*device).set_out_po_callback<0>(DEVCB_##_devcb);
#define MCFG_MB89374_PO1_CB(_devcb) \
- devcb = &downcast<mb89374_device &>(*device).set_out_po_callback<1>(DEVCB_##_devcb);
+ downcast<mb89374_device &>(*device).set_out_po_callback<1>(DEVCB_##_devcb);
#define MCFG_MB89374_PO2_CB(_devcb) \
- devcb = &downcast<mb89374_device &>(*device).set_out_po_callback<2>(DEVCB_##_devcb);
+ downcast<mb89374_device &>(*device).set_out_po_callback<2>(DEVCB_##_devcb);
#define MCFG_MB89374_PO3_CB(_devcb) \
- devcb = &downcast<mb89374_device &>(*device).set_out_po_callback<3>(DEVCB_##_devcb);
+ downcast<mb89374_device &>(*device).set_out_po_callback<3>(DEVCB_##_devcb);
class mb89374_device : public device_t,
diff --git a/src/devices/machine/mc14411.h b/src/devices/machine/mc14411.h
index 002ca5de65f..ef5196ef363 100644
--- a/src/devices/machine/mc14411.h
+++ b/src/devices/machine/mc14411.h
@@ -31,22 +31,22 @@
// DEVICE CONFIGURATION MACROS
//**************************************************************************
-#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);
+#define MCFG_MC14411_F1_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 0, DEVCB_##_devcb);
+#define MCFG_MC14411_F2_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 1, DEVCB_##_devcb);
+#define MCFG_MC14411_F3_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 2, DEVCB_##_devcb);
+#define MCFG_MC14411_F4_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 3, DEVCB_##_devcb);
+#define MCFG_MC14411_F5_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 4, DEVCB_##_devcb);
+#define MCFG_MC14411_F6_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 5, DEVCB_##_devcb);
+#define MCFG_MC14411_F7_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 6, DEVCB_##_devcb);
+#define MCFG_MC14411_F8_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 7, DEVCB_##_devcb);
+#define MCFG_MC14411_F9_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 8, DEVCB_##_devcb);
+#define MCFG_MC14411_F10_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 9, DEVCB_##_devcb);
+#define MCFG_MC14411_F11_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(10, DEVCB_##_devcb);
+#define MCFG_MC14411_F12_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(11, DEVCB_##_devcb);
+#define MCFG_MC14411_F13_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(12, DEVCB_##_devcb);
+#define MCFG_MC14411_F14_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(13, DEVCB_##_devcb);
+#define MCFG_MC14411_F15_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(14, DEVCB_##_devcb);
+#define MCFG_MC14411_F16_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(15, DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -87,6 +87,22 @@ public:
mc14411_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
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)); }
+ auto out_f1_cb() { return m_out_fx_cbs[0].bind(); }
+ auto out_f2_cb() { return m_out_fx_cbs[1].bind(); }
+ auto out_f3_cb() { return m_out_fx_cbs[2].bind(); }
+ auto out_f4_cb() { return m_out_fx_cbs[3].bind(); }
+ auto out_f5_cb() { return m_out_fx_cbs[4].bind(); }
+ auto out_f6_cb() { return m_out_fx_cbs[5].bind(); }
+ auto out_f7_cb() { return m_out_fx_cbs[6].bind(); }
+ auto out_f8_cb() { return m_out_fx_cbs[7].bind(); }
+ auto out_f9_cb() { return m_out_fx_cbs[8].bind(); }
+ auto out_f10_cb() { return m_out_fx_cbs[9].bind(); }
+ auto out_f11_cb() { return m_out_fx_cbs[10].bind(); }
+ auto out_f12_cb() { return m_out_fx_cbs[11].bind(); }
+ auto out_f13_cb() { return m_out_fx_cbs[12].bind(); }
+ auto out_f14_cb() { return m_out_fx_cbs[13].bind(); }
+ auto out_f15_cb() { return m_out_fx_cbs[14].bind(); }
+ auto out_f16_cb() { return m_out_fx_cbs[15].bind(); }
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 3bc79fb7d67..7b396e81320 100644
--- a/src/devices/machine/mc146818.h
+++ b/src/devices/machine/mc146818.h
@@ -22,7 +22,7 @@
//**************************************************************************
#define MCFG_MC146818_IRQ_HANDLER(_irq) \
- devcb = &downcast<mc146818_device &>(*device).set_irq_callback(DEVCB_##_irq);
+ 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) \
@@ -59,6 +59,8 @@ public:
// callbacks
template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ auto irq_callback() { return m_write_irq.bind(); }
+
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 b4e575cd53b..44e319a292d 100644
--- a/src/devices/machine/mc2661.h
+++ b/src/devices/machine/mc2661.h
@@ -42,28 +42,28 @@
downcast<mc2661_device &>(*device).set_txc(_clock);
#define MCFG_MC2661_TXD_HANDLER(_write) \
- devcb = &downcast<mc2661_device &>(*device).set_txd_callback(DEVCB_##_write);
+ downcast<mc2661_device &>(*device).set_txd_callback(DEVCB_##_write);
#define MCFG_MC2661_RXRDY_HANDLER(_write) \
- devcb = &downcast<mc2661_device &>(*device).set_rxrdy_callback(DEVCB_##_write);
+ downcast<mc2661_device &>(*device).set_rxrdy_callback(DEVCB_##_write);
#define MCFG_MC2661_TXRDY_HANDLER(_write) \
- devcb = &downcast<mc2661_device &>(*device).set_txrdy_callback(DEVCB_##_write);
+ downcast<mc2661_device &>(*device).set_txrdy_callback(DEVCB_##_write);
#define MCFG_MC2661_RTS_HANDLER(_write) \
- devcb = &downcast<mc2661_device &>(*device).set_rts_callback(DEVCB_##_write);
+ downcast<mc2661_device &>(*device).set_rts_callback(DEVCB_##_write);
#define MCFG_MC2661_DTR_HANDLER(_write) \
- devcb = &downcast<mc2661_device &>(*device).set_dtr_callback(DEVCB_##_write);
+ downcast<mc2661_device &>(*device).set_dtr_callback(DEVCB_##_write);
#define MCFG_MC2661_TXEMT_DSCHG_HANDLER(_write) \
- devcb = &downcast<mc2661_device &>(*device).set_txemt_dschg_callback(DEVCB_##_write);
+ downcast<mc2661_device &>(*device).set_txemt_dschg_callback(DEVCB_##_write);
#define MCFG_MC2661_BKDET_HANDLER(_write) \
- devcb = &downcast<mc2661_device &>(*device).set_bkdet_callback(DEVCB_##_write);
+ downcast<mc2661_device &>(*device).set_bkdet_callback(DEVCB_##_write);
#define MCFG_MC2661_XSYNC_HANDLER(_write) \
- devcb = &downcast<mc2661_device &>(*device).set_xsync_callback(DEVCB_##_write);
+ downcast<mc2661_device &>(*device).set_xsync_callback(DEVCB_##_write);
diff --git a/src/devices/machine/mc68328.h b/src/devices/machine/mc68328.h
index 61df82ebe16..f146c6856c5 100644
--- a/src/devices/machine/mc68328.h
+++ b/src/devices/machine/mc68328.h
@@ -389,76 +389,76 @@ DECLARE_DEVICE_TYPE(MC68328, mc68328_device)
downcast<mc68328_device &>(*device).set_cpu_tag(_tag);
#define MCFG_MC68328_OUT_PORT_A_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_port_a_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_port_a_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_B_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_port_b_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_port_b_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_C_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_port_c_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_port_c_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_D_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_port_d_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_port_d_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_E_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_port_e_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_port_e_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_F_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_port_f_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_port_f_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_G_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_port_g_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_port_g_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_J_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_port_j_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_port_j_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_K_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_port_k_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_port_k_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PORT_M_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_port_m_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_port_m_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_A_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_in_port_a_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_in_port_a_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_B_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_in_port_b_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_in_port_b_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_C_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_in_port_c_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_in_port_c_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_D_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_in_port_d_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_in_port_d_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_E_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_in_port_e_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_in_port_e_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_F_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_in_port_f_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_in_port_f_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_G_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_in_port_g_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_in_port_g_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_J_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_in_port_j_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_in_port_j_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_K_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_in_port_k_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_in_port_k_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_PORT_M_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_in_port_m_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_in_port_m_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_PWM_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_pwm_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_pwm_callback(DEVCB_##_devcb);
#define MCFG_MC68328_OUT_SPIM_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_out_spim_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_out_spim_callback(DEVCB_##_devcb);
#define MCFG_MC68328_IN_SPIM_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_in_spim_callback(DEVCB_##_devcb);
+ downcast<mc68328_device &>(*device).set_in_spim_callback(DEVCB_##_devcb);
#define MCFG_MC68328_SPIM_XCH_TRIGGER_CB(_devcb) \
- devcb = &downcast<mc68328_device &>(*device).set_spim_xch_trigger_callback(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 ef5e457958a..54f6fff58a3 100644
--- a/src/devices/machine/mc6843.h
+++ b/src/devices/machine/mc6843.h
@@ -16,7 +16,7 @@
#include "imagedev/flopdrv.h"
#define MCFG_MC6843_IRQ_CALLBACK(_write) \
- devcb = &downcast<mc6843_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<mc6843_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
class mc6843_device : public device_t
{
diff --git a/src/devices/machine/mc6846.h b/src/devices/machine/mc6846.h
index 676db3129f9..c5870dc6c39 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 = &downcast<mc6846_device &>(*device).set_out_port_callback(DEVCB_##_devcb);
+ downcast<mc6846_device &>(*device).set_out_port_callback(DEVCB_##_devcb);
#define MCFG_MC6846_OUT_CP1_CB(_devcb) \
- devcb = &downcast<mc6846_device &>(*device).set_out_cp1_callback(DEVCB_##_devcb);
+ downcast<mc6846_device &>(*device).set_out_cp1_callback(DEVCB_##_devcb);
#define MCFG_MC6846_OUT_CP2_CB(_devcb) \
- devcb = &downcast<mc6846_device &>(*device).set_out_cp2_callback(DEVCB_##_devcb);
+ downcast<mc6846_device &>(*device).set_out_cp2_callback(DEVCB_##_devcb);
#define MCFG_MC6846_IN_PORT_CB(_devcb) \
- devcb = &downcast<mc6846_device &>(*device).set_in_port_callback(DEVCB_##_devcb);
+ downcast<mc6846_device &>(*device).set_in_port_callback(DEVCB_##_devcb);
#define MCFG_MC6846_OUT_CTO_CB(_devcb) \
- devcb = &downcast<mc6846_device &>(*device).set_out_cto_callback(DEVCB_##_devcb);
+ downcast<mc6846_device &>(*device).set_out_cto_callback(DEVCB_##_devcb);
#define MCFG_MC6846_IRQ_CB(_devcb) \
- devcb = &downcast<mc6846_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<mc6846_device &>(*device).set_irq_callback(DEVCB_##_devcb);
class mc6846_device : public device_t
diff --git a/src/devices/machine/mc6852.h b/src/devices/machine/mc6852.h
index 2ca977cacdc..43076544e45 100644
--- a/src/devices/machine/mc6852.h
+++ b/src/devices/machine/mc6852.h
@@ -42,16 +42,16 @@
downcast<mc6852_device &>(*device).set_tx_clock(_clock);
#define MCFG_MC6852_TX_DATA_CALLBACK(_write) \
- devcb = &downcast<mc6852_device &>(*device).set_tx_data_wr_callback(DEVCB_##_write);
+ downcast<mc6852_device &>(*device).set_tx_data_wr_callback(DEVCB_##_write);
#define MCFG_MC6852_IRQ_CALLBACK(_write) \
- devcb = &downcast<mc6852_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<mc6852_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_MC6852_SM_DTR_CALLBACK(_write) \
- devcb = &downcast<mc6852_device &>(*device).set_sm_dtr_wr_callback(DEVCB_##_write);
+ downcast<mc6852_device &>(*device).set_sm_dtr_wr_callback(DEVCB_##_write);
#define MCFG_MC6852_TUF_CALLBACK(_write) \
- devcb = &downcast<mc6852_device &>(*device).set_tuf_wr_callback(DEVCB_##_write);
+ downcast<mc6852_device &>(*device).set_tuf_wr_callback(DEVCB_##_write);
diff --git a/src/devices/machine/mc6854.h b/src/devices/machine/mc6854.h
index 36548024bfd..a43cb4fa57c 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 = &downcast<mc6854_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<mc6854_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_MC6854_OUT_TXD_CB(_devcb) \
- devcb = &downcast<mc6854_device &>(*device).set_out_txd_callback(DEVCB_##_devcb);
+ downcast<mc6854_device &>(*device).set_out_txd_callback(DEVCB_##_devcb);
#define MCFG_MC6854_OUT_FRAME_CB(_class, _method) \
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 = &downcast<mc6854_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
+ downcast<mc6854_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
#define MCFG_MC6854_OUT_DTR_CB(_devcb) \
- devcb = &downcast<mc6854_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
+ downcast<mc6854_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
class mc6854_device : public device_t
diff --git a/src/devices/machine/mc68681.h b/src/devices/machine/mc68681.h
index 9b907ab703d..9a706ee6087 100644
--- a/src/devices/machine/mc68681.h
+++ b/src/devices/machine/mc68681.h
@@ -8,30 +8,30 @@
#include "diserial.h"
#define MCFG_MC68681_IRQ_CALLBACK(_cb) \
- devcb = &downcast<duart_base_device &>(*device).set_irq_cb(DEVCB_##_cb);
+ downcast<duart_base_device &>(*device).set_irq_cb(DEVCB_##_cb);
#define MCFG_MC68681_A_TX_CALLBACK(_cb) \
- devcb = &downcast<duart_base_device &>(*device).set_a_tx_cb(DEVCB_##_cb);
+ downcast<duart_base_device &>(*device).set_a_tx_cb(DEVCB_##_cb);
#define MCFG_MC68681_B_TX_CALLBACK(_cb) \
- devcb = &downcast<duart_base_device &>(*device).set_b_tx_cb(DEVCB_##_cb);
+ downcast<duart_base_device &>(*device).set_b_tx_cb(DEVCB_##_cb);
// deprecated: use ipX_w() instead
#define MCFG_MC68681_INPORT_CALLBACK(_cb) \
- devcb = &downcast<duart_base_device &>(*device).set_inport_cb(DEVCB_##_cb);
+ downcast<duart_base_device &>(*device).set_inport_cb(DEVCB_##_cb);
#define MCFG_MC68681_OUTPORT_CALLBACK(_cb) \
- devcb = &downcast<duart_base_device &>(*device).set_outport_cb(DEVCB_##_cb);
+ downcast<duart_base_device &>(*device).set_outport_cb(DEVCB_##_cb);
#define MCFG_MC68681_SET_EXTERNAL_CLOCKS(_a, _b, _c, _d) \
downcast<duart_base_device &>(*device).set_clocks(_a, _b, _c, _d);
// SC28C94 specific callbacks
#define MCFG_SC28C94_C_TX_CALLBACK(_cb) \
- devcb = &downcast<sc28c94_device &>(*device).set_c_tx_cb(DEVCB_##_cb);
+ downcast<sc28c94_device &>(*device).set_c_tx_cb(DEVCB_##_cb);
#define MCFG_SC28C94_D_TX_CALLBACK(_cb) \
- devcb = &downcast<sc28c94_device &>(*device).set_d_tx_cb(DEVCB_##_cb);
+ downcast<sc28c94_device &>(*device).set_d_tx_cb(DEVCB_##_cb);
#define MC68681_RX_FIFO_SIZE 3
@@ -131,6 +131,11 @@ public:
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)); }
+ auto irq_cb() { return write_irq.bind(); }
+ auto a_tx_cb() { return write_a_tx.bind(); }
+ auto b_tx_cb() { return write_b_tx.bind(); }
+ auto inport_cb() { return read_inport.bind(); }
+ auto outport_cb() { return write_outport.bind(); }
// new-style push handlers for input port bits
DECLARE_WRITE_LINE_MEMBER( ip0_w );
diff --git a/src/devices/machine/mc68901.h b/src/devices/machine/mc68901.h
index b4a3e2a17b1..efba92e734b 100644
--- a/src/devices/machine/mc68901.h
+++ b/src/devices/machine/mc68901.h
@@ -55,31 +55,31 @@
downcast<mc68901_device &>(*device).set_tx_clock(_clk);
#define MCFG_MC68901_OUT_IRQ_CB(_devcb) \
- devcb = &downcast<mc68901_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<mc68901_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_GPIO_CB(_devcb) \
- devcb = &downcast<mc68901_device &>(*device).set_out_gpio_callback(DEVCB_##_devcb);
+ downcast<mc68901_device &>(*device).set_out_gpio_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TAO_CB(_devcb) \
- devcb = &downcast<mc68901_device &>(*device).set_out_tao_callback(DEVCB_##_devcb);
+ downcast<mc68901_device &>(*device).set_out_tao_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TBO_CB(_devcb) \
- devcb = &downcast<mc68901_device &>(*device).set_out_tbo_callback(DEVCB_##_devcb);
+ downcast<mc68901_device &>(*device).set_out_tbo_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TCO_CB(_devcb) \
- devcb = &downcast<mc68901_device &>(*device).set_out_tco_callback(DEVCB_##_devcb);
+ downcast<mc68901_device &>(*device).set_out_tco_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TDO_CB(_devcb) \
- devcb = &downcast<mc68901_device &>(*device).set_out_tdo_callback(DEVCB_##_devcb);
+ downcast<mc68901_device &>(*device).set_out_tdo_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_SO_CB(_devcb) \
- devcb = &downcast<mc68901_device &>(*device).set_out_so_callback(DEVCB_##_devcb);
+ downcast<mc68901_device &>(*device).set_out_so_callback(DEVCB_##_devcb);
/*#define MCFG_MC68901_OUT_RR_CB(_devcb) \
- devcb = &downcast<mc68901_device &>(*device).set_out_rr_callback(DEVCB_##_devcb);
+ downcast<mc68901_device &>(*device).set_out_rr_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TR_CB(_devcb) \
- devcb = &downcast<mc68901_device &>(*device).set_out_tr_callback(DEVCB_##_devcb);*/
+ downcast<mc68901_device &>(*device).set_out_tr_callback(DEVCB_##_devcb);*/
//**************************************************************************
diff --git a/src/devices/machine/mccs1850.h b/src/devices/machine/mccs1850.h
index 8241203c3aa..bd7771bc6a0 100644
--- a/src/devices/machine/mccs1850.h
+++ b/src/devices/machine/mccs1850.h
@@ -31,13 +31,13 @@
//**************************************************************************
#define MCFG_MCCS1850_INT_CALLBACK(_write) \
- devcb = &downcast<mccs1850_device &>(*device).set_int_wr_callback(DEVCB_##_write);
+ downcast<mccs1850_device &>(*device).set_int_wr_callback(DEVCB_##_write);
#define MCFG_MCCS1850_PSE_CALLBACK(_write) \
- devcb = &downcast<mccs1850_device &>(*device).set_pse_wr_callback(DEVCB_##_write);
+ downcast<mccs1850_device &>(*device).set_pse_wr_callback(DEVCB_##_write);
#define MCFG_MCCS1850_NUC_CALLBACK(_write) \
- devcb = &downcast<mccs1850_device &>(*device).set_nuc_wr_callback(DEVCB_##_write);
+ downcast<mccs1850_device &>(*device).set_nuc_wr_callback(DEVCB_##_write);
diff --git a/src/devices/machine/microtch.h b/src/devices/machine/microtch.h
index fcff6cfd552..9efa11d7eb0 100644
--- a/src/devices/machine/microtch.h
+++ b/src/devices/machine/microtch.h
@@ -74,7 +74,7 @@ DECLARE_DEVICE_TYPE(MICROTOUCH, microtouch_device)
#define MCFG_MICROTOUCH_ADD(_tag, _clock, _devcb) \
MCFG_DEVICE_ADD(_tag, MICROTOUCH, _clock) \
- devcb = &downcast<microtouch_device &>(*device).set_stx_callback(DEVCB_##_devcb);
+ downcast<microtouch_device &>(*device).set_stx_callback(DEVCB_##_devcb);
#define MCFG_MICROTOUCH_TOUCH_CB(_class, _touch_cb) \
downcast<microtouch_device &>(*device).set_touch_callback(microtouch_device::touch_cb(&_class::_touch_cb, this));
diff --git a/src/devices/machine/mm5740.h b/src/devices/machine/mm5740.h
index bbdc12f5c47..e28fbdc0956 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 = &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);
+#define MCFG_MM5740_MATRIX_X1(_cb) downcast<mm5740_device &>(*device).set_x_cb<0>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X2(_cb) downcast<mm5740_device &>(*device).set_x_cb<1>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X3(_cb) downcast<mm5740_device &>(*device).set_x_cb<2>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X4(_cb) downcast<mm5740_device &>(*device).set_x_cb<3>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X5(_cb) downcast<mm5740_device &>(*device).set_x_cb<4>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X6(_cb) downcast<mm5740_device &>(*device).set_x_cb<5>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X7(_cb) downcast<mm5740_device &>(*device).set_x_cb<6>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X8(_cb) downcast<mm5740_device &>(*device).set_x_cb<7>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X9(_cb) downcast<mm5740_device &>(*device).set_x_cb<8>(DEVCB_##_cb);
+#define MCFG_MM5740_SHIFT_CB(_cb) downcast<mm5740_device &>(*device).set_shift_cb(DEVCB_##_cb);
+#define MCFG_MM5740_CONTROL_CB(_cb) downcast<mm5740_device &>(*device).set_control_cb(DEVCB_##_cb);
+#define MCFG_MM5740_DATA_READY_CB(_cb) downcast<mm5740_device &>(*device).set_data_ready_cb(DEVCB_##_cb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/mm58167.h b/src/devices/machine/mm58167.h
index 63cad307e7b..4c5e0326a1d 100644
--- a/src/devices/machine/mm58167.h
+++ b/src/devices/machine/mm58167.h
@@ -19,7 +19,7 @@
//**************************************************************************
#define MCFG_MM58167_IRQ_CALLBACK(_cb) \
- devcb = &downcast<mm58167_device &>(*device).set_irq_cb(DEVCB_##_cb);
+ downcast<mm58167_device &>(*device).set_irq_cb(DEVCB_##_cb);
//**************************************************************************
diff --git a/src/devices/machine/mm74c922.h b/src/devices/machine/mm74c922.h
index a85c517adc1..bd448c2eb22 100644
--- a/src/devices/machine/mm74c922.h
+++ b/src/devices/machine/mm74c922.h
@@ -49,22 +49,22 @@
downcast<mm74c922_device &>(*device).set_cap_debounce(_value);
#define MCFG_MM74C922_DA_CALLBACK(_write) \
- devcb = &downcast<mm74c922_device &>(*device).set_da_wr_callback(DEVCB_##_write);
+ downcast<mm74c922_device &>(*device).set_da_wr_callback(DEVCB_##_write);
#define MCFG_MM74C922_X1_CALLBACK(_read) \
- devcb = &downcast<mm74c922_device &>(*device).set_x1_rd_callback(DEVCB_##_read);
+ downcast<mm74c922_device &>(*device).set_x1_rd_callback(DEVCB_##_read);
#define MCFG_MM74C922_X2_CALLBACK(_read) \
- devcb = &downcast<mm74c922_device &>(*device).set_x2_rd_callback(DEVCB_##_read);
+ downcast<mm74c922_device &>(*device).set_x2_rd_callback(DEVCB_##_read);
#define MCFG_MM74C922_X3_CALLBACK(_read) \
- devcb = &downcast<mm74c922_device &>(*device).set_x3_rd_callback(DEVCB_##_read);
+ downcast<mm74c922_device &>(*device).set_x3_rd_callback(DEVCB_##_read);
#define MCFG_MM74C922_X4_CALLBACK(_read) \
- devcb = &downcast<mm74c922_device &>(*device).set_x4_rd_callback(DEVCB_##_read);
+ downcast<mm74c922_device &>(*device).set_x4_rd_callback(DEVCB_##_read);
#define MCFG_MM74C922_X5_CALLBACK(_read) \
- devcb = &downcast<mm74c922_device &>(*device).set_x5_rd_callback(DEVCB_##_read);
+ downcast<mm74c922_device &>(*device).set_x5_rd_callback(DEVCB_##_read);
diff --git a/src/devices/machine/mos6526.h b/src/devices/machine/mos6526.h
index 2111106c76b..07001edf4d6 100644
--- a/src/devices/machine/mos6526.h
+++ b/src/devices/machine/mos6526.h
@@ -71,28 +71,28 @@
downcast<mos6526_device &>(*device).set_tod_clock(_clock);
#define MCFG_MOS6526_IRQ_CALLBACK(_write) \
- devcb = &downcast<mos6526_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<mos6526_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_MOS6526_CNT_CALLBACK(_write) \
- devcb = &downcast<mos6526_device &>(*device).set_cnt_wr_callback(DEVCB_##_write);
+ downcast<mos6526_device &>(*device).set_cnt_wr_callback(DEVCB_##_write);
#define MCFG_MOS6526_SP_CALLBACK(_write) \
- devcb = &downcast<mos6526_device &>(*device).set_sp_wr_callback(DEVCB_##_write);
+ downcast<mos6526_device &>(*device).set_sp_wr_callback(DEVCB_##_write);
#define MCFG_MOS6526_PA_INPUT_CALLBACK(_read) \
- devcb = &downcast<mos6526_device &>(*device).set_pa_rd_callback(DEVCB_##_read);
+ downcast<mos6526_device &>(*device).set_pa_rd_callback(DEVCB_##_read);
#define MCFG_MOS6526_PA_OUTPUT_CALLBACK(_write) \
- devcb = &downcast<mos6526_device &>(*device).set_pa_wr_callback(DEVCB_##_write);
+ downcast<mos6526_device &>(*device).set_pa_wr_callback(DEVCB_##_write);
#define MCFG_MOS6526_PB_INPUT_CALLBACK(_read) \
- devcb = &downcast<mos6526_device &>(*device).set_pb_rd_callback(DEVCB_##_read);
+ downcast<mos6526_device &>(*device).set_pb_rd_callback(DEVCB_##_read);
#define MCFG_MOS6526_PB_OUTPUT_CALLBACK(_write) \
- devcb = &downcast<mos6526_device &>(*device).set_pb_wr_callback(DEVCB_##_write);
+ downcast<mos6526_device &>(*device).set_pb_wr_callback(DEVCB_##_write);
#define MCFG_MOS6526_PC_CALLBACK(_write) \
- devcb = &downcast<mos6526_device &>(*device).set_pc_wr_callback(DEVCB_##_write);
+ downcast<mos6526_device &>(*device).set_pc_wr_callback(DEVCB_##_write);
@@ -119,6 +119,14 @@ public:
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)); }
+ auto irq_wr_callback() { return m_write_irq.bind(); }
+ auto cnt_wr_callback() { return m_write_cnt.bind(); }
+ auto sp_wr_callback() { return m_write_sp.bind(); }
+ auto pa_rd_callback() { return m_read_pa.bind(); }
+ auto pa_wr_callback() { return m_write_pa.bind(); }
+ auto pb_rd_callback() { return m_read_pb.bind(); }
+ auto pb_wr_callback() { return m_write_pb.bind(); }
+ auto pc_wr_callback() { return m_write_pc.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/mos6529.h b/src/devices/machine/mos6529.h
index ca0a4525d1b..abddc4175c7 100644
--- a/src/devices/machine/mos6529.h
+++ b/src/devices/machine/mos6529.h
@@ -32,28 +32,28 @@
//**************************************************************************
#define MCFG_MOS6529_P0_HANDLER(_devcb) \
- devcb = &downcast<mos6529_device &>(*device).set_p0_handler(DEVCB_##_devcb);
+ downcast<mos6529_device &>(*device).set_p0_handler(DEVCB_##_devcb);
#define MCFG_MOS6529_P1_HANDLER(_devcb) \
- devcb = &downcast<mos6529_device &>(*device).set_p1_handler(DEVCB_##_devcb);
+ downcast<mos6529_device &>(*device).set_p1_handler(DEVCB_##_devcb);
#define MCFG_MOS6529_P2_HANDLER(_devcb) \
- devcb = &downcast<mos6529_device &>(*device).set_p2_handler(DEVCB_##_devcb);
+ downcast<mos6529_device &>(*device).set_p2_handler(DEVCB_##_devcb);
#define MCFG_MOS6529_P3_HANDLER(_devcb) \
- devcb = &downcast<mos6529_device &>(*device).set_p3_handler(DEVCB_##_devcb);
+ downcast<mos6529_device &>(*device).set_p3_handler(DEVCB_##_devcb);
#define MCFG_MOS6529_P4_HANDLER(_devcb) \
- devcb = &downcast<mos6529_device &>(*device).set_p4_handler(DEVCB_##_devcb);
+ downcast<mos6529_device &>(*device).set_p4_handler(DEVCB_##_devcb);
#define MCFG_MOS6529_P5_HANDLER(_devcb) \
- devcb = &downcast<mos6529_device &>(*device).set_p5_handler(DEVCB_##_devcb);
+ downcast<mos6529_device &>(*device).set_p5_handler(DEVCB_##_devcb);
#define MCFG_MOS6529_P6_HANDLER(_devcb) \
- devcb = &downcast<mos6529_device &>(*device).set_p6_handler(DEVCB_##_devcb);
+ downcast<mos6529_device &>(*device).set_p6_handler(DEVCB_##_devcb);
#define MCFG_MOS6529_P7_HANDLER(_devcb) \
- devcb = &downcast<mos6529_device &>(*device).set_p7_handler(DEVCB_##_devcb);
+ downcast<mos6529_device &>(*device).set_p7_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/mos6530.h b/src/devices/machine/mos6530.h
index 2491e547a53..cc930fa8613 100644
--- a/src/devices/machine/mos6530.h
+++ b/src/devices/machine/mos6530.h
@@ -110,15 +110,15 @@ DECLARE_DEVICE_TYPE(MOS6530, mos6530_device)
#define MCFG_MOS6530_IN_PA_CB(_devcb) \
- devcb = &downcast<mos6530_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
+ downcast<mos6530_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_MOS6530_OUT_PA_CB(_devcb) \
- devcb = &downcast<mos6530_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
+ downcast<mos6530_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_MOS6530_IN_PB_CB(_devcb) \
- devcb = &downcast<mos6530_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
+ downcast<mos6530_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_MOS6530_OUT_PB_CB(_devcb) \
- devcb = &downcast<mos6530_device &>(*device).set_out_pb_callback(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 56080ff49dc..a5dfd3ee6fe 100644
--- a/src/devices/machine/mos6530n.h
+++ b/src/devices/machine/mos6530n.h
@@ -64,115 +64,115 @@
//**************************************************************************
#define MCFG_MOS6530n_IRQ_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_MOS6530n_IN_PA_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pa_rd_callback(DEVCB_##_read);
#define MCFG_MOS6530n_OUT_PA_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pa_wr_callback(DEVCB_##_write);
#define MCFG_MOS6530n_IN_PB_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pb_rd_callback(DEVCB_##_read);
#define MCFG_MOS6530n_OUT_PB_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pb_wr_callback(DEVCB_##_write);
#define MCFG_MOS6530n_IN_PA0_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<0>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pa_rd_callback<0>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA1_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<1>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pa_rd_callback<1>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA2_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<2>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pa_rd_callback<2>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA3_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<3>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pa_rd_callback<3>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA4_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<4>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pa_rd_callback<4>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA5_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<5>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pa_rd_callback<5>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA6_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<6>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pa_rd_callback<6>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA7_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_rd_callback<7>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pa_rd_callback<7>(DEVCB_##_read);
#define MCFG_MOS6530n_OUT_PA0_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<0>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pa_wr_callback<0>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA1_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<1>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pa_wr_callback<1>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA2_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<2>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pa_wr_callback<2>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA3_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<3>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pa_wr_callback<3>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA4_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<4>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pa_wr_callback<4>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA5_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<5>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pa_wr_callback<5>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA6_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<6>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pa_wr_callback<6>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA7_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pa_wr_callback<7>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pa_wr_callback<7>(DEVCB_##_write);
#define MCFG_MOS6530n_IN_PB0_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<0>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pb_rd_callback<0>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB1_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<1>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pb_rd_callback<1>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB2_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<2>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pb_rd_callback<2>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB3_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<3>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pb_rd_callback<3>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB4_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<4>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pb_rd_callback<4>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB5_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<5>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pb_rd_callback<5>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB6_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<6>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pb_rd_callback<6>(DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB7_CB(_read) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_rd_callback<7>(DEVCB_##_read);
+ downcast<mos6530_device_base &>(*device).set_pb_rd_callback<7>(DEVCB_##_read);
#define MCFG_MOS6530n_OUT_PB0_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<0>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pb_wr_callback<0>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB1_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<1>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pb_wr_callback<1>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB2_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<2>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pb_wr_callback<2>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB3_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<3>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pb_wr_callback<3>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB4_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<4>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pb_wr_callback<4>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB5_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<5>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pb_wr_callback<5>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB6_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<6>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pb_wr_callback<6>(DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB7_CB(_write) \
- devcb = &downcast<mos6530_device_base &>(*device).set_pb_wr_callback<7>(DEVCB_##_write);
+ downcast<mos6530_device_base &>(*device).set_pb_wr_callback<7>(DEVCB_##_write);
@@ -194,6 +194,15 @@ public:
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)); }
+ auto irq_wr_callback() { return m_irq_cb.bind(); }
+ auto pa_rd_callback() { return m_in8_pa_cb.bind(); }
+ auto pa_wr_callback() { return m_out8_pa_cb.bind(); }
+ auto pb_rd_callback() { return m_in8_pb_cb.bind(); }
+ auto pb_wr_callback() { return m_out8_pb_cb.bind(); }
+ template <unsigned N> auto pa_rd_callback() { return m_in_pa_cb[N].bind(); }
+ template <unsigned N> auto pa_wr_callback() { return m_out_pa_cb[N].bind(); }
+ template <unsigned N> auto pb_rd_callback() { return m_in_pb_cb[N].bind(); }
+ template <unsigned N> auto pb_wr_callback() { return m_out_pb_cb[N].bind(); }
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 07d1f7069ba..319f00e803d 100644
--- a/src/devices/machine/mos6551.h
+++ b/src/devices/machine/mos6551.h
@@ -34,19 +34,19 @@
downcast<mos6551_device &>(*device).set_xtal(_xtal);
#define MCFG_MOS6551_IRQ_HANDLER(_devcb) \
- devcb = &downcast<mos6551_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<mos6551_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_MOS6551_TXD_HANDLER(_devcb) \
- devcb = &downcast<mos6551_device &>(*device).set_txd_handler(DEVCB_##_devcb);
+ downcast<mos6551_device &>(*device).set_txd_handler(DEVCB_##_devcb);
#define MCFG_MOS6551_RXC_HANDLER(_devcb) \
- devcb = &downcast<mos6551_device &>(*device).set_rxc_handler(DEVCB_##_devcb);
+ downcast<mos6551_device &>(*device).set_rxc_handler(DEVCB_##_devcb);
#define MCFG_MOS6551_RTS_HANDLER(_devcb) \
- devcb = &downcast<mos6551_device &>(*device).set_rts_handler(DEVCB_##_devcb);
+ downcast<mos6551_device &>(*device).set_rts_handler(DEVCB_##_devcb);
#define MCFG_MOS6551_DTR_HANDLER(_devcb) \
- devcb = &downcast<mos6551_device &>(*device).set_dtr_handler(DEVCB_##_devcb);
+ downcast<mos6551_device &>(*device).set_dtr_handler(DEVCB_##_devcb);
class mos6551_device : public device_t
{
@@ -58,6 +58,11 @@ public:
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)); }
+ auto irq_handler() { return m_irq_handler.bind(); }
+ auto txd_handler() { return m_txd_handler.bind(); }
+ auto rxc_handler() { return m_rxc_handler.bind(); }
+ auto rts_handler() { return m_rts_handler.bind(); }
+ auto dtr_handler() { return m_dtr_handler.bind(); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
diff --git a/src/devices/machine/mos8722.h b/src/devices/machine/mos8722.h
index 330d22059b6..744adf415e7 100644
--- a/src/devices/machine/mos8722.h
+++ b/src/devices/machine/mos8722.h
@@ -46,19 +46,19 @@
//**************************************************************************
#define MCFG_MOS8722_Z80EN_CALLBACK(_write) \
- devcb = &downcast<mos8722_device &>(*device).set_z80en_wr_callback(DEVCB_##_write);
+ downcast<mos8722_device &>(*device).set_z80en_wr_callback(DEVCB_##_write);
#define MCFG_MOS8722_FSDIR_CALLBACK(_write) \
- devcb = &downcast<mos8722_device &>(*device).set_fsdir_wr_callback(DEVCB_##_write);
+ downcast<mos8722_device &>(*device).set_fsdir_wr_callback(DEVCB_##_write);
#define MCFG_MOS8722_GAME_CALLBACK(_read) \
- devcb = &downcast<mos8722_device &>(*device).set_game_rd_callback(DEVCB_##_read);
+ downcast<mos8722_device &>(*device).set_game_rd_callback(DEVCB_##_read);
#define MCFG_MOS8722_EXROM_CALLBACK(_read) \
- devcb = &downcast<mos8722_device &>(*device).set_exrom_rd_callback(DEVCB_##_read);
+ downcast<mos8722_device &>(*device).set_exrom_rd_callback(DEVCB_##_read);
#define MCFG_MOS8722_SENSE40_CALLBACK(_read) \
- devcb = &downcast<mos8722_device &>(*device).set_sense40_rd_callback(DEVCB_##_read);
+ downcast<mos8722_device &>(*device).set_sense40_rd_callback(DEVCB_##_read);
diff --git a/src/devices/machine/mpu401.h b/src/devices/machine/mpu401.h
index 1dd5d55243c..7fc7a718bb4 100644
--- a/src/devices/machine/mpu401.h
+++ b/src/devices/machine/mpu401.h
@@ -12,7 +12,7 @@
MCFG_IRQ_FUNC(irqf)
#define MCFG_IRQ_FUNC(irqf) \
- devcb = &downcast<mpu401_device *>(device)->set_irqf(DEVCB_##irqf);
+ downcast<mpu401_device *>(device)->set_irqf(DEVCB_##irqf);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/msm58321.h b/src/devices/machine/msm58321.h
index 2d0d9a4d424..24eb2dd327d 100644
--- a/src/devices/machine/msm58321.h
+++ b/src/devices/machine/msm58321.h
@@ -45,19 +45,19 @@
//**************************************************************************
#define MCFG_MSM58321_D0_HANDLER(_devcb) \
- devcb = &downcast<msm58321_device &>(*device).set_d0_handler(DEVCB_##_devcb);
+ downcast<msm58321_device &>(*device).set_d0_handler(DEVCB_##_devcb);
#define MCFG_MSM58321_D1_HANDLER(_devcb) \
- devcb = &downcast<msm58321_device &>(*device).set_d1_handler(DEVCB_##_devcb);
+ downcast<msm58321_device &>(*device).set_d1_handler(DEVCB_##_devcb);
#define MCFG_MSM58321_D2_HANDLER(_devcb) \
- devcb = &downcast<msm58321_device &>(*device).set_d2_handler(DEVCB_##_devcb);
+ downcast<msm58321_device &>(*device).set_d2_handler(DEVCB_##_devcb);
#define MCFG_MSM58321_D3_HANDLER(_devcb) \
- devcb = &downcast<msm58321_device &>(*device).set_d3_handler(DEVCB_##_devcb);
+ downcast<msm58321_device &>(*device).set_d3_handler(DEVCB_##_devcb);
#define MCFG_MSM58321_BUSY_HANDLER(_devcb) \
- devcb = &downcast<msm58321_device &>(*device).set_busy_handler(DEVCB_##_devcb);
+ downcast<msm58321_device &>(*device).set_busy_handler(DEVCB_##_devcb);
#define MCFG_MSM58321_YEAR0(_year0) \
downcast<msm58321_device &>(*device).set_year0(_year0);
diff --git a/src/devices/machine/msm6242.h b/src/devices/machine/msm6242.h
index 0c8d387df82..bd6bd89403e 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 = &downcast<msm6242_device &>(*device).set_out_int_handler(DEVCB_##_devcb);
+ downcast<msm6242_device &>(*device).set_out_int_handler(DEVCB_##_devcb);
// ======================> msm6242_device
@@ -53,6 +53,7 @@ public:
msm6242_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <class Object> devcb_base &set_out_int_handler(Object &&cb) { return m_out_int_handler.set_callback(std::forward<Object>(cb)); }
+ auto out_int_handler() { return m_out_int_handler.bind(); }
// I/O operations
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/msm6253.h b/src/devices/machine/msm6253.h
index a4f9e33efaa..4f617b29a4e 100644
--- a/src/devices/machine/msm6253.h
+++ b/src/devices/machine/msm6253.h
@@ -37,22 +37,22 @@
downcast<msm6253_device &>(*device).set_input_tag<3>(_input);
#define MCFG_MSM6253_IN0_ANALOG_READ(_class, _method) \
- downcast<msm6253_device &>(*device).set_input_cb<0>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<msm6253_device &>(*device).set_input_cb<0>(&_class::_method, #_class "::" #_method, this);
#define MCFG_MSM6253_IN1_ANALOG_READ(_class, _method) \
- downcast<msm6253_device &>(*device).set_input_cb<1>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<msm6253_device &>(*device).set_input_cb<1>(&_class::_method, #_class "::" #_method, this);
#define MCFG_MSM6253_IN2_ANALOG_READ(_class, _method) \
- downcast<msm6253_device &>(*device).set_input_cb<2>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<msm6253_device &>(*device).set_input_cb<2>(&_class::_method, #_class "::" #_method, this);
#define MCFG_MSM6253_IN3_ANALOG_READ(_class, _method) \
- downcast<msm6253_device &>(*device).set_input_cb<3>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<msm6253_device &>(*device).set_input_cb<3>(&_class::_method, #_class "::" #_method, this);
#define MCFG_MSM6253_IN0_ANALOG_DEVREAD(_tag, _class, _method) \
- downcast<msm6253_device &>(*device).set_input_cb<0>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
+ downcast<msm6253_device &>(*device).set_input_cb<0>(&_class::_method, #_class "::" #_method, _tag);
#define MCFG_MSM6253_IN1_ANALOG_DEVREAD(_tag, _class, _method) \
- downcast<msm6253_device &>(*device).set_input_cb<1>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
+ downcast<msm6253_device &>(*device).set_input_cb<1>(&_class::_method, #_class "::" #_method, _tag);
#define MCFG_MSM6253_IN2_ANALOG_DEVREAD(_tag, _class, _method) \
- downcast<msm6253_device &>(*device).set_input_cb<2>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
+ downcast<msm6253_device &>(*device).set_input_cb<2>(&_class::_method, #_class "::" #_method, _tag);
#define MCFG_MSM6253_IN3_ANALOG_DEVREAD(_tag, _class, _method) \
- downcast<msm6253_device &>(*device).set_input_cb<3>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
+ downcast<msm6253_device &>(*device).set_input_cb<3>(&_class::_method, #_class "::" #_method, _tag);
//**************************************************************************
@@ -71,7 +71,7 @@ public:
// configuration
template <unsigned P> void set_input_tag(const char *tag) { m_analog_ports[P].set_tag(tag); }
- template <unsigned P, typename Object> void set_input_cb(Object &&cb) { m_analog_input_cb[P] = std::forward<Object>(cb); }
+ template <unsigned P, typename... T> void set_input_cb(T &&... args) { m_analog_input_cb[P] = port_read_delegate(std::forward<T>(args)...); }
// write handlers
WRITE8_MEMBER(address_w);
diff --git a/src/devices/machine/ncr5380.h b/src/devices/machine/ncr5380.h
index ca63db53817..d6f5eb76d06 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 = &downcast<ncr5380_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<ncr5380_device &>(*device).set_irq_callback(DEVCB_##_devcb);
class ncr5380_device : public legacy_scsi_host_adapter
{
diff --git a/src/devices/machine/ncr5380n.h b/src/devices/machine/ncr5380n.h
index 8d627970df9..973616c65a3 100644
--- a/src/devices/machine/ncr5380n.h
+++ b/src/devices/machine/ncr5380n.h
@@ -16,10 +16,10 @@
#include "machine/nscsi_bus.h"
#define MCFG_NCR5380N_IRQ_HANDLER(_devcb) \
- devcb = &downcast<ncr5380n_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<ncr5380n_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_NCR5380N_DRQ_HANDLER(_devcb) \
- devcb = &downcast<ncr5380n_device &>(*device).set_drq_handler(DEVCB_##_devcb);
+ downcast<ncr5380n_device &>(*device).set_drq_handler(DEVCB_##_devcb);
class ncr5380n_device : public nscsi_device
{
diff --git a/src/devices/machine/ncr5385.h b/src/devices/machine/ncr5385.h
index a7b551b2440..8cbe4ea9e79 100644
--- a/src/devices/machine/ncr5385.h
+++ b/src/devices/machine/ncr5385.h
@@ -50,7 +50,7 @@
//**************************************************************************
#define MCFG_NCR5385_INT_CB(_int) \
- devcb = &downcast<ncr5385_device &>(*device).set_int_callback(DEVCB_##_int);
+ downcast<ncr5385_device &>(*device).set_int_callback(DEVCB_##_int);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/ncr5390.h b/src/devices/machine/ncr5390.h
index 4e24a20eec8..a257bdf31d6 100644
--- a/src/devices/machine/ncr5390.h
+++ b/src/devices/machine/ncr5390.h
@@ -8,10 +8,10 @@
#include "machine/nscsi_bus.h"
#define MCFG_NCR5390_IRQ_HANDLER(_devcb) \
- devcb = &downcast<ncr5390_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<ncr5390_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_NCR5390_DRQ_HANDLER(_devcb) \
- devcb = &downcast<ncr5390_device &>(*device).set_drq_handler(DEVCB_##_devcb);
+ downcast<ncr5390_device &>(*device).set_drq_handler(DEVCB_##_devcb);
class ncr5390_device : public nscsi_device
{
diff --git a/src/devices/machine/ncr539x.h b/src/devices/machine/ncr539x.h
index 074a73c307d..2f024d643ec 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 = &downcast<ncr539x_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
+ downcast<ncr539x_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_NCR539X_OUT_DRQ_CB(_devcb) \
- devcb = &downcast<ncr539x_device &>(*device).set_out_drq_callback(DEVCB_##_devcb);
+ downcast<ncr539x_device &>(*device).set_out_drq_callback(DEVCB_##_devcb);
class ncr539x_device : public legacy_scsi_host_adapter
{
diff --git a/src/devices/machine/nsc810.h b/src/devices/machine/nsc810.h
index ca175ebd6b8..bebeb8f82a6 100644
--- a/src/devices/machine/nsc810.h
+++ b/src/devices/machine/nsc810.h
@@ -108,28 +108,28 @@ private:
downcast<nsc810_device *>(device)->set_timer1_clock(_t1clk);
#define MCFG_NSC810_PORTA_READ(_read) \
- devcb = &downcast<nsc810_device &>(*device).set_portA_read_callback(DEVCB_##_read);
+ downcast<nsc810_device &>(*device).set_portA_read_callback(DEVCB_##_read);
#define MCFG_NSC810_PORTB_READ(_read) \
- devcb = &downcast<nsc810_device &>(*device).set_portB_read_callback(DEVCB_##_read);
+ downcast<nsc810_device &>(*device).set_portB_read_callback(DEVCB_##_read);
#define MCFG_NSC810_PORTC_READ(_read) \
- devcb = &downcast<nsc810_device &>(*device).set_portC_read_callback(DEVCB_##_read);
+ downcast<nsc810_device &>(*device).set_portC_read_callback(DEVCB_##_read);
#define MCFG_NSC810_PORTA_WRITE(_write) \
- devcb = &downcast<nsc810_device &>(*device).set_portA_write_callback(DEVCB_##_write);
+ downcast<nsc810_device &>(*device).set_portA_write_callback(DEVCB_##_write);
#define MCFG_NSC810_PORTB_WRITE(_write) \
- devcb = &downcast<nsc810_device &>(*device).set_portB_write_callback(DEVCB_##_write);
+ downcast<nsc810_device &>(*device).set_portB_write_callback(DEVCB_##_write);
#define MCFG_NSC810_PORTC_WRITE(_write) \
- devcb = &downcast<nsc810_device &>(*device).set_portC_write_callback(DEVCB_##_write);
+ downcast<nsc810_device &>(*device).set_portC_write_callback(DEVCB_##_write);
#define MCFG_NSC810_TIMER0_OUT(_write) \
- devcb = &downcast<nsc810_device &>(*device).set_timer0_callback(DEVCB_##_write);
+ downcast<nsc810_device &>(*device).set_timer0_callback(DEVCB_##_write);
#define MCFG_NSC810_TIMER1_OUT(_write) \
- devcb = &downcast<nsc810_device &>(*device).set_timer1_callback(DEVCB_##_write);
+ downcast<nsc810_device &>(*device).set_timer1_callback(DEVCB_##_write);
// device type definition
DECLARE_DEVICE_TYPE(NSC810, nsc810_device)
diff --git a/src/devices/machine/nscsi_cb.h b/src/devices/machine/nscsi_cb.h
index 27279e5eb04..b5156935a98 100644
--- a/src/devices/machine/nscsi_cb.h
+++ b/src/devices/machine/nscsi_cb.h
@@ -9,22 +9,22 @@
#define MCFG_NSCSICB_RST_HANDLER(_line) \
- devcb = &downcast<nscsi_callback_device *>(device)->set_rst_callback(DEVCB_##_line);
+ downcast<nscsi_callback_device *>(device)->set_rst_callback(DEVCB_##_line);
#define MCFG_NSCSICB_ATN_HANDLER(_line) \
- devcb = &downcast<nscsi_callback_device *>(device)->set_atn_callback(DEVCB_##_line);
+ downcast<nscsi_callback_device *>(device)->set_atn_callback(DEVCB_##_line);
#define MCFG_NSCSICB_ACK_HANDLER(_line) \
- devcb = &downcast<nscsi_callback_device *>(device)->set_ack_callback(DEVCB_##_line);
+ downcast<nscsi_callback_device *>(device)->set_ack_callback(DEVCB_##_line);
#define MCFG_NSCSICB_REQ_HANDLER(_line) \
- devcb = &downcast<nscsi_callback_device *>(device)->set_req_callback(DEVCB_##_line);
+ downcast<nscsi_callback_device *>(device)->set_req_callback(DEVCB_##_line);
#define MCFG_NSCSICB_MSG_HANDLER(_line) \
- devcb = &downcast<nscsi_callback_device *>(device)->set_msg_callback(DEVCB_##_line);
+ downcast<nscsi_callback_device *>(device)->set_msg_callback(DEVCB_##_line);
#define MCFG_NSCSICB_IO_HANDLER(_line) \
- devcb = &downcast<nscsi_callback_device *>(device)->set_io_callback(DEVCB_##_line);
+ downcast<nscsi_callback_device *>(device)->set_io_callback(DEVCB_##_line);
#define MCFG_NSCSICB_CD_HANDLER(_line) \
downcast<nscsi_callback_device *>(device)->set_cd_callback(DEVCB_##_line);
diff --git a/src/devices/machine/output_latch.h b/src/devices/machine/output_latch.h
index bdadd772ade..c915b4c7207 100644
--- a/src/devices/machine/output_latch.h
+++ b/src/devices/machine/output_latch.h
@@ -7,28 +7,28 @@
#define MCFG_OUTPUT_LATCH_BIT0_HANDLER(_devcb) \
- devcb = &downcast<output_latch_device &>(*device).set_bit_handler<0>(DEVCB_##_devcb);
+ downcast<output_latch_device &>(*device).set_bit_handler<0>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT1_HANDLER(_devcb) \
- devcb = &downcast<output_latch_device &>(*device).set_bit_handler<1>(DEVCB_##_devcb);
+ downcast<output_latch_device &>(*device).set_bit_handler<1>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT2_HANDLER(_devcb) \
- devcb = &downcast<output_latch_device &>(*device).set_bit_handler<2>(DEVCB_##_devcb);
+ downcast<output_latch_device &>(*device).set_bit_handler<2>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT3_HANDLER(_devcb) \
- devcb = &downcast<output_latch_device &>(*device).set_bit_handler<3>(DEVCB_##_devcb);
+ downcast<output_latch_device &>(*device).set_bit_handler<3>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT4_HANDLER(_devcb) \
- devcb = &downcast<output_latch_device &>(*device).set_bit_handler<4>(DEVCB_##_devcb);
+ downcast<output_latch_device &>(*device).set_bit_handler<4>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT5_HANDLER(_devcb) \
- devcb = &downcast<output_latch_device &>(*device).set_bit_handler<5>(DEVCB_##_devcb);
+ downcast<output_latch_device &>(*device).set_bit_handler<5>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT6_HANDLER(_devcb) \
- devcb = &downcast<output_latch_device &>(*device).set_bit_handler<6>(DEVCB_##_devcb);
+ downcast<output_latch_device &>(*device).set_bit_handler<6>(DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT7_HANDLER(_devcb) \
- devcb = &downcast<output_latch_device &>(*device).set_bit_handler<7>(DEVCB_##_devcb);
+ downcast<output_latch_device &>(*device).set_bit_handler<7>(DEVCB_##_devcb);
class output_latch_device : public device_t
{
@@ -36,6 +36,7 @@ public:
output_latch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
template <unsigned Bit, class Object> devcb_base &set_bit_handler(Object &&cb) { return m_bit_handlers[Bit].set_callback(std::forward<Object>(cb)); }
+ template <unsigned Bit> auto bit_handler() { return m_bit_handlers[Bit].bind(); }
void write(uint8_t data);
DECLARE_WRITE8_MEMBER(bus_w) { write(data); }
diff --git a/src/devices/machine/pc_fdc.h b/src/devices/machine/pc_fdc.h
index 2cc6970a621..76fe6db1730 100644
--- a/src/devices/machine/pc_fdc.h
+++ b/src/devices/machine/pc_fdc.h
@@ -20,10 +20,10 @@
MCFG_DEVICE_ADD(_tag, PC_FDC_AT, 0)
#define MCFG_PC_FDC_INTRQ_CALLBACK(_write) \
- devcb = &downcast<pc_fdc_family_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
+ downcast<pc_fdc_family_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
#define MCFG_PC_FDC_DRQ_CALLBACK(_write) \
- devcb = &downcast<pc_fdc_family_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
+ downcast<pc_fdc_family_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
class pc_fdc_family_device : public pc_fdc_interface {
public:
diff --git a/src/devices/machine/pc_lpt.h b/src/devices/machine/pc_lpt.h
index e9d46e37247..d85768bb5d4 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 = &downcast<pc_lpt_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<pc_lpt_device &>(*device).set_irq_handler(DEVCB_##_devcb);
/***************************************************************************
DEVICE CONFIGURATION MACROS
diff --git a/src/devices/machine/pci-ide.h b/src/devices/machine/pci-ide.h
index c6bafacc8df..4a7519a531e 100644
--- a/src/devices/machine/pci-ide.h
+++ b/src/devices/machine/pci-ide.h
@@ -20,7 +20,7 @@ TODO:
#include "idectrl.h"
#define MCFG_IDE_PCI_IRQ_HANDLER(_devcb) \
- devcb = &downcast<ide_pci_device &>(*device).set_irq_handler(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) \
@@ -40,6 +40,7 @@ public:
ide_pci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ auto irq_handler() { return m_irq_handler.bind(); }
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 d3915ea10d8..fe42ea4fa80 100644
--- a/src/devices/machine/pci9050.h
+++ b/src/devices/machine/pci9050.h
@@ -19,10 +19,10 @@
downcast<pci9050_device *>(device)->set_map(id, address_map_constructor(&map, #map, this), this);
#define MCFG_PCI9050_USER_INPUT_CALLBACK(_write) \
- devcb = &downcast<pci9050_device &>(*device).set_user_input_callback(DEVCB_##_write);
+ downcast<pci9050_device &>(*device).set_user_input_callback(DEVCB_##_write);
#define MCFG_PCI9050_USER_OUTPUT_CALLBACK(_read) \
- devcb = &downcast<pci9050_device &>(*device).set_user_output_callback(DEVCB_##_read);
+ downcast<pci9050_device &>(*device).set_user_output_callback(DEVCB_##_read);
class pci9050_device : public pci_device
{
diff --git a/src/devices/machine/pckeybrd.h b/src/devices/machine/pckeybrd.h
index 15e5cc92b3a..622af173bf8 100644
--- a/src/devices/machine/pckeybrd.h
+++ b/src/devices/machine/pckeybrd.h
@@ -115,16 +115,16 @@ DECLARE_DEVICE_TYPE(AT_KEYB, at_keyboard_device)
#define MCFG_PC_KEYB_ADD(_tag, _cb) \
MCFG_DEVICE_ADD(_tag, PC_KEYB, 0) \
- devcb = &downcast<pc_keyboard_device &>(*device).set_keypress_callback(DEVCB_##_cb);
+ 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) \
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);
+ 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) \
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);
+ 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 734a1849af6..984f93b27b5 100644
--- a/src/devices/machine/pdc.h
+++ b/src/devices/machine/pdc.h
@@ -115,8 +115,8 @@ DECLARE_DEVICE_TYPE(PDC, pdc_device)
/* MCFG defines */
#define MCFG_PDC_R_CB(_devcb) \
- devcb = &downcast<pdc_device &>(*device).m68k_r_callback(DEVCB_##_devcb);
+ downcast<pdc_device &>(*device).m68k_r_callback(DEVCB_##_devcb);
#define MCFG_PDC_W_CB(_devcb) \
- devcb = &downcast<pdc_device &>(*device).m68k_w_callback(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 59b538e8fc8..ea3cad4c09a 100644
--- a/src/devices/machine/phi.h
+++ b/src/devices/machine/phi.h
@@ -72,23 +72,19 @@ public:
PHI_488_SIGNAL_COUNT
};
- 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)); }
-
- template <class Object> devcb_base &set_sys_cntrl_read_cb(Object &&cb)
- { return m_sys_cntrl_read_func.set_callback(std::forward<Object>(cb)); }
+ 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)); }
+ template <class Object> devcb_base &set_sys_cntrl_read_cb(Object &&cb) { return m_sys_cntrl_read_func.set_callback(std::forward<Object>(cb)); }
+
+ auto dio_read_cb() { return m_dio_read_func.bind(); }
+ auto dio_write_cb() { return m_dio_write_func.bind(); }
+ template <phi_488_signal_t Signal> auto signal_write_cb() { return m_signal_wr_fns[ Signal ].bind(); }
+ auto int_write_cb() { return m_int_write_func.bind(); }
+ auto dmarq_write_cb() { return m_dmarq_write_func.bind(); }
+ auto sys_cntrl_read_cb() { return m_sys_cntrl_read_func.bind(); }
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 23e706b8055..8003c5449a7 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 = &downcast<pic8259_device &>(*device).set_out_int_callback(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 = &downcast<pic8259_device &>(*device).set_in_sp_callback(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 = &downcast<pic8259_device &>(*device).set_read_slave_ack_callback(DEVCB_##_devcb);
+ downcast<pic8259_device &>(*device).set_read_slave_ack_callback(DEVCB_##_devcb);
class pic8259_device : public device_t
@@ -53,6 +53,9 @@ public:
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)); }
+ auto out_int_callback() { return m_out_int_func.bind(); }
+ auto in_sp_callback() { return m_in_sp_func.bind(); }
+ auto read_slave_ack_callback() { return m_read_slave_ack_func.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/pit8253.h b/src/devices/machine/pit8253.h
index 4dc50854882..8ccb3474404 100644
--- a/src/devices/machine/pit8253.h
+++ b/src/devices/machine/pit8253.h
@@ -44,13 +44,13 @@
downcast<pit8253_device &>(*device).set_clk<2>(_clk);
#define MCFG_PIT8253_OUT0_HANDLER(_devcb) \
- devcb = &downcast<pit8253_device &>(*device).set_out_handler<0>(DEVCB_##_devcb);
+ downcast<pit8253_device &>(*device).set_out_handler<0>(DEVCB_##_devcb);
#define MCFG_PIT8253_OUT1_HANDLER(_devcb) \
- devcb = &downcast<pit8253_device &>(*device).set_out_handler<1>(DEVCB_##_devcb);
+ downcast<pit8253_device &>(*device).set_out_handler<1>(DEVCB_##_devcb);
#define MCFG_PIT8253_OUT2_HANDLER(_devcb) \
- devcb = &downcast<pit8253_device &>(*device).set_out_handler<2>(DEVCB_##_devcb);
+ downcast<pit8253_device &>(*device).set_out_handler<2>(DEVCB_##_devcb);
enum class pit_type
@@ -133,6 +133,7 @@ public:
template <unsigned N> void set_clk(double clk) { m_clk[N] = clk; }
template <unsigned N> void set_clk(const XTAL &xtal) { set_clk<N>(xtal.dvalue()); }
template <unsigned N, class Object> devcb_base &set_out_handler(Object &&cb) { return m_out_handler[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N> auto out_handler() { return m_out_handler[N].bind(); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
diff --git a/src/devices/machine/pxa255.h b/src/devices/machine/pxa255.h
index 4f0ce7bdab6..1f125108d57 100644
--- a/src/devices/machine/pxa255.h
+++ b/src/devices/machine/pxa255.h
@@ -22,13 +22,13 @@
#include "pxa255defs.h"
#define MCFG_PXA255_GPIO0_SET_CALLBACK(_devcb) \
- devcb = &downcast<pxa255_periphs_device &>(*device).set_gpio0_set_cb(DEVCB_##_devcb);
+ downcast<pxa255_periphs_device &>(*device).set_gpio0_set_cb(DEVCB_##_devcb);
#define MCFG_PXA255_GPIO0_CLEAR_CALLBACK(_devcb) \
- devcb = &downcast<pxa255_periphs_device &>(*device).set_gpio0_clear_cb(DEVCB_##_devcb);
+ downcast<pxa255_periphs_device &>(*device).set_gpio0_clear_cb(DEVCB_##_devcb);
#define MCFG_PXA255_GPIO0_IN_CALLBACK(_devcb) \
- devcb = &downcast<pxa255_periphs_device &>(*device).set_gpio0_in_cb(DEVCB_##_devcb);
+ downcast<pxa255_periphs_device &>(*device).set_gpio0_in_cb(DEVCB_##_devcb);
class pxa255_periphs_device : public device_t
{
diff --git a/src/devices/machine/ripple_counter.h b/src/devices/machine/ripple_counter.h
index cdbcb214d7d..c322b4fa718 100644
--- a/src/devices/machine/ripple_counter.h
+++ b/src/devices/machine/ripple_counter.h
@@ -20,9 +20,9 @@
// output callbacks
#define MCFG_RIPPLE_COUNTER_COUNT_OUT_CB(_devcb) \
- devcb = &downcast<ripple_counter_device &>(*device).set_count_out_cb(DEVCB_##_devcb);
+ downcast<ripple_counter_device &>(*device).set_count_out_cb(DEVCB_##_devcb);
#define MCFG_RIPPLE_COUNTER_ROM_OUT_CB(_devcb) \
- devcb = &downcast<ripple_counter_device &>(*device).set_rom_out_cb(DEVCB_##_devcb);
+ downcast<ripple_counter_device &>(*device).set_rom_out_cb(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -40,6 +40,8 @@ public:
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)); }
+ auto count_out_cb() { return m_count_out_cb.bind(); }
+ auto rom_out_cb() { return m_rom_out_cb.bind(); }
// control line handlers
DECLARE_WRITE_LINE_MEMBER(clock_w);
diff --git a/src/devices/machine/rp5c01.h b/src/devices/machine/rp5c01.h
index 6c0cf00050b..fe2c92f19ac 100644
--- a/src/devices/machine/rp5c01.h
+++ b/src/devices/machine/rp5c01.h
@@ -32,7 +32,7 @@
//**************************************************************************
#define MCFG_RP5C01_OUT_ALARM_CB(_devcb) \
- devcb = &downcast<rp5c01_device &>(*device).set_out_alarm_callback(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() \
diff --git a/src/devices/machine/rp5c15.h b/src/devices/machine/rp5c15.h
index 21633834f07..f3191c4df9a 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 = &downcast<rp5c15_device &>(*device).set_out_alarm_callback(DEVCB_##_devcb);
+ downcast<rp5c15_device &>(*device).set_out_alarm_callback(DEVCB_##_devcb);
#define MCFG_RP5C15_OUT_CLKOUT_CB(_devcb) \
- devcb = &downcast<rp5c15_device &>(*device).set_out_clkout_callback(DEVCB_##_devcb);
+ downcast<rp5c15_device &>(*device).set_out_clkout_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/rstbuf.h b/src/devices/machine/rstbuf.h
index fe808b473e6..af0d8ffbef2 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 = &downcast<rst_buffer_device &>(*device).set_int_callback(DEVCB_##_devcb);
+ downcast<rst_buffer_device &>(*device).set_int_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/rtc4543.h b/src/devices/machine/rtc4543.h
index 3741f8a46d8..da51b7cf440 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 = &downcast<rtc4543_device &>(*device).set_data_cb(DEVCB_##cb);
+ downcast<rtc4543_device &>(*device).set_data_cb(DEVCB_##cb);
#define MCFG_JRC6355E_ADD(tag, clock) \
MCFG_DEVICE_ADD((tag), JRC6355E, (clock))
diff --git a/src/devices/machine/rtc65271.h b/src/devices/machine/rtc65271.h
index 93284622b1a..3042c738659 100644
--- a/src/devices/machine/rtc65271.h
+++ b/src/devices/machine/rtc65271.h
@@ -15,7 +15,7 @@
//**************************************************************************
#define MCFG_RTC65271_INTERRUPT_CB(cb) \
- devcb = &downcast<rtc65271_device &>(*device).set_interrupt_callback(DEVCB_##cb);
+ downcast<rtc65271_device &>(*device).set_interrupt_callback(DEVCB_##cb);
// ======================> rtc65271_device
diff --git a/src/devices/machine/s2636.h b/src/devices/machine/s2636.h
index 4653273c281..85c4a587c54 100644
--- a/src/devices/machine/s2636.h
+++ b/src/devices/machine/s2636.h
@@ -29,7 +29,7 @@
downcast<s2636_device &>(*device).set_divider((divider));
#define MCFG_S2623_SET_INTREQ_CALLBACK(cb) \
- devcb = &downcast<s2636_device &>(*device).set_intreq_cb(DEVCB_##cb);
+ downcast<s2636_device &>(*device).set_intreq_cb(DEVCB_##cb);
/*************************************
diff --git a/src/devices/machine/s3c2400.h b/src/devices/machine/s3c2400.h
index e11da131972..b22f306af2f 100644
--- a/src/devices/machine/s3c2400.h
+++ b/src/devices/machine/s3c2400.h
@@ -28,31 +28,31 @@
downcast<s3c2400_device &>(*device).set_screen_tag(screen_tag);
#define MCFG_S3C2400_CORE_PIN_R_CB(cb) \
- devcb = &downcast<s3c2400_device &>(*device).set_core_pin_r_callback(DEVCB_##cb);
+ downcast<s3c2400_device &>(*device).set_core_pin_r_callback(DEVCB_##cb);
#define MCFG_S3C2400_CORE_PIN_W_CB(cb) \
- devcb = &downcast<s3c2400_device &>(*device).set_core_pin_w_callback(DEVCB_##cb);
+ downcast<s3c2400_device &>(*device).set_core_pin_w_callback(DEVCB_##cb);
#define MCFG_S3C2400_GPIO_PORT_R_CB(cb) \
- devcb = &downcast<s3c2400_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb);
+ downcast<s3c2400_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb);
#define MCFG_S3C2400_GPIO_PORT_W_CB(cb) \
- devcb = &downcast<s3c2400_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb);
+ downcast<s3c2400_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb);
#define MCFG_S3C2400_I2C_SCL_W_CB(cb) \
- devcb = &downcast<s3c2400_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb);
+ downcast<s3c2400_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb);
#define MCFG_S3C2400_I2C_SDA_R_CB(cb) \
- devcb = &downcast<s3c2400_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb);
+ downcast<s3c2400_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb);
#define MCFG_S3C2400_I2C_SDA_W_CB(cb) \
- devcb = &downcast<s3c2400_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb);
+ downcast<s3c2400_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb);
#define MCFG_S3C2400_ADC_DATA_R_CB(cb) \
- devcb = &downcast<s3c2400_device &>(*device).set_adc_data_r_callback(DEVCB_##cb);
+ downcast<s3c2400_device &>(*device).set_adc_data_r_callback(DEVCB_##cb);
#define MCFG_S3C2400_I2S_DATA_W_CB(cb) \
- devcb = &downcast<s3c2400_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb);
+ downcast<s3c2400_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb);
#define MCFG_S3C2400_LCD_FLAGS(flags) \
downcast<s3c2400_device &>(*device).set_lcd_flags((flags));
diff --git a/src/devices/machine/s3c2410.h b/src/devices/machine/s3c2410.h
index 480c15b52e5..fe0507b5a68 100644
--- a/src/devices/machine/s3c2410.h
+++ b/src/devices/machine/s3c2410.h
@@ -28,43 +28,43 @@
downcast<s3c2410_device &>(*device).set_screen_tag(screen_tag);
#define MCFG_S3C2410_CORE_PIN_R_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_core_pin_r_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_core_pin_r_callback(DEVCB_##cb);
#define MCFG_S3C2410_CORE_PIN_W_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_core_pin_w_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_core_pin_w_callback(DEVCB_##cb);
#define MCFG_S3C2410_GPIO_PORT_R_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb);
#define MCFG_S3C2410_GPIO_PORT_W_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb);
#define MCFG_S3C2410_I2C_SCL_W_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb);
#define MCFG_S3C2410_I2C_SDA_R_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb);
#define MCFG_S3C2410_I2C_SDA_W_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb);
#define MCFG_S3C2410_ADC_DATA_R_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_adc_data_r_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_adc_data_r_callback(DEVCB_##cb);
#define MCFG_S3C2410_I2S_DATA_W_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb);
#define MCFG_S3C2410_NAND_COMMAND_W_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_nand_command_w_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_nand_command_w_callback(DEVCB_##cb);
#define MCFG_S3C2410_NAND_ADDRESS_W_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_nand_address_w_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_nand_address_w_callback(DEVCB_##cb);
#define MCFG_S3C2410_NAND_DATA_R_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_nand_data_r_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_nand_data_r_callback(DEVCB_##cb);
#define MCFG_S3C2410_NAND_DATA_W_CB(cb) \
- devcb = &downcast<s3c2410_device &>(*device).set_nand_data_w_callback(DEVCB_##cb);
+ downcast<s3c2410_device &>(*device).set_nand_data_w_callback(DEVCB_##cb);
#define MCFG_S3C2410_LCD_FLAGS(flags) \
downcast<s3c2410_device &>(*device).set_lcd_flags((flags));
diff --git a/src/devices/machine/s3c2440.h b/src/devices/machine/s3c2440.h
index 38aa6423a09..066e6f70d77 100644
--- a/src/devices/machine/s3c2440.h
+++ b/src/devices/machine/s3c2440.h
@@ -27,43 +27,43 @@
downcast<s3c2440_device &>(*device).set_screen_tag(screen_tag);
#define MCFG_S3C2440_CORE_PIN_R_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_core_pin_r_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_core_pin_r_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_CORE_PIN_W_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_core_pin_w_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_core_pin_w_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_GPIO_PORT_R_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_gpio_port_r_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_gpio_port_r_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_GPIO_PORT_W_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_gpio_port_w_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_gpio_port_w_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_I2C_SCL_W_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_i2c_scl_w_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_i2c_scl_w_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_I2C_SDA_R_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_i2c_sda_r_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_i2c_sda_r_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_I2C_SDA_W_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_i2c_sda_w_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_i2c_sda_w_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_ADC_DATA_R_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_adc_data_r_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_adc_data_r_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_I2S_DATA_W_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_i2s_data_w_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_i2s_data_w_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_NAND_COMMAND_W_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_nand_command_w_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_nand_command_w_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_NAND_ADDRESS_W_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_nand_address_w_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_nand_address_w_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_NAND_DATA_R_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_nand_data_r_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_nand_data_r_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_NAND_DATA_W_CB(_devcb) \
- devcb = &downcast<s3c2440_device &>(*device).set_nand_data_w_callback(DEVCB_##_devcb);
+ downcast<s3c2440_device &>(*device).set_nand_data_w_callback(DEVCB_##_devcb);
#define MCFG_S3C2440_LCD_FLAGS(_flags) \
downcast<s3c2440_device &>(*device).set_lcd_flags(_flags);
diff --git a/src/devices/machine/s3c44b0.h b/src/devices/machine/s3c44b0.h
index 601f1ccd395..21d6d7e0082 100644
--- a/src/devices/machine/s3c44b0.h
+++ b/src/devices/machine/s3c44b0.h
@@ -605,25 +605,25 @@ DECLARE_DEVICE_TYPE(S3C44B0, s3c44b0_device)
#define MCFG_S3C44B0_GPIO_PORT_R_CB(cb) \
- devcb = &downcast<s3c44b0_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb);
+ downcast<s3c44b0_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb);
#define MCFG_S3C44B0_GPIO_PORT_W_CB(cb) \
- devcb = &downcast<s3c44b0_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb);
+ downcast<s3c44b0_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb);
#define MCFG_S3C44B0_I2C_SCL_W_CB(cb) \
- devcb = &downcast<s3c44b0_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb);
+ downcast<s3c44b0_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb);
#define MCFG_S3C44B0_I2C_SDA_R_CB(cb) \
- devcb = &downcast<s3c44b0_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb);
+ downcast<s3c44b0_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb);
#define MCFG_S3C44B0_I2C_SDA_W_CB(cb) \
- devcb = &downcast<s3c44b0_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb);
+ downcast<s3c44b0_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb);
#define MCFG_S3C44B0_ADC_DATA_R_CB(cb) \
- devcb = &downcast<s3c44b0_device &>(*device).set_adc_data_r_callback(DEVCB_##cb);
+ downcast<s3c44b0_device &>(*device).set_adc_data_r_callback(DEVCB_##cb);
#define MCFG_S3C44B0_I2S_DATA_W_CB(cb) \
- devcb = &downcast<s3c44b0_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb);
+ downcast<s3c44b0_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb);
#endif // MAME_MACHINE_S3C44B0_H
diff --git a/src/devices/machine/saa1043.h b/src/devices/machine/saa1043.h
index 4ee4e39d57b..92f2f5a0669 100644
--- a/src/devices/machine/saa1043.h
+++ b/src/devices/machine/saa1043.h
@@ -42,58 +42,58 @@
&downcast<saa1043_device &>(*device).set_type(_type);
#define MCFG_SAA1043_BC_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_bc_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_bc_callback(DEVCB_##_write);
#define MCFG_SAA1043_FH2_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_fh2_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_fh2_callback(DEVCB_##_write);
#define MCFG_SAA1043_FH3_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_fh3_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_fh3_callback(DEVCB_##_write);
#define MCFG_SAA1043_FH80_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_fh80_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_fh80_callback(DEVCB_##_write);
#define MCFG_SAA1043_PH_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_ph_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_ph_callback(DEVCB_##_write);
#define MCFG_SAA1043_NS_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_ns_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_ns_callback(DEVCB_##_write);
#define MCFG_SAA1043_RI_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_ri_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_ri_callback(DEVCB_##_write);
#define MCFG_SAA1043_WMP_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_wmp_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_wmp_callback(DEVCB_##_write);
#define MCFG_SAA1043_RR_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_rr_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_rr_callback(DEVCB_##_write);
#define MCFG_SAA1043_V1_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_v1_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_v1_callback(DEVCB_##_write);
#define MCFG_SAA1043_V2_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_v2_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_v2_callback(DEVCB_##_write);
#define MCFG_SAA1043_CLP_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_clp_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_clp_callback(DEVCB_##_write);
#define MCFG_SAA1043_DL_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_dl_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_dl_callback(DEVCB_##_write);
#define MCFG_SAA1043_H1_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_h1_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_h1_callback(DEVCB_##_write);
#define MCFG_SAA1043_H2_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_h2_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_h2_callback(DEVCB_##_write);
#define MCFG_SAA1043_CB_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_cb_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_cb_callback(DEVCB_##_write);
#define MCFG_SAA1043_CS_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_cs_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_cs_callback(DEVCB_##_write);
#define MCFG_SAA1043_ID_CALLBACK(_write) \
- devcb = &downcast<saa1043_device &>(*device).set_id_callback(DEVCB_##_write);
+ downcast<saa1043_device &>(*device).set_id_callback(DEVCB_##_write);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/scnxx562.h b/src/devices/machine/scnxx562.h
index fe4f5442a87..72c2df22a17 100644
--- a/src/devices/machine/scnxx562.h
+++ b/src/devices/machine/scnxx562.h
@@ -78,44 +78,44 @@
// Port A callbacks
#define MCFG_DUSCC_OUT_TXDA_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_txda_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_txda_callback(DEVCB_##_devcb);
#define MCFG_DUSCC_OUT_DTRA_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb);
#define MCFG_DUSCC_OUT_RTSA_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb);
#define MCFG_DUSCC_OUT_SYNCA_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_synca_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_synca_callback(DEVCB_##_devcb);
#define MCFG_DUSCC_OUT_TRXCA_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_trxca_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_trxca_callback(DEVCB_##_devcb);
#define MCFG_DUSCC_OUT_RTXCA_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_rtxca_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_rtxca_callback(DEVCB_##_devcb);
// Port B callbacks
#define MCFG_DUSCC_OUT_TXDB_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb);
#define MCFG_DUSCC_OUT_DTRB_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb);
#define MCFG_DUSCC_OUT_RTSB_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb);
#define MCFG_DUSCC_OUT_SYNCB_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb);
#define MCFG_DUSCC_OUT_TRXCB_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_trxcb_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_trxcb_callback(DEVCB_##_devcb);
#define MCFG_DUSCC_OUT_RTXCB_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_rtxcb_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_rtxcb_callback(DEVCB_##_devcb);
#define MCFG_DUSCC_OUT_INT_CB(_devcb) \
- devcb = &downcast<duscc_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
+ downcast<duscc_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/sis85c496.cpp b/src/devices/machine/sis85c496.cpp
index ebdbbfa797b..d5b784b84cc 100644
--- a/src/devices/machine/sis85c496.cpp
+++ b/src/devices/machine/sis85c496.cpp
@@ -89,12 +89,12 @@ MACHINE_CONFIG_START(sis85c496_host_device::device_add_mconfig)
MCFG_DEVICE_ADD("pic8259_master", PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, sis85c496_host_device, cpu_int_w))
- MCFG_PIC8259_IN_SP_CB(VCC)
+ MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, sis85c496_host_device, get_slave_ack))
MCFG_DEVICE_ADD("pic8259_slave", PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_master", pic8259_device, ir2_w))
- MCFG_PIC8259_IN_SP_CB(GND)
+ MCFG_PIC8259_IN_SP_CB(CONSTANT(0))
MCFG_DEVICE_ADD("keybc", AT_KEYBOARD_CONTROLLER, XTAL(12'000'000))
MCFG_AT_KEYBOARD_CONTROLLER_SYSTEM_RESET_CB(WRITELINE(*this, sis85c496_host_device, cpu_reset_w))
diff --git a/src/devices/machine/smartmed.h b/src/devices/machine/smartmed.h
index 5c9d3cfd946..279f3f3f7c8 100644
--- a/src/devices/machine/smartmed.h
+++ b/src/devices/machine/smartmed.h
@@ -18,7 +18,7 @@
downcast<nand_device &>(*device).set_nand_type((nand_device::chip::type));
#define MCFG_NAND_RNB_CALLBACK(write) \
- devcb = &downcast<nand_device &>(*device).set_rnb_wr_callback(DEVCB_##write);
+ downcast<nand_device &>(*device).set_rnb_wr_callback(DEVCB_##write);
/***************************************************************************
TYPE DEFINITIONS
diff --git a/src/devices/machine/smc91c9x.h b/src/devices/machine/smc91c9x.h
index 398ccd58ab5..b0695c4f6cb 100644
--- a/src/devices/machine/smc91c9x.h
+++ b/src/devices/machine/smc91c9x.h
@@ -123,12 +123,12 @@ DECLARE_DEVICE_TYPE(SMC91C96, smc91c96_device)
MCFG_DEVICE_ADD((tag), SMC91C94, 0)
#define MCFG_SMC91C94_IRQ_CALLBACK(write) \
- devcb = &downcast<smc91c94_device &>(*device).set_irq_callback(DEVCB_##write);
+ 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 = &downcast<smc91c96_device &>(*device).set_irq_callback(DEVCB_##write);
+ downcast<smc91c96_device &>(*device).set_irq_callback(DEVCB_##write);
#endif // MAME_MACHINE_SMC91C9X_H
diff --git a/src/devices/machine/smpc.h b/src/devices/machine/smpc.h
index bb18b14da4f..2321448a67f 100644
--- a/src/devices/machine/smpc.h
+++ b/src/devices/machine/smpc.h
@@ -30,41 +30,41 @@
downcast<smpc_hle_device &>(*device).set_control_port_tags(ctrl1_tag, ctrl2_tag);
#define MCFG_SMPC_HLE_PDR1_IN_CB(_devcb) \
- devcb = &downcast<smpc_hle_device &>(*device).set_pdr1_in_handler(DEVCB_##_devcb);
+ downcast<smpc_hle_device &>(*device).set_pdr1_in_handler(DEVCB_##_devcb);
#define MCFG_SMPC_HLE_PDR2_IN_CB(_devcb) \
- devcb = &downcast<smpc_hle_device &>(*device).set_pdr2_in_handler(DEVCB_##_devcb);
+ downcast<smpc_hle_device &>(*device).set_pdr2_in_handler(DEVCB_##_devcb);
#define MCFG_SMPC_HLE_PDR1_OUT_CB(_devcb) \
- devcb = &downcast<smpc_hle_device &>(*device).set_pdr1_out_handler(DEVCB_##_devcb);
+ downcast<smpc_hle_device &>(*device).set_pdr1_out_handler(DEVCB_##_devcb);
#define MCFG_SMPC_HLE_PDR2_OUT_CB(_devcb) \
- devcb = &downcast<smpc_hle_device &>(*device).set_pdr2_out_handler(DEVCB_##_devcb);
+ downcast<smpc_hle_device &>(*device).set_pdr2_out_handler(DEVCB_##_devcb);
#define MCFG_SMPC_HLE_MASTER_RESET_CB(_devcb) \
- devcb = &downcast<smpc_hle_device &>(*device).set_master_reset_handler(DEVCB_##_devcb);
+ downcast<smpc_hle_device &>(*device).set_master_reset_handler(DEVCB_##_devcb);
#define MCFG_SMPC_HLE_MASTER_NMI_CB(_devcb) \
- devcb = &downcast<smpc_hle_device &>(*device).set_master_nmi_handler(DEVCB_##_devcb);
+ downcast<smpc_hle_device &>(*device).set_master_nmi_handler(DEVCB_##_devcb);
#define MCFG_SMPC_HLE_SLAVE_RESET_CB(_devcb) \
- devcb = &downcast<smpc_hle_device &>(*device).set_slave_reset_handler(DEVCB_##_devcb);
+ downcast<smpc_hle_device &>(*device).set_slave_reset_handler(DEVCB_##_devcb);
#define MCFG_SMPC_HLE_SOUND_RESET_CB(_devcb) \
- devcb = &downcast<smpc_hle_device &>(*device).set_sound_reset_handler(DEVCB_##_devcb);
+ downcast<smpc_hle_device &>(*device).set_sound_reset_handler(DEVCB_##_devcb);
#define MCFG_SMPC_HLE_SYSTEM_RESET_CB(_devcb) \
- devcb = &downcast<smpc_hle_device &>(*device).set_system_reset_handler(DEVCB_##_devcb);
+ downcast<smpc_hle_device &>(*device).set_system_reset_handler(DEVCB_##_devcb);
#define MCFG_SMPC_HLE_SYSTEM_HALT_CB(_devcb) \
- devcb = &downcast<smpc_hle_device &>(*device).set_system_halt_handler(DEVCB_##_devcb);
+ downcast<smpc_hle_device &>(*device).set_system_halt_handler(DEVCB_##_devcb);
#define MCFG_SMPC_HLE_DOT_SELECT_CB(_devcb) \
- devcb = &downcast<smpc_hle_device &>(*device).set_dot_select_handler(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 = &downcast<smpc_hle_device &>(*device).set_interrupt_handler(DEVCB_##_devcb);
+ downcast<smpc_hle_device &>(*device).set_interrupt_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/steppers.h b/src/devices/machine/steppers.h
index eace7904bcd..9674948d409 100644
--- a/src/devices/machine/steppers.h
+++ b/src/devices/machine/steppers.h
@@ -34,7 +34,7 @@
#define PROJECT_48STEP_REEL 10
#define MCFG_STEPPER_OPTIC_CALLBACK(_write) \
- devcb = &downcast<stepper_device &>(*device).set_optic_handler(DEVCB_##_write);
+ downcast<stepper_device &>(*device).set_optic_handler(DEVCB_##_write);
class stepper_device : public device_t
{
diff --git a/src/devices/machine/te7750.h b/src/devices/machine/te7750.h
index 8f3cc234060..32406b3c52c 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 = &downcast<te7750_device &>(*device).set_input_cb(0, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_input_cb(0, DEVCB_##_devcb);
#define MCFG_TE7750_IN_PORT2_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_input_cb(1, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_input_cb(1, DEVCB_##_devcb);
#define MCFG_TE7750_IN_PORT3_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_input_cb(2, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_input_cb(2, DEVCB_##_devcb);
#define MCFG_TE7750_IN_PORT4_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_input_cb(3, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_input_cb(3, DEVCB_##_devcb);
#define MCFG_TE7750_IN_PORT5_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_input_cb(4, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_input_cb(4, DEVCB_##_devcb);
#define MCFG_TE7750_IN_PORT6_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_input_cb(5, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_input_cb(5, DEVCB_##_devcb);
#define MCFG_TE7750_IN_PORT7_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_input_cb(6, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_input_cb(6, DEVCB_##_devcb);
#define MCFG_TE7750_IN_PORT8_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_input_cb(7, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_input_cb(7, DEVCB_##_devcb);
#define MCFG_TE7750_IN_PORT9_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_input_cb(8, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_input_cb(8, DEVCB_##_devcb);
#define MCFG_TE7750_OUT_PORT1_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_output_cb(0, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_output_cb(0, DEVCB_##_devcb);
#define MCFG_TE7750_OUT_PORT2_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_output_cb(1, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_output_cb(1, DEVCB_##_devcb);
#define MCFG_TE7750_OUT_PORT3_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_output_cb(2, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_output_cb(2, DEVCB_##_devcb);
#define MCFG_TE7750_OUT_PORT4_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_output_cb(3, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_output_cb(3, DEVCB_##_devcb);
#define MCFG_TE7750_OUT_PORT5_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_output_cb(4, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_output_cb(4, DEVCB_##_devcb);
#define MCFG_TE7750_OUT_PORT6_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_output_cb(5, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_output_cb(5, DEVCB_##_devcb);
#define MCFG_TE7750_OUT_PORT7_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_output_cb(6, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_output_cb(6, DEVCB_##_devcb);
#define MCFG_TE7750_OUT_PORT8_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_output_cb(7, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_output_cb(7, DEVCB_##_devcb);
#define MCFG_TE7750_OUT_PORT9_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_output_cb(8, DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_output_cb(8, DEVCB_##_devcb);
#define MCFG_TE7750_IOS_CB(_devcb) \
- devcb = &downcast<te7750_device &>(*device).set_ios_cb(DEVCB_##_devcb);
+ downcast<te7750_device &>(*device).set_ios_cb(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -83,6 +83,25 @@ public:
{
return m_ios_cb.set_callback(std::forward<Object>(obj));
}
+ auto in_port1_cb() { return m_input_cb[0].bind(); }
+ auto in_port2_cb() { return m_input_cb[1].bind(); }
+ auto in_port3_cb() { return m_input_cb[2].bind(); }
+ auto in_port4_cb() { return m_input_cb[3].bind(); }
+ auto in_port5_cb() { return m_input_cb[4].bind(); }
+ auto in_port6_cb() { return m_input_cb[5].bind(); }
+ auto in_port7_cb() { return m_input_cb[6].bind(); }
+ auto in_port8_cb() { return m_input_cb[7].bind(); }
+ auto in_port9_cb() { return m_input_cb[8].bind(); }
+ auto out_port1_cb() { return m_output_cb[0].bind(); }
+ auto out_port2_cb() { return m_output_cb[1].bind(); }
+ auto out_port3_cb() { return m_output_cb[2].bind(); }
+ auto out_port4_cb() { return m_output_cb[3].bind(); }
+ auto out_port5_cb() { return m_output_cb[4].bind(); }
+ auto out_port6_cb() { return m_output_cb[5].bind(); }
+ auto out_port7_cb() { return m_output_cb[6].bind(); }
+ auto out_port8_cb() { return m_output_cb[7].bind(); }
+ auto out_port9_cb() { return m_output_cb[8].bind(); }
+ auto ios_cb() { return m_ios_cb.bind(); }
// bus-compatible interface
DECLARE_READ8_MEMBER(read);
diff --git a/src/devices/machine/timekpr.h b/src/devices/machine/timekpr.h
index ffeef9efa63..c0f7fcdc83a 100644
--- a/src/devices/machine/timekpr.h
+++ b/src/devices/machine/timekpr.h
@@ -27,10 +27,10 @@
//**************************************************************************
#define MCFG_M48T37_RESET_HANDLER(_devcb) \
- devcb = &downcast<timekeeper_device &>(*device).set_reset_handler(DEVCB_##_devcb);
+ downcast<timekeeper_device &>(*device).set_reset_handler(DEVCB_##_devcb);
#define MCFG_M48T37_IRQ_HANDLER(_devcb) \
- devcb = &downcast<timekeeper_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<timekeeper_device &>(*device).set_irq_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/tmp68301.h b/src/devices/machine/tmp68301.h
index c2d2c9cdbbd..eae1cd69a48 100644
--- a/src/devices/machine/tmp68301.h
+++ b/src/devices/machine/tmp68301.h
@@ -18,10 +18,10 @@
downcast<tmp68301_device &>(*device).set_cpu_tag(_tag);
#define MCFG_TMP68301_IN_PARALLEL_CB(cb) \
- devcb = &downcast<tmp68301_device &>(*device).set_in_parallel_callback((DEVCB_##cb));
+ downcast<tmp68301_device &>(*device).set_in_parallel_callback((DEVCB_##cb));
#define MCFG_TMP68301_OUT_PARALLEL_CB(cb) \
- devcb = &downcast<tmp68301_device &>(*device).set_out_parallel_callback((DEVCB_##cb));
+ downcast<tmp68301_device &>(*device).set_out_parallel_callback((DEVCB_##cb));
//**************************************************************************
diff --git a/src/devices/machine/tms1024.h b/src/devices/machine/tms1024.h
index eae25fca18d..6c11a50eafa 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 = &downcast<tms1024_device &>(*device).set_read_port_callback<(tms1024_device::X)>((DEVCB_##cb));
+ downcast<tms1024_device &>(*device).set_read_port_callback<(tms1024_device::X)>((DEVCB_##cb));
#define MCFG_TMS1025_WRITE_PORT_CB(X, cb) \
- devcb = &downcast<tms1024_device &>(*device).set_write_port_callback<(tms1024_device::X)>((DEVCB_##cb));
+ downcast<tms1024_device &>(*device).set_write_port_callback<(tms1024_device::X)>((DEVCB_##cb));
// pinout reference
@@ -71,6 +71,14 @@ public:
// 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)); }
+ auto read_port4_callback() { return m_read_port[3].bind(); }
+ auto read_port5_callback() { return m_read_port[4].bind(); }
+ auto read_port6_callback() { return m_read_port[5].bind(); }
+ auto read_port7_callback() { return m_read_port[6].bind(); }
+ auto write_port4_callback() { return m_write_port[3].bind(); }
+ auto write_port5_callback() { return m_write_port[4].bind(); }
+ auto write_port6_callback() { return m_write_port[5].bind(); }
+ auto write_port7_callback() { return m_write_port[6].bind(); }
DECLARE_WRITE8_MEMBER(write_h);
DECLARE_READ8_MEMBER(read_h);
@@ -99,6 +107,13 @@ class tms1025_device : public tms1024_device
{
public:
tms1025_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
+
+ auto read_port1_callback() { return m_read_port[0].bind(); }
+ auto read_port2_callback() { return m_read_port[1].bind(); }
+ auto read_port3_callback() { return m_read_port[2].bind(); }
+ auto write_port1_callback() { return m_write_port[0].bind(); }
+ auto write_port2_callback() { return m_write_port[1].bind(); }
+ auto write_port3_callback() { return m_write_port[2].bind(); }
};
diff --git a/src/devices/machine/tms5501.h b/src/devices/machine/tms5501.h
index b7970ed1a48..8510ccaced3 100644
--- a/src/devices/machine/tms5501.h
+++ b/src/devices/machine/tms5501.h
@@ -43,16 +43,16 @@
//**************************************************************************
#define MCFG_TMS5501_IRQ_CALLBACK(_write) \
- devcb = &downcast<tms5501_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<tms5501_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_TMS5501_XMT_CALLBACK(_write) \
- devcb = &downcast<tms5501_device &>(*device).set_xmt_wr_callback(DEVCB_##_write);
+ downcast<tms5501_device &>(*device).set_xmt_wr_callback(DEVCB_##_write);
#define MCFG_TMS5501_XI_CALLBACK(_read) \
- devcb = &downcast<tms5501_device &>(*device).set_xi_rd_callback(DEVCB_##_read);
+ downcast<tms5501_device &>(*device).set_xi_rd_callback(DEVCB_##_read);
#define MCFG_TMS5501_XO_CALLBACK(_write) \
- devcb = &downcast<tms5501_device &>(*device).set_xo_wr_callback(DEVCB_##_write);
+ downcast<tms5501_device &>(*device).set_xo_wr_callback(DEVCB_##_write);
diff --git a/src/devices/machine/tms9901.h b/src/devices/machine/tms9901.h
index f8b2685c174..5219ea1800e 100644
--- a/src/devices/machine/tms9901.h
+++ b/src/devices/machine/tms9901.h
@@ -139,57 +139,57 @@ private:
***************************************************************************/
#define MCFG_TMS9901_READBLOCK_HANDLER( _read ) \
- devcb = &downcast<tms9901_device &>(*device).set_readblock_callback(DEVCB_##_read);
+ downcast<tms9901_device &>(*device).set_readblock_callback(DEVCB_##_read);
#define MCFG_TMS9901_P0_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<0>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<0>(DEVCB_##_write);
#define MCFG_TMS9901_P1_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<1>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<1>(DEVCB_##_write);
#define MCFG_TMS9901_P2_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<2>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<2>(DEVCB_##_write);
#define MCFG_TMS9901_P3_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<3>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<3>(DEVCB_##_write);
#define MCFG_TMS9901_P4_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<4>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<4>(DEVCB_##_write);
#define MCFG_TMS9901_P5_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<5>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<5>(DEVCB_##_write);
#define MCFG_TMS9901_P6_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<6>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<6>(DEVCB_##_write);
#define MCFG_TMS9901_P7_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<7>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<7>(DEVCB_##_write);
#define MCFG_TMS9901_P8_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<8>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<8>(DEVCB_##_write);
#define MCFG_TMS9901_P9_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<9>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<9>(DEVCB_##_write);
#define MCFG_TMS9901_P10_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<10>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<10>(DEVCB_##_write);
#define MCFG_TMS9901_P11_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<11>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<11>(DEVCB_##_write);
#define MCFG_TMS9901_P12_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<12>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<12>(DEVCB_##_write);
#define MCFG_TMS9901_P13_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<13>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<13>(DEVCB_##_write);
#define MCFG_TMS9901_P14_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<14>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<14>(DEVCB_##_write);
#define MCFG_TMS9901_P15_HANDLER( _write ) \
- devcb = &downcast<tms9901_device &>(*device).set_p_callback<15>(DEVCB_##_write);
+ downcast<tms9901_device &>(*device).set_p_callback<15>(DEVCB_##_write);
#define MCFG_TMS9901_INTLEVEL_HANDLER( _intlevel ) \
- devcb = &downcast<tms9901_device &>(*device).set_intlevel_callback(DEVCB_##_intlevel);
+ 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 1cc824e73ff..1d3a96829db 100644
--- a/src/devices/machine/tms9902.h
+++ b/src/devices/machine/tms9902.h
@@ -190,15 +190,15 @@ private:
***************************************************************************/
#define MCFG_TMS9902_INT_CB(cb) \
- devcb = &downcast<tms9902_device &>(*device).set_int_callback((DEVCB_##cb));
+ downcast<tms9902_device &>(*device).set_int_callback((DEVCB_##cb));
#define MCFG_TMS9902_RCV_CB(cb) \
- devcb = &downcast<tms9902_device &>(*device).set_rcv_callback((DEVCB_##cb));
+ downcast<tms9902_device &>(*device).set_rcv_callback((DEVCB_##cb));
#define MCFG_TMS9902_XMIT_CB(cb) \
- devcb = &downcast<tms9902_device &>(*device).set_xmit_callback((DEVCB_##cb));
+ downcast<tms9902_device &>(*device).set_xmit_callback((DEVCB_##cb));
#define MCFG_TMS9902_CTRL_CB(cb) \
- devcb = &downcast<tms9902_device &>(*device).set_ctrl_callback((DEVCB_##cb));
+ 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 71e7693a8ba..17223d22f84 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 = &downcast<tube_device &>(*device).set_hirq_handler(DEVCB_##_devcb);
+ downcast<tube_device &>(*device).set_hirq_handler(DEVCB_##_devcb);
#define MCFG_TUBE_PNMI_HANDLER(_devcb) \
- devcb = &downcast<tube_device &>(*device).set_pnmi_handler(DEVCB_##_devcb);
+ downcast<tube_device &>(*device).set_pnmi_handler(DEVCB_##_devcb);
#define MCFG_TUBE_PIRQ_HANDLER(_devcb) \
- devcb = &downcast<tube_device &>(*device).set_pirq_handler(DEVCB_##_devcb);
+ downcast<tube_device &>(*device).set_pirq_handler(DEVCB_##_devcb);
#define MCFG_TUBE_DRQ_HANDLER(_devcb) \
- devcb = &downcast<tube_device &>(*device).set_drq_handler(DEVCB_##_devcb);
+ downcast<tube_device &>(*device).set_drq_handler(DEVCB_##_devcb);
@@ -52,6 +52,10 @@ public:
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)); }
+ auto hirq_handler() { return m_hirq_handler.bind(); }
+ auto pnmi_handler() { return m_pnmi_handler.bind(); }
+ auto pirq_handler() { return m_pirq_handler.bind(); }
+ auto drq_handler() { return m_drq_handler.bind(); }
DECLARE_READ8_MEMBER(host_r);
DECLARE_WRITE8_MEMBER(host_w);
diff --git a/src/devices/machine/upd71071.h b/src/devices/machine/upd71071.h
index 7989d180169..9b05766dd74 100644
--- a/src/devices/machine/upd71071.h
+++ b/src/devices/machine/upd71071.h
@@ -82,45 +82,45 @@ DECLARE_DEVICE_TYPE(UPD71071, upd71071_device)
downcast<upd71071_device &>(*device).set_clock((clk));
#define MCFG_UPD71071_OUT_HREQ_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_out_hreq_callback((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_out_hreq_callback((DEVCB_##cb));
#define MCFG_UPD71071_OUT_EOP_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_out_eop_callback((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_out_eop_callback((DEVCB_##cb));
#define MCFG_UPD71071_DMA_READ_0_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_dma_read_callback<0>((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_dma_read_callback<0>((DEVCB_##cb));
#define MCFG_UPD71071_DMA_READ_1_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_dma_read_callback<1>((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_dma_read_callback<1>((DEVCB_##cb));
#define MCFG_UPD71071_DMA_READ_2_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_dma_read_callback<2>((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_dma_read_callback<2>((DEVCB_##cb));
#define MCFG_UPD71071_DMA_READ_3_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_dma_read_callback<3>((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_dma_read_callback<3>((DEVCB_##cb));
#define MCFG_UPD71071_DMA_WRITE_0_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_dma_write_callback<0>((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_dma_write_callback<0>((DEVCB_##cb));
#define MCFG_UPD71071_DMA_WRITE_1_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_dma_write_callback<1>((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_dma_write_callback<1>((DEVCB_##cb));
#define MCFG_UPD71071_DMA_WRITE_2_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_dma_write_callback<2>((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_dma_write_callback<2>((DEVCB_##cb));
#define MCFG_UPD71071_DMA_WRITE_3_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_dma_write_callback<3>((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_dma_write_callback<3>((DEVCB_##cb));
#define MCFG_UPD71071_OUT_DACK_0_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_out_dack_callback<0>((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_out_dack_callback<0>((DEVCB_##cb));
#define MCFG_UPD71071_OUT_DACK_1_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_out_dack_callback<1>((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_out_dack_callback<1>((DEVCB_##cb));
#define MCFG_UPD71071_OUT_DACK_2_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_out_dack_callback<2>((DEVCB_##cb));
+ downcast<upd71071_device &>(*device).set_out_dack_callback<2>((DEVCB_##cb));
#define MCFG_UPD71071_OUT_DACK_3_CB(cb) \
- devcb = &downcast<upd71071_device &>(*device).set_out_dack_callback<3>((DEVCB_##cb));
+ 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 2eefbc9ae55..d0c7c6ac3ae 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 = &downcast<mcs3201_device &>(*device).set_input_handler(DEVCB_##_devcb);
+ downcast<mcs3201_device &>(*device).set_input_handler(DEVCB_##_devcb);
#define MCFG_UPD765_INTRQ_CALLBACK(_write) \
- devcb = &downcast<upd765_family_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
+ downcast<upd765_family_device &>(*device).set_intrq_wr_callback(DEVCB_##_write);
#define MCFG_UPD765_DRQ_CALLBACK(_write) \
- devcb = &downcast<upd765_family_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
+ downcast<upd765_family_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
#define MCFG_UPD765_HDL_CALLBACK(_write) \
- devcb = &downcast<upd765_family_device &>(*device).set_hdl_wr_callback(DEVCB_##_write);
+ downcast<upd765_family_device &>(*device).set_hdl_wr_callback(DEVCB_##_write);
/* Interface required for PC ISA wrapping */
class pc_fdc_interface : public device_t {
@@ -104,6 +104,9 @@ public:
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)); }
+ auto intrq_wr_callback() { return intrq_cb.bind(); }
+ auto drq_wr_callback() { return drq_cb.bind(); }
+ auto hdl_wr_callback() { return hdl_cb.bind(); }
virtual void map(address_map &map) override = 0;
@@ -435,6 +438,10 @@ protected:
class upd765a_device : public upd765_family_device {
public:
+ upd765a_device(const machine_config &mconfig, const char *tag, device_t *owner, bool ready, bool select) : upd765a_device(mconfig, tag, owner, 0U) {
+ set_ready_line_connected(ready);
+ set_select_lines_connected(select);
+ }
upd765a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void map(address_map &map) override;
diff --git a/src/devices/machine/vrc4373.h b/src/devices/machine/vrc4373.h
index 0e4e205db11..d7c9d6b420c 100644
--- a/src/devices/machine/vrc4373.h
+++ b/src/devices/machine/vrc4373.h
@@ -17,7 +17,7 @@
downcast<vrc4373_device &>(*device).set_simm0_size(_size);
#define MCFG_VRC4373_IRQ_CB(_devcb) \
- devcb = &ide_pci_device::set_irq_cb(*device, DEVCB_##_devcb);
+ ide_pci_device::set_irq_cb(*device, DEVCB_##_devcb);
class vrc4373_device : public pci_host_device {
diff --git a/src/devices/machine/wd11c00_17.h b/src/devices/machine/wd11c00_17.h
index 8f644aba758..c0fb4391924 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 = &downcast<wd11c00_17_device &>(*device).set_out_irq5_callback(DEVCB_##_devcb);
+ downcast<wd11c00_17_device &>(*device).set_out_irq5_callback(DEVCB_##_devcb);
#define MCFG_WD11C00_17_OUT_DRQ3_CB(_devcb) \
- devcb = &downcast<wd11c00_17_device &>(*device).set_out_drq3_callback(DEVCB_##_devcb);
+ downcast<wd11c00_17_device &>(*device).set_out_drq3_callback(DEVCB_##_devcb);
#define MCFG_WD11C00_17_OUT_MR_CB(_devcb) \
- devcb = &downcast<wd11c00_17_device &>(*device).set_out_mr_callback(DEVCB_##_devcb);
+ downcast<wd11c00_17_device &>(*device).set_out_mr_callback(DEVCB_##_devcb);
#define MCFG_WD11C00_17_OUT_BUSY_CB(_devcb) \
- devcb = &downcast<wd11c00_17_device &>(*device).set_out_busy_callback(DEVCB_##_devcb);
+ downcast<wd11c00_17_device &>(*device).set_out_busy_callback(DEVCB_##_devcb);
#define MCFG_WD11C00_17_OUT_REQ_CB(_devcb) \
- devcb = &downcast<wd11c00_17_device &>(*device).set_out_req_callback(DEVCB_##_devcb);
+ downcast<wd11c00_17_device &>(*device).set_out_req_callback(DEVCB_##_devcb);
#define MCFG_WD11C00_17_OUT_RA3_CB(_devcb) \
- devcb = &downcast<wd11c00_17_device &>(*device).set_out_ra3_callback(DEVCB_##_devcb);
+ downcast<wd11c00_17_device &>(*device).set_out_ra3_callback(DEVCB_##_devcb);
#define MCFG_WD11C00_17_IN_RD322_CB(_devcb) \
- devcb = &downcast<wd11c00_17_device &>(*device).set_in_rd322_callback(DEVCB_##_devcb);
+ downcast<wd11c00_17_device &>(*device).set_in_rd322_callback(DEVCB_##_devcb);
#define MCFG_WD11C00_17_IN_RAMCS_CB(_devcb) \
- devcb = &downcast<wd11c00_17_device &>(*device).set_in_ramcs_callback(DEVCB_##_devcb);
+ downcast<wd11c00_17_device &>(*device).set_in_ramcs_callback(DEVCB_##_devcb);
#define MCFG_WD11C00_17_OUT_RAMWR_CB(_devcb) \
- devcb = &downcast<wd11c00_17_device &>(*device).set_out_ramwr_callback(DEVCB_##_devcb);
+ downcast<wd11c00_17_device &>(*device).set_out_ramwr_callback(DEVCB_##_devcb);
#define MCFG_WD11C00_17_IN_CS1010_CB(_devcb) \
- devcb = &downcast<wd11c00_17_device &>(*device).set_in_cs1010_callback(DEVCB_##_devcb);
+ downcast<wd11c00_17_device &>(*device).set_in_cs1010_callback(DEVCB_##_devcb);
#define MCFG_WD11C00_17_OUT_CS1010_CB(_devcb) \
- devcb = &downcast<wd11c00_17_device &>(*device).set_out_cs1010_callback(DEVCB_##_devcb);
+ downcast<wd11c00_17_device &>(*device).set_out_cs1010_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -73,6 +73,17 @@ public:
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)); }
+ auto out_irq5_callback() { return m_out_irq5_cb.bind(); }
+ auto out_drq3_callback() { return m_out_drq3_cb.bind(); }
+ auto out_mr_callback() { return m_out_mr_cb.bind(); }
+ auto out_busy_callback() { return m_out_busy_cb.bind(); }
+ auto out_req_callback() { return m_out_req_cb.bind(); }
+ auto out_ra3_callback() { return m_out_ra3_cb.bind(); }
+ auto in_rd322_callback() { return m_in_rd322_cb.bind(); }
+ auto in_ramcs_callback() { return m_in_ramcs_cb.bind(); }
+ auto out_ramwr_callback() { return m_out_ramwr_cb.bind(); }
+ auto in_cs1010_callback() { return m_in_cs1010_cb.bind(); }
+ auto out_cs1010_callback() { return m_out_cs1010_cb.bind(); }
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 47e928d20cf..5cba995b3da 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 = &downcast<wd2010_device &>(*device).set_out_intrq_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_out_intrq_callback(DEVCB_##_devcb);
#define MCFG_WD2010_OUT_BDRQ_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_out_bdrq_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_out_bdrq_callback(DEVCB_##_devcb);
#define MCFG_WD2010_OUT_BCR_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_out_bcr_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_out_bcr_callback(DEVCB_##_devcb);
#define MCFG_WD2010_IN_BRDY_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_in_brdy_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_in_brdy_callback(DEVCB_##_devcb);
#define MCFG_WD2010_IN_BCS_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_in_bcs_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_in_bcs_callback(DEVCB_##_devcb);
#define MCFG_WD2010_OUT_BCS_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_out_bcs_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_out_bcs_callback(DEVCB_##_devcb);
#define MCFG_WD2010_OUT_DIRIN_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_out_dirin_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_out_dirin_callback(DEVCB_##_devcb);
#define MCFG_WD2010_OUT_STEP_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_out_step_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_out_step_callback(DEVCB_##_devcb);
#define MCFG_WD2010_OUT_RWC_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_out_rwc_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_out_rwc_callback(DEVCB_##_devcb);
#define MCFG_WD2010_OUT_WG_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_out_wg_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_out_wg_callback(DEVCB_##_devcb);
#define MCFG_WD2010_IN_DRDY_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_in_drdy_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_in_drdy_callback(DEVCB_##_devcb);
#define MCFG_WD2010_IN_INDEX_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_in_index_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_in_index_callback(DEVCB_##_devcb);
#define MCFG_WD2010_IN_WF_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_in_wf_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_in_wf_callback(DEVCB_##_devcb);
#define MCFG_WD2010_IN_TK000_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_in_tk000_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_in_tk000_callback(DEVCB_##_devcb);
#define MCFG_WD2010_IN_SC_CB(_devcb) \
- devcb = &downcast<wd2010_device &>(*device).set_in_sc_callback(DEVCB_##_devcb);
+ downcast<wd2010_device &>(*device).set_in_sc_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -90,6 +90,21 @@ public:
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)); }
+ auto out_intrq_callback() { return m_out_intrq_cb.bind(); }
+ auto out_bdrq_callback() { return m_out_bdrq_cb.bind(); }
+ auto out_bcr_callback() { return m_out_bcr_cb.bind(); }
+ auto in_brdy_callback() { return m_in_brdy_cb.bind(); }
+ auto in_bcs_callback() { return m_in_bcs_cb.bind(); }
+ auto out_bcs_callback() { return m_out_bcs_cb.bind(); }
+ auto out_dirin_callback() { return m_out_dirin_cb.bind(); }
+ auto out_step_callback() { return m_out_step_cb.bind(); }
+ auto out_rwc_callback() { return m_out_rwc_cb.bind(); }
+ auto out_wg_callback() { return m_out_wg_cb.bind(); }
+ auto in_drdy_callback() { return m_in_drdy_cb.bind(); }
+ auto in_index_callback() { return m_in_index_cb.bind(); }
+ auto in_wf_callback() { return m_in_wf_cb.bind(); }
+ auto in_tk000_callback() { return m_in_tk000_cb.bind(); }
+ auto in_sc_callback() { return m_in_sc_cb.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/machine/wd33c93.h b/src/devices/machine/wd33c93.h
index a0dd224b1db..6f3e8ad2408 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 = &downcast<wd33c93_device &>(*device).set_irq_callback((DEVCB_##cb));
+ downcast<wd33c93_device &>(*device).set_irq_callback((DEVCB_##cb));
class wd33c93_device : public legacy_scsi_host_adapter
{
diff --git a/src/devices/machine/wd7600.cpp b/src/devices/machine/wd7600.cpp
index a334a14428b..55553c3f92a 100644
--- a/src/devices/machine/wd7600.cpp
+++ b/src/devices/machine/wd7600.cpp
@@ -56,12 +56,12 @@ MACHINE_CONFIG_START(wd7600_device::device_add_mconfig)
MCFG_DEVICE_ADD("intc1", PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, wd7600_device, pic1_int_w))
- MCFG_PIC8259_IN_SP_CB(VCC)
+ MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, wd7600_device, pic1_slave_ack_r))
MCFG_DEVICE_ADD("intc2", PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(WRITELINE("intc1", pic8259_device, ir2_w))
- MCFG_PIC8259_IN_SP_CB(GND)
+ MCFG_PIC8259_IN_SP_CB(CONSTANT(0))
MCFG_DEVICE_ADD("ctc", PIT8254, 0)
MCFG_PIT8253_CLK0(XTAL(14'318'181) / 12.0)
diff --git a/src/devices/machine/wd7600.h b/src/devices/machine/wd7600.h
index 4e8093c5110..de70cef8e56 100644
--- a/src/devices/machine/wd7600.h
+++ b/src/devices/machine/wd7600.h
@@ -27,31 +27,31 @@
downcast<wd7600_device &>(*device).set_keybctag(_keybctag);
#define MCFG_WD7600_IOR(_ior) \
- devcb = &downcast<wd7600_device *>(device)->set_ior_callback(DEVCB_##_ior);
+ downcast<wd7600_device *>(device)->set_ior_callback(DEVCB_##_ior);
#define MCFG_WD7600_IOW(_iow) \
- devcb = &downcast<wd7600_device *>(device)->set_iow_callback(DEVCB_##_iow);
+ downcast<wd7600_device *>(device)->set_iow_callback(DEVCB_##_iow);
#define MCFG_WD7600_TC(_tc) \
- devcb = &downcast<wd7600_device *>(device)->set_tc_callback(DEVCB_##_tc);
+ downcast<wd7600_device *>(device)->set_tc_callback(DEVCB_##_tc);
#define MCFG_WD7600_HOLD(_hold) \
- devcb = &downcast<wd7600_device *>(device)->set_hold_callback(DEVCB_##_hold);
+ downcast<wd7600_device *>(device)->set_hold_callback(DEVCB_##_hold);
#define MCFG_WD7600_NMI(_nmi) \
- devcb = &downcast<wd7600_device *>(device)->set_nmi_callback(DEVCB_##_nmi);
+ downcast<wd7600_device *>(device)->set_nmi_callback(DEVCB_##_nmi);
#define MCFG_WD7600_INTR(_intr) \
- devcb = &downcast<wd7600_device *>(device)->set_intr_callback(DEVCB_##_intr);
+ downcast<wd7600_device *>(device)->set_intr_callback(DEVCB_##_intr);
#define MCFG_WD7600_CPURESET(_cpureset) \
- devcb = &downcast<wd7600_device *>(device)->set_cpureset_callback(DEVCB_##_cpureset);
+ downcast<wd7600_device *>(device)->set_cpureset_callback(DEVCB_##_cpureset);
#define MCFG_WD7600_A20M(_a20m) \
- devcb = &downcast<wd7600_device *>(device)->set_a20m_callback(DEVCB_##_a20m);
+ downcast<wd7600_device *>(device)->set_a20m_callback(DEVCB_##_a20m);
#define MCFG_WD7600_SPKR(_spkr) \
- devcb = &downcast<wd7600_device *>(device)->set_spkr_callback(DEVCB_##_spkr);
+ downcast<wd7600_device *>(device)->set_spkr_callback(DEVCB_##_spkr);
//**************************************************************************
diff --git a/src/devices/machine/wd_fdc.h b/src/devices/machine/wd_fdc.h
index 6f59190ea31..291cd384703 100644
--- a/src/devices/machine/wd_fdc.h
+++ b/src/devices/machine/wd_fdc.h
@@ -52,19 +52,19 @@
downcast<wd_fdc_device_base *>(device)->set_disable_motor_control(true);
#define MCFG_WD_FDC_INTRQ_CALLBACK(_write) \
- devcb = &downcast<wd_fdc_device_base &>(*device).set_intrq_wr_callback(DEVCB_##_write);
+ downcast<wd_fdc_device_base &>(*device).set_intrq_wr_callback(DEVCB_##_write);
#define MCFG_WD_FDC_DRQ_CALLBACK(_write) \
- devcb = &downcast<wd_fdc_device_base &>(*device).set_drq_wr_callback(DEVCB_##_write);
+ downcast<wd_fdc_device_base &>(*device).set_drq_wr_callback(DEVCB_##_write);
#define MCFG_WD_FDC_HLD_CALLBACK(_write) \
- devcb = &downcast<wd_fdc_device_base &>(*device).set_hld_wr_callback(DEVCB_##_write);
+ downcast<wd_fdc_device_base &>(*device).set_hld_wr_callback(DEVCB_##_write);
#define MCFG_WD_FDC_ENP_CALLBACK(_write) \
- devcb = &downcast<wd_fdc_device_base &>(*device).set_enp_wr_callback(DEVCB_##_write);
+ downcast<wd_fdc_device_base &>(*device).set_enp_wr_callback(DEVCB_##_write);
#define MCFG_WD_FDC_ENMF_CALLBACK(_read) \
- devcb = &downcast<wd_fdc_device_base &>(*device).set_enmf_rd_callback(DEVCB_##_read);
+ downcast<wd_fdc_device_base &>(*device).set_enmf_rd_callback(DEVCB_##_read);
class wd_fdc_device_base : public device_t {
public:
@@ -73,6 +73,11 @@ public:
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)); }
+ auto intrq_wr_callback() { return intrq_cb.bind(); }
+ auto drq_wr_callback() { return drq_cb.bind(); }
+ auto hld_wr_callback() { return hld_cb.bind(); }
+ auto enp_wr_callback() { return enp_cb.bind(); }
+ auto enmf_rd_callback() { return enmf_cb.bind(); }
void soft_reset();
diff --git a/src/devices/machine/ym2148.h b/src/devices/machine/ym2148.h
index d3dad3db350..3e554cec240 100644
--- a/src/devices/machine/ym2148.h
+++ b/src/devices/machine/ym2148.h
@@ -20,16 +20,16 @@
//**************************************************************************
#define MCFG_YM2148_TXD_HANDLER(_devcb) \
- devcb = &downcast<ym2148_device &>(*device).set_txd_handler(DEVCB_##_devcb);
+ downcast<ym2148_device &>(*device).set_txd_handler(DEVCB_##_devcb);
#define MCFG_YM2148_PORT_WRITE_HANDLER(_devcb) \
- devcb = &downcast<ym2148_device &>(*device).set_port_write_handler(DEVCB_##_devcb);
+ downcast<ym2148_device &>(*device).set_port_write_handler(DEVCB_##_devcb);
#define MCFG_YM2148_PORT_READ_HANDLER(_devcb) \
- devcb = &downcast<ym2148_device &>(*device).set_port_read_handler(DEVCB_##_devcb);
+ downcast<ym2148_device &>(*device).set_port_read_handler(DEVCB_##_devcb);
#define MCFG_YM2148_IRQ_HANDLER(_devcb) \
- devcb = &downcast<ym2148_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<ym2148_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class ym2148_device : public device_t, public device_serial_interface
diff --git a/src/devices/machine/ym3802.h b/src/devices/machine/ym3802.h
index 4b05098fc7d..f1f827cb619 100644
--- a/src/devices/machine/ym3802.h
+++ b/src/devices/machine/ym3802.h
@@ -24,10 +24,10 @@
#include <queue>
#define MCFG_YM3802_IRQ_HANDLER(_devcb) \
- devcb = &downcast<ym3802_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<ym3802_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_YM3802_TXD_HANDLER(_devcb) \
- devcb = &downcast<ym3802_device &>(*device).set_txd_handler(DEVCB_##_devcb);
+ downcast<ym3802_device &>(*device).set_txd_handler(DEVCB_##_devcb);
class ym3802_device : public device_t, public device_serial_interface
{
diff --git a/src/devices/machine/z80ctc.h b/src/devices/machine/z80ctc.h
index 158028c9e9f..ce07fd9cf61 100644
--- a/src/devices/machine/z80ctc.h
+++ b/src/devices/machine/z80ctc.h
@@ -36,20 +36,20 @@
//**************************************************************************
#define MCFG_Z80CTC_INTR_CB(_devcb) \
- devcb = &downcast<z80ctc_device &>(*device).set_intr_callback(DEVCB_##_devcb);
+ downcast<z80ctc_device &>(*device).set_intr_callback(DEVCB_##_devcb);
#define MCFG_Z80CTC_ZC0_CB(_devcb) \
- devcb = &downcast<z80ctc_device &>(*device).set_zc_callback<0>(DEVCB_##_devcb);
+ downcast<z80ctc_device &>(*device).set_zc_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80CTC_ZC1_CB(_devcb) \
- devcb = &downcast<z80ctc_device &>(*device).set_zc_callback<1>(DEVCB_##_devcb);
+ downcast<z80ctc_device &>(*device).set_zc_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80CTC_ZC2_CB(_devcb) \
- devcb = &downcast<z80ctc_device &>(*device).set_zc_callback<2>(DEVCB_##_devcb);
+ downcast<z80ctc_device &>(*device).set_zc_callback<2>(DEVCB_##_devcb);
// not supported on a standard ctc, only used for the tmpz84c015
#define MCFG_Z80CTC_ZC3_CB(_devcb) \
- devcb = &downcast<z80ctc_device &>(*device).set_zc_callback<3>(DEVCB_##_devcb);
+ downcast<z80ctc_device &>(*device).set_zc_callback<3>(DEVCB_##_devcb);
//**************************************************************************
@@ -105,6 +105,8 @@ public:
template <class Object> devcb_base &set_intr_callback(Object &&cb) { return m_intr_cb.set_callback(std::forward<Object>(cb)); }
template <int Channel, class Object> devcb_base &set_zc_callback(Object &&cb) { return m_zc_cb[Channel].set_callback(std::forward<Object>(cb)); }
+ auto intr_callback() { return m_intr_cb.bind(); }
+ template <int Channel> auto zc_callback() { return m_zc_cb[Channel].bind(); }
// read/write handlers
DECLARE_READ8_MEMBER( read );
diff --git a/src/devices/machine/z80daisy_generic.h b/src/devices/machine/z80daisy_generic.h
index e30cef85139..1270abf8659 100644
--- a/src/devices/machine/z80daisy_generic.h
+++ b/src/devices/machine/z80daisy_generic.h
@@ -23,7 +23,7 @@
downcast<z80daisy_generic_device &>(*device).set_vector(_vector); \
#define MCFG_Z80DAISY_GENERIC_INT_CB(_devcb) \
- devcb = &downcast<z80daisy_generic_device &>(*device).set_int_handler(DEVCB_##_devcb);
+ downcast<z80daisy_generic_device &>(*device).set_int_handler(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/z80dart.h b/src/devices/machine/z80dart.h
index 425f353fa0a..b539d2e6a02 100644
--- a/src/devices/machine/z80dart.h
+++ b/src/devices/machine/z80dart.h
@@ -159,49 +159,49 @@
downcast<z80dart_device &>(*device).configure_channels(_rxa, _txa, _rxb, _txb);
#define MCFG_Z80DART_OUT_TXDA_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_txda_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_txda_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_DTRA_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_RTSA_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_WRDYA_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_wrdya_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_wrdya_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_SYNCA_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_synca_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_synca_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_TXDB_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_DTRB_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_RTSB_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_WRDYB_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_wrdyb_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_wrdyb_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_SYNCB_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_INT_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_RXDRQA_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_rxdrqa_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_rxdrqa_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_TXDRQA_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_txdrqa_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_txdrqa_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_RXDRQB_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_rxdrqb_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_rxdrqb_callback(DEVCB_##_devcb);
#define MCFG_Z80DART_OUT_TXDRQB_CB(_devcb) \
- devcb = &downcast<z80dart_device &>(*device).set_out_txdrqb_callback(DEVCB_##_devcb);
+ downcast<z80dart_device &>(*device).set_out_txdrqb_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -462,6 +462,21 @@ public:
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)); }
+ auto out_txda_callback() { return m_out_txda_cb.bind(); }
+ auto out_dtra_callback() { return m_out_dtra_cb.bind(); }
+ auto out_rtsa_callback() { return m_out_rtsa_cb.bind(); }
+ auto out_wrdya_callback() { return m_out_wrdya_cb.bind(); }
+ auto out_synca_callback() { return m_out_synca_cb.bind(); }
+ auto out_txdb_callback() { return m_out_txdb_cb.bind(); }
+ auto out_dtrb_callback() { return m_out_dtrb_cb.bind(); }
+ auto out_rtsb_callback() { return m_out_rtsb_cb.bind(); }
+ auto out_wrdyb_callback() { return m_out_wrdyb_cb.bind(); }
+ auto out_syncb_callback() { return m_out_syncb_cb.bind(); }
+ auto out_int_callback() { return m_out_int_cb.bind(); }
+ auto out_rxdrqa_callback() { return m_out_rxdrqa_cb.bind(); }
+ auto out_txdrqa_callback() { return m_out_txdrqa_cb.bind(); }
+ auto out_rxdrqb_callback() { return m_out_rxdrqb_cb.bind(); }
+ auto out_txdrqb_callback() { return m_out_txdrqb_cb.bind(); }
void configure_channels(int rxa, int txa, int rxb, int txb)
{
diff --git a/src/devices/machine/z80dma.h b/src/devices/machine/z80dma.h
index 1a9d425c9e1..02b7866463c 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 = &downcast<z80dma_device &>(*device).set_out_busreq_callback(DEVCB_##_devcb);
+ downcast<z80dma_device &>(*device).set_out_busreq_callback(DEVCB_##_devcb);
#define MCFG_Z80DMA_OUT_INT_CB(_devcb) \
- devcb = &downcast<z80dma_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
+ downcast<z80dma_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
#define MCFG_Z80DMA_OUT_BAO_CB(_devcb) \
- devcb = &downcast<z80dma_device &>(*device).set_out_bao_callback(DEVCB_##_devcb);
+ downcast<z80dma_device &>(*device).set_out_bao_callback(DEVCB_##_devcb);
#define MCFG_Z80DMA_IN_MREQ_CB(_devcb) \
- devcb = &downcast<z80dma_device &>(*device).set_in_mreq_callback(DEVCB_##_devcb);
+ downcast<z80dma_device &>(*device).set_in_mreq_callback(DEVCB_##_devcb);
#define MCFG_Z80DMA_OUT_MREQ_CB(_devcb) \
- devcb = &downcast<z80dma_device &>(*device).set_out_mreq_callback(DEVCB_##_devcb);
+ downcast<z80dma_device &>(*device).set_out_mreq_callback(DEVCB_##_devcb);
#define MCFG_Z80DMA_IN_IORQ_CB(_devcb) \
- devcb = &downcast<z80dma_device &>(*device).set_in_iorq_callback(DEVCB_##_devcb);
+ downcast<z80dma_device &>(*device).set_in_iorq_callback(DEVCB_##_devcb);
#define MCFG_Z80DMA_OUT_IORQ_CB(_devcb) \
- devcb = &downcast<z80dma_device &>(*device).set_out_iorq_callback(DEVCB_##_devcb);
+ downcast<z80dma_device &>(*device).set_out_iorq_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/z80pio.h b/src/devices/machine/z80pio.h
index 0fbfb246951..f0bfad62351 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 = &downcast<z80pio_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
+ downcast<z80pio_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
#define MCFG_Z80PIO_IN_PA_CB(_devcb) \
- devcb = &downcast<z80pio_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
+ downcast<z80pio_device &>(*device).set_in_pa_callback(DEVCB_##_devcb);
#define MCFG_Z80PIO_OUT_PA_CB(_devcb) \
- devcb = &downcast<z80pio_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
+ downcast<z80pio_device &>(*device).set_out_pa_callback(DEVCB_##_devcb);
#define MCFG_Z80PIO_OUT_ARDY_CB(_devcb) \
- devcb = &downcast<z80pio_device &>(*device).set_out_ardy_callback(DEVCB_##_devcb);
+ downcast<z80pio_device &>(*device).set_out_ardy_callback(DEVCB_##_devcb);
#define MCFG_Z80PIO_IN_PB_CB(_devcb) \
- devcb = &downcast<z80pio_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
+ downcast<z80pio_device &>(*device).set_in_pb_callback(DEVCB_##_devcb);
#define MCFG_Z80PIO_OUT_PB_CB(_devcb) \
- devcb = &downcast<z80pio_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
+ downcast<z80pio_device &>(*device).set_out_pb_callback(DEVCB_##_devcb);
#define MCFG_Z80PIO_OUT_BRDY_CB(_devcb) \
- devcb = &downcast<z80pio_device &>(*device).set_out_brdy_callback(DEVCB_##_devcb);
+ downcast<z80pio_device &>(*device).set_out_brdy_callback(DEVCB_##_devcb);
//**************************************************************************
@@ -91,6 +91,14 @@ public:
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)); }
+ auto out_int_callback() { return m_out_int_cb.bind(); }
+ auto in_pa_callback() { return m_in_pa_cb.bind(); }
+ auto out_pa_callback() { return m_out_pa_cb.bind(); }
+ auto out_ardy_callback() { return m_out_ardy_cb.bind(); }
+ auto in_pb_callback() { return m_in_pb_cb.bind(); }
+ auto out_pb_callback() { return m_out_pb_cb.bind(); }
+ auto out_brdy_callback() { return m_out_brdy_cb.bind(); }
+
// 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 4a73fcfa3d6..50ba0ee0c02 100644
--- a/src/devices/machine/z80scc.h
+++ b/src/devices/machine/z80scc.h
@@ -48,51 +48,51 @@
downcast<z80scc_device &>(*device).configure_channels(_rxa, _txa, _rxb, _txb);
#define MCFG_Z80SCC_OUT_INT_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
// Port A callbacks
#define MCFG_Z80SCC_OUT_TXDA_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_txd_callback<0>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_txd_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_DTRA_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_dtr_callback<0>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_dtr_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_RTSA_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_rts_callback<0>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_rts_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_WREQA_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_wreq_callback<0>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_wreq_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_SYNCA_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_sync_callback<0>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_sync_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_RXDRQA_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_rxdrq_callback<0>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_rxdrq_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_TXDRQA_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_txdrq_callback<0>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_txdrq_callback<0>(DEVCB_##_devcb);
// Port B callbacks
#define MCFG_Z80SCC_OUT_TXDB_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_txd_callback<1>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_txd_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_DTRB_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_dtr_callback<1>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_dtr_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_RTSB_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_rts_callback<1>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_rts_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_WREQB_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_wreq_callback<1>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_wreq_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_SYNCB_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_sync_callback<1>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_sync_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_RXDRQB_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_rxdrq_callback<1>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_rxdrq_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SCC_OUT_TXDRQB_CB(_devcb) \
- devcb = &downcast<z80scc_device &>(*device).set_out_txdrq_callback<1>(DEVCB_##_devcb);
+ downcast<z80scc_device &>(*device).set_out_txdrq_callback<1>(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/machine/z80sio.cpp b/src/devices/machine/z80sio.cpp
index c52a29983b5..c190fb700a6 100644
--- a/src/devices/machine/z80sio.cpp
+++ b/src/devices/machine/z80sio.cpp
@@ -355,6 +355,7 @@ z80sio_device::z80sio_device(const machine_config &mconfig, device_type type, co
device_z80daisy_interface(mconfig, *this),
m_chanA(*this, CHANA_TAG),
m_chanB(*this, CHANB_TAG),
+ m_hostcpu(*this, finder_base::DUMMY_TAG),
m_out_txd_cb{ { *this }, { *this } },
m_out_dtr_cb{ { *this }, { *this } },
m_out_rts_cb{ { *this }, { *this } },
@@ -362,8 +363,7 @@ z80sio_device::z80sio_device(const machine_config &mconfig, device_type type, co
m_out_sync_cb{ { *this }, { *this } },
m_out_int_cb(*this),
m_out_rxdrq_cb{ { *this }, { *this } },
- m_out_txdrq_cb{ { *this }, { *this } },
- m_cputag(nullptr)
+ m_out_txdrq_cb{ { *this }, { *this } }
{
for (auto & elem : m_int_state)
elem = 0;
@@ -390,6 +390,15 @@ upd7201_new_device::upd7201_new_device(const machine_config &mconfig, const char
}
//-------------------------------------------------
+// device_validity_check - device-specific validation
+//-------------------------------------------------
+void z80sio_device::device_validity_check(validity_checker &valid) const
+{
+ if ((m_hostcpu.finder_tag() != finder_base::DUMMY_TAG) && !m_hostcpu)
+ osd_printf_error("Host CPU configured but not found.\n");
+}
+
+//-------------------------------------------------
// device_resolve_objects - device-specific setup
//-------------------------------------------------
void z80sio_device::device_resolve_objects()
@@ -487,12 +496,11 @@ int z80sio_device::z80daisy_irq_ack()
// Did we not find a vector? Get the notion of a default vector from the CPU implementation
logerror(" - failed to find an interrupt to ack!\n");
- if (m_cputag)
+ if (m_hostcpu)
{
// default irq vector is -1 for 68000 but 0 for z80 for example...
- // FIXME: use an optional_device or something
- int const ret = owner()->subdevice<cpu_device>(m_cputag)->default_irq_vector(INPUT_LINE_IRQ0);
- LOGINT(" - failed to find an interrupt to ack [%s], returning default IRQ vector: %02x\n", m_cputag, ret);
+ int const ret = m_hostcpu->default_irq_vector(INPUT_LINE_IRQ0);
+ LOGINT(" - failed to find an interrupt to ack [%s], returning default IRQ vector: %02x\n", m_hostcpu->tag(), ret);
return ret;
}
@@ -556,12 +564,11 @@ int i8274_new_device::z80daisy_irq_ack()
logerror(" - failed to find an interrupt to ack!\n");
}
- if (m_cputag)
+ if (m_hostcpu)
{
// default irq vector is -1 for 68000 but 0 for z80 for example...
- // FIXME: use an optional_device or something
- int const ret = owner()->subdevice<cpu_device>(m_cputag)->default_irq_vector(INPUT_LINE_IRQ0);
- LOGINT(" - failed to find an interrupt to ack [%s], returning default IRQ vector: %02x\n", m_cputag, ret);
+ int const ret = m_hostcpu->default_irq_vector(INPUT_LINE_IRQ0);
+ LOGINT(" - failed to find an interrupt to ack [%s], returning default IRQ vector: %02x\n", m_hostcpu->tag(), ret);
return ret;
}
diff --git a/src/devices/machine/z80sio.h b/src/devices/machine/z80sio.h
index f8a17dbfe8e..3c629208d64 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 = &downcast<z80sio_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
#define MCFG_Z80SIO_CPU(_cputag) \
downcast<z80sio_device &>(*device).set_cputag(_cputag);
// Port A callbacks
#define MCFG_Z80SIO_OUT_TXDA_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_txd_callback<0>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_txd_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_DTRA_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_dtr_callback<0>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_dtr_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_RTSA_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_rts_callback<0>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_rts_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_WRDYA_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_wrdy_callback<0>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_wrdy_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_SYNCA_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_sync_callback<0>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_sync_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_RXDRQA_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_rxdrq_callback<0>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_rxdrq_callback<0>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_TXDRQA_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_txdrq_callback<0>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_txdrq_callback<0>(DEVCB_##_devcb);
// Port B callbacks
#define MCFG_Z80SIO_OUT_TXDB_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_txd_callback<1>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_txd_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_DTRB_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_dtr_callback<1>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_dtr_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_RTSB_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_rts_callback<1>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_rts_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_WRDYB_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_wrdy_callback<1>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_wrdy_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_SYNCB_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_sync_callback<1>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_sync_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_RXDRQB_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_rxdrq_callback<1>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_rxdrq_callback<1>(DEVCB_##_devcb);
#define MCFG_Z80SIO_OUT_TXDRQB_CB(_devcb) \
- devcb = &downcast<z80sio_device &>(*device).set_out_txdrq_callback<1>(DEVCB_##_devcb);
+ downcast<z80sio_device &>(*device).set_out_txdrq_callback<1>(DEVCB_##_devcb);
//**************************************************************************
@@ -347,7 +347,23 @@ public:
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)); }
- void set_cputag(const char *tag) { m_cputag = tag; }
+ auto out_txda_callback() { return m_out_txd_cb[0].bind(); }
+ auto out_txdb_callback() { return m_out_txd_cb[1].bind(); }
+ auto out_dtra_callback() { return m_out_dtr_cb[0].bind(); }
+ auto out_dtrb_callback() { return m_out_dtr_cb[1].bind(); }
+ auto out_rtsa_callback() { return m_out_rts_cb[0].bind(); }
+ auto out_rtsb_callback() { return m_out_rts_cb[1].bind(); }
+ auto out_wrdya_callback() { return m_out_wrdy_cb[0].bind(); }
+ auto out_wrdyb_callback() { return m_out_wrdy_cb[1].bind(); }
+ auto out_synca_callback() { return m_out_sync_cb[0].bind(); }
+ auto out_syncb_callback() { return m_out_sync_cb[1].bind(); }
+ auto out_int_callback() { return m_out_int_cb.bind(); }
+ auto out_rxdrqa_callback() { return m_out_rxdrq_cb[0].bind(); }
+ auto out_rxdrqb_callback() { return m_out_rxdrq_cb[1].bind(); }
+ auto out_txdrqa_callback() { return m_out_txdrq_cb[0].bind(); }
+ auto out_txdrqb_callback() { return m_out_txdrq_cb[1].bind(); }
+
+ template <typename T> void set_cputag(T &&tag) { m_hostcpu.set_tag(std::forward<T>(tag)); }
DECLARE_READ8_MEMBER( cd_ba_r );
DECLARE_WRITE8_MEMBER( cd_ba_w );
@@ -385,6 +401,7 @@ protected:
z80sio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
+ virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_resolve_objects() override;
virtual void device_start() override;
virtual void device_reset() override;
@@ -414,6 +431,7 @@ protected:
required_device<z80sio_channel> m_chanA;
required_device<z80sio_channel> m_chanB;
+ optional_device<cpu_device> m_hostcpu;
// internal state
devcb_write_line m_out_txd_cb[2];
@@ -428,7 +446,6 @@ protected:
int m_int_state[8]; // interrupt state
int m_int_source[8]; // interrupt source
- const char *m_cputag;
};
class i8274_new_device : public z80sio_device
diff --git a/src/devices/machine/z80sti.h b/src/devices/machine/z80sti.h
index 794c5623a2e..e0926a98dc0 100644
--- a/src/devices/machine/z80sti.h
+++ b/src/devices/machine/z80sti.h
@@ -49,28 +49,28 @@
downcast<z80sti_device &>(*device).set_tx_clock(_clock);
#define MCFG_Z80STI_OUT_INT_CB(_devcb) \
- devcb = &downcast<z80sti_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
+ downcast<z80sti_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
#define MCFG_Z80STI_IN_GPIO_CB(_devcb) \
- devcb = &downcast<z80sti_device &>(*device).set_in_gpio_callback(DEVCB_##_devcb);
+ downcast<z80sti_device &>(*device).set_in_gpio_callback(DEVCB_##_devcb);
#define MCFG_Z80STI_OUT_GPIO_CB(_devcb) \
- devcb = &downcast<z80sti_device &>(*device).set_out_gpio_callback(DEVCB_##_devcb);
+ downcast<z80sti_device &>(*device).set_out_gpio_callback(DEVCB_##_devcb);
#define MCFG_Z80STI_OUT_SO_CB(_devcb) \
- devcb = &downcast<z80sti_device &>(*device).set_out_so_callback(DEVCB_##_devcb);
+ downcast<z80sti_device &>(*device).set_out_so_callback(DEVCB_##_devcb);
#define MCFG_Z80STI_OUT_TAO_CB(_devcb) \
- devcb = &downcast<z80sti_device &>(*device).set_out_tao_callback(DEVCB_##_devcb);
+ downcast<z80sti_device &>(*device).set_out_tao_callback(DEVCB_##_devcb);
#define MCFG_Z80STI_OUT_TBO_CB(_devcb) \
- devcb = &downcast<z80sti_device &>(*device).set_out_tbo_callback(DEVCB_##_devcb);
+ downcast<z80sti_device &>(*device).set_out_tbo_callback(DEVCB_##_devcb);
#define MCFG_Z80STI_OUT_TCO_CB(_devcb) \
- devcb = &downcast<z80sti_device &>(*device).set_out_tco_callback(DEVCB_##_devcb);
+ downcast<z80sti_device &>(*device).set_out_tco_callback(DEVCB_##_devcb);
#define MCFG_Z80STI_OUT_TDO_CB(_devcb) \
- devcb = &downcast<z80sti_device &>(*device).set_out_tdo_callback(DEVCB_##_devcb);
+ downcast<z80sti_device &>(*device).set_out_tdo_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/machine/z8536.h b/src/devices/machine/z8536.h
index be819b55ade..a0b0ab9b56c 100644
--- a/src/devices/machine/z8536.h
+++ b/src/devices/machine/z8536.h
@@ -65,25 +65,25 @@
//**************************************************************************
#define MCFG_Z8536_IRQ_CALLBACK(_write) \
- devcb = &downcast<z8536_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<z8536_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_Z8536_PA_IN_CALLBACK(_read) \
- devcb = &downcast<z8536_device &>(*device).set_pa_rd_callback(DEVCB_##_read);
+ downcast<z8536_device &>(*device).set_pa_rd_callback(DEVCB_##_read);
#define MCFG_Z8536_PA_OUT_CALLBACK(_write) \
- devcb = &downcast<z8536_device &>(*device).set_pa_wr_callback(DEVCB_##_write);
+ downcast<z8536_device &>(*device).set_pa_wr_callback(DEVCB_##_write);
#define MCFG_Z8536_PB_IN_CALLBACK(_read) \
- devcb = &downcast<z8536_device &>(*device).set_pb_rd_callback(DEVCB_##_read);
+ downcast<z8536_device &>(*device).set_pb_rd_callback(DEVCB_##_read);
#define MCFG_Z8536_PB_OUT_CALLBACK(_write) \
- devcb = &downcast<z8536_device &>(*device).set_pb_wr_callback(DEVCB_##_write);
+ downcast<z8536_device &>(*device).set_pb_wr_callback(DEVCB_##_write);
#define MCFG_Z8536_PC_IN_CALLBACK(_read) \
- devcb = &downcast<z8536_device &>(*device).set_pc_rd_callback(DEVCB_##_read);
+ downcast<z8536_device &>(*device).set_pc_rd_callback(DEVCB_##_read);
#define MCFG_Z8536_PC_OUT_CALLBACK(_write) \
- devcb = &downcast<z8536_device &>(*device).set_pc_wr_callback(DEVCB_##_write);
+ downcast<z8536_device &>(*device).set_pc_wr_callback(DEVCB_##_write);
diff --git a/src/devices/sound/2203intf.h b/src/devices/sound/2203intf.h
index 345129c98f7..5020702707b 100644
--- a/src/devices/sound/2203intf.h
+++ b/src/devices/sound/2203intf.h
@@ -12,7 +12,7 @@ struct ssg_callbacks;
#define MCFG_YM2203_IRQ_HANDLER(cb) \
- devcb = &downcast<ym2203_device &>(*device).set_irq_handler((DEVCB_##cb));
+ downcast<ym2203_device &>(*device).set_irq_handler((DEVCB_##cb));
class ym2203_device : public ay8910_device
{
@@ -21,6 +21,7 @@ public:
// configuration helpers
template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ auto irq_handler() { return m_irq_handler.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/sound/2608intf.h b/src/devices/sound/2608intf.h
index 444d31a5efc..7272f5778e9 100644
--- a/src/devices/sound/2608intf.h
+++ b/src/devices/sound/2608intf.h
@@ -12,7 +12,7 @@ struct ssg_callbacks;
#define MCFG_YM2608_IRQ_HANDLER(cb) \
- devcb = &downcast<ym2608_device &>(*device).set_irq_handler(DEVCB_##cb);
+ downcast<ym2608_device &>(*device).set_irq_handler(DEVCB_##cb);
class ym2608_device : public ay8910_device
{
diff --git a/src/devices/sound/2610intf.h b/src/devices/sound/2610intf.h
index cc18a94cf3d..bb25f97b51e 100644
--- a/src/devices/sound/2610intf.h
+++ b/src/devices/sound/2610intf.h
@@ -12,7 +12,7 @@ struct ssg_callbacks;
#define MCFG_YM2610_IRQ_HANDLER(cb) \
- devcb = &downcast<ym2610_device &>(*device).set_irq_handler((DEVCB_##cb));
+ downcast<ym2610_device &>(*device).set_irq_handler((DEVCB_##cb));
class ym2610_device : public ay8910_device
{
@@ -21,6 +21,7 @@ public:
// configuration helpers
template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ auto irq_handler() { return m_irq_handler.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/sound/2612intf.h b/src/devices/sound/2612intf.h
index d342fa148ec..22938d7aec0 100644
--- a/src/devices/sound/2612intf.h
+++ b/src/devices/sound/2612intf.h
@@ -7,7 +7,7 @@
#define MCFG_YM2612_IRQ_HANDLER(cb) \
- devcb = &downcast<ym2612_device &>(*device).set_irq_handler((DEVCB_##cb));
+ downcast<ym2612_device &>(*device).set_irq_handler((DEVCB_##cb));
class ym2612_device : public device_t, public device_sound_interface
{
diff --git a/src/devices/sound/262intf.h b/src/devices/sound/262intf.h
index c9650b97deb..9f1575ccb01 100644
--- a/src/devices/sound/262intf.h
+++ b/src/devices/sound/262intf.h
@@ -7,7 +7,7 @@
#define MCFG_YMF262_IRQ_HANDLER(cb) \
- devcb = &downcast<ymf262_device &>(*device).set_irq_handler((DEVCB_##cb));
+ downcast<ymf262_device &>(*device).set_irq_handler((DEVCB_##cb));
class ymf262_device : public device_t, public device_sound_interface
{
diff --git a/src/devices/sound/3526intf.h b/src/devices/sound/3526intf.h
index 24b77d16fbf..bba99b7f2b9 100644
--- a/src/devices/sound/3526intf.h
+++ b/src/devices/sound/3526intf.h
@@ -7,7 +7,7 @@
#define MCFG_YM3526_IRQ_HANDLER(cb) \
- devcb = &downcast<ym3526_device &>(*device).set_irq_handler((DEVCB_##cb));
+ downcast<ym3526_device &>(*device).set_irq_handler((DEVCB_##cb));
class ym3526_device : public device_t, public device_sound_interface
{
diff --git a/src/devices/sound/3812intf.h b/src/devices/sound/3812intf.h
index 910b51521ba..47fd0247314 100644
--- a/src/devices/sound/3812intf.h
+++ b/src/devices/sound/3812intf.h
@@ -5,7 +5,7 @@
#define MCFG_YM3812_IRQ_HANDLER(cb) \
- devcb = &downcast<ym3812_device &>(*device).set_irq_handler((DEVCB_##cb));
+ downcast<ym3812_device &>(*device).set_irq_handler((DEVCB_##cb));
class ym3812_device : public device_t, public device_sound_interface
{
@@ -14,6 +14,7 @@ public:
// configuration helpers
template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ auto irq_handler() { return m_irq_handler.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/sound/8950intf.h b/src/devices/sound/8950intf.h
index a6a29e5b644..83aad8781c0 100644
--- a/src/devices/sound/8950intf.h
+++ b/src/devices/sound/8950intf.h
@@ -7,19 +7,19 @@
#define MCFG_Y8950_IRQ_HANDLER(cb) \
- devcb = &downcast<y8950_device &>(*device).set_irq_handler((DEVCB_##cb));
+ downcast<y8950_device &>(*device).set_irq_handler((DEVCB_##cb));
#define MCFG_Y8950_KEYBOARD_READ_HANDLER(cb) \
- devcb = &downcast<y8950_device &>(*device).set_keyboard_read_handler((DEVCB_##cb));
+ downcast<y8950_device &>(*device).set_keyboard_read_handler((DEVCB_##cb));
#define MCFG_Y8950_KEYBOARD_WRITE_HANDLER(cb) \
- devcb = &downcast<y8950_device &>(*device).set_keyboard_write_handler((DEVCB_##cb));
+ downcast<y8950_device &>(*device).set_keyboard_write_handler((DEVCB_##cb));
#define MCFG_Y8950_IO_READ_HANDLER(cb) \
- devcb = &downcast<y8950_device &>(*device).set_io_read_handler((DEVCB_##cb));
+ downcast<y8950_device &>(*device).set_io_read_handler((DEVCB_##cb));
#define MCFG_Y8950_IO_WRITE_HANDLER(cb) \
- devcb = &downcast<y8950_device &>(*device).set_io_write_handler((DEVCB_##cb));
+ downcast<y8950_device &>(*device).set_io_write_handler((DEVCB_##cb));
class y8950_device : public device_t, public device_sound_interface
{
diff --git a/src/devices/sound/ad1848.h b/src/devices/sound/ad1848.h
index efc5bf3228c..07aec2ee991 100644
--- a/src/devices/sound/ad1848.h
+++ b/src/devices/sound/ad1848.h
@@ -9,10 +9,10 @@
#define MCFG_AD1848_IRQ_CALLBACK(cb) \
- devcb = &downcast<ad1848_device &>(*device).set_irq_callback((DEVCB_##cb));
+ downcast<ad1848_device &>(*device).set_irq_callback((DEVCB_##cb));
#define MCFG_AD1848_DRQ_CALLBACK(cb) \
- devcb = &downcast<ad1848_device &>(*device).set_drq_callback((DEVCB_##cb));
+ downcast<ad1848_device &>(*device).set_drq_callback((DEVCB_##cb));
class ad1848_device : public device_t
{
diff --git a/src/devices/sound/aica.h b/src/devices/sound/aica.h
index a84fb3e31ae..91e7be6f6d2 100644
--- a/src/devices/sound/aica.h
+++ b/src/devices/sound/aica.h
@@ -21,10 +21,10 @@
downcast<aica_device &>(*device).set_roffset((offs));
#define MCFG_AICA_IRQ_CB(cb) \
- devcb = &downcast<aica_device &>(*device).set_irq_callback((DEVCB_##cb));
+ downcast<aica_device &>(*device).set_irq_callback((DEVCB_##cb));
#define MCFG_AICA_MAIN_IRQ_CB(cb) \
- devcb = &downcast<aica_device &>(*device).set_main_irq_callback((DEVCB_##cb));
+ downcast<aica_device &>(*device).set_main_irq_callback((DEVCB_##cb));
class aica_device : public device_t, public device_sound_interface
{
diff --git a/src/devices/sound/asc.h b/src/devices/sound/asc.h
index f3435c799b3..a723707a9e9 100644
--- a/src/devices/sound/asc.h
+++ b/src/devices/sound/asc.h
@@ -34,7 +34,7 @@
downcast<asc_device &>(*device).set_type(asc_device::asc_type::_type);
#define MCFG_IRQ_FUNC(_irqf) \
- devcb = &downcast<asc_device *>(device)->set_irqf(DEVCB_##_irqf);
+ downcast<asc_device *>(device)->set_irqf(DEVCB_##_irqf);
//**************************************************************************
diff --git a/src/devices/sound/astrocde.h b/src/devices/sound/astrocde.h
index 1ebeeae5e52..d5665b40f58 100644
--- a/src/devices/sound/astrocde.h
+++ b/src/devices/sound/astrocde.h
@@ -40,31 +40,31 @@
//**************************************************************************
#define MCFG_ASTROCADE_IO_SI_READ_CB(_devcb) \
- devcb = &downcast<astrocade_io_device &>(*device).set_si_callback(DEVCB_##_devcb);
+ downcast<astrocade_io_device &>(*device).set_si_callback(DEVCB_##_devcb);
#define MCFG_ASTROCADE_IO_SO0_STROBE_CB(_devcb) \
- devcb = &downcast<astrocade_io_device &>(*device).set_so_callback<0>(DEVCB_##_devcb);
+ downcast<astrocade_io_device &>(*device).set_so_callback<0>(DEVCB_##_devcb);
#define MCFG_ASTROCADE_IO_SO1_STROBE_CB(_devcb) \
- devcb = &downcast<astrocade_io_device &>(*device).set_so_callback<1>(DEVCB_##_devcb);
+ downcast<astrocade_io_device &>(*device).set_so_callback<1>(DEVCB_##_devcb);
#define MCFG_ASTROCADE_IO_SO2_STROBE_CB(_devcb) \
- devcb = &downcast<astrocade_io_device &>(*device).set_so_callback<2>(DEVCB_##_devcb);
+ downcast<astrocade_io_device &>(*device).set_so_callback<2>(DEVCB_##_devcb);
#define MCFG_ASTROCADE_IO_SO3_STROBE_CB(_devcb) \
- devcb = &downcast<astrocade_io_device &>(*device).set_so_callback<3>(DEVCB_##_devcb);
+ downcast<astrocade_io_device &>(*device).set_so_callback<3>(DEVCB_##_devcb);
#define MCFG_ASTROCADE_IO_SO4_STROBE_CB(_devcb) \
- devcb = &downcast<astrocade_io_device &>(*device).set_so_callback<4>(DEVCB_##_devcb);
+ downcast<astrocade_io_device &>(*device).set_so_callback<4>(DEVCB_##_devcb);
#define MCFG_ASTROCADE_IO_SO5_STROBE_CB(_devcb) \
- devcb = &downcast<astrocade_io_device &>(*device).set_so_callback<5>(DEVCB_##_devcb);
+ downcast<astrocade_io_device &>(*device).set_so_callback<5>(DEVCB_##_devcb);
#define MCFG_ASTROCADE_IO_SO6_STROBE_CB(_devcb) \
- devcb = &downcast<astrocade_io_device &>(*device).set_so_callback<6>(DEVCB_##_devcb);
+ downcast<astrocade_io_device &>(*device).set_so_callback<6>(DEVCB_##_devcb);
#define MCFG_ASTROCADE_IO_SO7_STROBE_CB(_devcb) \
- devcb = &downcast<astrocade_io_device &>(*device).set_so_callback<7>(DEVCB_##_devcb);
+ downcast<astrocade_io_device &>(*device).set_so_callback<7>(DEVCB_##_devcb);
#define MCFG_ASTROCADE_IO_POT0(_tag) \
downcast<astrocade_io_device &>(*device).set_pot_tag<0>(_tag);
diff --git a/src/devices/sound/ay8910.h b/src/devices/sound/ay8910.h
index 44f69041fe8..890d46a3670 100644
--- a/src/devices/sound/ay8910.h
+++ b/src/devices/sound/ay8910.h
@@ -59,20 +59,19 @@
downcast<ay8910_device &>(*device).set_resistors_load(_res0, _res1, _res2);
#define MCFG_AY8910_PORT_A_READ_CB(_devcb) \
- devcb = &downcast<ay8910_device &>(*device).set_port_a_read_callback(DEVCB_##_devcb);
+ downcast<ay8910_device &>(*device).set_port_a_read_callback(DEVCB_##_devcb);
#define MCFG_AY8910_PORT_B_READ_CB(_devcb) \
- devcb = &downcast<ay8910_device &>(*device).set_port_b_read_callback(DEVCB_##_devcb);
+ downcast<ay8910_device &>(*device).set_port_b_read_callback(DEVCB_##_devcb);
#define MCFG_AY8910_PORT_A_WRITE_CB(_devcb) \
- devcb = &downcast<ay8910_device &>(*device).set_port_a_write_callback(DEVCB_##_devcb);
+ downcast<ay8910_device &>(*device).set_port_a_write_callback(DEVCB_##_devcb);
#define MCFG_AY8910_PORT_B_WRITE_CB(_devcb) \
- devcb = &downcast<ay8910_device &>(*device).set_port_b_write_callback(DEVCB_##_devcb);
+ downcast<ay8910_device &>(*device).set_port_b_write_callback(DEVCB_##_devcb);
-class ay8910_device : public device_t,
- public device_sound_interface
+class ay8910_device : public device_t, public device_sound_interface
{
public:
enum psg_type_t
@@ -92,6 +91,10 @@ public:
template <class Object> devcb_base &set_port_b_read_callback(Object &&cb) { return m_port_b_read_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_port_a_write_callback(Object &&cb) { return m_port_a_write_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_port_b_write_callback(Object &&cb) { return m_port_b_write_cb.set_callback(std::forward<Object>(cb)); }
+ auto port_a_read_callback() { return m_port_a_read_cb.bind(); }
+ auto port_b_read_callback() { return m_port_b_read_cb.bind(); }
+ auto port_a_write_callback() { return m_port_a_write_cb.bind(); }
+ auto port_b_write_callback() { return m_port_b_write_cb.bind(); }
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( address_w );
diff --git a/src/devices/sound/cdp1869.h b/src/devices/sound/cdp1869.h
index 0fca66fe14c..ecd34ddbd87 100644
--- a/src/devices/sound/cdp1869.h
+++ b/src/devices/sound/cdp1869.h
@@ -108,10 +108,10 @@
#define CDP1869_PCB_READ_MEMBER(name) int name(uint16_t pma, uint8_t cma, uint8_t pmd)
#define MCFG_CDP1869_PAL_NTSC_CALLBACK(_read) \
- devcb = &downcast<cdp1869_device &>(*device).set_pal_ntsc_rd_callback(DEVCB_##_read);
+ downcast<cdp1869_device &>(*device).set_pal_ntsc_rd_callback(DEVCB_##_read);
#define MCFG_CDP1869_PRD_CALLBACK(_write) \
- devcb = &downcast<cdp1869_device &>(*device).set_prd_wr_callback(DEVCB_##_write);
+ downcast<cdp1869_device &>(*device).set_prd_wr_callback(DEVCB_##_write);
#define MCFG_CDP1869_COLOR_CLOCK(_clk) \
downcast<cdp1869_device &>(*device).set_color_clock(_clk);
diff --git a/src/devices/sound/dave.h b/src/devices/sound/dave.h
index 61e26608f00..a9fe6dca6a6 100644
--- a/src/devices/sound/dave.h
+++ b/src/devices/sound/dave.h
@@ -33,13 +33,13 @@
#define MCFG_DAVE_IRQ_CALLBACK(_write) \
- devcb = &downcast<dave_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<dave_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_DAVE_LH_CALLBACK(_write) \
- devcb = &downcast<dave_device &>(*device).set_lh_wr_callback(DEVCB_##_write);
+ downcast<dave_device &>(*device).set_lh_wr_callback(DEVCB_##_write);
#define MCFG_DAVE_RH_CALLBACK(_write) \
- devcb = &downcast<dave_device &>(*device).set_rh_wr_callback(DEVCB_##_write);
+ downcast<dave_device &>(*device).set_rh_wr_callback(DEVCB_##_write);
diff --git a/src/devices/sound/es1373.h b/src/devices/sound/es1373.h
index a2705cba287..db3ea72b192 100644
--- a/src/devices/sound/es1373.h
+++ b/src/devices/sound/es1373.h
@@ -9,7 +9,7 @@
#include "machine/pci.h"
#define MCFG_ES1373_IRQ_HANDLER(cb) \
- devcb = &downcast<es1373_device &>(*device).set_irq_handler(DEVCB_##cb);
+ downcast<es1373_device &>(*device).set_irq_handler(DEVCB_##cb);
class es1373_device : public pci_device, public device_sound_interface
{
@@ -20,6 +20,7 @@ public:
uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) override;
template <typename T> devcb_base &set_irq_handler(T &&cb) { return m_irq_handler.set_callback(std::forward<T>(cb)); }
+ auto irq_handler() { return m_irq_handler.bind(); }
DECLARE_READ32_MEMBER (reg_r);
DECLARE_WRITE32_MEMBER(reg_w);
diff --git a/src/devices/sound/es5503.h b/src/devices/sound/es5503.h
index 825cdc65a0c..8bf49b6e3ba 100644
--- a/src/devices/sound/es5503.h
+++ b/src/devices/sound/es5503.h
@@ -14,10 +14,10 @@
downcast<es5503_device &>(*device).set_channels(_channels);
#define MCFG_ES5503_IRQ_FUNC(_write) \
- devcb = &downcast<es5503_device &>(*device).set_irqf(DEVCB_##_write);
+ downcast<es5503_device &>(*device).set_irqf(DEVCB_##_write);
#define MCFG_ES5503_ADC_FUNC(_read) \
- devcb = &downcast<es5503_device &>(*device).set_adcf(DEVCB_##_read);
+ downcast<es5503_device &>(*device).set_adcf(DEVCB_##_read);
// ======================> es5503_device
diff --git a/src/devices/sound/es5506.h b/src/devices/sound/es5506.h
index 5b8da91ebac..d8d87408402 100644
--- a/src/devices/sound/es5506.h
+++ b/src/devices/sound/es5506.h
@@ -30,10 +30,10 @@
downcast<es5506_device &>(*device).set_channels(_chan);
#define MCFG_ES5506_IRQ_CB(_devcb) \
- devcb = &downcast<es5506_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<es5506_device &>(*device).set_irq_callback(DEVCB_##_devcb);
#define MCFG_ES5506_READ_PORT_CB(_devcb) \
- devcb = &downcast<es5506_device &>(*device).set_read_port_callback(DEVCB_##_devcb);
+ downcast<es5506_device &>(*device).set_read_port_callback(DEVCB_##_devcb);
#define MCFG_ES5505_REGION0(_region) \
@@ -46,10 +46,10 @@
downcast<es5505_device &>(*device).set_channels(_chan);
#define MCFG_ES5505_IRQ_CB(_devcb) \
- devcb = &downcast<es5505_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<es5505_device &>(*device).set_irq_callback(DEVCB_##_devcb);
#define MCFG_ES5505_READ_PORT_CB(_devcb) \
- devcb = &downcast<es5505_device &>(*device).set_read_port_callback(DEVCB_##_devcb);
+ downcast<es5505_device &>(*device).set_read_port_callback(DEVCB_##_devcb);
class es550x_device : public device_t, public device_sound_interface
diff --git a/src/devices/sound/es8712.h b/src/devices/sound/es8712.h
index 796167331ed..61f98068cde 100644
--- a/src/devices/sound/es8712.h
+++ b/src/devices/sound/es8712.h
@@ -19,9 +19,9 @@
#define MCFG_ES8712_REPLACE(_tag, _clock) \
MCFG_DEVICE_REPLACE(_tag, ES8712, _clock)
#define MCFG_ES8712_RESET_HANDLER(_devcb) \
- devcb = &downcast<es8712_device &>(*device).set_reset_handler(DEVCB_##_devcb);
+ downcast<es8712_device &>(*device).set_reset_handler(DEVCB_##_devcb);
#define MCFG_ES8712_MSM_WRITE_CALLBACK(_devcb) \
- devcb = &downcast<es8712_device &>(*device).set_msm_write_callback(DEVCB_##_devcb);
+ downcast<es8712_device &>(*device).set_msm_write_callback(DEVCB_##_devcb);
#define MCFG_ES8712_MSM_TAG(_msmtag) \
downcast<es8712_device &>(*device).set_msm_tag(_msmtag);
diff --git a/src/devices/sound/ics2115.h b/src/devices/sound/ics2115.h
index af3d76be7da..66feda4b48e 100644
--- a/src/devices/sound/ics2115.h
+++ b/src/devices/sound/ics2115.h
@@ -14,7 +14,7 @@
MCFG_DEVICE_ADD(_tag, ICS2115, _clock)
#define MCFG_ICS2115_IRQ_CB(_devcb) \
- devcb = &downcast<ics2115_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<ics2115_device &>(*device).set_irq_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/sound/k007232.h b/src/devices/sound/k007232.h
index ee53a90fa94..845379b55e5 100644
--- a/src/devices/sound/k007232.h
+++ b/src/devices/sound/k007232.h
@@ -10,7 +10,7 @@
#pragma once
#define MCFG_K007232_PORT_WRITE_HANDLER(_devcb) \
- devcb = &downcast<k007232_device &>(*device).set_port_write_handler(DEVCB_##_devcb);
+ downcast<k007232_device &>(*device).set_port_write_handler(DEVCB_##_devcb);
class k007232_device : public device_t, public device_sound_interface
diff --git a/src/devices/sound/k054539.h b/src/devices/sound/k054539.h
index 4b1d55cf534..a8a6507963a 100644
--- a/src/devices/sound/k054539.h
+++ b/src/devices/sound/k054539.h
@@ -20,7 +20,7 @@
downcast<k054539_device &>(*device).set_override("^" _region);
#define MCFG_K054539_TIMER_HANDLER(_devcb) \
- devcb = &downcast<k054539_device &>(*device).set_timer_handler(DEVCB_##_devcb);
+ downcast<k054539_device &>(*device).set_timer_handler(DEVCB_##_devcb);
class k054539_device : public device_t,
diff --git a/src/devices/sound/k056800.h b/src/devices/sound/k056800.h
index aa05889234c..38d4902cfeb 100644
--- a/src/devices/sound/k056800.h
+++ b/src/devices/sound/k056800.h
@@ -18,7 +18,7 @@
MCFG_DEVICE_ADD((tag), K056800, (clock))
#define MCFG_K056800_INT_HANDLER(cb) \
- devcb = &downcast<k056800_device &>(*device).set_int_handler((DEVCB_##cb));
+ downcast<k056800_device &>(*device).set_int_handler((DEVCB_##cb));
diff --git a/src/devices/sound/lc7535.h b/src/devices/sound/lc7535.h
index bc3da9dc9c8..7b58f48ba37 100644
--- a/src/devices/sound/lc7535.h
+++ b/src/devices/sound/lc7535.h
@@ -32,7 +32,7 @@
//**************************************************************************
#define MCFG_LC7535_SELECT_CB(_read) \
- devcb = &downcast<lc7535_device &>(*device).set_select_callback(DEVCB_##_read);
+ downcast<lc7535_device &>(*device).set_select_callback(DEVCB_##_read);
#define MCFG_LC7535_VOLUME_CB(_class, _method) \
downcast<lc7535_device &>(*device).set_volume_callback(lc7535_device::volume_delegate(&_class::_method, #_class "::" #_method, this));
diff --git a/src/devices/sound/mea8000.h b/src/devices/sound/mea8000.h
index ffd7a2e76e2..21764e75b88 100644
--- a/src/devices/sound/mea8000.h
+++ b/src/devices/sound/mea8000.h
@@ -14,7 +14,7 @@
#pragma once
#define MCFG_MEA8000_REQ_CALLBACK(_write) \
- devcb = &downcast<mea8000_device &>(*device).set_reqwr_callback(*device, DEVCB_##_write);
+ downcast<mea8000_device &>(*device).set_reqwr_callback(*device, DEVCB_##_write);
/* define to use double instead of int (slow but useful for debugging) */
#undef MEA8000_FLOAT_MODE
diff --git a/src/devices/sound/mm5837.h b/src/devices/sound/mm5837.h
index 171cae609c4..388330190da 100644
--- a/src/devices/sound/mm5837.h
+++ b/src/devices/sound/mm5837.h
@@ -32,7 +32,7 @@
downcast<mm5837_device &>(*device).set_vdd_voltage(_voltage);
#define MCFG_MM5837_OUTPUT_CB(_devcb) \
- devcb = &downcast<mm5837_device &>(*device).set_output_callback(DEVCB_##_devcb);
+ downcast<mm5837_device &>(*device).set_output_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/sound/mos6560.h b/src/devices/sound/mos6560.h
index 25d8e3a9161..d4ee91e8ba2 100644
--- a/src/devices/sound/mos6560.h
+++ b/src/devices/sound/mos6560.h
@@ -79,10 +79,10 @@
#define MCFG_MOS6560_POTX_CALLBACK(_read) \
- devcb = &downcast<mos6560_device &>(*device).set_potx_rd_callback(DEVCB_##_read);
+ downcast<mos6560_device &>(*device).set_potx_rd_callback(DEVCB_##_read);
#define MCFG_MOS6560_POTY_CALLBACK(_read) \
- devcb = &downcast<mos6560_device &>(*device).set_poty_rd_callback(DEVCB_##_read);
+ downcast<mos6560_device &>(*device).set_poty_rd_callback(DEVCB_##_read);
diff --git a/src/devices/sound/mos6581.h b/src/devices/sound/mos6581.h
index 62c01036f44..6707be8ecac 100644
--- a/src/devices/sound/mos6581.h
+++ b/src/devices/sound/mos6581.h
@@ -36,10 +36,10 @@
//**************************************************************************
#define MCFG_MOS6581_POTX_CALLBACK(_read) \
- devcb = &downcast<mos6581_device &>(*device).set_potx_rd_callback(DEVCB_##_read);
+ downcast<mos6581_device &>(*device).set_potx_rd_callback(DEVCB_##_read);
#define MCFG_MOS6581_POTY_CALLBACK(_read) \
- devcb = &downcast<mos6581_device &>(*device).set_poty_rd_callback(DEVCB_##_read);
+ downcast<mos6581_device &>(*device).set_poty_rd_callback(DEVCB_##_read);
diff --git a/src/devices/sound/msm5205.h b/src/devices/sound/msm5205.h
index 7e6ef5f91f9..b4d69bc2029 100644
--- a/src/devices/sound/msm5205.h
+++ b/src/devices/sound/msm5205.h
@@ -11,30 +11,30 @@
downcast<msm5205_device &>(*device).set_prescaler_selector((msm5205_device::select));
#define MCFG_MSM5205_VCK_CALLBACK(cb) \
- devcb = &downcast<msm5205_device &>(*device).set_vck_callback((DEVCB_##cb));
+ downcast<msm5205_device &>(*device).set_vck_callback((DEVCB_##cb));
#define MCFG_MSM5205_VCLK_CB(cb) \
- devcb = &downcast<msm5205_device &>(*device).set_vck_legacy_callback((DEVCB_##cb));
+ downcast<msm5205_device &>(*device).set_vck_legacy_callback((DEVCB_##cb));
#define MCFG_MSM6585_PRESCALER_SELECTOR(select) \
downcast<msm5205_device &>(*device).set_prescaler_selector((msm6585_device::select));
#define MCFG_MSM6585_VCK_CALLBACK(cb) \
- devcb = &downcast<msm5205_device &>(*device).set_vck_callback((DEVCB_##cb));
+ downcast<msm5205_device &>(*device).set_vck_callback((DEVCB_##cb));
class msm5205_device : public device_t, public device_sound_interface
{
public:
- /* MSM5205 default master clock is 384KHz */
- static constexpr int S96_3B = 0; /* prescaler 1/96(4KHz) , data 3bit */
- static constexpr int S48_3B = 1; /* prescaler 1/48(8KHz) , data 3bit */
- static constexpr int S64_3B = 2; /* prescaler 1/64(6KHz) , data 3bit */
- static constexpr int SEX_3B = 3; /* VCK slave mode , data 3bit */
- static constexpr int S96_4B = 4; /* prescaler 1/96(4KHz) , data 4bit */
- static constexpr int S48_4B = 5; /* prescaler 1/48(8KHz) , data 4bit */
- static constexpr int S64_4B = 6; /* prescaler 1/64(6KHz) , data 4bit */
- static constexpr int SEX_4B = 7; /* VCK slave mode , data 4bit */
+ // MSM5205 default master clock is 384KHz
+ static constexpr int S96_3B = 0; // prescaler 1/96(4KHz) , data 3bit
+ static constexpr int S48_3B = 1; // prescaler 1/48(8KHz) , data 3bit
+ static constexpr int S64_3B = 2; // prescaler 1/64(6KHz) , data 3bit
+ static constexpr int SEX_3B = 3; // VCK slave mode , data 3bit
+ static constexpr int S96_4B = 4; // prescaler 1/96(4KHz) , data 4bit
+ static constexpr int S48_4B = 5; // prescaler 1/48(8KHz) , data 4bit
+ static constexpr int S64_4B = 6; // prescaler 1/64(6KHz) , data 4bit
+ static constexpr int SEX_4B = 7; // VCK slave mode , data 4bit
msm5205_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
@@ -46,6 +46,7 @@ public:
}
template <class Object> devcb_base &set_vck_callback(Object &&cb) { return m_vck_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_vck_legacy_callback(Object &&cb) { return m_vck_legacy_cb.set_callback(std::forward<Object>(cb)); }
+ auto vck_callback() { return m_vck_cb.bind(); }
// reset signal should keep for 2cycle of VCLK
DECLARE_WRITE_LINE_MEMBER(reset_w);
diff --git a/src/devices/sound/msm5232.h b/src/devices/sound/msm5232.h
index 0010999dedf..11e68c6ec02 100644
--- a/src/devices/sound/msm5232.h
+++ b/src/devices/sound/msm5232.h
@@ -10,7 +10,7 @@
downcast<msm5232_device &>(*device).set_capacitors(_a, _b, _c, _d, _e, _f, _g, _h);
#define MCFG_MSM5232_GATE_HANDLER_CB(_devcb) \
- devcb = &downcast<msm5232_device &>(*device).set_gate_handler_callback(DEVCB_##_devcb);
+ downcast<msm5232_device &>(*device).set_gate_handler_callback(DEVCB_##_devcb);
class msm5232_device : public device_t,
diff --git a/src/devices/sound/nes_apu.h b/src/devices/sound/nes_apu.h
index 0a244540abe..c6931463ca2 100644
--- a/src/devices/sound/nes_apu.h
+++ b/src/devices/sound/nes_apu.h
@@ -40,10 +40,10 @@
*/
#define MCFG_NES_APU_IRQ_HANDLER(_devcb) \
- devcb = &downcast<nesapu_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<nesapu_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_NES_APU_MEM_READ_CALLBACK(_devcb) \
- devcb = &downcast<nesapu_device &>(*device).set_mem_read_callback(DEVCB_##_devcb);
+ downcast<nesapu_device &>(*device).set_mem_read_callback(DEVCB_##_devcb);
class nesapu_device : public device_t,
public device_sound_interface
diff --git a/src/devices/sound/pokey.h b/src/devices/sound/pokey.h
index 1dafefeb184..10faf22c8da 100644
--- a/src/devices/sound/pokey.h
+++ b/src/devices/sound/pokey.h
@@ -59,37 +59,37 @@
//**************************************************************************
#define MCFG_POKEY_POT0_R_CB(_devcb) \
- devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<0>(DEVCB_##_devcb);
+ downcast<pokey_device &>(*device).set_pot_r_callback<0>(DEVCB_##_devcb);
#define MCFG_POKEY_POT1_R_CB(_devcb) \
- devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<1>(DEVCB_##_devcb);
+ downcast<pokey_device &>(*device).set_pot_r_callback<1>(DEVCB_##_devcb);
#define MCFG_POKEY_POT2_R_CB(_devcb) \
- devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<2>(DEVCB_##_devcb);
+ downcast<pokey_device &>(*device).set_pot_r_callback<2>(DEVCB_##_devcb);
#define MCFG_POKEY_POT3_R_CB(_devcb) \
- devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<3>(DEVCB_##_devcb);
+ downcast<pokey_device &>(*device).set_pot_r_callback<3>(DEVCB_##_devcb);
#define MCFG_POKEY_POT4_R_CB(_devcb) \
- devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<4>(DEVCB_##_devcb);
+ downcast<pokey_device &>(*device).set_pot_r_callback<4>(DEVCB_##_devcb);
#define MCFG_POKEY_POT5_R_CB(_devcb) \
- devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<5>(DEVCB_##_devcb);
+ downcast<pokey_device &>(*device).set_pot_r_callback<5>(DEVCB_##_devcb);
#define MCFG_POKEY_POT6_R_CB(_devcb) \
- devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<6>(DEVCB_##_devcb);
+ downcast<pokey_device &>(*device).set_pot_r_callback<6>(DEVCB_##_devcb);
#define MCFG_POKEY_POT7_R_CB(_devcb) \
- devcb = &downcast<pokey_device &>(*device).set_pot_r_callback<7>(DEVCB_##_devcb);
+ downcast<pokey_device &>(*device).set_pot_r_callback<7>(DEVCB_##_devcb);
#define MCFG_POKEY_ALLPOT_R_CB(_devcb) \
- devcb = &downcast<pokey_device &>(*device).set_allpot_r_callback(DEVCB_##_devcb);
+ downcast<pokey_device &>(*device).set_allpot_r_callback(DEVCB_##_devcb);
#define MCFG_POKEY_SERIN_R_CB(_devcb) \
- devcb = &downcast<pokey_device &>(*device).set_serin_r_callback(DEVCB_##_devcb);
+ downcast<pokey_device &>(*device).set_serin_r_callback(DEVCB_##_devcb);
#define MCFG_POKEY_SEROUT_W_CB(_devcb) \
- devcb = &downcast<pokey_device &>(*device).set_serout_w_callback(DEVCB_##_devcb);
+ downcast<pokey_device &>(*device).set_serout_w_callback(DEVCB_##_devcb);
/* k543210 = k5 ... k0 returns bit0: kr1, bit1: kr2 */
/* all are, in contrast to actual hardware, ACTIVE_HIGH */
diff --git a/src/devices/sound/qs1000.h b/src/devices/sound/qs1000.h
index af648e11d88..b5f1c4b6b12 100644
--- a/src/devices/sound/qs1000.h
+++ b/src/devices/sound/qs1000.h
@@ -24,25 +24,25 @@
downcast<qs1000_device &>(*device).set_external_rom(_bool);
#define MCFG_QS1000_IN_P1_CB(_devcb) \
- devcb = &downcast<qs1000_device &>(*device).set_in_p1_callback(DEVCB_##_devcb);
+ downcast<qs1000_device &>(*device).set_in_p1_callback(DEVCB_##_devcb);
#define MCFG_QS1000_IN_P2_CB(_devcb) \
- devcb = &downcast<qs1000_device &>(*device).set_in_p2_callback(DEVCB_##_devcb);
+ downcast<qs1000_device &>(*device).set_in_p2_callback(DEVCB_##_devcb);
#define MCFG_QS1000_IN_P3_CB(_devcb) \
- devcb = &downcast<qs1000_device &>(*device).set_in_p3_callback(DEVCB_##_devcb);
+ downcast<qs1000_device &>(*device).set_in_p3_callback(DEVCB_##_devcb);
#define MCFG_QS1000_OUT_P1_CB(_devcb) \
- devcb = &downcast<qs1000_device &>(*device).set_out_p1_callback(DEVCB_##_devcb);
+ downcast<qs1000_device &>(*device).set_out_p1_callback(DEVCB_##_devcb);
#define MCFG_QS1000_OUT_P2_CB(_devcb) \
- devcb = &downcast<qs1000_device &>(*device).set_out_p2_callback(DEVCB_##_devcb);
+ downcast<qs1000_device &>(*device).set_out_p2_callback(DEVCB_##_devcb);
#define MCFG_QS1000_OUT_P3_CB(_devcb) \
- devcb = &downcast<qs1000_device &>(*device).set_out_p3_callback(DEVCB_##_devcb);
+ downcast<qs1000_device &>(*device).set_out_p3_callback(DEVCB_##_devcb);
/*#define MCFG_QS1000_SERIAL_W_CB(_devcb) \
- devcb = &downcast<qs1000_device &>(*device).set_serial_w_callback(DEVCB_##_devcb);*/
+ downcast<qs1000_device &>(*device).set_serial_w_callback(DEVCB_##_devcb);*/
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/sound/s14001a.h b/src/devices/sound/s14001a.h
index 78547f0b618..a7294559fb4 100644
--- a/src/devices/sound/s14001a.h
+++ b/src/devices/sound/s14001a.h
@@ -9,10 +9,10 @@
#define MAME_SOUND_S14001A_H
#define MCFG_S14001A_BSY_HANDLER(_devcb) \
- devcb = &downcast<s14001a_device &>(*device).set_bsy_handler(DEVCB_##_devcb);
+ downcast<s14001a_device &>(*device).set_bsy_handler(DEVCB_##_devcb);
#define MCFG_S14001A_EXT_READ_HANDLER(_devcb) \
- devcb = &downcast<s14001a_device &>(*device).set_ext_read_handler(DEVCB_##_devcb);
+ downcast<s14001a_device &>(*device).set_ext_read_handler(DEVCB_##_devcb);
class s14001a_device : public device_t, public device_sound_interface
diff --git a/src/devices/sound/scsp.h b/src/devices/sound/scsp.h
index 54bf92ef59d..983e37c3a9f 100644
--- a/src/devices/sound/scsp.h
+++ b/src/devices/sound/scsp.h
@@ -19,13 +19,13 @@
downcast<scsp_device &>(*device).set_roffset(_offs);
#define MCFG_SCSP_IRQ_CB(_devcb) \
- devcb = &downcast<scsp_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<scsp_device &>(*device).set_irq_callback(DEVCB_##_devcb);
#define MCFG_SCSP_MAIN_IRQ_CB(_devcb) \
- devcb = &downcast<scsp_device &>(*device).set_main_irq_callback(DEVCB_##_devcb);
+ downcast<scsp_device &>(*device).set_main_irq_callback(DEVCB_##_devcb);
#define MCFG_SCSP_EXTS_CB(_devcb) \
- devcb = &downcast<scsp_device &>(*device).set_exts_callback(DEVCB_##_devcb);
+ downcast<scsp_device &>(*device).set_exts_callback(DEVCB_##_devcb);
class scsp_device : public device_t,
diff --git a/src/devices/sound/sn76496.h b/src/devices/sound/sn76496.h
index b173c059de8..0a129260e4d 100644
--- a/src/devices/sound/sn76496.h
+++ b/src/devices/sound/sn76496.h
@@ -19,7 +19,7 @@ DECLARE_DEVICE_TYPE(SEGAPSG, segapsg_device)
#define MCFG_SN76496_READY_HANDLER(cb) \
- devcb = &downcast<sn76496_base_device &>(*device).set_ready_handler((DEVCB_##cb));
+ downcast<sn76496_base_device &>(*device).set_ready_handler((DEVCB_##cb));
class sn76496_base_device : public device_t, public device_sound_interface
{
diff --git a/src/devices/sound/sp0250.h b/src/devices/sound/sp0250.h
index 43bbe3b6421..95352c32ecc 100644
--- a/src/devices/sound/sp0250.h
+++ b/src/devices/sound/sp0250.h
@@ -50,6 +50,6 @@ private:
DECLARE_DEVICE_TYPE(SP0250, sp0250_device)
#define MCFG_SP0250_DRQ_CALLBACK(_write) \
- devcb = &downcast<sp0250_device &>(*device).set_drq_callback(DEVCB_##_write);
+ downcast<sp0250_device &>(*device).set_drq_callback(DEVCB_##_write);
#endif // MAME_SOUND_SP0250_H
diff --git a/src/devices/sound/sp0256.h b/src/devices/sound/sp0256.h
index aa91d415d54..d4cea893859 100644
--- a/src/devices/sound/sp0256.h
+++ b/src/devices/sound/sp0256.h
@@ -36,10 +36,10 @@
#pragma once
#define MCFG_SP0256_DATA_REQUEST_CB(_devcb) \
- devcb = &downcast<sp0256_device &>(*device).set_data_request_callback(DEVCB_##_devcb);
+ downcast<sp0256_device &>(*device).set_data_request_callback(DEVCB_##_devcb);
#define MCFG_SP0256_STANDBY_CB(_devcb) \
- devcb = &downcast<sp0256_device &>(*device).set_standby_callback(DEVCB_##_devcb);
+ downcast<sp0256_device &>(*device).set_standby_callback(DEVCB_##_devcb);
class sp0256_device : public device_t,
diff --git a/src/devices/sound/spu.h b/src/devices/sound/spu.h
index 874867ff622..07bb06f6b85 100644
--- a/src/devices/sound/spu.h
+++ b/src/devices/sound/spu.h
@@ -10,7 +10,7 @@
//**************************************************************************
#define MCFG_SPU_IRQ_HANDLER(_devcb) \
- devcb = &downcast<spu_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<spu_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_SPU_ADD(_tag, _clock) \
MCFG_DEVICE_MODIFY( "maincpu" ) \
diff --git a/src/devices/sound/st0016.h b/src/devices/sound/st0016.h
index 264a0536322..54da6678020 100644
--- a/src/devices/sound/st0016.h
+++ b/src/devices/sound/st0016.h
@@ -11,7 +11,7 @@
//**************************************************************************
#define MCFG_ST0016_SOUNDRAM_READ_CB(_devcb) \
- devcb = &downcast<st0016_device &>(*device).set_soundram_callback(DEVCB_##_devcb);
+ downcast<st0016_device &>(*device).set_soundram_callback(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/sound/t6721a.h b/src/devices/sound/t6721a.h
index 81157e4c47f..49e77498118 100644
--- a/src/devices/sound/t6721a.h
+++ b/src/devices/sound/t6721a.h
@@ -43,16 +43,16 @@
//**************************************************************************
#define MCFG_T6721A_EOS_HANDLER(_eos) \
- devcb = &downcast<t6721a_device *>(device)->set_eos_callback(DEVCB_##_eos);
+ downcast<t6721a_device *>(device)->set_eos_callback(DEVCB_##_eos);
#define MCFG_T6721A_PHI2_HANDLER(_phi2) \
- devcb = &downcast<t6721a_device *>(device)->set_phi2_callback(DEVCB_##_phi2);
+ downcast<t6721a_device *>(device)->set_phi2_callback(DEVCB_##_phi2);
#define MCFG_T6721A_DTRD_HANDLER(_dtrd) \
- devcb = &downcast<t6721a_device *>(device)->set_dtrd_callback(DEVCB_##_dtrd);
+ downcast<t6721a_device *>(device)->set_dtrd_callback(DEVCB_##_dtrd);
#define MCFG_T6721A_APD_HANDLER(_apd) \
- devcb = &downcast<t6721a_device *>(device)->set_apd_callback(DEVCB_##_apd);
+ downcast<t6721a_device *>(device)->set_apd_callback(DEVCB_##_apd);
diff --git a/src/devices/sound/tms5110.h b/src/devices/sound/tms5110.h
index 066590302da..b4a5a48d68d 100644
--- a/src/devices/sound/tms5110.h
+++ b/src/devices/sound/tms5110.h
@@ -14,19 +14,19 @@
/* usually 800000 for 10000 Hz sample rate. */
#define MCFG_TMS5110_M0_CB(_devcb) \
- devcb = &downcast<tms5110_device &>(*device).set_m0_callback(DEVCB_##_devcb);
+ downcast<tms5110_device &>(*device).set_m0_callback(DEVCB_##_devcb);
#define MCFG_TMS5110_M1_CB(_devcb) \
- devcb = &downcast<tms5110_device &>(*device).set_m1_callback(DEVCB_##_devcb);
+ downcast<tms5110_device &>(*device).set_m1_callback(DEVCB_##_devcb);
#define MCFG_TMS5110_ADDR_CB(_devcb) \
- devcb = &downcast<tms5110_device &>(*device).set_addr_callback(DEVCB_##_devcb);
+ downcast<tms5110_device &>(*device).set_addr_callback(DEVCB_##_devcb);
#define MCFG_TMS5110_DATA_CB(_devcb) \
- devcb = &downcast<tms5110_device &>(*device).set_data_callback(DEVCB_##_devcb);
+ downcast<tms5110_device &>(*device).set_data_callback(DEVCB_##_devcb);
#define MCFG_TMS5110_ROMCLK_CB(_devcb) \
- devcb = &downcast<tms5110_device &>(*device).set_romclk_callback(DEVCB_##_devcb);
+ downcast<tms5110_device &>(*device).set_romclk_callback(DEVCB_##_devcb);
class tms5110_device : public device_t, public device_sound_interface
@@ -365,9 +365,9 @@ DECLARE_DEVICE_TYPE(TMSPROM, tmsprom_device)
downcast<tmsprom_device &>(*device).set_stop_bit(_bit);
#define MCFG_TMSPROM_PDC_CB(_devcb) \
- devcb = &downcast<tmsprom_device &>(*device).set_pdc_callback(DEVCB_##_devcb);
+ downcast<tmsprom_device &>(*device).set_pdc_callback(DEVCB_##_devcb);
#define MCFG_TMSPROM_CTL_CB(_devcb) \
- devcb = &downcast<tmsprom_device &>(*device).set_ctl_callback(DEVCB_##_devcb);
+ downcast<tmsprom_device &>(*device).set_ctl_callback(DEVCB_##_devcb);
#endif // MAME_SOUND_TMS5110_H
diff --git a/src/devices/sound/tms5220.h b/src/devices/sound/tms5220.h
index f06777c3dae..cdbf48f2cad 100644
--- a/src/devices/sound/tms5220.h
+++ b/src/devices/sound/tms5220.h
@@ -16,11 +16,11 @@
/* IRQ callback function, active low, i.e. state=0 */
#define MCFG_TMS52XX_IRQ_HANDLER(_devcb) \
- devcb = &downcast<tms5220_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<tms5220_device &>(*device).set_irq_handler(DEVCB_##_devcb);
/* Ready callback function, active low, i.e. state=0 */
#define MCFG_TMS52XX_READYQ_HANDLER(_devcb) \
- devcb = &downcast<tms5220_device &>(*device).set_readyq_handler(DEVCB_##_devcb);
+ downcast<tms5220_device &>(*device).set_readyq_handler(DEVCB_##_devcb);
/* old VSM handler, remove me! */
#define MCFG_TMS52XX_SPEECHROM(_tag) \
@@ -28,19 +28,19 @@
/* new VSM handler */
#define MCFG_TMS52XX_M0_CB(_devcb) \
- devcb = &downcast<tms5220_device &>(*device).set_m0_callback(DEVCB_##_devcb);
+ downcast<tms5220_device &>(*device).set_m0_callback(DEVCB_##_devcb);
#define MCFG_TMS52XX_M1_CB(_devcb) \
- devcb = &downcast<tms5220_device &>(*device).set_m1_callback(DEVCB_##_devcb);
+ downcast<tms5220_device &>(*device).set_m1_callback(DEVCB_##_devcb);
#define MCFG_TMS52XX_ADDR_CB(_devcb) \
- devcb = &downcast<tms5220_device &>(*device).set_addr_callback(DEVCB_##_devcb);
+ downcast<tms5220_device &>(*device).set_addr_callback(DEVCB_##_devcb);
#define MCFG_TMS52XX_DATA_CB(_devcb) \
- devcb = &downcast<tms5220_device &>(*device).set_data_callback(DEVCB_##_devcb);
+ downcast<tms5220_device &>(*device).set_data_callback(DEVCB_##_devcb);
#define MCFG_TMS52XX_ROMCLK_CB(_devcb) \
- devcb = &downcast<tms5220_device &>(device).set_romclk_callback(DEVCB_##_devcb);
+ downcast<tms5220_device &>(device).set_romclk_callback(DEVCB_##_devcb);
class tms5220_device : public device_t, public device_sound_interface
{
diff --git a/src/devices/sound/upd1771.h b/src/devices/sound/upd1771.h
index 704ea7aecb0..aa570528ed5 100644
--- a/src/devices/sound/upd1771.h
+++ b/src/devices/sound/upd1771.h
@@ -11,7 +11,7 @@
#define MCFG_UPD1771_ACK_HANDLER(_devcb) \
- devcb = &downcast<upd1771c_device &>(*device).set_ack_handler(DEVCB_##_devcb);
+ downcast<upd1771c_device &>(*device).set_ack_handler(DEVCB_##_devcb);
/***************************************************************************
diff --git a/src/devices/sound/upd7759.h b/src/devices/sound/upd7759.h
index 6c41e4b0f43..ab128998f8e 100644
--- a/src/devices/sound/upd7759.h
+++ b/src/devices/sound/upd7759.h
@@ -142,6 +142,6 @@ DECLARE_DEVICE_TYPE(UPD7759, upd7759_device)
DECLARE_DEVICE_TYPE(UPD7756, upd7756_device)
#define MCFG_UPD7759_DRQ_CALLBACK(_write) \
- devcb = &downcast<upd7759_device &>(*device).set_drq_callback(DEVCB_##_write);
+ downcast<upd7759_device &>(*device).set_drq_callback(DEVCB_##_write);
#endif // MAME_SOUND_UPD7759_H
diff --git a/src/devices/sound/upd934g.h b/src/devices/sound/upd934g.h
index 02224f2739d..1d94c317957 100644
--- a/src/devices/sound/upd934g.h
+++ b/src/devices/sound/upd934g.h
@@ -19,7 +19,7 @@
//**************************************************************************
#define MCFG_UPD934G_DATA_CB(_devcb) \
- devcb = &downcast<upd934g_device &>(*device).set_data_callback(DEVCB_##_devcb);
+ downcast<upd934g_device &>(*device).set_data_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/sound/votrax.h b/src/devices/sound/votrax.h
index 2779b42d5fe..bc6b32f5fb5 100644
--- a/src/devices/sound/votrax.h
+++ b/src/devices/sound/votrax.h
@@ -14,7 +14,7 @@
#define MCFG_VOTRAX_SC01_REQUEST_CB(_devcb) \
- devcb = &downcast<votrax_sc01_device *>(device)->set_ar_callback(DEVCB_##_devcb);
+ downcast<votrax_sc01_device *>(device)->set_ar_callback(DEVCB_##_devcb);
class votrax_sc01_device : public device_t,
public device_sound_interface
diff --git a/src/devices/sound/ym2151.h b/src/devices/sound/ym2151.h
index 0aba974025f..a25a424017b 100644
--- a/src/devices/sound/ym2151.h
+++ b/src/devices/sound/ym2151.h
@@ -41,9 +41,9 @@
//**************************************************************************
#define MCFG_YM2151_IRQ_HANDLER(_devcb) \
- devcb = &downcast<ym2151_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<ym2151_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_YM2151_PORT_WRITE_HANDLER(_devcb) \
- devcb = &downcast<ym2151_device &>(*device).set_port_write_handler(DEVCB_##_devcb);
+ downcast<ym2151_device &>(*device).set_port_write_handler(DEVCB_##_devcb);
//**************************************************************************
@@ -63,6 +63,8 @@ public:
// configuration helpers
template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irqhandler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_port_write_handler(Object &&cb) { return m_portwritehandler.set_callback(std::forward<Object>(cb)); }
+ auto irq_handler() { return m_irqhandler.bind(); }
+ auto port_write_handler() { return m_portwritehandler.bind(); }
// read/write
DECLARE_READ8_MEMBER(read);
diff --git a/src/devices/sound/ymf271.h b/src/devices/sound/ymf271.h
index c032c764d53..075650b8586 100644
--- a/src/devices/sound/ymf271.h
+++ b/src/devices/sound/ymf271.h
@@ -7,7 +7,7 @@
#define MCFG_YMF271_IRQ_HANDLER(_devcb) \
- devcb = &downcast<ymf271_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<ymf271_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class ymf271_device : public device_t, public device_sound_interface, public device_rom_interface
{
diff --git a/src/devices/sound/ymf278b.h b/src/devices/sound/ymf278b.h
index d19815fddbd..39456acfbe1 100644
--- a/src/devices/sound/ymf278b.h
+++ b/src/devices/sound/ymf278b.h
@@ -9,7 +9,7 @@
#define YMF278B_STD_CLOCK (33868800) /* standard clock for OPL4 */
#define MCFG_YMF278B_IRQ_HANDLER(_devcb) \
- devcb = &downcast<ymf278b_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<ymf278b_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class ymf278b_device : public device_t, public device_sound_interface, public device_rom_interface
{
diff --git a/src/devices/sound/ymz280b.h b/src/devices/sound/ymz280b.h
index 40b65e94c3c..df52c60206b 100644
--- a/src/devices/sound/ymz280b.h
+++ b/src/devices/sound/ymz280b.h
@@ -16,7 +16,7 @@
#define YMZ280B_MAKE_WAVS 0
#define MCFG_YMZ280B_IRQ_HANDLER(_devcb) \
- devcb = &downcast<ymz280b_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<ymz280b_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class ymz280b_device : public device_t, public device_sound_interface, public device_rom_interface
{
@@ -25,6 +25,7 @@ public:
// configuration helpers
template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ auto irq_handler() { return m_irq_handler.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/sound/zsg2.h b/src/devices/sound/zsg2.h
index 572e551fa4b..0cd4479dca1 100644
--- a/src/devices/sound/zsg2.h
+++ b/src/devices/sound/zsg2.h
@@ -20,7 +20,7 @@
MCFG_DEVICE_REPLACE(_tag, ZSG2, _clock)
#define MCFG_ZSG2_EXT_READ_HANDLER(_devcb) \
- devcb = &downcast<zsg2_device &>(*device).set_ext_read_handler(DEVCB_##_devcb);
+ downcast<zsg2_device &>(*device).set_ext_read_handler(DEVCB_##_devcb);
// ======================> zsg2_device
diff --git a/src/devices/video/315_5124.h b/src/devices/video/315_5124.h
index c358476df17..aa048723444 100644
--- a/src/devices/video/315_5124.h
+++ b/src/devices/video/315_5124.h
@@ -220,13 +220,13 @@ private:
downcast<sega315_5124_device &>(*device).set_signal_type(_bool);
#define MCFG_SEGA315_5124_INT_CB(_devcb) \
- devcb = &downcast<sega315_5124_device &>(*device).set_int_callback(DEVCB_##_devcb);
+ downcast<sega315_5124_device &>(*device).set_int_callback(DEVCB_##_devcb);
#define MCFG_SEGA315_5124_CSYNC_CB(_devcb) \
- devcb = &downcast<sega315_5124_device &>(*device).set_csync_callback(DEVCB_##_devcb);
+ downcast<sega315_5124_device &>(*device).set_csync_callback(DEVCB_##_devcb);
#define MCFG_SEGA315_5124_PAUSE_CB(_devcb) \
- devcb = &downcast<sega315_5124_device &>(*device).set_pause_callback(DEVCB_##_devcb);
+ downcast<sega315_5124_device &>(*device).set_pause_callback(DEVCB_##_devcb);
#define MCFG_SEGA315_5246_SET_SCREEN MCFG_VIDEO_SET_SCREEN
@@ -235,13 +235,13 @@ private:
downcast<sega315_5246_device &>(*device).set_signal_type(_bool);
#define MCFG_SEGA315_5246_INT_CB(_devcb) \
- devcb = &downcast<sega315_5246_device &>(*device).set_int_callback(DEVCB_##_devcb);
+ downcast<sega315_5246_device &>(*device).set_int_callback(DEVCB_##_devcb);
#define MCFG_SEGA315_5246_CSYNC_CB(_devcb) \
- devcb = &downcast<sega315_5246_device &>(*device).set_csync_callback(DEVCB_##_devcb);
+ downcast<sega315_5246_device &>(*device).set_csync_callback(DEVCB_##_devcb);
#define MCFG_SEGA315_5246_PAUSE_CB(_devcb) \
- devcb = &downcast<sega315_5246_device &>(*device).set_pause_callback(DEVCB_##_devcb);
+ downcast<sega315_5246_device &>(*device).set_pause_callback(DEVCB_##_devcb);
#define MCFG_SEGA315_5378_SET_SCREEN MCFG_VIDEO_SET_SCREEN
@@ -250,13 +250,13 @@ private:
downcast<sega315_5378_device &>(*device).set_signal_type(_bool);
#define MCFG_SEGA315_5378_INT_CB(_devcb) \
- devcb = &downcast<sega315_5378_device &>(*device).set_int_callback(DEVCB_##_devcb);
+ downcast<sega315_5378_device &>(*device).set_int_callback(DEVCB_##_devcb);
#define MCFG_SEGA315_5378_CSYNC_CB(_devcb) \
- devcb = &downcast<sega315_5378_device &>(*device).set_csync_callback(DEVCB_##_devcb);
+ downcast<sega315_5378_device &>(*device).set_csync_callback(DEVCB_##_devcb);
#define MCFG_SEGA315_5378_PAUSE_CB(_devcb) \
- devcb = &downcast<sega315_5378_device &>(*device).set_pause_callback(DEVCB_##_devcb);
+ downcast<sega315_5378_device &>(*device).set_pause_callback(DEVCB_##_devcb);
#endif // MAME_VIDEO_315_5124_H
diff --git a/src/devices/video/315_5313.h b/src/devices/video/315_5313.h
index 3661dfb1bce..750c2d8d960 100644
--- a/src/devices/video/315_5313.h
+++ b/src/devices/video/315_5313.h
@@ -16,19 +16,19 @@
downcast<sega315_5313_device &>(*device).set_signal_type(_bool);
#define MCFG_SEGA315_5313_INT_CB(_devcb) \
- devcb = &downcast<sega315_5313_device &>(*device).set_int_callback(DEVCB_##_devcb);
+ downcast<sega315_5313_device &>(*device).set_int_callback(DEVCB_##_devcb);
#define MCFG_SEGA315_5313_PAUSE_CB(_devcb) \
- devcb = &downcast<sega315_5313_device &>(*device).set_pause_callback(DEVCB_##_devcb);
+ downcast<sega315_5313_device &>(*device).set_pause_callback(DEVCB_##_devcb);
#define MCFG_SEGA315_5313_SND_IRQ_CALLBACK(_write) \
- devcb = &downcast<sega315_5313_device &>(*device).set_sndirqline_callback(DEVCB_##_write);
+ downcast<sega315_5313_device &>(*device).set_sndirqline_callback(DEVCB_##_write);
#define MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(_write) \
- devcb = &downcast<sega315_5313_device &>(*device).set_lv6irqline_callback(DEVCB_##_write);
+ downcast<sega315_5313_device &>(*device).set_lv6irqline_callback(DEVCB_##_write);
#define MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(_write) \
- devcb = &downcast<sega315_5313_device &>(*device).set_lv4irqline_callback(DEVCB_##_write);
+ downcast<sega315_5313_device &>(*device).set_lv4irqline_callback(DEVCB_##_write);
#define MCFG_SEGA315_5313_ALT_TIMING(_data) \
downcast<sega315_5313_device &>(*device).set_alt_timing(_data);
diff --git a/src/devices/video/cdp1861.h b/src/devices/video/cdp1861.h
index 765be92de8b..fc75e765279 100644
--- a/src/devices/video/cdp1861.h
+++ b/src/devices/video/cdp1861.h
@@ -34,13 +34,13 @@
//**************************************************************************
#define MCFG_CDP1861_IRQ_CALLBACK(_write) \
- devcb = &downcast<cdp1861_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<cdp1861_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_CDP1861_DMA_OUT_CALLBACK(_write) \
- devcb = &downcast<cdp1861_device &>(*device).set_dma_out_wr_callback(DEVCB_##_write);
+ downcast<cdp1861_device &>(*device).set_dma_out_wr_callback(DEVCB_##_write);
#define MCFG_CDP1861_EFX_CALLBACK(_write) \
- devcb = &downcast<cdp1861_device &>(*device).set_efx_wr_callback(DEVCB_##_write);
+ downcast<cdp1861_device &>(*device).set_efx_wr_callback(DEVCB_##_write);
#define MCFG_CDP1861_SCREEN_ADD(_cdptag, _tag, _clock) \
diff --git a/src/devices/video/cdp1862.h b/src/devices/video/cdp1862.h
index 66dce2a4f12..71c977ff72f 100644
--- a/src/devices/video/cdp1862.h
+++ b/src/devices/video/cdp1862.h
@@ -42,13 +42,13 @@
//**************************************************************************
#define MCFG_CDP1861_RD_CALLBACK(_read) \
- devcb = &downcast<cdp1862_device &>(*device).set_rd_rd_callback(DEVCB_##_read);
+ downcast<cdp1862_device &>(*device).set_rd_rd_callback(DEVCB_##_read);
#define MCFG_CDP1861_BD_CALLBACK(_read) \
- devcb = &downcast<cdp1862_device &>(*device).set_bd_rd_callback(DEVCB_##_read);
+ downcast<cdp1862_device &>(*device).set_bd_rd_callback(DEVCB_##_read);
#define MCFG_CDP1861_GD_CALLBACK(_read) \
- devcb = &downcast<cdp1862_device &>(*device).set_gd_rd_callback(DEVCB_##_read);
+ downcast<cdp1862_device &>(*device).set_gd_rd_callback(DEVCB_##_read);
#define MCFG_CDP1862_LUMINANCE(_r, _b, _g, _bkg) \
downcast<cdp1862_device &>(*device).set_luminance(_r, _b, _g, _bkg);
diff --git a/src/devices/video/cesblit.h b/src/devices/video/cesblit.h
index e5bc962c314..f22f16df260 100644
--- a/src/devices/video/cesblit.h
+++ b/src/devices/video/cesblit.h
@@ -25,7 +25,7 @@
downcast<cesblit_device &>(*device).set_compute_addr(_compute_addr);
#define MCFG_CESBLIT_IRQ_CB(_devcb) \
- devcb = &downcast<cesblit_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<cesblit_device &>(*device).set_irq_callback(DEVCB_##_devcb);
/***************************************************************************
TYPE DEFINITIONS
diff --git a/src/devices/video/crt9007.h b/src/devices/video/crt9007.h
index d7487c81ab0..060fbfcec24 100644
--- a/src/devices/video/crt9007.h
+++ b/src/devices/video/crt9007.h
@@ -45,37 +45,37 @@
downcast<crt9007_device &>(*device).config_set_character_width(_value);
#define MCFG_CRT9007_INT_CALLBACK(_write) \
- devcb = &downcast<crt9007_device &>(*device).set_int_wr_callback(DEVCB_##_write);
+ downcast<crt9007_device &>(*device).set_int_wr_callback(DEVCB_##_write);
#define MCFG_CRT9007_DMAR_CALLBACK(_write) \
- devcb = &downcast<crt9007_device &>(*device).set_dmar_wr_callback(DEVCB_##_write);
+ downcast<crt9007_device &>(*device).set_dmar_wr_callback(DEVCB_##_write);
#define MCFG_CRT9007_VS_CALLBACK(_write) \
- devcb = &downcast<crt9007_device &>(*device).set_vs_wr_callback(DEVCB_##_write);
+ downcast<crt9007_device &>(*device).set_vs_wr_callback(DEVCB_##_write);
#define MCFG_CRT9007_HS_CALLBACK(_write) \
- devcb = &downcast<crt9007_device &>(*device).set_hs_wr_callback(DEVCB_##_write);
+ downcast<crt9007_device &>(*device).set_hs_wr_callback(DEVCB_##_write);
#define MCFG_CRT9007_VLT_CALLBACK(_write) \
- devcb = &downcast<crt9007_device &>(*device).set_vlt_wr_callback(DEVCB_##_write);
+ downcast<crt9007_device &>(*device).set_vlt_wr_callback(DEVCB_##_write);
#define MCFG_CRT9007_CURS_CALLBACK(_write) \
- devcb = &downcast<crt9007_device &>(*device).set_curs_wr_callback(DEVCB_##_write);
+ downcast<crt9007_device &>(*device).set_curs_wr_callback(DEVCB_##_write);
#define MCFG_CRT9007_DRB_CALLBACK(_write) \
- devcb = &downcast<crt9007_device &>(*device).set_drb_wr_callback(DEVCB_##_write);
+ downcast<crt9007_device &>(*device).set_drb_wr_callback(DEVCB_##_write);
#define MCFG_CRT9007_WBEN_CALLBACK(_write) \
- devcb = &downcast<crt9007_device &>(*device).set_wben_wr_callback(DEVCB_##_write);
+ downcast<crt9007_device &>(*device).set_wben_wr_callback(DEVCB_##_write);
#define MCFG_CRT9007_CBLANK_CALLBACK(_write) \
- devcb = &downcast<crt9007_device &>(*device).set_cblank_wr_callback(DEVCB_##_write);
+ downcast<crt9007_device &>(*device).set_cblank_wr_callback(DEVCB_##_write);
#define MCFG_CRT9007_SLG_CALLBACK(_write) \
- devcb = &downcast<crt9007_device &>(*device).set_slg_wr_callback(DEVCB_##_write);
+ downcast<crt9007_device &>(*device).set_slg_wr_callback(DEVCB_##_write);
#define MCFG_CRT9007_SLD_CALLBACK(_write) \
- devcb = &downcast<crt9007_device &>(*device).set_sld_wr_callback(DEVCB_##_write);
+ downcast<crt9007_device &>(*device).set_sld_wr_callback(DEVCB_##_write);
diff --git a/src/devices/video/crt9212.h b/src/devices/video/crt9212.h
index 639ea1dd213..b3547f698c1 100644
--- a/src/devices/video/crt9212.h
+++ b/src/devices/video/crt9212.h
@@ -39,13 +39,13 @@
downcast<crt9212_device &>(*device).set_wen2(1);
#define MCFG_CRT9212_DOUT_CALLBACK(_write) \
- devcb = &downcast<crt9212_device &>(*device).set_dout_wr_callback(DEVCB_##_write);
+ downcast<crt9212_device &>(*device).set_dout_wr_callback(DEVCB_##_write);
#define MCFG_CRT9212_ROF_CALLBACK(_write) \
- devcb = &downcast<crt9212_device &>(*device).set_rof_wr_callback(DEVCB_##_write);
+ downcast<crt9212_device &>(*device).set_rof_wr_callback(DEVCB_##_write);
#define MCFG_CRT9212_WOF_CALLBACK(_write) \
- devcb = &downcast<crt9212_device &>(*device).set_wof_wr_callback(DEVCB_##_write);
+ downcast<crt9212_device &>(*device).set_wof_wr_callback(DEVCB_##_write);
diff --git a/src/devices/video/crtc_ega.h b/src/devices/video/crtc_ega.h
index c3eb7dcc319..e995cdf8a30 100644
--- a/src/devices/video/crtc_ega.h
+++ b/src/devices/video/crtc_ega.h
@@ -33,16 +33,16 @@
downcast<crtc_ega_device &>(*device).config_set_hpixels_per_column(_pix);
#define MCFG_CRTC_EGA_RES_OUT_DE_CB(_devcb) \
- devcb = &downcast<crtc_ega_device &>(*device).set_res_out_de_callback(DEVCB_##_devcb);
+ downcast<crtc_ega_device &>(*device).set_res_out_de_callback(DEVCB_##_devcb);
#define MCFG_CRTC_EGA_RES_OUT_HSYNC_CB(_devcb) \
- devcb = &downcast<crtc_ega_device &>(*device).set_res_out_hsync_callback(DEVCB_##_devcb);
+ downcast<crtc_ega_device &>(*device).set_res_out_hsync_callback(DEVCB_##_devcb);
#define MCFG_CRTC_EGA_RES_OUT_VSYNC_CB(_devcb) \
- devcb = &downcast<crtc_ega_device &>(*device).set_res_out_vsync_callback(DEVCB_##_devcb);
+ downcast<crtc_ega_device &>(*device).set_res_out_vsync_callback(DEVCB_##_devcb);
#define MCFG_CRTC_EGA_RES_OUT_VBLANK_CB(_devcb) \
- devcb = &downcast<crtc_ega_device &>(*device).set_res_out_vblank_callback(DEVCB_##_devcb);
+ downcast<crtc_ega_device &>(*device).set_res_out_vblank_callback(DEVCB_##_devcb);
class crtc_ega_device : public device_t,
diff --git a/src/devices/video/dl1416.h b/src/devices/video/dl1416.h
index 1d49e00c410..1927905ac4d 100644
--- a/src/devices/video/dl1416.h
+++ b/src/devices/video/dl1416.h
@@ -31,10 +31,10 @@ DECLARE_DEVICE_TYPE(DL1416T, dl1416_device)
***************************************************************************/
#define MCFG_DL1414_UPDATE_HANDLER(_devcb) \
- devcb = &downcast<dl1414_device &>(*device).set_update_handler(DEVCB_##_devcb);
+ downcast<dl1414_device &>(*device).set_update_handler(DEVCB_##_devcb);
#define MCFG_DL1416_UPDATE_HANDLER(_devcb) \
- devcb = &downcast<dl1414_device &>(*device).set_update_handler(DEVCB_##_devcb);
+ downcast<dl1414_device &>(*device).set_update_handler(DEVCB_##_devcb);
/***************************************************************************
diff --git a/src/devices/video/dm9368.h b/src/devices/video/dm9368.h
index 05e7fbb170f..9dc77424a2e 100644
--- a/src/devices/video/dm9368.h
+++ b/src/devices/video/dm9368.h
@@ -29,10 +29,10 @@
//**************************************************************************
#define MCFG_DM9368_UPDATE_CALLBACK(cb) \
- devcb = &downcast<dm9368_device &>(*device).set_update_callback(DEVCB_##cb);
+ downcast<dm9368_device &>(*device).set_update_callback(DEVCB_##cb);
#define MCFG_DM9368_RBO_CALLBACK(cb) \
- devcb = &downcast<dm9368_device &>(*device).set_rbo_callback(DEVCB_##cb);
+ downcast<dm9368_device &>(*device).set_rbo_callback(DEVCB_##cb);
diff --git a/src/devices/video/ef9364.h b/src/devices/video/ef9364.h
index ef7fc2cb99a..1082173733c 100644
--- a/src/devices/video/ef9364.h
+++ b/src/devices/video/ef9364.h
@@ -22,7 +22,7 @@
downcast<ef9364_device &>(*device).set_nb_of_pages(_pages_number);
#define MCFG_EF9364_IRQ_HANDLER(_devcb) \
- devcb = &downcast<ef9364_device &>(*device).set_irq_handler(DEVCB_##_devcb);
+ downcast<ef9364_device &>(*device).set_irq_handler(DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/video/ef9365.h b/src/devices/video/ef9365.h
index 8c14fbd6370..762989e6a03 100644
--- a/src/devices/video/ef9365.h
+++ b/src/devices/video/ef9365.h
@@ -25,7 +25,7 @@
downcast<ef9365_device &>(*device).set_display_mode((ef9365_device::display_mode));
#define MCFG_EF936X_IRQ_HANDLER(cb) \
- devcb = &downcast<ef9365_device &>(*device).set_irq_handler((DEVCB_##cb));
+ downcast<ef9365_device &>(*device).set_irq_handler((DEVCB_##cb));
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/devices/video/gba_lcd.h b/src/devices/video/gba_lcd.h
index 9272b8faba6..0fe017a6b93 100644
--- a/src/devices/video/gba_lcd.h
+++ b/src/devices/video/gba_lcd.h
@@ -34,19 +34,19 @@ DECLARE_DEVICE_TYPE(GBA_LCD, gba_lcd_device)
MCFG_DEVICE_ADD(_tag, GBA_LCD, 0)
#define MCFG_GBA_LCD_INT_HBLANK(_devcb) \
- devcb = &downcast<gba_lcd_device &>(*device).set_int_hblank_callback(DEVCB_##_devcb);
+ downcast<gba_lcd_device &>(*device).set_int_hblank_callback(DEVCB_##_devcb);
#define MCFG_GBA_LCD_INT_VBLANK(_devcb) \
- devcb = &downcast<gba_lcd_device &>(*device).set_int_vblank_callback(DEVCB_##_devcb);
+ downcast<gba_lcd_device &>(*device).set_int_vblank_callback(DEVCB_##_devcb);
#define MCFG_GBA_LCD_INT_VCOUNT(_devcb) \
- devcb = &downcast<gba_lcd_device &>(*device).set_int_vcount_callback(DEVCB_##_devcb);
+ downcast<gba_lcd_device &>(*device).set_int_vcount_callback(DEVCB_##_devcb);
#define MCFG_GBA_LCD_DMA_HBLANK(_devcb) \
- devcb = &downcast<gba_lcd_device &>(*device).set_dma_hblank_callback(DEVCB_##_devcb);
+ downcast<gba_lcd_device &>(*device).set_dma_hblank_callback(DEVCB_##_devcb);
#define MCFG_GBA_LCD_DMA_VBLANK(_devcb) \
- devcb = &downcast<gba_lcd_device &>(*device).set_dma_vblank_callback(DEVCB_##_devcb);
+ downcast<gba_lcd_device &>(*device).set_dma_vblank_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/video/hd44352.h b/src/devices/video/hd44352.h
index ce12d9bc1cb..1dc67eca7f5 100644
--- a/src/devices/video/hd44352.h
+++ b/src/devices/video/hd44352.h
@@ -13,7 +13,7 @@
#define MCFG_HD44352_ON_CB(_devcb) \
- devcb = &downcast<hd44352_device &>(*device).set_on_callback(DEVCB_##_devcb);
+ downcast<hd44352_device &>(*device).set_on_callback(DEVCB_##_devcb);
//**************************************************************************
diff --git a/src/devices/video/hd61830.h b/src/devices/video/hd61830.h
index 0c14b9f8482..ab4278f9d89 100644
--- a/src/devices/video/hd61830.h
+++ b/src/devices/video/hd61830.h
@@ -19,7 +19,7 @@
//**************************************************************************
#define MCFG_HD61830_RD_CALLBACK(_read) \
- devcb = &downcast<hd61830_device &>(*device).set_rd_rd_callback(DEVCB_##_read);
+ downcast<hd61830_device &>(*device).set_rd_rd_callback(DEVCB_##_read);
diff --git a/src/devices/video/hlcd0515.h b/src/devices/video/hlcd0515.h
index 0f4e1444a93..898cf93ab1e 100644
--- a/src/devices/video/hlcd0515.h
+++ b/src/devices/video/hlcd0515.h
@@ -43,11 +43,11 @@
// COL/ROW pins (offset for ROW)
#define MCFG_HLCD0515_WRITE_COLS_CB(_devcb) \
- devcb = &downcast<hlcd0515_device &>(*device).set_write_cols_callback(DEVCB_##_devcb);
+ downcast<hlcd0515_device &>(*device).set_write_cols_callback(DEVCB_##_devcb);
// DATA OUT pin, don't use on HLCD0569
#define MCFG_HLCD0515_WRITE_DATA_CB(_devcb) \
- devcb = &downcast<hlcd0515_device &>(*device).set_write_data_callback(DEVCB_##_devcb);
+ downcast<hlcd0515_device &>(*device).set_write_data_callback(DEVCB_##_devcb);
class hlcd0515_device : public device_t
diff --git a/src/devices/video/hlcd0538.h b/src/devices/video/hlcd0538.h
index e84a5387e22..8751020860f 100644
--- a/src/devices/video/hlcd0538.h
+++ b/src/devices/video/hlcd0538.h
@@ -42,11 +42,11 @@
// C/R pins (0538: d0-d7 for rows)
#define MCFG_HLCD0538_WRITE_COLS_CB(_devcb) \
- devcb = &downcast<hlcd0538_device &>(*device).set_write_cols_callback(DEVCB_##_devcb);
+ downcast<hlcd0538_device &>(*device).set_write_cols_callback(DEVCB_##_devcb);
// INTERRUPT pin
#define MCFG_HLCD0538_INTERRUPT_CB(_devcb) \
- devcb = &downcast<hlcd0538_device &>(*device).set_write_interrupt_callback(DEVCB_##_devcb);
+ downcast<hlcd0538_device &>(*device).set_write_interrupt_callback(DEVCB_##_devcb);
class hlcd0538_device : public device_t
diff --git a/src/devices/video/huc6202.h b/src/devices/video/huc6202.h
index cc086350647..a3e1a47b519 100644
--- a/src/devices/video/huc6202.h
+++ b/src/devices/video/huc6202.h
@@ -13,40 +13,40 @@
#define MCFG_HUC6202_NEXT_PIXEL_0_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_next_pixel_0_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_next_pixel_0_callback(DEVCB_##_devcb);
#define MCFG_HUC6202_TIME_TIL_NEXT_EVENT_0_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_time_til_next_event_0_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_time_til_next_event_0_callback(DEVCB_##_devcb);
#define MCFG_HUC6202_VSYNC_CHANGED_0_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_vsync_changed_0_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_vsync_changed_0_callback(DEVCB_##_devcb);
#define MCFG_HUC6202_HSYNC_CHANGED_0_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_hsync_changed_0_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_hsync_changed_0_callback(DEVCB_##_devcb);
#define MCFG_HUC6202_READ_0_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_read_0_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_read_0_callback(DEVCB_##_devcb);
#define MCFG_HUC6202_WRITE_0_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_write_0_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_write_0_callback(DEVCB_##_devcb);
#define MCFG_HUC6202_NEXT_PIXEL_1_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_next_pixel_1_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_next_pixel_1_callback(DEVCB_##_devcb);
#define MCFG_HUC6202_TIME_TIL_NEXT_EVENT_1_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_time_til_next_event_1_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_time_til_next_event_1_callback(DEVCB_##_devcb);
#define MCFG_HUC6202_VSYNC_CHANGED_1_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_vsync_changed_1_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_vsync_changed_1_callback(DEVCB_##_devcb);
#define MCFG_HUC6202_HSYNC_CHANGED_1_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_hsync_changed_1_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_hsync_changed_1_callback(DEVCB_##_devcb);
#define MCFG_HUC6202_READ_1_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_read_1_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_read_1_callback(DEVCB_##_devcb);
#define MCFG_HUC6202_WRITE_1_CB(_devcb) \
- devcb = &downcast<huc6202_device &>(*device).set_write_1_callback(DEVCB_##_devcb);
+ downcast<huc6202_device &>(*device).set_write_1_callback(DEVCB_##_devcb);
class huc6202_device : public device_t
diff --git a/src/devices/video/huc6260.h b/src/devices/video/huc6260.h
index c3c6159fec7..1e97e258146 100644
--- a/src/devices/video/huc6260.h
+++ b/src/devices/video/huc6260.h
@@ -13,16 +13,16 @@
#define MCFG_HUC6260_NEXT_PIXEL_DATA_CB(_devcb) \
- devcb = &downcast<huc6260_device &>(*device).set_next_pixel_data_callback(DEVCB_##_devcb);
+ downcast<huc6260_device &>(*device).set_next_pixel_data_callback(DEVCB_##_devcb);
#define MCFG_HUC6260_TIME_TIL_NEXT_EVENT_CB(_devcb) \
- devcb = &downcast<huc6260_device &>(*device).set_time_til_next_event_callback(DEVCB_##_devcb);
+ downcast<huc6260_device &>(*device).set_time_til_next_event_callback(DEVCB_##_devcb);
#define MCFG_HUC6260_VSYNC_CHANGED_CB(_devcb) \
- devcb = &downcast<huc6260_device &>(*device).set_vsync_changed_callback(DEVCB_##_devcb);
+ downcast<huc6260_device &>(*device).set_vsync_changed_callback(DEVCB_##_devcb);
#define MCFG_HUC6260_HSYNC_CHANGED_CB(_devcb) \
- devcb = &downcast<huc6260_device &>(*device).set_hsync_changed_callback(DEVCB_##_devcb);
+ downcast<huc6260_device &>(*device).set_hsync_changed_callback(DEVCB_##_devcb);
class huc6260_device : public device_t,
diff --git a/src/devices/video/huc6270.h b/src/devices/video/huc6270.h
index 5d933129bba..77c15515175 100644
--- a/src/devices/video/huc6270.h
+++ b/src/devices/video/huc6270.h
@@ -16,7 +16,7 @@
downcast<huc6270_device &>(*device).set_vram_size(_size);
#define MCFG_HUC6270_IRQ_CHANGED_CB(_devcb) \
- devcb = &downcast<huc6270_device &>(*device).set_irq_changed_callback(DEVCB_##_devcb);
+ downcast<huc6270_device &>(*device).set_irq_changed_callback(DEVCB_##_devcb);
class huc6270_device : public device_t
{
diff --git a/src/devices/video/huc6272.h b/src/devices/video/huc6272.h
index 0ceaeb18b9e..474c424373b 100644
--- a/src/devices/video/huc6272.h
+++ b/src/devices/video/huc6272.h
@@ -21,7 +21,7 @@
//**************************************************************************
#define MCFG_HUC6272_IRQ_CHANGED_CB(cb) \
- devcb = &downcast<huc6272_device &>(*device).set_irq_changed_callback((DEVCB_##cb));
+ downcast<huc6272_device &>(*device).set_irq_changed_callback((DEVCB_##cb));
#define MCFG_HUC6272_RAINBOW(tag) \
downcast<huc6272_device &>(*device).set_rainbow_tag((tag));
diff --git a/src/devices/video/i8244.h b/src/devices/video/i8244.h
index f1583129cc2..0e8fd60159e 100644
--- a/src/devices/video/i8244.h
+++ b/src/devices/video/i8244.h
@@ -26,9 +26,9 @@
MCFG_I8244_IRQ_CB(_irq_cb) \
MCFG_I8244_POSTPROCESS_CB(_postprocess_cb)
#define MCFG_I8244_IRQ_CB(_devcb) \
- devcb = &downcast<i8244_device &>(*device).set_irq_cb(DEVCB_##_devcb);
+ downcast<i8244_device &>(*device).set_irq_cb(DEVCB_##_devcb);
#define MCFG_I8244_POSTPROCESS_CB(_devcb) \
- devcb = &downcast<i8244_device &>(*device).set_postprocess_cb(DEVCB_##_devcb);
+ downcast<i8244_device &>(*device).set_postprocess_cb(DEVCB_##_devcb);
#define MCFG_I8245_ADD(_tag, _clock, _screen_tag, _irq_cb, _postprocess_cb) \
MCFG_DEVICE_ADD(_tag, I8245, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
diff --git a/src/devices/video/i82730.h b/src/devices/video/i82730.h
index 033bd6dc79f..d52e6b1ddbf 100644
--- a/src/devices/video/i82730.h
+++ b/src/devices/video/i82730.h
@@ -24,7 +24,7 @@
downcast<i82730_device &>(*device).set_cpu_tag(_cpu_tag);
#define MCFG_I82730_SINT_HANDLER(_devcb) \
- devcb = &downcast<i82730_device &>(*device).set_sint_handler(DEVCB_##_devcb);
+ downcast<i82730_device &>(*device).set_sint_handler(DEVCB_##_devcb);
#define MCFG_I82730_UPDATE_ROW_CB(_class, _method) \
downcast<i82730_device &>(*device).set_update_row_callback(i82730_device::update_row_delegate(&_class::_method, #_class "::" #_method, this));
diff --git a/src/devices/video/i8275.h b/src/devices/video/i8275.h
index de273f425f4..eb67df2a9c3 100644
--- a/src/devices/video/i8275.h
+++ b/src/devices/video/i8275.h
@@ -48,19 +48,19 @@
downcast<i8275_device &>(*device).set_character_width(_value);
#define MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \
- downcast<i8275_device &>(*device).set_display_callback(i8275_device::draw_character_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<i8275_device &>(*device).set_display_callback(&_class::_method, #_class "::" #_method, this);
#define MCFG_I8275_DRQ_CALLBACK(_write) \
- devcb = &downcast<i8275_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
+ downcast<i8275_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
#define MCFG_I8275_IRQ_CALLBACK(_write) \
- devcb = &downcast<i8275_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<i8275_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_I8275_HRTC_CALLBACK(_write) \
- devcb = &downcast<i8275_device &>(*device).set_hrtc_wr_callback(DEVCB_##_write);
+ downcast<i8275_device &>(*device).set_hrtc_wr_callback(DEVCB_##_write);
#define MCFG_I8275_VRTC_CALLBACK(_write) \
- devcb = &downcast<i8275_device &>(*device).set_vrtc_wr_callback(DEVCB_##_write);
+ downcast<i8275_device &>(*device).set_vrtc_wr_callback(DEVCB_##_write);
@@ -81,12 +81,16 @@ public:
i8275_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void set_character_width(int value) { m_hpixels_per_column = value; }
- template <typename Object> void set_display_callback(Object &&cb) { m_display_cb = std::forward<Object>(cb); }
+ template <typename... T> void set_display_callback(T &&... args) { m_display_cb = draw_character_delegate(std::forward<T>(args)...); }
template <class Object> devcb_base &set_drq_wr_callback(Object &&cb) { return m_write_drq.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_hrtc_wr_callback(Object &&cb) { return m_write_hrtc.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_vrtc_wr_callback(Object &&cb) { return m_write_vrtc.set_callback(std::forward<Object>(cb)); }
+ auto drq_wr_callback() { return m_write_drq.bind(); }
+ auto irq_wr_callback() { return m_write_irq.bind(); }
+ auto hrtc_wr_callback() { return m_write_hrtc.bind(); }
+ auto vrtc_wr_callback() { return m_write_vrtc.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/video/imagetek_i4100.h b/src/devices/video/imagetek_i4100.h
index 0394fe1fb32..a7feb88d756 100644
--- a/src/devices/video/imagetek_i4100.h
+++ b/src/devices/video/imagetek_i4100.h
@@ -23,7 +23,7 @@
downcast<imagetek_i4100_device &>(*device).set_gfxdecode_tag(gfxtag);
#define MCFG_I4100_BLITTER_END_CALLBACK(_devcb) \
- devcb = &downcast<imagetek_i4100_device &>(*device).set_blitter_irq_callback(DEVCB_##_devcb);
+ downcast<imagetek_i4100_device &>(*device).set_blitter_irq_callback(DEVCB_##_devcb);
#define MCFG_I4100_TILEMAP_XOFFSETS(_a, _b, _c) \
downcast<imagetek_i4100_device &>(*device).set_tmap_xoffsets(_a, _b, _c);
diff --git a/src/devices/video/mb88303.h b/src/devices/video/mb88303.h
index 058f58f212b..9c088d8d56b 100644
--- a/src/devices/video/mb88303.h
+++ b/src/devices/video/mb88303.h
@@ -32,13 +32,13 @@
//**************************************************************************
#define MCFG_MB88303_VOW_CALLBACK(_write) \
- devcb = &downcast<mb88303_device &>(*device).set_vow_callback(DEVCB_##_write);
+ downcast<mb88303_device &>(*device).set_vow_callback(DEVCB_##_write);
#define MCFG_MB88303_VOBN_CALLBACK(_write) \
- devcb = &downcast<mb88303_device &>(*device).set_vob_n_callback(DEVCB_##_write);
+ downcast<mb88303_device &>(*device).set_vob_n_callback(DEVCB_##_write);
#define MCFG_MB88303_DO_CALLBACK(_write) \
- devcb = &downcast<mb88303_device &>(*device).set_do_callback(DEVCB_##_write);
+ downcast<mb88303_device &>(*device).set_do_callback(DEVCB_##_write);
//**************************************************************************
diff --git a/src/devices/video/mc6845.h b/src/devices/video/mc6845.h
index d590141c102..20bfc24d53e 100644
--- a/src/devices/video/mc6845.h
+++ b/src/devices/video/mc6845.h
@@ -37,31 +37,31 @@
downcast<mc6845_device &>(*device).set_char_width(_pixels);
#define MCFG_MC6845_RECONFIGURE_CB(_class, _method) \
- downcast<mc6845_device &>(*device).set_reconfigure_callback(mc6845_device::reconfigure_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<mc6845_device &>(*device).set_reconfigure_callback(&_class::_method, #_class "::" #_method, this);
#define MCFG_MC6845_BEGIN_UPDATE_CB(_class, _method) \
- downcast<mc6845_device &>(*device).set_begin_update_callback(mc6845_device::begin_update_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<mc6845_device &>(*device).set_begin_update_callback(&_class::_method, #_class "::" #_method, this);
#define MCFG_MC6845_UPDATE_ROW_CB(_class, _method) \
- downcast<mc6845_device &>(*device).set_update_row_callback(mc6845_device::update_row_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<mc6845_device &>(*device).set_update_row_callback(&_class::_method, #_class "::" #_method, this);
#define MCFG_MC6845_END_UPDATE_CB(_class, _method) \
- downcast<mc6845_device &>(*device).set_end_update_callback(mc6845_device::end_update_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<mc6845_device &>(*device).set_end_update_callback(&_class::_method, #_class "::" #_method, this);
#define MCFG_MC6845_ADDR_CHANGED_CB(_class, _method) \
- downcast<mc6845_device &>(*device).set_on_update_addr_change_callback(mc6845_device::on_update_addr_changed_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<mc6845_device &>(*device).set_on_update_addr_change_callback(&_class::_method, #_class "::" #_method, this);
#define MCFG_MC6845_OUT_DE_CB(_write) \
- devcb = &downcast<mc6845_device &>(*device).set_out_de_callback(DEVCB_##_write);
+ downcast<mc6845_device &>(*device).set_out_de_callback(DEVCB_##_write);
#define MCFG_MC6845_OUT_CUR_CB(_write) \
- devcb = &downcast<mc6845_device &>(*device).set_out_cur_callback(DEVCB_##_write);
+ downcast<mc6845_device &>(*device).set_out_cur_callback(DEVCB_##_write);
#define MCFG_MC6845_OUT_HSYNC_CB(_write) \
- devcb = &downcast<mc6845_device &>(*device).set_out_hsync_callback(DEVCB_##_write);
+ downcast<mc6845_device &>(*device).set_out_hsync_callback(DEVCB_##_write);
#define MCFG_MC6845_OUT_VSYNC_CB(_write) \
- devcb = &downcast<mc6845_device &>(*device).set_out_vsync_callback(DEVCB_##_write);
+ downcast<mc6845_device &>(*device).set_out_vsync_callback(DEVCB_##_write);
/* callback definitions */
@@ -101,16 +101,20 @@ public:
}
void set_char_width(int pixels) { m_hpixels_per_column = pixels; }
- template <typename Object> void set_reconfigure_callback(Object &&cb) { m_reconfigure_cb = std::forward<Object>(cb); }
- template <typename Object> void set_begin_update_callback(Object &&cb) { m_begin_update_cb = std::forward<Object>(cb); }
- template <typename Object> void set_update_row_callback(Object &&cb) { m_update_row_cb = std::forward<Object>(cb); }
- template <typename Object> void set_end_update_callback(Object &&cb) { m_end_update_cb = std::forward<Object>(cb); }
- template <typename Object> void set_on_update_addr_change_callback(Object &&cb) { m_on_update_addr_changed_cb = std::forward<Object>(cb); }
+ template <typename... T> void set_reconfigure_callback(T &&... args) { m_reconfigure_cb = reconfigure_delegate(std::forward<T>(args)...); }
+ template <typename... T> void set_begin_update_callback(T &&... args) { m_begin_update_cb = begin_update_delegate(std::forward<T>(args)...); }
+ template <typename... T> void set_update_row_callback(T &&... args) { m_update_row_cb = update_row_delegate(std::forward<T>(args)...); }
+ template <typename... T> void set_end_update_callback(T &&... args) { m_end_update_cb = end_update_delegate(std::forward<T>(args)...); }
+ template <typename... T> void set_on_update_addr_change_callback(T &&... args) { m_on_update_addr_changed_cb = on_update_addr_changed_delegate(std::forward<T>(args)...); }
template <class Object> devcb_base &set_out_de_callback(Object &&cb) { return m_out_de_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_cur_callback(Object &&cb) { return m_out_cur_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_hsync_callback(Object &&cb) { return m_out_hsync_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_vsync_callback(Object &&cb) { return m_out_vsync_cb.set_callback(std::forward<Object>(cb)); }
+ auto out_de_callback() { return m_out_de_cb.bind(); }
+ auto out_cur_callback() { return m_out_cur_cb.bind(); }
+ auto out_hsync_callback() { return m_out_hsync_cb.bind(); }
+ auto out_vsync_callback() { return m_out_vsync_cb.bind(); }
/* select one of the registers for reading or writing */
DECLARE_WRITE8_MEMBER( address_w ) { write_address(data); }
diff --git a/src/devices/video/mc6847.h b/src/devices/video/mc6847.h
index 4cbe7be2e9e..763ef0c65f5 100644
--- a/src/devices/video/mc6847.h
+++ b/src/devices/video/mc6847.h
@@ -36,16 +36,16 @@
MCFG_SCREEN_VBLANK_TIME(0)
#define MCFG_MC6847_HSYNC_CALLBACK(_write) \
- devcb = &downcast<mc6847_friend_device &>(*device).set_hsync_wr_callback(DEVCB_##_write);
+ downcast<mc6847_friend_device &>(*device).set_hsync_wr_callback(DEVCB_##_write);
#define MCFG_MC6847_FSYNC_CALLBACK(_write) \
- devcb = &downcast<mc6847_friend_device &>(*device).set_fsync_wr_callback(DEVCB_##_write);
+ downcast<mc6847_friend_device &>(*device).set_fsync_wr_callback(DEVCB_##_write);
#define MCFG_MC6847_CHARROM_CALLBACK(_class, _method) \
downcast<mc6847_friend_device &>(*device).set_get_char_rom(mc6847_friend_device::get_char_rom_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_MC6847_INPUT_CALLBACK(_read) \
- devcb = &downcast<mc6847_base_device &>(*device).set_input_callback(DEVCB_##_read);
+ downcast<mc6847_base_device &>(*device).set_input_callback(DEVCB_##_read);
#define MCFG_MC6847_FIXED_MODE(_mode) \
downcast<mc6847_base_device &>(*device).set_get_fixed_mode(_mode);
@@ -88,6 +88,8 @@ public:
template <class Object> devcb_base &set_hsync_wr_callback(Object &&cb) { return m_write_hsync.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_fsync_wr_callback(Object &&cb) { return m_write_fsync.set_callback(std::forward<Object>(cb)); }
+ auto hsync_wr_callback() { return m_write_hsync.bind(); }
+ auto fsync_wr_callback() { return m_write_fsync.bind(); }
template <typename Object> void set_get_char_rom(Object &&cb) { m_charrom_cb = std::forward<Object>(cb); }
@@ -512,6 +514,7 @@ class mc6847_base_device : public mc6847_friend_device
{
public:
template <class Object> devcb_base &set_input_callback(Object &&cb) { return m_input_cb.set_callback(std::forward<Object>(cb)); }
+ auto input_callback() { return m_input_cb.bind(); }
void set_get_fixed_mode(uint8_t mode) { m_fixed_mode = mode; }
void set_black_and_white(bool bw) { m_black_and_white = bw; }
diff --git a/src/devices/video/mos6566.h b/src/devices/video/mos6566.h
index 56e106022db..1cbeed1f759 100644
--- a/src/devices/video/mos6566.h
+++ b/src/devices/video/mos6566.h
@@ -93,16 +93,16 @@
downcast<mos6566_device &>(*device).set_cpu_tag(_tag);
#define MCFG_MOS6566_IRQ_CALLBACK(_write) \
- devcb = &downcast<mos6566_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
+ downcast<mos6566_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_MOS6566_BA_CALLBACK(_write) \
- devcb = &downcast<mos6566_device &>(*device).set_ba_wr_callback(DEVCB_##_write);
+ downcast<mos6566_device &>(*device).set_ba_wr_callback(DEVCB_##_write);
#define MCFG_MOS6566_AEC_CALLBACK(_write) \
- devcb = &downcast<mos6566_device &>(*device).set_aec_wr_callback(DEVCB_##_write);
+ downcast<mos6566_device &>(*device).set_aec_wr_callback(DEVCB_##_write);
#define MCFG_MOS8564_K_CALLBACK(_write) \
- devcb = &downcast<mos6566_device &>(*device).set_k_wr_callback(DEVCB_##_write);
+ downcast<mos6566_device &>(*device).set_k_wr_callback(DEVCB_##_write);
diff --git a/src/devices/video/ppu2c0x.h b/src/devices/video/ppu2c0x.h
index 4160394bd32..2d12e243db6 100644
--- a/src/devices/video/ppu2c0x.h
+++ b/src/devices/video/ppu2c0x.h
@@ -107,6 +107,7 @@ public:
void set_cpu_tag(const char *tag) { m_cpu.set_tag(tag); }
template <typename Object> devcb_base &set_int_callback(Object &&cb) { return m_int_callback.set_callback(std::forward<Object>(cb)); }
+ auto int_callback() { return m_int_callback.bind(); }
/* routines */
virtual void init_palette();
diff --git a/src/devices/video/ppu2c0x_vt.h b/src/devices/video/ppu2c0x_vt.h
index 15fe349ddcd..840b3b3449a 100644
--- a/src/devices/video/ppu2c0x_vt.h
+++ b/src/devices/video/ppu2c0x_vt.h
@@ -20,10 +20,10 @@
MCFG_PPU2C0X_ADD(_tag, PPU_VT03)
#define MCFG_PPU_VT03_READ_BG_CB(_devcb) \
- devcb = &downcast<ppu_vt03_device &>(*device).set_read_bg_callback(DEVCB_##_devcb);
+ downcast<ppu_vt03_device &>(*device).set_read_bg_callback(DEVCB_##_devcb);
#define MCFG_PPU_VT03_READ_SP_CB(_devcb) \
- devcb = &downcast<ppu_vt03_device &>(*device).set_read_sp_callback(DEVCB_##_devcb);
+ downcast<ppu_vt03_device &>(*device).set_read_sp_callback(DEVCB_##_devcb);
#define MCFG_PPU_VT03_MODIFY MCFG_DEVICE_MODIFY
diff --git a/src/devices/video/psx.h b/src/devices/video/psx.h
index 489f3508cfe..9693f390223 100644
--- a/src/devices/video/psx.h
+++ b/src/devices/video/psx.h
@@ -18,7 +18,7 @@
#define MCFG_PSX_GPU_VBLANK_HANDLER(_devcb) \
- devcb = &downcast<psxgpu_device &>(*device).set_vblank_handler(DEVCB_##_devcb);
+ downcast<psxgpu_device &>(*device).set_vblank_handler(DEVCB_##_devcb);
#define MCFG_PSXGPU_ADD( cputag, tag, type, _vramSize, clock ) \
MCFG_DEVICE_MODIFY( cputag ) \
diff --git a/src/devices/video/saa5050.h b/src/devices/video/saa5050.h
index a99183e5f04..532e715eeff 100644
--- a/src/devices/video/saa5050.h
+++ b/src/devices/video/saa5050.h
@@ -36,7 +36,7 @@
//**************************************************************************
#define MCFG_SAA5050_D_CALLBACK(_read) \
- devcb = &downcast<saa5050_device &>(*device).set_d_rd_callback(DEVCB_##_read);
+ downcast<saa5050_device &>(*device).set_d_rd_callback(DEVCB_##_read);
#define MCFG_SAA5050_SCREEN_SIZE(_cols, _rows, _size) \
diff --git a/src/devices/video/scn2674.h b/src/devices/video/scn2674.h
index 047381e5083..0b76532e4bc 100644
--- a/src/devices/video/scn2674.h
+++ b/src/devices/video/scn2674.h
@@ -7,7 +7,7 @@
#define MCFG_SCN2672_INTR_CALLBACK(_intr) \
- devcb = &downcast<scn2672_device &>(*device).set_intr_callback(DEVCB_##_intr);
+ downcast<scn2672_device &>(*device).set_intr_callback(DEVCB_##_intr);
#define MCFG_SCN2672_CHARACTER_WIDTH(_value) \
downcast<scn2672_device &>(*device).set_character_width(_value);
@@ -19,7 +19,7 @@
#define MCFG_SCN2674_INTR_CALLBACK(_intr) \
- devcb = &downcast<scn2674_device &>(*device).set_intr_callback(DEVCB_##_intr);
+ downcast<scn2674_device &>(*device).set_intr_callback(DEVCB_##_intr);
#define MCFG_SCN2674_CHARACTER_WIDTH(_value) \
downcast<scn2674_device &>(*device).set_character_width(_value);
diff --git a/src/devices/video/snes_ppu.h b/src/devices/video/snes_ppu.h
index 0fddff1a44f..baab1e264b1 100644
--- a/src/devices/video/snes_ppu.h
+++ b/src/devices/video/snes_ppu.h
@@ -44,7 +44,7 @@ public:
snes_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration helpers
- template <class Object> devcb_base &set_open_bus_callback(Object &&cb) { return m_openbus_cb.set_callback(std::forward<Object>(cb)); }
+ auto open_bus_callback() { return m_openbus_cb.bind(); }
void refresh_scanline(bitmap_rgb32 &bitmap, uint16_t curline);
@@ -314,11 +314,4 @@ private:
DECLARE_DEVICE_TYPE(SNES_PPU, snes_ppu_device)
-/***************************************************************************
- INTERFACE CONFIGURATION MACROS
- ***************************************************************************/
-
-#define MCFG_SNES_PPU_OPENBUS_CB(_read) \
- devcb = &downcast<snes_ppu_device &>(*device).set_open_bus_callback(DEVCB_##_read);
-
#endif // MAME_VIDEO_SNES_PPU_H
diff --git a/src/devices/video/tms34061.h b/src/devices/video/tms34061.h
index c00c8547965..f4f674b1083 100644
--- a/src/devices/video/tms34061.h
+++ b/src/devices/video/tms34061.h
@@ -22,7 +22,7 @@
downcast<tms34061_device &>(*device).set_vram_size(_size);
#define MCFG_TMS34061_INTERRUPT_CB(_devcb) \
- devcb = &downcast<tms34061_device &>(*device).set_interrupt_callback(DEVCB_##_devcb);
+ downcast<tms34061_device &>(*device).set_interrupt_callback(DEVCB_##_devcb);
diff --git a/src/devices/video/tms9927.h b/src/devices/video/tms9927.h
index 9ee746bc522..e373ae89ffe 100644
--- a/src/devices/video/tms9927.h
+++ b/src/devices/video/tms9927.h
@@ -11,10 +11,10 @@
#define MCFG_TMS9927_VSYN_CALLBACK(_write) \
- devcb = &downcast<tms9927_device &>(*device).set_vsyn_wr_callback(DEVCB_##_write);
+ downcast<tms9927_device &>(*device).set_vsyn_wr_callback(DEVCB_##_write);
#define MCFG_TMS9927_HSYN_CALLBACK(_write) \
- devcb = &downcast<tms9927_device &>(*device).set_hsyn_wr_callback(DEVCB_##_write);
+ downcast<tms9927_device &>(*device).set_hsyn_wr_callback(DEVCB_##_write);
#define MCFG_TMS9927_CHAR_WIDTH(_pixels) \
downcast<tms9927_device &>(*device).set_char_width(_pixels);
@@ -32,6 +32,8 @@ public:
template <class Object> devcb_base &set_vsyn_wr_callback(Object &&cb) { return m_write_vsyn.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_hsyn_wr_callback(Object &&cb) { return m_write_hsyn.set_callback(std::forward<Object>(cb)); }
+ auto vsyn_wr_callback() { return m_write_vsyn.bind(); }
+ auto hsyn_wr_callback() { return m_write_hsyn.bind(); }
void set_char_width(int pixels) { m_hpixels_per_column = pixels; }
void set_region_tag(const char *tag) { m_selfload.set_tag(tag); }
diff --git a/src/devices/video/tms9928a.h b/src/devices/video/tms9928a.h
index d5dcfca7347..455fce7fc90 100644
--- a/src/devices/video/tms9928a.h
+++ b/src/devices/video/tms9928a.h
@@ -37,12 +37,12 @@
downcast<tms9928a_device &>(*device).set_vram_size(_size);
#define MCFG_TMS9928A_OUT_INT_LINE_CB(_devcb) \
- devcb = &downcast<tms9928a_device &>(*device).set_out_int_line_callback(DEVCB_##_devcb);
+ downcast<tms9928a_device &>(*device).set_out_int_line_callback(DEVCB_##_devcb);
#define MCFG_TMS9928A_SET_SCREEN MCFG_VIDEO_SET_SCREEN
#define MCFG_TMS9928A_OUT_GROMCLK_CB(_devcb) \
- devcb = &downcast<tms9928a_device &>(*device).set_out_gromclk_callback(DEVCB_##_devcb);
+ downcast<tms9928a_device &>(*device).set_out_gromclk_callback(DEVCB_##_devcb);
#define MCFG_TMS9928A_SCREEN_ADD_NTSC(_screen_tag) \
@@ -92,6 +92,8 @@ public:
void set_vram_size(int vram_size) { m_vram_size = vram_size; }
template <class Object> devcb_base &set_out_int_line_callback(Object &&cb) { return m_out_int_line_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_gromclk_callback(Object &&cb) { return m_out_gromclk_cb.set_callback(std::forward<Object>(cb)); }
+ auto out_int_line_callback() { return m_out_int_line_cb.bind(); }
+ auto out_gromclk_callback() { return m_out_gromclk_cb.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/video/upd3301.h b/src/devices/video/upd3301.h
index 40deb120e05..554df8189b5 100644
--- a/src/devices/video/upd3301.h
+++ b/src/devices/video/upd3301.h
@@ -47,19 +47,19 @@
downcast<upd3301_device &>(*device).set_character_width(_value);
#define MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \
- downcast<upd3301_device &>(*device).set_display_callback(upd3301_device::draw_character_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<upd3301_device &>(*device).set_display_callback(&_class::_method, #_class "::" #_method, this);
#define MCFG_UPD3301_DRQ_CALLBACK(_write) \
- devcb = &downcast<upd3301_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
+ downcast<upd3301_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
#define MCFG_UPD3301_INT_CALLBACK(_write) \
- devcb = &downcast<upd3301_device &>(*device).set_int_wr_callback(DEVCB_##_write);
+ downcast<upd3301_device &>(*device).set_int_wr_callback(DEVCB_##_write);
#define MCFG_UPD3301_HRTC_CALLBACK(_write) \
- devcb = &downcast<upd3301_device &>(*device).set_hrtc_wr_callback(DEVCB_##_write);
+ downcast<upd3301_device &>(*device).set_hrtc_wr_callback(DEVCB_##_write);
#define MCFG_UPD3301_VRTC_CALLBACK(_write) \
- devcb = &downcast<upd3301_device &>(*device).set_vrtc_wr_callback(DEVCB_##_write);
+ downcast<upd3301_device &>(*device).set_vrtc_wr_callback(DEVCB_##_write);
@@ -80,12 +80,16 @@ public:
upd3301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void set_character_width(int value) { m_width = value; }
- template <typename Object> void set_display_callback(Object &&cb) { m_display_cb = std::forward<Object>(cb); }
+ template <typename... T> void set_display_callback(T &&... args) { m_display_cb = draw_character_delegate(std::forward<T>(args)...); }
template <class Object> devcb_base &set_drq_wr_callback(Object &&cb) { return m_write_drq.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_hrtc_wr_callback(Object &&cb) { return m_write_hrtc.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_vrtc_wr_callback(Object &&cb) { return m_write_vrtc.set_callback(std::forward<Object>(cb)); }
+ auto drq_wr_callback() { return m_write_drq.bind(); }
+ auto int_wr_callback() { return m_write_int.bind(); }
+ auto hrtc_wr_callback() { return m_write_hrtc.bind(); }
+ auto vrtc_wr_callback() { return m_write_vrtc.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/devices/video/upd7220.h b/src/devices/video/upd7220.h
index 692aeb09024..4ea2706a22b 100644
--- a/src/devices/video/upd7220.h
+++ b/src/devices/video/upd7220.h
@@ -51,16 +51,16 @@
downcast<upd7220_device &>(*device).set_draw_text_callback(upd7220_device::draw_text_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_UPD7220_DRQ_CALLBACK(_write) \
- devcb = &downcast<upd7220_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
+ downcast<upd7220_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
#define MCFG_UPD7220_HSYNC_CALLBACK(_write) \
- devcb = &downcast<upd7220_device &>(*device).set_hsync_wr_callback(DEVCB_##_write);
+ downcast<upd7220_device &>(*device).set_hsync_wr_callback(DEVCB_##_write);
#define MCFG_UPD7220_VSYNC_CALLBACK(_write) \
- devcb = &downcast<upd7220_device &>(*device).set_vsync_wr_callback(DEVCB_##_write);
+ downcast<upd7220_device &>(*device).set_vsync_wr_callback(DEVCB_##_write);
#define MCFG_UPD7220_BLANK_CALLBACK(_write) \
- devcb = &downcast<upd7220_device &>(*device).set_blank_wr_callback(DEVCB_##_write);
+ downcast<upd7220_device &>(*device).set_blank_wr_callback(DEVCB_##_write);
diff --git a/src/devices/video/v9938.h b/src/devices/video/v9938.h
index cbc5e0364a2..2b70f6948ac 100644
--- a/src/devices/video/v9938.h
+++ b/src/devices/video/v9938.h
@@ -50,7 +50,7 @@
MCFG_SCREEN_UPDATE_DEVICE(_v9938_tag, v9938_device, screen_update)
#define MCFG_V99X8_INTERRUPT_CALLBACK(_irq) \
- devcb = &downcast<v99x8_device *>(device)->set_interrupt_callback(DEVCB_##_irq);
+ downcast<v99x8_device *>(device)->set_interrupt_callback(DEVCB_##_irq);
//**************************************************************************
diff --git a/src/devices/video/vic4567.h b/src/devices/video/vic4567.h
index 1e357028eac..e680a3ff0cf 100644
--- a/src/devices/video/vic4567.h
+++ b/src/devices/video/vic4567.h
@@ -244,27 +244,27 @@ DECLARE_DEVICE_TYPE(VIC3, vic3_device)
downcast<vic3_device &>(*device).set_vic3_type((vic3_device::vic3_type::type));
#define MCFG_VIC3_DMA_READ_CB(cb) \
- devcb = &downcast<vic3_device &>(*device).set_dma_read_callback((DEVCB_##cb));
+ downcast<vic3_device &>(*device).set_dma_read_callback((DEVCB_##cb));
#define MCFG_VIC3_DMA_READ_COLOR_CB(cb) \
- devcb = &downcast<vic3_device &>(*device).set_dma_read_color_callback((DEVCB_##cb));
+ downcast<vic3_device &>(*device).set_dma_read_color_callback((DEVCB_##cb));
#define MCFG_VIC3_INTERRUPT_CB(cb) \
- devcb = &downcast<vic3_device &>(*device).set_interrupt_callback((DEVCB_##cb));
+ downcast<vic3_device &>(*device).set_interrupt_callback((DEVCB_##cb));
#define MCFG_VIC3_PORT_CHANGED_CB(cb) \
- devcb = &downcast<vic3_device &>(*device).set_port_changed_callback((DEVCB_##cb));
+ downcast<vic3_device &>(*device).set_port_changed_callback((DEVCB_##cb));
#define MCFG_VIC3_LIGHTPEN_BUTTON_CB(cb) \
- devcb = &downcast<vic3_device &>(*device).set_lightpen_button_callback((DEVCB_##cb));
+ downcast<vic3_device &>(*device).set_lightpen_button_callback((DEVCB_##cb));
#define MCFG_VIC3_LIGHTPEN_X_CB(cb) \
- devcb = &downcast<vic3_device &>(*device).set_lightpen_x_callback((DEVCB_##cb));
+ downcast<vic3_device &>(*device).set_lightpen_x_callback((DEVCB_##cb));
#define MCFG_VIC3_LIGHTPEN_Y_CB(cb) \
- devcb = &downcast<vic3_device &>(*device).set_lightpen_y_callback((DEVCB_##cb));
+ downcast<vic3_device &>(*device).set_lightpen_y_callback((DEVCB_##cb));
#define MCFG_VIC3_C64_MEM_R_CB(cb) \
- devcb = &downcast<vic3_device &>(*device).set_c64_mem_r_callback((DEVCB_##cb));
+ downcast<vic3_device &>(*device).set_c64_mem_r_callback((DEVCB_##cb));
#endif // MAME_VIDEO_VIC4567_H
diff --git a/src/devices/video/voodoo.h b/src/devices/video/voodoo.h
index 87cb23b5ede..fff744bd671 100644
--- a/src/devices/video/voodoo.h
+++ b/src/devices/video/voodoo.h
@@ -1447,13 +1447,13 @@ enum
downcast<voodoo_device &>(*device).set_cpu_tag(_tag);
#define MCFG_VOODOO_VBLANK_CB(_devcb) \
- devcb = &downcast<voodoo_device &>(*device).set_vblank_callback(DEVCB_##_devcb);
+ downcast<voodoo_device &>(*device).set_vblank_callback(DEVCB_##_devcb);
#define MCFG_VOODOO_STALL_CB(_devcb) \
- devcb = &downcast<voodoo_device &>(*device).set_stall_callback(DEVCB_##_devcb);
+ downcast<voodoo_device &>(*device).set_stall_callback(DEVCB_##_devcb);
#define MCFG_VOODOO_PCIINT_CB(_devcb) \
- devcb = &downcast<voodoo_device &>(*device).set_pciint_callback(DEVCB_##_devcb);
+ downcast<voodoo_device &>(*device).set_pciint_callback(DEVCB_##_devcb);
/***************************************************************************
FUNCTION PROTOTYPES
diff --git a/src/devices/video/zeus2.h b/src/devices/video/zeus2.h
index bfd2cb4cdc2..a699f02f18c 100644
--- a/src/devices/video/zeus2.h
+++ b/src/devices/video/zeus2.h
@@ -102,10 +102,10 @@ typedef zeus2_renderer::extent_t z2_poly_extent;
* Zeus2 Video Device
*************************************/
#define MCFG_ZEUS2_VBLANK_CB(_devcb) \
- devcb = &downcast<zeus2_device &>(*device).set_vblank_callback(DEVCB_##_devcb);
+ downcast<zeus2_device &>(*device).set_vblank_callback(DEVCB_##_devcb);
#define MCFG_ZEUS2_IRQ_CB(_devcb) \
- devcb = &downcast<zeus2_device &>(*device).set_irq_callback(DEVCB_##_devcb);
+ downcast<zeus2_device &>(*device).set_irq_callback(DEVCB_##_devcb);
#define MCFG_ZEUS2_FLOAT_MODE(_mode) \
downcast<zeus2_device *>(device)->set_float_mode(_mode);