From c3fb11c2c98a5c28ece6a27093a0f9def350ac64 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sat, 7 Jul 2018 02:40:29 +1000 Subject: devcb3 There are multiple issues with the current device callbacks: * They always dispatch through a pointer-to-member * Chained callbacks are a linked list so the branch unit can't predict the early * There's a runtime decision made on the left/right shift direction * There are runtime NULL checks on various objects * Binding a lambda isn't practical * Arbitrary transformations are not supported * When chaining callbacks it isn't clear what the MCFG_DEVCB_ modifiers apply to * It isn't possible to just append to a callback in derived configuration * The macros need a magic, hidden local called devcb * Moving code that uses the magic locals around is error-prone * Writing the MCFG_ macros to make a device usable is a pain * You can't discover applicable MCFG_ macros with intellisense * Macros are not scoped * Using an inappropriate macro isn't detected at compile time * Lots of other things This changeset overcomes the biggest obstacle to remving MCFG_ macros altogether. Essentially, to allow a devcb to be configured, call .bind() and expose the result (a bind target for the callback). Bind target methods starting with "set" repace the current callbacks; methods starting with "append" append to them. You can't reconfigure a callback after resolving it. There's no need to use a macro matching the handler signatures - use FUNC for everything. Current device is implied if no tag/finder is supplied (no need for explicit this). Lambdas are supported, and the memory space and offset are optional. These kinds of things work: * .read_cb().set([this] () { return something; }); * .read_cb().set([this] (offs_t offset) { return ~offset; }); * .write_cb().set([this] (offs_t offset, u8 data) { m_array[offset] = data; }); * .write_cb().set([this] (int state) { some_var = state; }); Arbitrary transforms are allowed, and they can modify offset/mask for example: * .read_cb().set(FUNC(my_state::handler)).transform([] (u8 data) { return bitswap<4>(data, 1, 3, 0, 2); }); * .read_cb().set(m_dev, FUNC(some_device::member)).transform([] (offs_t &offset, u8 data) { offset ^= 3; return data; }); It's possible to stack arbitrary transforms, at the cost of compile time (the whole transform stack gets inlined at compile time). Shifts count as an arbitrary transform, but mask/exor does not. Order of mask/shift/exor now matters. Modifications are applied in the specified order. These are NOT EQUIVALENT: * .read_cb().set(FUNC(my_state::handler)).mask(0x06).lshift(2); * .read_cb().set(FUNC(my_state::handler)).lshift(2).mask(0x06); The bit helper no longer reverses its behaviour for read callbacks, and I/O ports are no longer aware of the field mask. Binding a read callback to no-op is not supported - specify a constant. The GND and VCC aliases have been removed intentionally - they're TTL-centric, and were already being abused. Other quirks have been preserved, including write logger only logging when the data is non-zero (quite unhelpful in many of the cases where it's used). Legacy syntax is still supported for simple cases, but will be phased out. New devices should not have MCFG_ macros. I don't think I've missed any fundamental issues, but if I've broken something, let me know. --- src/devices/bus/a1bus/a1bus.h | 4 +- src/devices/bus/a2bus/a2bus.h | 6 +- src/devices/bus/a2bus/a2eauxslot.h | 4 +- src/devices/bus/a2bus/a2mcms.cpp | 2 +- src/devices/bus/a2bus/pc_xporter.cpp | 4 +- src/devices/bus/a800/a8sio.h | 2 +- src/devices/bus/abcbus/abcbus.h | 20 +-- src/devices/bus/abckb/abckb.h | 6 +- src/devices/bus/adam/exp.h | 2 +- src/devices/bus/amiga/keyboard/keyboard.h | 6 +- src/devices/bus/amiga/zorro/zorro.h | 22 +-- src/devices/bus/apricot/expansion/expansion.h | 12 +- src/devices/bus/apricot/keyboard/keyboard.h | 2 +- src/devices/bus/bbc/1mhzbus/1mhzbus.h | 4 +- src/devices/bus/bbc/fdc/fdc.h | 4 +- src/devices/bus/bbc/joyport/joyport.h | 4 +- src/devices/bus/bbc/tube/tube.h | 2 +- src/devices/bus/bbc/tube/tube_80186.cpp | 30 ++--- src/devices/bus/bbc/tube/tube_casper.cpp | 35 ++--- src/devices/bus/bbc/userport/userport.h | 4 +- src/devices/bus/bml3/bml3bus.h | 6 +- src/devices/bus/c64/exp.h | 12 +- src/devices/bus/cbm2/user.h | 8 +- src/devices/bus/cbmiec/cbmiec.h | 10 +- src/devices/bus/cbus/pc9801_cbus.h | 14 +- src/devices/bus/centronics/ctronics.h | 43 +++--- src/devices/bus/cgenie/expansion/expansion.h | 6 +- src/devices/bus/coco/cococart.h | 18 ++- src/devices/bus/coleco/ctrl.h | 2 +- src/devices/bus/comx35/exp.h | 2 +- src/devices/bus/cpc/cpcexp.h | 10 +- src/devices/bus/dmv/dmvbus.h | 10 +- src/devices/bus/ecbbus/ecbbus.h | 4 +- src/devices/bus/econet/econet.h | 4 +- src/devices/bus/einstein/pipe/pipe.h | 6 +- src/devices/bus/einstein/userport/userport.h | 2 +- src/devices/bus/electron/cart/slot.h | 4 +- src/devices/bus/electron/exp.h | 4 +- src/devices/bus/electron/m2105.cpp | 4 +- src/devices/bus/ep64/exp.h | 6 +- src/devices/bus/epson_sio/epson_sio.h | 4 +- src/devices/bus/gamegear/ggext.h | 4 +- src/devices/bus/hexbus/tp0370.h | 6 +- src/devices/bus/hp80_io/hp80_io.h | 4 +- src/devices/bus/hp9845_io/hp9845_io.h | 6 +- src/devices/bus/hp_dio/hp_dio.h | 8 +- src/devices/bus/hp_hil/hp_hil.h | 6 +- src/devices/bus/ieee488/c2040fdc.h | 6 +- src/devices/bus/ieee488/c8050.cpp | 187 +++++++++++++------------- src/devices/bus/ieee488/c8050fdc.h | 26 +--- src/devices/bus/ieee488/hp9895.cpp | 25 ++-- src/devices/bus/ieee488/ieee488.h | 18 +-- src/devices/bus/interpro/keyboard/keyboard.h | 2 +- src/devices/bus/interpro/mouse/mouse.h | 2 +- src/devices/bus/interpro/sr/sr.h | 16 +-- src/devices/bus/iq151/iq151.h | 12 +- src/devices/bus/isa/gus.h | 22 +-- src/devices/bus/isa/hdc.h | 4 +- src/devices/bus/isa/isa.h | 38 +++--- src/devices/bus/isa/p1_hdc.cpp | 16 +-- src/devices/bus/isa/wdxt_gen.cpp | 65 +++++---- src/devices/bus/kc/kc.h | 12 +- src/devices/bus/lpci/i82371sb.h | 4 +- src/devices/bus/lpci/southbridge.cpp | 4 +- src/devices/bus/midi/midi.h | 2 +- src/devices/bus/msx_slot/cartridge.h | 4 +- src/devices/bus/nasbus/nasbus.h | 2 +- src/devices/bus/newbrain/eim.cpp | 16 +-- src/devices/bus/nubus/nubus.h | 12 +- src/devices/bus/oricext/oricext.h | 2 +- src/devices/bus/pc1512/mouse.h | 8 +- src/devices/bus/pc_kbd/pc_kbdc.h | 4 +- src/devices/bus/pet/cass.h | 2 +- src/devices/bus/pet/user.h | 57 +++++--- src/devices/bus/plus4/exp.h | 8 +- src/devices/bus/pofo/exp.h | 6 +- src/devices/bus/psi_kbd/psi_kbd.h | 4 +- src/devices/bus/psx/ctlrport.h | 4 +- src/devices/bus/ql/exp.h | 8 +- src/devices/bus/rs232/rs232.h | 24 ++-- src/devices/bus/s100/s100.h | 34 ++--- src/devices/bus/s100/wunderbus.cpp | 2 +- src/devices/bus/scsi/scsi.h | 64 ++++++--- src/devices/bus/sms_ctrl/smsctrl.h | 4 +- src/devices/bus/spectrum/exp.h | 4 +- src/devices/bus/ss50/interface.h | 4 +- src/devices/bus/ss50/mpc.cpp | 32 ++--- src/devices/bus/sunkbd/sunkbd.h | 2 +- src/devices/bus/svi3x8/expander/expander.h | 14 +- src/devices/bus/svi3x8/slot/slot.h | 6 +- src/devices/bus/ti8x/ti8x.h | 4 +- src/devices/bus/ti99/gromport/gromport.h | 4 +- src/devices/bus/ti99/internal/992board.h | 8 +- src/devices/bus/ti99/internal/998board.h | 8 +- src/devices/bus/ti99/internal/datamux.h | 2 +- src/devices/bus/ti99/internal/evpcconn.h | 2 +- src/devices/bus/ti99/internal/genboard.h | 4 +- src/devices/bus/ti99/internal/ioport.h | 4 +- src/devices/bus/ti99/joyport/joyport.h | 2 +- src/devices/bus/ti99/peb/peribox.h | 8 +- src/devices/bus/ti99x/990_dk.h | 2 +- src/devices/bus/ti99x/990_hd.h | 2 +- src/devices/bus/ti99x/990_tap.h | 2 +- src/devices/bus/tiki100/exp.h | 10 +- src/devices/bus/tiki100/hdc.cpp | 10 +- src/devices/bus/tvc/tvc.h | 4 +- src/devices/bus/vcs_ctrl/ctrl.h | 2 +- src/devices/bus/vic10/exp.h | 8 +- src/devices/bus/vic20/exp.h | 6 +- src/devices/bus/vic20/vic1011.cpp | 25 ++-- src/devices/bus/vidbrain/exp.h | 2 +- src/devices/bus/vip/exp.h | 6 +- src/devices/bus/vme/vme.h | 2 +- src/devices/bus/vme/vme_mzr8300.cpp | 18 +-- src/devices/bus/vtech/memexp/memexp.h | 6 +- src/devices/bus/wangpc/wangpc.h | 20 +-- src/devices/bus/x68k/x68kexp.h | 8 +- src/devices/bus/z88/z88.h | 2 +- src/devices/cpu/adsp2100/adsp2100.h | 8 +- src/devices/cpu/amis2000/amis2000.h | 12 +- src/devices/cpu/apexc/apexc.h | 4 +- src/devices/cpu/cop400/cop400.h | 22 +-- src/devices/cpu/cosmac/cosmac.h | 20 +-- src/devices/cpu/cp1610/cp1610.h | 2 +- src/devices/cpu/dsp32/dsp32.h | 2 +- src/devices/cpu/e0c6200/e0c6s46.h | 6 +- src/devices/cpu/esrip/esrip.h | 6 +- src/devices/cpu/h8/h83002.h | 4 +- src/devices/cpu/h8/h8_sci.h | 6 +- src/devices/cpu/hcd62121/hcd62121.h | 12 +- src/devices/cpu/hd61700/hd61700.h | 14 +- src/devices/cpu/hmcs40/hmcs40.h | 8 +- src/devices/cpu/hphybrid/hphybrid.h | 2 +- src/devices/cpu/i386/i386.h | 4 +- src/devices/cpu/i8085/i8085.h | 12 +- src/devices/cpu/i8089/i8089.h | 4 +- src/devices/cpu/i86/i186.h | 12 +- src/devices/cpu/i86/i286.h | 2 +- src/devices/cpu/i86/i86.h | 8 +- src/devices/cpu/jaguar/jaguar.h | 2 +- src/devices/cpu/lc8670/lc8670.h | 2 +- src/devices/cpu/lh5801/lh5801.h | 2 +- src/devices/cpu/lr35902/lr35902.h | 4 +- src/devices/cpu/m6502/m5074x.h | 16 +-- src/devices/cpu/m6502/m6502.h | 2 +- src/devices/cpu/m6800/m6801.h | 4 +- src/devices/cpu/m6805/m68705.h | 14 +- src/devices/cpu/m6805/m68hc05.h | 18 +-- src/devices/cpu/m6809/konami.h | 2 +- src/devices/cpu/m6809/m6809.h | 2 +- src/devices/cpu/mb88xx/mb88xx.h | 26 ++-- src/devices/cpu/mcs40/mcs40.h | 38 +++--- src/devices/cpu/mcs48/mcs48.h | 27 ++-- src/devices/cpu/mcs51/mcs51.h | 22 +-- src/devices/cpu/melps4/melps4.h | 20 +-- src/devices/cpu/mips/r3000.h | 8 +- src/devices/cpu/mn10200/mn10200.h | 4 +- src/devices/cpu/nanoprocessor/nanoprocessor.h | 4 +- src/devices/cpu/nec/v25.h | 21 ++- src/devices/cpu/nec/v53.cpp | 12 +- src/devices/cpu/nec/v53.h | 52 +++---- src/devices/cpu/patinhofeio/patinhofeio_cpu.h | 8 +- src/devices/cpu/pic16c5x/pic16c5x.h | 16 +-- src/devices/cpu/pps4/pps4.h | 6 +- src/devices/cpu/psx/dma.h | 2 +- src/devices/cpu/psx/irq.h | 2 +- src/devices/cpu/psx/psx.h | 12 +- src/devices/cpu/psx/rcnt.h | 6 +- src/devices/cpu/psx/sio.h | 10 +- src/devices/cpu/rsp/rsp.h | 10 +- src/devices/cpu/s2650/s2650.h | 9 +- src/devices/cpu/sc61860/sc61860.h | 16 +-- src/devices/cpu/scudsp/scudsp.h | 6 +- src/devices/cpu/sm510/sm500.h | 2 +- src/devices/cpu/sm510/sm510.h | 18 +-- src/devices/cpu/sm8500/sm8500.h | 4 +- src/devices/cpu/superfx/superfx.h | 2 +- src/devices/cpu/t11/t11.h | 2 +- src/devices/cpu/tlcs90/tlcs90.h | 36 ++--- src/devices/cpu/tlcs900/tlcs900.h | 108 +++++++-------- src/devices/cpu/tms1000/tms0270.h | 6 +- src/devices/cpu/tms1000/tms1k_base.h | 8 +- src/devices/cpu/tms32010/tms32010.h | 2 +- src/devices/cpu/tms32025/tms32025.h | 12 +- src/devices/cpu/tms32031/tms32031.h | 8 +- src/devices/cpu/tms34010/tms34010.h | 2 +- src/devices/cpu/tms7000/tms7000.h | 18 +-- src/devices/cpu/tms9900/tms9995.h | 10 +- src/devices/cpu/tms9900/tms99com.h | 14 +- src/devices/cpu/ucom4/ucom4.h | 22 +-- src/devices/cpu/upd7725/upd7725.h | 22 +-- src/devices/cpu/upd7810/upd7810.h | 48 +++---- src/devices/cpu/z8/z8.h | 16 +-- src/devices/cpu/z80/tmpz84c011.h | 26 ++-- src/devices/cpu/z80/tmpz84c015.h | 69 ++++++---- src/devices/cpu/z80/z80.h | 6 +- src/devices/cpu/z8000/z8000.h | 2 +- src/devices/imagedev/flopdrv.h | 2 +- src/devices/imagedev/midiin.h | 2 +- src/devices/imagedev/printer.h | 2 +- src/devices/machine/1mb5.h | 8 +- src/devices/machine/40105.h | 6 +- src/devices/machine/53c7xx.h | 6 +- src/devices/machine/64h156.h | 6 +- src/devices/machine/6522via.cpp | 4 +- src/devices/machine/6522via.h | 60 +++++---- src/devices/machine/6525tpi.h | 18 +-- src/devices/machine/6532riot.h | 10 +- src/devices/machine/68153bim.h | 14 +- src/devices/machine/6821pia.h | 33 +++-- src/devices/machine/68230pit.h | 24 ++-- src/devices/machine/68307.h | 8 +- src/devices/machine/68340.h | 20 +-- src/devices/machine/6840ptm.h | 12 +- src/devices/machine/6850acia.h | 9 +- src/devices/machine/68561mpcc.h | 12 +- src/devices/machine/7200fifo.h | 6 +- src/devices/machine/7400.h | 8 +- src/devices/machine/7404.h | 12 +- src/devices/machine/74123.h | 2 +- src/devices/machine/74145.h | 20 +-- src/devices/machine/74153.h | 4 +- src/devices/machine/74157.h | 11 +- src/devices/machine/74161.h | 12 +- src/devices/machine/74165.h | 4 +- src/devices/machine/74166.h | 4 +- src/devices/machine/74175.h | 28 ++-- src/devices/machine/74259.h | 20 +-- src/devices/machine/7474.h | 6 +- src/devices/machine/8042kbdc.h | 10 +- src/devices/machine/82s129.h | 20 +-- src/devices/machine/8364_paula.h | 4 +- src/devices/machine/8530scc.h | 2 +- src/devices/machine/aakart.h | 4 +- src/devices/machine/adc0808.h | 20 +-- src/devices/machine/adc0844.h | 18 +-- src/devices/machine/akiko.h | 12 +- src/devices/machine/am53cf96.h | 2 +- src/devices/machine/am9513.h | 18 ++- src/devices/machine/am9517a.h | 39 +++--- src/devices/machine/am9519.h | 2 +- src/devices/machine/amigafdc.h | 10 +- src/devices/machine/at45dbxx.h | 2 +- src/devices/machine/at_keybc.h | 12 +- src/devices/machine/ataintf.h | 6 +- src/devices/machine/atmel_arm_aic.h | 2 +- src/devices/machine/ay31015.h | 40 +++--- src/devices/machine/busmouse.h | 2 +- src/devices/machine/cdp1852.h | 8 +- src/devices/machine/cdp1871.h | 26 ++-- src/devices/machine/cdp1879.h | 2 +- src/devices/machine/clock.h | 7 +- src/devices/machine/com8116.h | 9 +- src/devices/machine/cr511b.h | 18 ++- src/devices/machine/cs4031.cpp | 4 +- src/devices/machine/cs4031.h | 18 +-- src/devices/machine/cxd1095.h | 20 +-- src/devices/machine/dmac.h | 14 +- src/devices/machine/dp8390.h | 16 +-- src/devices/machine/ds1315.h | 2 +- src/devices/machine/ds1386.h | 6 +- src/devices/machine/ds75161a.h | 32 ++--- src/devices/machine/e05a03.h | 10 +- src/devices/machine/e05a30.h | 18 +-- src/devices/machine/eepromser.h | 3 +- src/devices/machine/fdc37c93x.h | 10 +- src/devices/machine/fga002.h | 10 +- src/devices/machine/gayle.h | 10 +- src/devices/machine/gen_fifo.h | 4 +- src/devices/machine/gen_latch.h | 3 +- src/devices/machine/hd63450.h | 20 +-- src/devices/machine/hd64610.h | 4 +- src/devices/machine/hdc92x4.h | 12 +- src/devices/machine/hp_taco.h | 6 +- src/devices/machine/i7220.h | 4 +- src/devices/machine/i80130.h | 12 +- src/devices/machine/i8087.h | 4 +- src/devices/machine/i8155.h | 21 ++- src/devices/machine/i8212.h | 8 +- src/devices/machine/i8214.h | 6 +- src/devices/machine/i82371sb.cpp | 4 +- src/devices/machine/i82371sb.h | 8 +- src/devices/machine/i8243.h | 4 +- src/devices/machine/i8251.h | 21 ++- src/devices/machine/i8255.h | 24 ++-- src/devices/machine/i8257.h | 32 ++--- src/devices/machine/i82586.h | 2 +- src/devices/machine/i8271.h | 8 +- src/devices/machine/i8279.h | 14 +- src/devices/machine/i8355.h | 8 +- src/devices/machine/ie15_kbd.h | 2 +- src/devices/machine/im6402.h | 8 +- src/devices/machine/input_merger.h | 3 +- src/devices/machine/ins8154.h | 10 +- src/devices/machine/ins8250.h | 21 +-- src/devices/machine/k053252.h | 10 +- src/devices/machine/kb3600.h | 26 ++-- src/devices/machine/kr2376.h | 22 +-- src/devices/machine/latch8.h | 32 ++--- src/devices/machine/ldv1000.h | 2 +- src/devices/machine/lh5810.h | 12 +- src/devices/machine/mb8421.h | 4 +- src/devices/machine/mb87078.h | 2 +- src/devices/machine/mb8795.h | 8 +- src/devices/machine/mb89352.h | 4 +- src/devices/machine/mb89363b.h | 24 ++-- src/devices/machine/mb89374.h | 10 +- src/devices/machine/mc14411.h | 48 ++++--- src/devices/machine/mc146818.h | 4 +- src/devices/machine/mc2661.h | 16 +-- src/devices/machine/mc68328.h | 48 +++---- src/devices/machine/mc6843.h | 2 +- src/devices/machine/mc6846.h | 12 +- src/devices/machine/mc6852.h | 8 +- src/devices/machine/mc6854.h | 8 +- src/devices/machine/mc68681.h | 19 ++- src/devices/machine/mc68901.h | 18 +-- src/devices/machine/mccs1850.h | 6 +- src/devices/machine/microtch.h | 2 +- src/devices/machine/mm5740.h | 24 ++-- src/devices/machine/mm58167.h | 2 +- src/devices/machine/mm74c922.h | 12 +- src/devices/machine/mos6526.h | 24 ++-- src/devices/machine/mos6529.h | 16 +-- src/devices/machine/mos6530.h | 8 +- src/devices/machine/mos6530n.h | 83 +++++++----- src/devices/machine/mos6551.h | 15 ++- src/devices/machine/mos8722.h | 10 +- src/devices/machine/mpu401.h | 2 +- src/devices/machine/msm58321.h | 10 +- src/devices/machine/msm6242.h | 3 +- src/devices/machine/msm6253.h | 18 +-- src/devices/machine/ncr5380.h | 2 +- src/devices/machine/ncr5380n.h | 4 +- src/devices/machine/ncr5385.h | 2 +- src/devices/machine/ncr5390.h | 4 +- src/devices/machine/ncr539x.h | 4 +- src/devices/machine/nsc810.h | 16 +-- src/devices/machine/nscsi_cb.h | 12 +- src/devices/machine/output_latch.h | 17 +-- src/devices/machine/pc_fdc.h | 4 +- src/devices/machine/pc_lpt.h | 2 +- src/devices/machine/pci-ide.h | 3 +- src/devices/machine/pci9050.h | 4 +- src/devices/machine/pckeybrd.h | 6 +- src/devices/machine/pdc.h | 4 +- src/devices/machine/phi.h | 30 ++--- src/devices/machine/pic8259.h | 9 +- src/devices/machine/pit8253.h | 7 +- src/devices/machine/pxa255.h | 6 +- src/devices/machine/ripple_counter.h | 6 +- src/devices/machine/rp5c01.h | 2 +- src/devices/machine/rp5c15.h | 4 +- src/devices/machine/rstbuf.h | 2 +- src/devices/machine/rtc4543.h | 2 +- src/devices/machine/rtc65271.h | 2 +- src/devices/machine/s2636.h | 2 +- src/devices/machine/s3c2400.h | 18 +-- src/devices/machine/s3c2410.h | 26 ++-- src/devices/machine/s3c2440.h | 26 ++-- src/devices/machine/s3c44b0.h | 14 +- src/devices/machine/saa1043.h | 36 ++--- src/devices/machine/scnxx562.h | 26 ++-- src/devices/machine/sis85c496.cpp | 4 +- src/devices/machine/smartmed.h | 2 +- src/devices/machine/smc91c9x.h | 4 +- src/devices/machine/smpc.h | 24 ++-- src/devices/machine/steppers.h | 2 +- src/devices/machine/te7750.h | 57 +++++--- src/devices/machine/timekpr.h | 4 +- src/devices/machine/tmp68301.h | 4 +- src/devices/machine/tms1024.h | 19 ++- src/devices/machine/tms5501.h | 8 +- src/devices/machine/tms9901.h | 36 ++--- src/devices/machine/tms9902.h | 8 +- src/devices/machine/tube.h | 12 +- src/devices/machine/upd71071.h | 28 ++-- src/devices/machine/upd765.h | 15 ++- src/devices/machine/vrc4373.h | 2 +- src/devices/machine/wd11c00_17.h | 33 +++-- src/devices/machine/wd2010.h | 45 ++++--- src/devices/machine/wd33c93.h | 2 +- src/devices/machine/wd7600.cpp | 4 +- src/devices/machine/wd7600.h | 18 +-- src/devices/machine/wd_fdc.h | 15 ++- src/devices/machine/ym2148.h | 8 +- src/devices/machine/ym3802.h | 4 +- src/devices/machine/z80ctc.h | 12 +- src/devices/machine/z80daisy_generic.h | 2 +- src/devices/machine/z80dart.h | 45 ++++--- src/devices/machine/z80dma.h | 14 +- src/devices/machine/z80pio.h | 22 ++- src/devices/machine/z80scc.h | 30 ++--- src/devices/machine/z80sio.cpp | 27 ++-- src/devices/machine/z80sio.h | 51 ++++--- src/devices/machine/z80sti.h | 16 +-- src/devices/machine/z8536.h | 14 +- src/devices/sound/2203intf.h | 3 +- src/devices/sound/2608intf.h | 2 +- src/devices/sound/2610intf.h | 3 +- src/devices/sound/2612intf.h | 2 +- src/devices/sound/262intf.h | 2 +- src/devices/sound/3526intf.h | 2 +- src/devices/sound/3812intf.h | 3 +- src/devices/sound/8950intf.h | 10 +- src/devices/sound/ad1848.h | 4 +- src/devices/sound/aica.h | 4 +- src/devices/sound/asc.h | 2 +- src/devices/sound/astrocde.h | 18 +-- src/devices/sound/ay8910.h | 15 ++- src/devices/sound/cdp1869.h | 4 +- src/devices/sound/dave.h | 6 +- src/devices/sound/es1373.h | 3 +- src/devices/sound/es5503.h | 4 +- src/devices/sound/es5506.h | 8 +- src/devices/sound/es8712.h | 4 +- src/devices/sound/ics2115.h | 2 +- src/devices/sound/k007232.h | 2 +- src/devices/sound/k054539.h | 2 +- src/devices/sound/k056800.h | 2 +- src/devices/sound/lc7535.h | 2 +- src/devices/sound/mea8000.h | 2 +- src/devices/sound/mm5837.h | 2 +- src/devices/sound/mos6560.h | 4 +- src/devices/sound/mos6581.h | 4 +- src/devices/sound/msm5205.h | 25 ++-- src/devices/sound/msm5232.h | 2 +- src/devices/sound/nes_apu.h | 4 +- src/devices/sound/pokey.h | 22 +-- src/devices/sound/qs1000.h | 14 +- src/devices/sound/s14001a.h | 4 +- src/devices/sound/scsp.h | 6 +- src/devices/sound/sn76496.h | 2 +- src/devices/sound/sp0250.h | 2 +- src/devices/sound/sp0256.h | 4 +- src/devices/sound/spu.h | 2 +- src/devices/sound/st0016.h | 2 +- src/devices/sound/t6721a.h | 8 +- src/devices/sound/tms5110.h | 14 +- src/devices/sound/tms5220.h | 14 +- src/devices/sound/upd1771.h | 2 +- src/devices/sound/upd7759.h | 2 +- src/devices/sound/upd934g.h | 2 +- src/devices/sound/votrax.h | 2 +- src/devices/sound/ym2151.h | 6 +- src/devices/sound/ymf271.h | 2 +- src/devices/sound/ymf278b.h | 2 +- src/devices/sound/ymz280b.h | 3 +- src/devices/sound/zsg2.h | 2 +- src/devices/video/315_5124.h | 18 +-- src/devices/video/315_5313.h | 10 +- src/devices/video/cdp1861.h | 6 +- src/devices/video/cdp1862.h | 6 +- src/devices/video/cesblit.h | 2 +- src/devices/video/crt9007.h | 22 +-- src/devices/video/crt9212.h | 6 +- src/devices/video/crtc_ega.h | 8 +- src/devices/video/dl1416.h | 4 +- src/devices/video/dm9368.h | 4 +- src/devices/video/ef9364.h | 2 +- src/devices/video/ef9365.h | 2 +- src/devices/video/gba_lcd.h | 10 +- src/devices/video/hd44352.h | 2 +- src/devices/video/hd61830.h | 2 +- src/devices/video/hlcd0515.h | 4 +- src/devices/video/hlcd0538.h | 4 +- src/devices/video/huc6202.h | 24 ++-- src/devices/video/huc6260.h | 8 +- src/devices/video/huc6270.h | 2 +- src/devices/video/huc6272.h | 2 +- src/devices/video/i8244.h | 4 +- src/devices/video/i82730.h | 2 +- src/devices/video/i8275.h | 16 ++- src/devices/video/imagetek_i4100.h | 2 +- src/devices/video/mb88303.h | 6 +- src/devices/video/mc6845.h | 32 +++-- src/devices/video/mc6847.h | 9 +- src/devices/video/mos6566.h | 8 +- src/devices/video/ppu2c0x.h | 1 + src/devices/video/ppu2c0x_vt.h | 4 +- src/devices/video/psx.h | 2 +- src/devices/video/saa5050.h | 2 +- src/devices/video/scn2674.h | 4 +- src/devices/video/snes_ppu.h | 9 +- src/devices/video/tms34061.h | 2 +- src/devices/video/tms9927.h | 6 +- src/devices/video/tms9928a.h | 6 +- src/devices/video/upd3301.h | 16 ++- src/devices/video/upd7220.h | 8 +- src/devices/video/v9938.h | 2 +- src/devices/video/vic4567.h | 16 +-- src/devices/video/voodoo.h | 6 +- src/devices/video/zeus2.h | 4 +- 493 files changed, 2988 insertions(+), 2592 deletions(-) (limited to 'src/devices') 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(*device).set_cputag(_cputag); #define MCFG_A1BUS_OUT_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_A1BUS_OUT_NMI_CB(_devcb) \ - devcb = &downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); + downcast(*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(*device).set_cputag(_cputag); #define MCFG_A2BUS_OUT_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_A2BUS_OUT_NMI_CB(_devcb) \ - devcb = &downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); + downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_A2BUS_OUT_INH_CB(_devcb) \ - devcb = &downcast(*device).set_out_inh_callback(DEVCB_##_devcb); + downcast(*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(*device).set_cputag(_cputag); #define MCFG_A2EAUXSLOT_OUT_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_A2EAUXSLOT_OUT_NMI_CB(_devcb) \ - devcb = &downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_cb(DEVCB_##_cb); + downcast(*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(*device).set_a8sio_slot(_nbtag, _tag); #define MCFG_A8SIO_DATA_IN_CB(_devcb) \ - devcb = &downcast(*device).set_data_in_callback(DEVCB_##_devcb); + downcast(*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(device)->set_irq_callback(DEVCB_##_irq); + downcast(device)->set_irq_callback(DEVCB_##_irq); #define MCFG_ABCBUS_SLOT_NMI_CALLBACK(_nmi) \ - devcb = &downcast(device)->set_nmi_callback(DEVCB_##_nmi); + downcast(device)->set_nmi_callback(DEVCB_##_nmi); #define MCFG_ABCBUS_SLOT_RDY_CALLBACK(_rdy) \ - devcb = &downcast(device)->set_rdy_callback(DEVCB_##_rdy); + downcast(device)->set_rdy_callback(DEVCB_##_rdy); #define MCFG_ABCBUS_SLOT_RESIN_CALLBACK(_resin) \ - devcb = &downcast(device)->set_resin_callback(DEVCB_##_resin); + downcast(device)->set_resin_callback(DEVCB_##_resin); #define MCFG_ABCBUS_SLOT_PREN_CALLBACK(_pren) \ - devcb = &downcast(device)->set_pren_callback(DEVCB_##_pren); + downcast(device)->set_pren_callback(DEVCB_##_pren); #define MCFG_ABCBUS_SLOT_TRRQ_CALLBACK(_trrq) \ - devcb = &downcast(device)->set_trrq_callback(DEVCB_##_trrq); + downcast(device)->set_trrq_callback(DEVCB_##_trrq); #define MCFG_ABCBUS_SLOT_XINT2_CALLBACK(_xint2) \ - devcb = &downcast(device)->set_xint2_callback(DEVCB_##_xint2); + downcast(device)->set_xint2_callback(DEVCB_##_xint2); #define MCFG_ABCBUS_SLOT_XINT3_CALLBACK(_xint3) \ - devcb = &downcast(device)->set_xint3_callback(DEVCB_##_xint3); + downcast(device)->set_xint3_callback(DEVCB_##_xint3); #define MCFG_ABCBUS_SLOT_XINT4_CALLBACK(_xint4) \ - devcb = &downcast(device)->set_xint4_callback(DEVCB_##_xint4); + downcast(device)->set_xint4_callback(DEVCB_##_xint4); #define MCFG_ABCBUS_SLOT_XINT5_CALLBACK(_xint5) \ - devcb = &downcast(device)->set_xint5_callback(DEVCB_##_xint5); + downcast(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(*device).set_out_rx_handler(DEVCB_##_devcb); + downcast(*device).set_out_rx_handler(DEVCB_##_devcb); #define MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(_devcb) \ - devcb = &downcast(*device).set_out_trxc_handler(DEVCB_##_devcb); + downcast(*device).set_out_trxc_handler(DEVCB_##_devcb); #define MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(_devcb) \ - devcb = &downcast(*device).set_out_keydown_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_kclk_handler(DEVCB_##_devcb); + downcast(*device).set_kclk_handler(DEVCB_##_devcb); #define MCFG_AMIGA_KEYBOARD_KDAT_HANDLER(_devcb) \ - devcb = &downcast(*device).set_kdat_handler(DEVCB_##_devcb); + downcast(*device).set_kdat_handler(DEVCB_##_devcb); #define MCFG_AMIGA_KEYBOARD_KRST_HANDLER(_devcb) \ - devcb = &downcast(*device).set_krst_handler(DEVCB_##_devcb); + downcast(*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(*device).set_ovr_handler(DEVCB_##_devcb); + downcast(*device).set_ovr_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_SLOT_INT2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_int2_handler(DEVCB_##_devcb); + downcast(*device).set_int2_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_SLOT_INT6_HANDLER(_devcb) \ - devcb = &downcast(*device).set_int6_handler(DEVCB_##_devcb); + downcast(*device).set_int6_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_SLOT_IPL_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ipl_handler(DEVCB_##_devcb); + downcast(*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(*device).set_ovr_handler(DEVCB_##_devcb); + downcast(*device).set_ovr_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_INT2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_int2_handler(DEVCB_##_devcb); + downcast(*device).set_int2_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_INT6_HANDLER(_devcb) \ - devcb = &downcast(*device).set_int6_handler(DEVCB_##_devcb); + downcast(*device).set_int6_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_EINT1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_eint1_handler(DEVCB_##_devcb); + downcast(*device).set_eint1_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_EINT4_HANDLER(_devcb) \ - devcb = &downcast(*device).set_eint4_handler(DEVCB_##_devcb); + downcast(*device).set_eint4_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_EINT5_HANDLER(_devcb) \ - devcb = &downcast(*device).set_eint5_handler(DEVCB_##_devcb); + downcast(*device).set_eint5_handler(DEVCB_##_devcb); #define MCFG_ZORRO2_EINT7_HANDLER(_devcb) \ - devcb = &downcast(*device).set_eint7_handler(DEVCB_##_devcb); + downcast(*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(*device).set_dma1_handler(DEVCB_##_devcb); + downcast(*device).set_dma1_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_DMA2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_dma2_handler(DEVCB_##_devcb); + downcast(*device).set_dma2_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_EXT1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ext1_handler(DEVCB_##_devcb); + downcast(*device).set_ext1_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_EXT2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ext2_handler(DEVCB_##_devcb); + downcast(*device).set_ext2_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_INT2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_int2_handler(DEVCB_##_devcb); + downcast(*device).set_int2_handler(DEVCB_##_devcb); #define MCFG_EXPANSION_INT3_HANDLER(_devcb) \ - devcb = &downcast(*device).set_int3_handler(DEVCB_##_devcb); + downcast(*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(*device).set_in_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_BBC_1MHZBUS_SLOT_NMI_HANDLER(_devcb) \ - devcb = &downcast(*device).set_nmi_handler(DEVCB_##_devcb); + downcast(*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(*device).set_intrq_handler(DEVCB_##_devcb); + downcast(*device).set_intrq_handler(DEVCB_##_devcb); #define MCFG_BBC_FDC_SLOT_DRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_drq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_cb1_handler(DEVCB_##_devcb); + downcast(*device).set_cb1_handler(DEVCB_##_devcb); #define MCFG_BBC_JOYPORT_CB2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cb2_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_cb1_handler(DEVCB_##_devcb); + downcast(*device).set_cb1_handler(DEVCB_##_devcb); #define MCFG_BBC_USERPORT_CB2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cb2_handler(DEVCB_##_devcb); + downcast(*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(*device).set_cputag(_cputag); #define MCFG_BML3BUS_OUT_NMI_CB(_devcb) \ - devcb = &downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); + downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_BML3BUS_OUT_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_BML3BUS_OUT_FIRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_firq_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_C64_EXPANSION_SLOT_NMI_CALLBACK(_write) \ - devcb = &downcast(*device).set_nmi_wr_callback(DEVCB_##_write); + downcast(*device).set_nmi_wr_callback(DEVCB_##_write); #define MCFG_C64_EXPANSION_SLOT_RESET_CALLBACK(_write) \ - devcb = &downcast(*device).set_reset_wr_callback(DEVCB_##_write); + downcast(*device).set_reset_wr_callback(DEVCB_##_write); #define MCFG_C64_EXPANSION_SLOT_CD_INPUT_CALLBACK(_read) \ - devcb = &downcast(*device).set_cd_rd_callback(DEVCB_##_read); + downcast(*device).set_cd_rd_callback(DEVCB_##_read); #define MCFG_C64_EXPANSION_SLOT_CD_OUTPUT_CALLBACK(_write) \ - devcb = &downcast(*device).set_cd_wr_callback(DEVCB_##_write); + downcast(*device).set_cd_wr_callback(DEVCB_##_write); #define MCFG_C64_EXPANSION_SLOT_DMA_CALLBACK(_write) \ - devcb = &downcast(*device).set_dma_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_CBM2_USER_PORT_SP_CALLBACK(_write) \ - devcb = &downcast(*device).set_sp_wr_callback(DEVCB_##_write); + downcast(*device).set_sp_wr_callback(DEVCB_##_write); #define MCFG_CBM2_USER_PORT_CNT_CALLBACK(_write) \ - devcb = &downcast(*device).set_cnt_wr_callback(DEVCB_##_write); + downcast(*device).set_cnt_wr_callback(DEVCB_##_write); #define MCFG_CBM2_USER_PORT_FLAG_CALLBACK(_write) \ - devcb = &downcast(*device).set_flag_wr_callback(DEVCB_##_write); + downcast(*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(device)->set_srq_callback(DEVCB_##_write); + downcast(device)->set_srq_callback(DEVCB_##_write); #define MCFG_CBM_IEC_BUS_ATN_CALLBACK(_write) \ - devcb = &downcast(device)->set_atn_callback(DEVCB_##_write); + downcast(device)->set_atn_callback(DEVCB_##_write); #define MCFG_CBM_IEC_BUS_CLK_CALLBACK(_write) \ - devcb = &downcast(device)->set_clk_callback(DEVCB_##_write); + downcast(device)->set_clk_callback(DEVCB_##_write); #define MCFG_CBM_IEC_BUS_DATA_CALLBACK(_write) \ - devcb = &downcast(device)->set_data_callback(DEVCB_##_write); + downcast(device)->set_data_callback(DEVCB_##_write); #define MCFG_CBM_IEC_BUS_RESET_CALLBACK(_write) \ - devcb = &downcast(device)->set_reset_callback(DEVCB_##_write); + downcast(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(*device).set_cpu_tag(_cputag); #define MCFG_PC9801CBUS_INT0_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_int_callback<0>(DEVCB_##_devcb); + downcast(*device).set_int_callback<0>(DEVCB_##_devcb); #define MCFG_PC9801CBUS_INT1_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_int_callback<1>(DEVCB_##_devcb); + downcast(*device).set_int_callback<1>(DEVCB_##_devcb); #define MCFG_PC9801CBUS_INT2_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_int_callback<2>(DEVCB_##_devcb); + downcast(*device).set_int_callback<2>(DEVCB_##_devcb); #define MCFG_PC9801CBUS_INT3_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_int_callback<3>(DEVCB_##_devcb); + downcast(*device).set_int_callback<3>(DEVCB_##_devcb); #define MCFG_PC9801CBUS_INT4_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_int_callback<4>(DEVCB_##_devcb); + downcast(*device).set_int_callback<4>(DEVCB_##_devcb); #define MCFG_PC9801CBUS_INT5_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_int_callback<5>(DEVCB_##_devcb); + downcast(*device).set_int_callback<5>(DEVCB_##_devcb); #define MCFG_PC9801CBUS_INT6_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_int_callback<6>(DEVCB_##_devcb); + downcast(*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(*device).set_strobe_handler(DEVCB_##_devcb); + downcast(*device).set_strobe_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA0_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data0_handler(DEVCB_##_devcb); + downcast(*device).set_data0_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data1_handler(DEVCB_##_devcb); + downcast(*device).set_data1_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data2_handler(DEVCB_##_devcb); + downcast(*device).set_data2_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA3_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data3_handler(DEVCB_##_devcb); + downcast(*device).set_data3_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA4_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data4_handler(DEVCB_##_devcb); + downcast(*device).set_data4_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA5_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data5_handler(DEVCB_##_devcb); + downcast(*device).set_data5_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA6_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data6_handler(DEVCB_##_devcb); + downcast(*device).set_data6_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_DATA7_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data7_handler(DEVCB_##_devcb); + downcast(*device).set_data7_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_ACK_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ack_handler(DEVCB_##_devcb); + downcast(*device).set_ack_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_BUSY_HANDLER(_devcb) \ - devcb = &downcast(*device).set_busy_handler(DEVCB_##_devcb); + downcast(*device).set_busy_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_PERROR_HANDLER(_devcb) \ - devcb = &downcast(*device).set_perror_handler(DEVCB_##_devcb); + downcast(*device).set_perror_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_SELECT_HANDLER(_devcb) \ - devcb = &downcast(*device).set_select_handler(DEVCB_##_devcb); + downcast(*device).set_select_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_AUTOFD_HANDLER(_devcb) \ - devcb = &downcast(*device).set_autofd_handler(DEVCB_##_devcb); + downcast(*device).set_autofd_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_FAULT_HANDLER(_devcb) \ - devcb = &downcast(*device).set_fault_handler(DEVCB_##_devcb); + downcast(*device).set_fault_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_INIT_HANDLER(_devcb) \ - devcb = &downcast(*device).set_init_handler(DEVCB_##_devcb); + downcast(*device).set_init_handler(DEVCB_##_devcb); #define MCFG_CENTRONICS_SELECT_IN_HANDLER(_devcb) \ - devcb = &downcast(*device).set_select_in_handler(DEVCB_##_devcb); + downcast(*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 devcb_base &set_init_handler(Object &&cb) { return m_init_handler.set_callback(std::forward(cb)); } template devcb_base &set_select_in_handler(Object &&cb) { return m_select_in_handler.set_callback(std::forward(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(*device).set_int_handler(DEVCB_##_devcb); + downcast(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_CG_EXP_SLOT_NMI_HANDLER(_devcb) \ - devcb = &downcast(*device).set_nmi_handler(DEVCB_##_devcb); + downcast(*device).set_nmi_handler(DEVCB_##_devcb); #define MCFG_CG_EXP_SLOT_RESET_HANDLER(_devcb) \ - devcb = &downcast(*device).set_reset_handler(DEVCB_##_devcb); + downcast(*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 cococart_base_update_delegate; #define MCFG_COCO_CARTRIDGE_CART_CB(_devcb) \ - devcb = &downcast(*device).set_cart_callback(DEVCB_##_devcb); + downcast(*device).set_cart_callback(DEVCB_##_devcb); #define MCFG_COCO_CARTRIDGE_NMI_CB(_devcb) \ - devcb = &downcast(*device).set_nmi_callback(DEVCB_##_devcb); + downcast(*device).set_nmi_callback(DEVCB_##_devcb); #define MCFG_COCO_CARTRIDGE_HALT_CB(_devcb) \ - devcb = &downcast(*device).set_halt_callback(DEVCB_##_devcb); + downcast(*device).set_halt_callback(DEVCB_##_devcb); // ======================> cococart_slot_device @@ -61,11 +61,23 @@ public: }; // construction/destruction + template + 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 devcb_base &set_cart_callback(Object &&cb) { return m_cart_callback.set_callback(std::forward(cb)); } template devcb_base &set_nmi_callback(Object &&cb) { return m_nmi_callback.set_callback(std::forward(cb)); } template devcb_base &set_halt_callback(Object &&cb) { return m_halt_callback.set_callback(std::forward(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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_CPC_EXPANSION_SLOT_OUT_NMI_CB(_devcb) \ - devcb = &downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); + downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_CPC_EXPANSION_SLOT_OUT_RESET_CB(_devcb) \ - devcb = &downcast(*device).set_out_reset_callback(DEVCB_##_devcb); + downcast(*device).set_out_reset_callback(DEVCB_##_devcb); #define MCFG_CPC_EXPANSION_SLOT_OUT_ROMDIS_CB(_devcb) \ - devcb = &downcast(*device).set_out_romdis_callback(DEVCB_##_devcb); + downcast(*device).set_out_romdis_callback(DEVCB_##_devcb); #define MCFG_CPC_EXPANSION_SLOT_ROM_SELECT(_devcb) \ - devcb = &downcast(*device).set_out_rom_select_callback(DEVCB_##_devcb); + downcast(*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(*device).set_prog_read_callback(DEVCB_##_read_devcb); \ - devcb = &downcast(*device).set_prog_write_callback(DEVCB_##_write_devcb); + downcast(*device).set_prog_read_callback(DEVCB_##_read_devcb); \ + downcast(*device).set_prog_write_callback(DEVCB_##_write_devcb); #define MCFG_DMVCART_SLOT_OUT_INT_CB(_devcb) \ - devcb = &downcast(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_DMVCART_SLOT_OUT_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_DMVCART_SLOT_OUT_THOLD_CB(_devcb) \ - devcb = &downcast(*device).set_out_thold_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_ECBBUS_NMI_CALLBACK(_write) \ - devcb = &downcast(*device).set_nmi_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_clk_wr_callback(DEVCB_##_write); + downcast(*device).set_clk_wr_callback(DEVCB_##_write); #define MCFG_ECONET_DATA_CALLBACK(_write) \ - devcb = &downcast(*device).set_data_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_int_handler(DEVCB_##_devcb); + downcast(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_TATUNG_PIPE_NMI_HANDLER(_devcb) \ - devcb = &downcast(*device).set_nmi_handler(DEVCB_##_devcb); + downcast(*device).set_nmi_handler(DEVCB_##_devcb); #define MCFG_TATUNG_PIPE_RESET_HANDLER(_devcb) \ - devcb = &downcast(*device).set_reset_handler(DEVCB_##_devcb); + downcast(*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(*device).set_bstb_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_ELECTRON_CARTSLOT_NMI_HANDLER(_devcb) \ - devcb = &downcast(*device).set_nmi_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_ELECTRON_EXPANSION_SLOT_NMI_HANDLER(_devcb) \ - devcb = &downcast(*device).set_nmi_handler(DEVCB_##_devcb); + downcast(*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(*device).set_dave_tag(_tag); #define MCFG_EP64_EXPANSION_BUS_SLOT_IRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(_write) \ - devcb = &downcast(*device).set_nmi_wr_callback(DEVCB_##_write); + downcast(*device).set_nmi_wr_callback(DEVCB_##_write); #define MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(_write) \ - devcb = &downcast(*device).set_wait_wr_callback(DEVCB_##_write); + downcast(*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(device)->set_rx_callback(DEVCB_##_rx); + downcast(device)->set_rx_callback(DEVCB_##_rx); #define MCFG_EPSON_SIO_PIN(_pin) \ - devcb = &downcast(device)->set_pin_callback(DEVCB_##_pin); + downcast(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(*device).set_th_input_handler(DEVCB_##_devcb); + downcast(*device).set_th_input_handler(DEVCB_##_devcb); #define MCFG_GG_EXT_PORT_PIXEL_HANDLER(_devcb) \ - devcb = &downcast(*device).set_pixel_handler(DEVCB_##_devcb); + downcast(*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(*device).set_slot_no(_idx); #define MCFG_HP80_IO_IRL_CB(_devcb) \ - devcb = &downcast(*device).set_irl_cb_func(DEVCB_##_devcb); + downcast(*device).set_irl_cb_func(DEVCB_##_devcb); #define MCFG_HP80_IO_HALT_CB(_devcb) \ - devcb = &downcast(*device).set_halt_cb_func(DEVCB_##_devcb); + downcast(*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(*device).set_irq_cb_func(DEVCB_##_devcb); + downcast(*device).set_irq_cb_func(DEVCB_##_devcb); #define MCFG_HP9845_IO_STS_CB(_devcb) \ - devcb = &downcast(*device).set_sts_cb_func(DEVCB_##_devcb); + downcast(*device).set_sts_cb_func(DEVCB_##_devcb); #define MCFG_HP9845_IO_FLG_CB(_devcb) \ - devcb = &downcast(*device).set_flg_cb_func(DEVCB_##_devcb); + downcast(*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(*device).set_cputag(_cputag); #define MCFG_ISA_OUT_IRQ3_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq3_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq3_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ4_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq4_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq4_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ5_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq5_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq5_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ6_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq6_callback(DEVCB_##_devcb); + downcast(*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(*device).set_int_callback(DEVCB_##_devcb); + downcast(*device).set_int_callback(DEVCB_##_devcb); #define MCFG_HP_HIL_NMI_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_nmi_callback(DEVCB_##_devcb); + downcast(*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 devcb_base &set_int_callback(Object &&cb) { return int_cb.set_callback(std::forward(cb)); } template devcb_base &set_nmi_callback(Object &&cb) { return nmi_cb.set_callback(std::forward(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(*device).set_sync_wr_callback(DEVCB_##_write); + downcast(*device).set_sync_wr_callback(DEVCB_##_write); #define MCFG_C2040_READY_CALLBACK(_write) \ - devcb = &downcast(*device).set_ready_wr_callback(DEVCB_##_write); + downcast(*device).set_ready_wr_callback(DEVCB_##_write); #define MCFG_C2040_ERROR_CALLBACK(_write) \ - devcb = &downcast(*device).set_error_wr_callback(DEVCB_##_write); + downcast(*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 @@ -18,24 +18,6 @@ -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_C8050_SYNC_CALLBACK(_write) \ - devcb = &downcast(*device).set_sync_wr_callback(DEVCB_##_write); - -#define MCFG_C8050_READY_CALLBACK(_write) \ - devcb = &downcast(*device).set_ready_wr_callback(DEVCB_##_write); - -#define MCFG_C8050_BRDY_CALLBACK(_write) \ - devcb = &downcast(*device).set_brdy_wr_callback(DEVCB_##_write); - -#define MCFG_C8050_ERROR_CALLBACK(_write) \ - devcb = &downcast(*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 devcb_base &set_sync_wr_callback(Object &&cb) { return m_write_sync.set_callback(std::forward(cb)); } - template devcb_base &set_ready_wr_callback(Object &&cb) { return m_write_ready.set_callback(std::forward(cb)); } - template devcb_base &set_brdy_wr_callback(Object &&cb) { return m_write_brdy.set_callback(std::forward(cb)); } - template devcb_base &set_error_wr_callback(Object &&cb) { return m_write_error.set_callback(std::forward(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().set(FUNC(hp9895_device::phi_eoi_w)); + m_phi->signal_write_cb().set(FUNC(hp9895_device::phi_dav_w)); + m_phi->signal_write_cb().set(FUNC(hp9895_device::phi_nrfd_w)); + m_phi->signal_write_cb().set(FUNC(hp9895_device::phi_ndac_w)); + m_phi->signal_write_cb().set(FUNC(hp9895_device::phi_ifc_w)); + m_phi->signal_write_cb().set(FUNC(hp9895_device::phi_srq_w)); + m_phi->signal_write_cb().set(FUNC(hp9895_device::phi_atn_w)); + m_phi->signal_write_cb().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(device)->set_eoi_callback(DEVCB_##_write); + downcast(device)->set_eoi_callback(DEVCB_##_write); #define MCFG_IEEE488_DAV_CALLBACK(_write) \ - devcb = &downcast(device)->set_dav_callback(DEVCB_##_write); + downcast(device)->set_dav_callback(DEVCB_##_write); #define MCFG_IEEE488_NRFD_CALLBACK(_write) \ - devcb = &downcast(device)->set_nrfd_callback(DEVCB_##_write); + downcast(device)->set_nrfd_callback(DEVCB_##_write); #define MCFG_IEEE488_NDAC_CALLBACK(_write) \ - devcb = &downcast(device)->set_ndac_callback(DEVCB_##_write); + downcast(device)->set_ndac_callback(DEVCB_##_write); #define MCFG_IEEE488_IFC_CALLBACK(_write) \ - devcb = &downcast(device)->set_ifc_callback(DEVCB_##_write); + downcast(device)->set_ifc_callback(DEVCB_##_write); #define MCFG_IEEE488_SRQ_CALLBACK(_write) \ - devcb = &downcast(device)->set_srq_callback(DEVCB_##_write); + downcast(device)->set_srq_callback(DEVCB_##_write); #define MCFG_IEEE488_ATN_CALLBACK(_write) \ - devcb = &downcast(device)->set_atn_callback(DEVCB_##_write); + downcast(device)->set_atn_callback(DEVCB_##_write); #define MCFG_IEEE488_REN_CALLBACK(_write) \ - devcb = &downcast(device)->set_ren_callback(DEVCB_##_write); + downcast(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(device)->set_dio_callback(DEVCB_##_write); + downcast(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(*device).set_rxd_handler(DEVCB_##cb); + downcast(*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(*device).set_state_callback(DEVCB_##_state_cb); + downcast(*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(*device).set_out_irq0_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq0_callback(DEVCB_##_devcb); #define MCFG_CBUS_OUT_IRQ1_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq1_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq1_callback(DEVCB_##_devcb); #define MCFG_CBUS_OUT_IRQ2_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq2_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq2_callback(DEVCB_##_devcb); #define MCFG_CBUS_OUT_VBLANK_CB(_devcb) \ - devcb = &downcast(*device).set_out_vblank_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_irq0_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq0_callback(DEVCB_##_devcb); #define MCFG_SRX_OUT_IRQ1_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq1_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq1_callback(DEVCB_##_devcb); #define MCFG_SRX_OUT_IRQ2_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq2_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq2_callback(DEVCB_##_devcb); #define MCFG_SRX_OUT_VBLANK_CB(_devcb) \ - devcb = &downcast(*device).set_out_vblank_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_irq0_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq0_callback(DEVCB_##_devcb); #define MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq1_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq1_callback(DEVCB_##_devcb); #define MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq2_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq2_callback(DEVCB_##_devcb); #define MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq3_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq3_callback(DEVCB_##_devcb); #define MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq4_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq4_callback(DEVCB_##_devcb); #define MCFG_IQ151CART_SLOT_OUT_DRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_drq_callback(DEVCB_##_devcb); + downcast(*device).set_out_drq_callback(DEVCB_##_devcb); #define MCFG_IQ151CART_SLOT_SCREEN_TAG(screen_tag) \ downcast(*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(*device).set_txirq_handler(DEVCB_##_devcb); + downcast(*device).set_txirq_handler(DEVCB_##_devcb); #define MCFG_GF1_RXIRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rxirq_handler(DEVCB_##_devcb); + downcast(*device).set_rxirq_handler(DEVCB_##_devcb); #define MCFG_GF1_WAVE_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_wave_irq_handler(DEVCB_##_devcb); + downcast(*device).set_wave_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_RAMP_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ramp_irq_handler(DEVCB_##_devcb); + downcast(*device).set_ramp_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_TIMER1_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_timer1_irq_handler(DEVCB_##_devcb); + downcast(*device).set_timer1_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_TIMER2_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_timer2_irq_handler(DEVCB_##_devcb); + downcast(*device).set_timer2_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_SB_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_sb_irq_handler(DEVCB_##_devcb); + downcast(*device).set_sb_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_DMA_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_dma_irq_handler(DEVCB_##_devcb); + downcast(*device).set_dma_irq_handler(DEVCB_##_devcb); #define MCFG_GF1_DRQ1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_drq1_handler(DEVCB_##_devcb); + downcast(*device).set_drq1_handler(DEVCB_##_devcb); #define MCFG_GF1_DRQ2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_drq2_handler(DEVCB_##_devcb); + downcast(*device).set_drq2_handler(DEVCB_##_devcb); #define MCFG_GF1_NMI_HANDLER(_devcb) \ - devcb = &downcast(*device).set_nmi_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_XTHDC_DRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_drq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_custom_spaces(); #define MCFG_ISA_BUS_IOCHCK(_iochck) \ - devcb = &downcast(device)->set_iochck_callback(DEVCB_##_iochck); + downcast(device)->set_iochck_callback(DEVCB_##_iochck); #define MCFG_ISA_OUT_IRQ2_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq2_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq2_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ3_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq3_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq3_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ4_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq4_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq4_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ5_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq5_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq5_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ6_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq6_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq6_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ7_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq7_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq7_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ1_CB(_devcb) \ - devcb = &downcast(*device).set_out_drq1_callback(DEVCB_##_devcb); + downcast(*device).set_out_drq1_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ2_CB(_devcb) \ - devcb = &downcast(*device).set_out_drq2_callback(DEVCB_##_devcb); + downcast(*device).set_out_drq2_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ3_CB(_devcb) \ - devcb = &downcast(*device).set_out_drq3_callback(DEVCB_##_devcb); + downcast(*device).set_out_drq3_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ10_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq10_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq10_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ11_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq11_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq11_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ12_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq12_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq12_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ14_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq14_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq14_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_IRQ15_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq15_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq15_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ0_CB(_devcb) \ - devcb = &downcast(*device).set_out_drq0_callback(DEVCB_##_devcb); + downcast(*device).set_out_drq0_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ5_CB(_devcb) \ - devcb = &downcast(*device).set_out_drq5_callback(DEVCB_##_devcb); + downcast(*device).set_out_drq5_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ6_CB(_devcb) \ - devcb = &downcast(*device).set_out_drq6_callback(DEVCB_##_devcb); + downcast(*device).set_out_drq6_callback(DEVCB_##_devcb); #define MCFG_ISA_OUT_DRQ7_CB(_devcb) \ - devcb = &downcast(*device).set_out_drq7_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_KCEXP_SLOT_OUT_NMI_CB(_devcb) \ - devcb = &downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); + downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_KCEXP_SLOT_OUT_HALT_CB(_devcb) \ - devcb = &downcast(*device).set_out_halt_callback(DEVCB_##_devcb); + downcast(*device).set_out_halt_callback(DEVCB_##_devcb); #define MCFG_KCEXP_SLOT_NEXT_SLOT(_next_slot_tag) \ downcast(*device).set_next_slot(_next_slot_tag); #define MCFG_KCCART_SLOT_OUT_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_KCCART_SLOT_OUT_NMI_CB(_devcb) \ - devcb = &downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); + downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_KCCART_SLOT_OUT_HALT_CB(_devcb) \ - devcb = &downcast(*device).set_out_halt_callback(DEVCB_##_devcb); + downcast(*device).set_out_halt_callback(DEVCB_##_devcb); #define MCFG_KCCART_SLOT_NEXT_SLOT(_next_slot_tag) \ downcast(*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(*device).set_smi_callback(DEVCB_##_devcb); + downcast(*device).set_smi_callback(DEVCB_##_devcb); #define MCFG_I82371SB_BOOT_STATE_HOOK(_devcb) \ - devcb = &downcast(*device).set_boot_state_hook(DEVCB_##_devcb); + downcast(*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(*device).set_rx_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_nasbus_slot(this, NASBUS_TAG); #define MCFG_NASBUS_RAM_DISABLE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ram_disable_handler(DEVCB_##_devcb); + downcast(*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(*device).set_cputag(_cputag); #define MCFG_NUBUS_OUT_IRQ9_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq9_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq9_callback(DEVCB_##_devcb); #define MCFG_NUBUS_OUT_IRQA_CB(_devcb) \ - devcb = &downcast(*device).set_out_irqa_callback(DEVCB_##_devcb); + downcast(*device).set_out_irqa_callback(DEVCB_##_devcb); #define MCFG_NUBUS_OUT_IRQB_CB(_devcb) \ - devcb = &downcast(*device).set_out_irqb_callback(DEVCB_##_devcb); + downcast(*device).set_out_irqb_callback(DEVCB_##_devcb); #define MCFG_NUBUS_OUT_IRQC_CB(_devcb) \ - devcb = &downcast(*device).set_out_irqc_callback(DEVCB_##_devcb); + downcast(*device).set_out_irqc_callback(DEVCB_##_devcb); #define MCFG_NUBUS_OUT_IRQD_CB(_devcb) \ - devcb = &downcast(*device).set_out_irqd_callback(DEVCB_##_devcb); + downcast(*device).set_out_irqd_callback(DEVCB_##_devcb); #define MCFG_NUBUS_OUT_IRQE_CB(_devcb) \ - devcb = &downcast(*device).set_out_irqe_callback(DEVCB_##_devcb); + downcast(*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(device)->set_cputag(_cputag); \ - devcb = &downcast(*device).set_irq_handler(DEVCB_##_irq); + downcast(*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(*device).set_x_wr_callback(DEVCB_##_write); + downcast(*device).set_x_wr_callback(DEVCB_##_write); #define MCFG_PC1512_MOUSE_PORT_Y_CB(_write) \ - devcb = &downcast(*device).set_y_wr_callback(DEVCB_##_write); + downcast(*device).set_y_wr_callback(DEVCB_##_write); #define MCFG_PC1512_MOUSE_PORT_M1_CB(_write) \ - devcb = &downcast(*device).set_m1_wr_callback(DEVCB_##_write); + downcast(*device).set_m1_wr_callback(DEVCB_##_write); #define MCFG_PC1512_MOUSE_PORT_M2_CB(_write) \ - devcb = &downcast(*device).set_m2_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_out_clock_callback(DEVCB_##_devcb); + downcast(*device).set_out_clock_callback(DEVCB_##_devcb); #define MCFG_PC_KBDC_OUT_DATA_CB(_devcb) \ - devcb = &downcast(*device).set_out_data_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_handler(DEVCB_##_devcb); + downcast(*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(*device).set_2_handler(DEVCB_##_devcb); + downcast(*device).set_2_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_3_HANDLER(_devcb) \ - devcb = &downcast(*device).set_3_handler(DEVCB_##_devcb); + downcast(*device).set_3_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_4_HANDLER(_devcb) \ - devcb = &downcast(*device).set_4_handler(DEVCB_##_devcb); + downcast(*device).set_4_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_5_HANDLER(_devcb) \ - devcb = &downcast(*device).set_5_handler(DEVCB_##_devcb); + downcast(*device).set_5_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_6_HANDLER(_devcb) \ - devcb = &downcast(*device).set_6_handler(DEVCB_##_devcb); + downcast(*device).set_6_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_7_HANDLER(_devcb) \ - devcb = &downcast(*device).set_7_handler(DEVCB_##_devcb); + downcast(*device).set_7_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_8_HANDLER(_devcb) \ - devcb = &downcast(*device).set_8_handler(DEVCB_##_devcb); + downcast(*device).set_8_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_9_HANDLER(_devcb) \ - devcb = &downcast(*device).set_9_handler(DEVCB_##_devcb); + downcast(*device).set_9_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_10_HANDLER(_devcb) \ - devcb = &downcast(*device).set_10_handler(DEVCB_##_devcb); + downcast(*device).set_10_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_B_HANDLER(_devcb) \ - devcb = &downcast(*device).set_b_handler(DEVCB_##_devcb); + downcast(*device).set_b_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_C_HANDLER(_devcb) \ - devcb = &downcast(*device).set_c_handler(DEVCB_##_devcb); + downcast(*device).set_c_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_D_HANDLER(_devcb) \ - devcb = &downcast(*device).set_d_handler(DEVCB_##_devcb); + downcast(*device).set_d_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_E_HANDLER(_devcb) \ - devcb = &downcast(*device).set_e_handler(DEVCB_##_devcb); + downcast(*device).set_e_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_F_HANDLER(_devcb) \ - devcb = &downcast(*device).set_f_handler(DEVCB_##_devcb); + downcast(*device).set_f_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_H_HANDLER(_devcb) \ - devcb = &downcast(*device).set_h_handler(DEVCB_##_devcb); + downcast(*device).set_h_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_J_HANDLER(_devcb) \ - devcb = &downcast(*device).set_j_handler(DEVCB_##_devcb); + downcast(*device).set_j_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_K_HANDLER(_devcb) \ - devcb = &downcast(*device).set_k_handler(DEVCB_##_devcb); + downcast(*device).set_k_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_L_HANDLER(_devcb) \ - devcb = &downcast(*device).set_l_handler(DEVCB_##_devcb); + downcast(*device).set_l_handler(DEVCB_##_devcb); #define MCFG_PET_USER_PORT_M_HANDLER(_devcb) \ - devcb = &downcast(*device).set_m_handler(DEVCB_##_devcb); + downcast(*device).set_m_handler(DEVCB_##_devcb); DECLARE_DEVICE_TYPE(PET_USER_PORT, pet_user_port_device) @@ -125,6 +125,25 @@ public: template devcb_base &set_k_handler(Object &&cb) { return m_k_handler.set_callback(std::forward(cb)); } template devcb_base &set_l_handler(Object &&cb) { return m_l_handler.set_callback(std::forward(cb)); } template devcb_base &set_m_handler(Object &&cb) { return m_m_handler.set_callback(std::forward(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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_PLUS4_EXPANSION_SLOT_CD_INPUT_CALLBACK(_read) \ - devcb = &downcast(*device).set_cd_rd_callback(DEVCB_##_read); + downcast(*device).set_cd_rd_callback(DEVCB_##_read); #define MCFG_PLUS4_EXPANSION_SLOT_CD_OUTPUT_CALLBACK(_write) \ - devcb = &downcast(*device).set_cd_wr_callback(DEVCB_##_write); + downcast(*device).set_cd_wr_callback(DEVCB_##_write); #define MCFG_PLUS4_EXPANSION_SLOT_AEC_CALLBACK(_write) \ - devcb = &downcast(*device).set_aec_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_eint_wr_callback(DEVCB_##_write); + downcast(*device).set_eint_wr_callback(DEVCB_##_write); #define MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(_write) \ - devcb = &downcast(*device).set_nmio_wr_callback(DEVCB_##_write); + downcast(*device).set_nmio_wr_callback(DEVCB_##_write); #define MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(_write) \ - devcb = &downcast(*device).set_wake_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_rx_handler(DEVCB_##_devcb); + downcast(*device).set_rx_handler(DEVCB_##_devcb); #define MCFG_PSI_KEYBOARD_KEY_STROBE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_key_strobe_handler(DEVCB_##_devcb); + downcast(*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(*device).set_dsr_handler(DEVCB_##_devcb); + downcast(*device).set_dsr_handler(DEVCB_##_devcb); #define MCFG_PSX_CONTROLLER_PORTS_RXD_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rxd_handler(DEVCB_##_devcb); + downcast(*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(*device).set_ipl0l_wr_callback(DEVCB_##_write); + downcast(*device).set_ipl0l_wr_callback(DEVCB_##_write); #define MCFG_QL_EXPANSION_SLOT_IPL1L_CALLBACK(_write) \ - devcb = &downcast(*device).set_ipl1l_wr_callback(DEVCB_##_write); + downcast(*device).set_ipl1l_wr_callback(DEVCB_##_write); #define MCFG_QL_EXPANSION_SLOT_BERRL_CALLBACK(_write) \ - devcb = &downcast(*device).set_berrl_wr_callback(DEVCB_##_write); + downcast(*device).set_berrl_wr_callback(DEVCB_##_write); #define MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(_write) \ - devcb = &downcast(*device).set_extintl_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_rxd_handler(DEVCB_##_devcb); + downcast(*device).set_rxd_handler(DEVCB_##_devcb); #define MCFG_RS232_DCD_HANDLER(_devcb) \ - devcb = &downcast(*device).set_dcd_handler(DEVCB_##_devcb); + downcast(*device).set_dcd_handler(DEVCB_##_devcb); #define MCFG_RS232_DSR_HANDLER(_devcb) \ - devcb = &downcast(*device).set_dsr_handler(DEVCB_##_devcb); + downcast(*device).set_dsr_handler(DEVCB_##_devcb); #define MCFG_RS232_RI_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ri_handler(DEVCB_##_devcb); + downcast(*device).set_ri_handler(DEVCB_##_devcb); #define MCFG_RS232_SI_HANDLER(_devcb) \ - devcb = &downcast(*device).set_si_handler(DEVCB_##_devcb); + downcast(*device).set_si_handler(DEVCB_##_devcb); #define MCFG_RS232_CTS_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cts_handler(DEVCB_##_devcb); + downcast(*device).set_cts_handler(DEVCB_##_devcb); #define MCFG_RS232_RXC_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rxc_handler(DEVCB_##_devcb); + downcast(*device).set_rxc_handler(DEVCB_##_devcb); #define MCFG_RS232_TXC_HANDLER(_devcb) \ - devcb = &downcast(*device).set_txc_handler(DEVCB_##_devcb); + downcast(*device).set_txc_handler(DEVCB_##_devcb); #define RS232_BAUD_110 (0x00) #define RS232_BAUD_150 (0x01) @@ -143,6 +143,14 @@ public: template devcb_base &set_cts_handler(Object &&cb) { return m_cts_handler.set_callback(std::forward(cb)); } template devcb_base &set_rxc_handler(Object &&cb) { return m_rxc_handler.set_callback(std::forward(cb)); } template devcb_base &set_txc_handler(Object &&cb) { return m_txc_handler.set_callback(std::forward(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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_S100_NMI_CALLBACK(_write) \ - devcb = &downcast(*device).set_nmi_wr_callback(DEVCB_##_write); + downcast(*device).set_nmi_wr_callback(DEVCB_##_write); #define MCFG_S100_VI0_CALLBACK(_write) \ - devcb = &downcast(*device).set_vi0_wr_callback(DEVCB_##_write); + downcast(*device).set_vi0_wr_callback(DEVCB_##_write); #define MCFG_S100_VI1_CALLBACK(_write) \ - devcb = &downcast(*device).set_vi1_wr_callback(DEVCB_##_write); + downcast(*device).set_vi1_wr_callback(DEVCB_##_write); #define MCFG_S100_VI2_CALLBACK(_write) \ - devcb = &downcast(*device).set_vi2_wr_callback(DEVCB_##_write); + downcast(*device).set_vi2_wr_callback(DEVCB_##_write); #define MCFG_S100_VI3_CALLBACK(_write) \ - devcb = &downcast(*device).set_vi3_wr_callback(DEVCB_##_write); + downcast(*device).set_vi3_wr_callback(DEVCB_##_write); #define MCFG_S100_VI4_CALLBACK(_write) \ - devcb = &downcast(*device).set_vi4_wr_callback(DEVCB_##_write); + downcast(*device).set_vi4_wr_callback(DEVCB_##_write); #define MCFG_S100_VI5_CALLBACK(_write) \ - devcb = &downcast(*device).set_vi5_wr_callback(DEVCB_##_write); + downcast(*device).set_vi5_wr_callback(DEVCB_##_write); #define MCFG_S100_VI6_CALLBACK(_write) \ - devcb = &downcast(*device).set_vi6_wr_callback(DEVCB_##_write); + downcast(*device).set_vi6_wr_callback(DEVCB_##_write); #define MCFG_S100_VI7_CALLBACK(_write) \ - devcb = &downcast(*device).set_vi7_wr_callback(DEVCB_##_write); + downcast(*device).set_vi7_wr_callback(DEVCB_##_write); #define MCFG_S100_DMA0_CALLBACK(_write) \ - devcb = &downcast(*device).set_dma0_wr_callback(DEVCB_##_write); + downcast(*device).set_dma0_wr_callback(DEVCB_##_write); #define MCFG_S100_DMA1_CALLBACK(_write) \ - devcb = &downcast(*device).set_dma1_wr_callback(DEVCB_##_write); + downcast(*device).set_dma1_wr_callback(DEVCB_##_write); #define MCFG_S100_DMA2_CALLBACK(_write) \ - devcb = &downcast(*device).set_dma2_wr_callback(DEVCB_##_write); + downcast(*device).set_dma2_wr_callback(DEVCB_##_write); #define MCFG_S100_DMA3_CALLBACK(_write) \ - devcb = &downcast(*device).set_dma3_wr_callback(DEVCB_##_write); + downcast(*device).set_dma3_wr_callback(DEVCB_##_write); #define MCFG_S100_RDY_CALLBACK(_write) \ - devcb = &downcast(*device).set_rdy_wr_callback(DEVCB_##_write); + downcast(*device).set_rdy_wr_callback(DEVCB_##_write); #define MCFG_S100_HOLD_CALLBACK(_write) \ - devcb = &downcast(*device).set_hold_wr_callback(DEVCB_##_write); + downcast(*device).set_hold_wr_callback(DEVCB_##_write); #define MCFG_S100_ERROR_CALLBACK(_write) \ - devcb = &downcast(*device).set_error_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_bsy_handler(DEVCB_##_devcb); + downcast(*device).set_bsy_handler(DEVCB_##_devcb); #define MCFG_SCSI_SEL_HANDLER(_devcb) \ - devcb = &downcast(*device).set_sel_handler(DEVCB_##_devcb); + downcast(*device).set_sel_handler(DEVCB_##_devcb); #define MCFG_SCSI_CD_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cd_handler(DEVCB_##_devcb); + downcast(*device).set_cd_handler(DEVCB_##_devcb); #define MCFG_SCSI_IO_HANDLER(_devcb) \ - devcb = &downcast(*device).set_io_handler(DEVCB_##_devcb); + downcast(*device).set_io_handler(DEVCB_##_devcb); #define MCFG_SCSI_MSG_HANDLER(_devcb) \ - devcb = &downcast(*device).set_msg_handler(DEVCB_##_devcb); + downcast(*device).set_msg_handler(DEVCB_##_devcb); #define MCFG_SCSI_REQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_req_handler(DEVCB_##_devcb); + downcast(*device).set_req_handler(DEVCB_##_devcb); #define MCFG_SCSI_ACK_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ack_handler(DEVCB_##_devcb); + downcast(*device).set_ack_handler(DEVCB_##_devcb); #define MCFG_SCSI_ATN_HANDLER(_devcb) \ - devcb = &downcast(*device).set_atn_handler(DEVCB_##_devcb); + downcast(*device).set_atn_handler(DEVCB_##_devcb); #define MCFG_SCSI_RST_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rst_handler(DEVCB_##_devcb); + downcast(*device).set_rst_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA0_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data0_handler(DEVCB_##_devcb); + downcast(*device).set_data0_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data1_handler(DEVCB_##_devcb); + downcast(*device).set_data1_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data2_handler(DEVCB_##_devcb); + downcast(*device).set_data2_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA3_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data3_handler(DEVCB_##_devcb); + downcast(*device).set_data3_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA4_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data4_handler(DEVCB_##_devcb); + downcast(*device).set_data4_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA5_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data5_handler(DEVCB_##_devcb); + downcast(*device).set_data5_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA6_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data6_handler(DEVCB_##_devcb); + downcast(*device).set_data6_handler(DEVCB_##_devcb); #define MCFG_SCSI_DATA7_HANDLER(_devcb) \ - devcb = &downcast(*device).set_data7_handler(DEVCB_##_devcb); + downcast(*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 devcb_base &set_data5_handler(Object &&cb) { return m_data5_handler.set_callback(std::forward(cb)); } template devcb_base &set_data6_handler(Object &&cb) { return m_data6_handler.set_callback(std::forward(cb)); } template devcb_base &set_data7_handler(Object &&cb) { return m_data7_handler.set_callback(std::forward(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 + 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(*device).set_th_input_handler(DEVCB_##_devcb); + downcast(*device).set_th_input_handler(DEVCB_##_devcb); #define MCFG_SMS_CONTROL_PORT_PIXEL_HANDLER(_devcb) \ - devcb = &downcast(*device).set_pixel_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_SPECTRUM_EXPANSION_SLOT_NMI_HANDLER(_devcb) \ - devcb = &downcast(*device).set_nmi_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_cb(DEVCB_##_devcb); + downcast(*device).set_irq_cb(DEVCB_##_devcb); #define MCFG_SS50_INTERFACE_FIRQ_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_firq_cb(DEVCB_##_devcb); + downcast(*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(*device).set_rxd_handler(DEVCB_##cb); + downcast(*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(*device).set_int_handler(DEVCB_##_devcb); + downcast(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_ROMDIS_HANDLER(_devcb) \ - devcb = &downcast(*device).set_romdis_handler(DEVCB_##_devcb); + downcast(*device).set_romdis_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_RAMDIS_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ramdis_handler(DEVCB_##_devcb); + downcast(*device).set_ramdis_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_CTRL1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ctrl1_handler(DEVCB_##_devcb); + downcast(*device).set_ctrl1_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_CTRL2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ctrl2_handler(DEVCB_##_devcb); + downcast(*device).set_ctrl2_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_EXCSR_HANDLER(_devcb) \ - devcb = &downcast(*device).set_excsr_handler(DEVCB_##_devcb); + downcast(*device).set_excsr_handler(DEVCB_##_devcb); #define MCFG_SVI_EXPANDER_EXCSW_HANDLER(_devcb) \ - devcb = &downcast(*device).set_excsw_handler(DEVCB_##_devcb); + downcast(*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(*device).set_bus(this, "slotbus"); #define MCFG_SVI_SLOT_INT_HANDLER(_devcb) \ - devcb = &downcast(*device).set_int_handler(DEVCB_##_devcb); + downcast(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_SVI_SLOT_ROMDIS_HANDLER(_devcb) \ - devcb = &downcast(*device).set_romdis_handler(DEVCB_##_devcb); + downcast(*device).set_romdis_handler(DEVCB_##_devcb); #define MCFG_SVI_SLOT_RAMDIS_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ramdis_handler(DEVCB_##_devcb); + downcast(*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(*device).set_tip_handler(DEVCB_##cb); + downcast(*device).set_tip_handler(DEVCB_##cb); #define MCFG_TI8X_LINK_RING_HANDLER(cb) \ - devcb = &downcast(*device).set_ring_handler(DEVCB_##cb); + downcast(*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(*device).set_ready_callback(DEVCB_##_ready); + downcast(*device).set_ready_callback(DEVCB_##_ready); #define MCFG_GROMPORT_RESET_HANDLER( _reset ) \ - devcb = &downcast(*device).set_reset_callback(DEVCB_##_reset); + downcast(*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(*device).set_readmem_callback(DEVCB_##_devcb); + downcast(*device).set_readmem_callback(DEVCB_##_devcb); #define MCFG_VIDEO992_HOLD_CB(_devcb) \ - devcb = &downcast(*device).set_hold_callback(DEVCB_##_devcb); + downcast(*device).set_hold_callback(DEVCB_##_devcb); #define MCFG_VIDEO992_INT_CB(_devcb) \ - devcb = &downcast(*device).set_int_callback(DEVCB_##_devcb); + downcast(*device).set_int_callback(DEVCB_##_devcb); #define MCFG_SET_ROMBANK_HANDLER( _devcb ) \ - devcb = &downcast(*device).set_rombank_callback(DEVCB_##_devcb); + downcast(*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(*device).set_ready_wr_callback(DEVCB_##_write); + downcast(*device).set_ready_wr_callback(DEVCB_##_write); #define MCFG_MAINBOARD8_RESET_CALLBACK(_write) \ - devcb = &downcast(*device).set_reset_wr_callback(DEVCB_##_write); + downcast(*device).set_reset_wr_callback(DEVCB_##_write); #define MCFG_MAINBOARD8_HOLD_CALLBACK(_write) \ - devcb = &downcast(*device).set_hold_wr_callback(DEVCB_##_write); + downcast(*device).set_hold_wr_callback(DEVCB_##_write); #define MCFG_OSO_INT_CALLBACK(_int) \ - devcb = &downcast(*device).set_int_callback(DEVCB##_int); + downcast(*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(*device).set_ready_callback(DEVCB_##_intcallb); + downcast(*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(*device).set_vdpint_callback(DEVCB_##_vdpint); + downcast(*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(*device).set_int_callback(DEVCB_##_intcallb); + downcast(*device).set_int_callback(DEVCB_##_intcallb); /*****************************************************************************/ @@ -308,7 +308,7 @@ private: }; #define MCFG_GENEVE_READY_HANDLER( _intcallb ) \ - devcb = &downcast(*device).set_ready_callback(DEVCB_##_intcallb); + downcast(*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(*device).set_extint_callback(DEVCB_##_extint); + downcast(*device).set_extint_callback(DEVCB_##_extint); #define MCFG_IOPORT_READY_HANDLER( _ready ) \ - devcb = &downcast(*device).set_ready_callback(DEVCB_##_ready); + downcast(*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(*device).set_int_callback(DEVCB_##_intcallb); + downcast(*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(*device).set_inta_callback(DEVCB_##_inta); + downcast(*device).set_inta_callback(DEVCB_##_inta); #define MCFG_PERIBOX_INTB_HANDLER( _intb ) \ - devcb = &downcast(*device).set_intb_callback(DEVCB_##_intb); + downcast(*device).set_intb_callback(DEVCB_##_intb); #define MCFG_PERIBOX_READY_HANDLER( _ready ) \ - devcb = &downcast(*device).set_ready_callback(DEVCB_##_ready); + downcast(*device).set_ready_callback(DEVCB_##_ready); #define MCFG_PERIBOX_LCP_HANDLER( _lcp ) \ - devcb = &downcast(*device).set_lcp_callback(DEVCB_##_lcp); + downcast(*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(*device).set_int_callback(DEVCB_##_intcallb); + downcast(*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(*device).set_int_callback(DEVCB_##_write); + downcast(*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(*device).set_int_callback(DEVCB_##_intcallb); + downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_TIKI100_BUS_NMI_CALLBACK(_write) \ - devcb = &downcast(*device).set_nmi_wr_callback(DEVCB_##_write); + downcast(*device).set_nmi_wr_callback(DEVCB_##_write); #define MCFG_TIKI100_BUS_BUSRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_busrq_wr_callback(DEVCB_##_write); + downcast(*device).set_busrq_wr_callback(DEVCB_##_write); #define MCFG_TIKI100_BUS_IN_MREQ_CALLBACK(_read) \ - devcb = &downcast(*device).set_mrq_rd_callback(DEVCB_##_read); + downcast(*device).set_mrq_rd_callback(DEVCB_##_read); #define MCFG_TIKI100_BUS_OUT_MREQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_mrq_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_TVCEXP_SLOT_OUT_NMI_CB(_devcb) \ - devcb = &downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); + downcast(*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(*device).set_trigger_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_VIC10_EXPANSION_SLOT_RES_CALLBACK(_write) \ - devcb = &downcast(*device).set_res_wr_callback(DEVCB_##_write); + downcast(*device).set_res_wr_callback(DEVCB_##_write); #define MCFG_VIC10_EXPANSION_SLOT_CNT_CALLBACK(_write) \ - devcb = &downcast(*device).set_cnt_wr_callback(DEVCB_##_write); + downcast(*device).set_cnt_wr_callback(DEVCB_##_write); #define MCFG_VIC10_EXPANSION_SLOT_SP_CALLBACK(_write) \ - devcb = &downcast(*device).set_sp_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_VIC20_EXPANSION_SLOT_NMI_CALLBACK(_write) \ - devcb = &downcast(*device).set_nmi_wr_callback(DEVCB_##_write); + downcast(*device).set_nmi_wr_callback(DEVCB_##_write); #define MCFG_VIC20_EXPANSION_SLOT_RES_CALLBACK(_write) \ - devcb = &downcast(*device).set_res_wr_callback(DEVCB_##_write); + downcast(*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 @@ -11,14 +11,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(*device).set_extres_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_int_wr_callback(DEVCB_##_write); + downcast(*device).set_int_wr_callback(DEVCB_##_write); #define MCFG_VIP_EXPANSION_SLOT_DMA_OUT_CALLBACK(_write) \ - devcb = &downcast(*device).set_dma_out_wr_callback(DEVCB_##_write); + downcast(*device).set_dma_out_wr_callback(DEVCB_##_write); #define MCFG_VIP_EXPANSION_SLOT_DMA_IN_CALLBACK(_write) \ - devcb = &downcast(*device).set_dma_in_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_vme_j1_callback(DEVCB_##_devcb); + downcast(*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(*device).set_int_handler(DEVCB_##_devcb); + downcast(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_MEMEXP_SLOT_NMI_HANDLER(_devcb) \ - devcb = &downcast(*device).set_nmi_handler(DEVCB_##_devcb); + downcast(*device).set_nmi_handler(DEVCB_##_devcb); #define MCFG_MEMEXP_SLOT_RESET_HANDLER(_devcb) \ - devcb = &downcast(*device).set_reset_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq2_wr_callback(DEVCB_##_write); + downcast(*device).set_irq2_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IRQ3_CALLBACK(_write) \ - devcb = &downcast(*device).set_irq3_wr_callback(DEVCB_##_write); + downcast(*device).set_irq3_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IRQ4_CALLBACK(_write) \ - devcb = &downcast(*device).set_irq4_wr_callback(DEVCB_##_write); + downcast(*device).set_irq4_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IRQ5_CALLBACK(_write) \ - devcb = &downcast(*device).set_irq5_wr_callback(DEVCB_##_write); + downcast(*device).set_irq5_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IRQ6_CALLBACK(_write) \ - devcb = &downcast(*device).set_irq6_wr_callback(DEVCB_##_write); + downcast(*device).set_irq6_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IRQ7_CALLBACK(_write) \ - devcb = &downcast(*device).set_irq7_wr_callback(DEVCB_##_write); + downcast(*device).set_irq7_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_DRQ1_CALLBACK(_write) \ - devcb = &downcast(*device).set_drq1_wr_callback(DEVCB_##_write); + downcast(*device).set_drq1_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_DRQ2_CALLBACK(_write) \ - devcb = &downcast(*device).set_drq2_wr_callback(DEVCB_##_write); + downcast(*device).set_drq2_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_DRQ3_CALLBACK(_write) \ - devcb = &downcast(*device).set_drq3_wr_callback(DEVCB_##_write); + downcast(*device).set_drq3_wr_callback(DEVCB_##_write); #define MCFG_WANGPC_BUS_IOERROR_CALLBACK(_write) \ - devcb = &downcast(*device).set_ioerror_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_out_irq2_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq2_callback(DEVCB_##_devcb); #define MCFG_X68K_EXPANSION_SLOT_OUT_IRQ4_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq4_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq4_callback(DEVCB_##_devcb); #define MCFG_X68K_EXPANSION_SLOT_OUT_NMI_CB(_devcb) \ - devcb = &downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); + downcast(*device).set_out_nmi_callback(DEVCB_##_devcb); #define MCFG_X68K_EXPANSION_SLOT_OUT_RESET_CB(_devcb) \ - devcb = &downcast(*device).set_out_reset_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_flp_callback(DEVCB_##_devcb); + downcast(*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(*device).set_sport_rx_callback(DEVCB_##_devcb); + downcast(*device).set_sport_rx_callback(DEVCB_##_devcb); #define MCFG_ADSP21XX_SPORT_TX_CB(_devcb) \ - devcb = &downcast(*device).set_sport_tx_callback(DEVCB_##_devcb); + downcast(*device).set_sport_tx_callback(DEVCB_##_devcb); #define MCFG_ADSP21XX_TIMER_FIRED_CB(_devcb) \ - devcb = &downcast(*device).set_timer_fired_callback(DEVCB_##_devcb); + downcast(*device).set_timer_fired_callback(DEVCB_##_devcb); #define MCFG_ADSP21XX_DMOVLAY_CB(_devcb) \ - devcb = &downcast(*device).set_dmovlay_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_k_callback(DEVCB_##_devcb); + downcast(*device).set_read_k_callback(DEVCB_##_devcb); #define MCFG_AMI_S2000_READ_I_CB(_devcb) \ - devcb = &downcast(*device).set_read_i_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_d_callback(DEVCB_##_devcb); + downcast(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_AMI_S2000_WRITE_D_CB(_devcb) \ - devcb = &downcast(*device).set_write_d_callback(DEVCB_##_devcb); + downcast(*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(*device).set_write_a_callback(DEVCB_##_devcb); + downcast(*device).set_write_a_callback(DEVCB_##_devcb); // F_out pin (only for S2152) #define MCFG_AMI_S2152_FOUT_CB(_devcb) \ - devcb = &downcast(*device).set_write_f_callback(DEVCB_##_devcb); + downcast(*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(*device).set_tape_read_cb(DEVCB_##_devcb); + downcast(*device).set_tape_read_cb(DEVCB_##_devcb); #define MCFG_APEXC_TAPE_PUNCH_CB(_devcb) \ - devcb = &downcast(*device).set_tape_punch_cb(DEVCB_##_devcb); + downcast(*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(*device).set_read_l_callback(DEVCB_##_devcb); + downcast(*device).set_read_l_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_L_CB(_devcb) \ - devcb = &downcast(*device).set_write_l_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_l_tristate_callback(DEVCB_##_devcb); + downcast(*device).set_read_l_tristate_callback(DEVCB_##_devcb); // G pins: 4-bit bi-directional #define MCFG_COP400_READ_G_CB(_devcb) \ - devcb = &downcast(*device).set_read_g_callback(DEVCB_##_devcb); + downcast(*device).set_read_g_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_G_CB(_devcb) \ - devcb = &downcast(*device).set_write_g_callback(DEVCB_##_devcb); + downcast(*device).set_write_g_callback(DEVCB_##_devcb); // D outputs: 4-bit general purpose output #define MCFG_COP400_WRITE_D_CB(_devcb) \ - devcb = &downcast(*device).set_write_d_callback(DEVCB_##_devcb); + downcast(*device).set_write_d_callback(DEVCB_##_devcb); // IN inputs: 4-bit general purpose input #define MCFG_COP400_READ_IN_CB(_devcb) \ - devcb = &downcast(*device).set_read_in_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_si_callback(DEVCB_##_devcb); + downcast(*device).set_read_si_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_SO_CB(_devcb) \ - devcb = &downcast(*device).set_write_so_callback(DEVCB_##_devcb); + downcast(*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(*device).set_write_sk_callback(DEVCB_##_devcb); + downcast(*device).set_write_sk_callback(DEVCB_##_devcb); // CKI/CKO lines: only CKO input here #define MCFG_COP400_READ_CKO_CB(_devcb) \ - devcb = &downcast(*device).set_read_cko_callback(DEVCB_##_devcb); + downcast(*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(*device).set_wait_rd_callback(DEVCB_##_read); + downcast(*device).set_wait_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_CLEAR_CALLBACK(_read) \ - devcb = &downcast(*device).set_clear_rd_callback(DEVCB_##_read); + downcast(*device).set_clear_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF1_CALLBACK(_read) \ - devcb = &downcast(*device).set_ef1_rd_callback(DEVCB_##_read); + downcast(*device).set_ef1_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF2_CALLBACK(_read) \ - devcb = &downcast(*device).set_ef2_rd_callback(DEVCB_##_read); + downcast(*device).set_ef2_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF3_CALLBACK(_read) \ - devcb = &downcast(*device).set_ef3_rd_callback(DEVCB_##_read); + downcast(*device).set_ef3_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF4_CALLBACK(_read) \ - devcb = &downcast(*device).set_ef4_rd_callback(DEVCB_##_read); + downcast(*device).set_ef4_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_Q_CALLBACK(_write) \ - devcb = &downcast(*device).set_q_wr_callback(DEVCB_##_write); + downcast(*device).set_q_wr_callback(DEVCB_##_write); #define MCFG_COSMAC_DMAR_CALLBACK(_read) \ - devcb = &downcast(*device).set_dma_rd_callback(DEVCB_##_read); + downcast(*device).set_dma_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_DMAW_CALLBACK(_write) \ - devcb = &downcast(*device).set_dma_wr_callback(DEVCB_##_write); + downcast(*device).set_dma_wr_callback(DEVCB_##_write); #define MCFG_COSMAC_SC_CALLBACK(_write) \ - devcb = &downcast(*device).set_sc_wr_callback(DEVCB_##_write); + downcast(*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(device)->set_bext_callback(DEVCB_##_read); + downcast(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(*device).set_output_pins_callback(DEVCB_##_write); + downcast(*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(*device).set_write_r##R##_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_r##P##_callback(DEVCB_##_devcb); + downcast(*device).set_read_r##P##_callback(DEVCB_##_devcb); #define MCFG_E0C6S46_WRITE_P_CB(R, _devcb) \ - devcb = &downcast(*device).set_write_r##P##_callback(DEVCB_##_devcb); + downcast(*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(*device).set_fdt_r_callback(DEVCB_##_read); + downcast(*device).set_fdt_r_callback(DEVCB_##_read); #define MCFG_ESRIP_FDT_W_CALLBACK(_write) \ - devcb = &downcast(*device).set_fdt_w_callback(DEVCB_##_write); + downcast(*device).set_fdt_w_callback(DEVCB_##_write); #define MCFG_ESRIP_STATUS_IN_CALLBACK(_read) \ - devcb = &downcast(*device).set_status_in_callback(DEVCB_##_read); + downcast(*device).set_status_in_callback(DEVCB_##_read); #define MCFG_ESRIP_DRAW_CALLBACK_OWNER(_class, _method) \ downcast(*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(*device).set_tend0_callback(DEVCB_##_devcb); + downcast(*device).set_tend0_callback(DEVCB_##_devcb); #define MCFG_H83002_TEND1_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_tend1_callback(DEVCB_##_devcb); + downcast(*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(device)->set_external_clock_period(_period); #define MCFG_H8_SCI_TX_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_tx_cb(DEVCB_##_devcb); + downcast(*device).set_tx_cb(DEVCB_##_devcb); #define MCFG_H8_SCI_CLK_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_clk_cb(DEVCB_##_devcb); + downcast(*device).set_clk_cb(DEVCB_##_devcb); class h8_sci_device : public device_t { public: @@ -56,6 +56,8 @@ public: template devcb_base &set_tx_cb(Object &&cb) { return tx_cb.set_callback(std::forward(cb)); } template devcb_base &set_clk_cb(Object &&cb) { return clk_cb.set_callback(std::forward(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(*device).set_kol_callback(DEVCB_##_devcb); -#define MCFG_HCD62121_KOH_CB(_devcb) devcb = &downcast(*device).set_koh_callback(DEVCB_##_devcb); -#define MCFG_HCD62121_PORT_CB(_devcb) devcb = &downcast(*device).set_port_callback(DEVCB_##_devcb); -#define MCFG_HCD62121_OPT_CB(_devcb) devcb = &downcast(*device).set_opt_callback(DEVCB_##_devcb); -#define MCFG_HCD62121_KI_CB(_devcb) devcb = &downcast(*device).set_ki_callback(DEVCB_##_devcb); -#define MCFG_HCD62121_IN0_CB(_devcb) devcb = &downcast(*device).set_in0_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_KOL_CB(_devcb) downcast(*device).set_kol_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_KOH_CB(_devcb) downcast(*device).set_koh_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_PORT_CB(_devcb) downcast(*device).set_port_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_OPT_CB(_devcb) downcast(*device).set_opt_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_KI_CB(_devcb) downcast(*device).set_ki_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_IN0_CB(_devcb) downcast(*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(*device).set_lcd_ctrl_callback(DEVCB_##_devcb); + downcast(*device).set_lcd_ctrl_callback(DEVCB_##_devcb); #define MCFG_HD61700_LCD_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_lcd_write_callback(DEVCB_##_devcb); + downcast(*device).set_lcd_write_callback(DEVCB_##_devcb); #define MCFG_HD61700_LCD_READ_CB(_devcb) \ - devcb = &downcast(*device).set_lcd_read_callback(DEVCB_##_devcb); + downcast(*device).set_lcd_read_callback(DEVCB_##_devcb); #define MCFG_HD61700_KB_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_kb_write_callback(DEVCB_##_devcb); + downcast(*device).set_kb_write_callback(DEVCB_##_devcb); #define MCFG_HD61700_KB_READ_CB(_devcb) \ - devcb = &downcast(*device).set_kb_read_callback(DEVCB_##_devcb); + downcast(*device).set_kb_read_callback(DEVCB_##_devcb); #define MCFG_HD61700_PORT_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_callback(DEVCB_##_devcb); + downcast(*device).set_port_write_callback(DEVCB_##_devcb); #define MCFG_HD61700_PORT_READ_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_r##R##_callback(DEVCB_##_devcb); + downcast(*device).set_read_r##R##_callback(DEVCB_##_devcb); #define MCFG_HMCS40_WRITE_R_CB(R, _devcb) \ - devcb = &downcast(*device).set_write_r##R##_callback(DEVCB_##_devcb); + downcast(*device).set_write_r##R##_callback(DEVCB_##_devcb); // 16-bit discrete #define MCFG_HMCS40_READ_D_CB(_devcb) \ - devcb = &downcast(*device).set_read_d_callback(DEVCB_##_devcb); + downcast(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_HMCS40_WRITE_D_CB(_devcb) \ - devcb = &downcast(*device).set_write_d_callback(DEVCB_##_devcb); + downcast(*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(*device).set_pa_changed_func(DEVCB_##_devcb); + downcast(*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(*device).set_smiact(DEVCB_##_devcb); + downcast(*device).set_smiact(DEVCB_##_devcb); #define MCFG_I486_FERR_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ferr(DEVCB_##_devcb); + downcast(*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(*device).set_out_status_func(DEVCB_##_devcb); + downcast(*device).set_out_status_func(DEVCB_##_devcb); // INTE changed callback #define MCFG_I8085A_INTE(_devcb) \ - devcb = &downcast(*device).set_out_inte_func(DEVCB_##_devcb); + downcast(*device).set_out_inte_func(DEVCB_##_devcb); // SID changed callback (8085A only) #define MCFG_I8085A_SID(_devcb) \ - devcb = &downcast(*device).set_in_sid_func(DEVCB_##_devcb); + downcast(*device).set_in_sid_func(DEVCB_##_devcb); // SOD changed callback (8085A only) #define MCFG_I8085A_SOD(_devcb) \ - devcb = &downcast(*device).set_out_sod_func(DEVCB_##_devcb); + downcast(*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 devcb_base &set_in_sid_func(Object &&cb) { return m_in_sid_func.set_callback(std::forward(cb)); } template devcb_base &set_out_sod_func(Object &&cb) { return m_out_sod_func.set_callback(std::forward(cb)); } template void set_clk_out(Object &&cb) { m_clk_out_func = std::forward(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(*device).set_data_width(_data_width); #define MCFG_I8089_SINTR1(_sintr1) \ - devcb = &downcast(device)->set_sintr1_callback(DEVCB_##_sintr1); + downcast(device)->set_sintr1_callback(DEVCB_##_sintr1); #define MCFG_I8089_SINTR2(_sintr2) \ - devcb = &downcast(device)->set_sintr2_callback(DEVCB_##_sintr2); + downcast(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 devcb_base &set_chip_select_callback(Object &&cb) { return m_out_chip_select_func.set_callback(std::forward(cb)); } template devcb_base &set_tmrout0_handler(Object &&cb) { return m_out_tmrout0_func.set_callback(std::forward(cb)); } template devcb_base &set_tmrout1_handler(Object &&cb) { return m_out_tmrout1_func.set_callback(std::forward(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(*device).set_read_slave_ack_callback(DEVCB_##_devcb); + downcast(*device).set_read_slave_ack_callback(DEVCB_##_devcb); #define MCFG_80186_CHIP_SELECT_CB(_devcb) \ - devcb = &downcast(*device).set_chip_select_callback(DEVCB_##_devcb); + downcast(*device).set_chip_select_callback(DEVCB_##_devcb); #define MCFG_80186_TMROUT0_HANDLER(_devcb) \ - devcb = &downcast(*device).set_tmrout0_handler(DEVCB_##_devcb); + downcast(*device).set_tmrout0_handler(DEVCB_##_devcb); #define MCFG_80186_TMROUT1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_tmrout1_handler(DEVCB_##_devcb); + downcast(*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(*device).set_a20_callback(i80286_cpu_device::a20_cb(&_class::_a20_cb, this)); #define MCFG_80286_SHUTDOWN(_devcb) \ - devcb = &downcast(*device).set_shutdown_callback(DEVCB_##_devcb); + downcast(*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(*device).set_lock_handler(DEVCB_##_write); + downcast(*device).set_lock_handler(DEVCB_##_write); #define MCFG_I8086_IF_HANDLER(_write) \ - devcb = &downcast(*device).set_if_handler(DEVCB_##_write); + downcast(*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(*device).set_esc_opcode_handler(DEVCB_##_write); + downcast(*device).set_esc_opcode_handler(DEVCB_##_write); #define MCFG_I8086_ESC_DATA_HANDLER(_write) \ - devcb = &downcast(*device).set_esc_data_handler(DEVCB_##_write); + downcast(*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(*device).set_int_func(DEVCB_##_devcb); + downcast(*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(*device).set_cpu_clock(lc8670_cpu_device::clock_source::RC, _rc_clock); \ downcast(*device).set_cpu_clock(lc8670_cpu_device::clock_source::CF, _cf_clock); #define MCFG_LC8670_BANKSWITCH_CB(_devcb) \ - devcb = &downcast(*device).set_bankswitch_cb(DEVCB_##_devcb); + downcast(*device).set_bankswitch_cb(DEVCB_##_devcb); #define MCFG_LC8670_LCD_UPDATE_CB(_cb) \ downcast(*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(*device).set_in_func(DEVCB_##_devcb); + downcast(*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(*device).set_timer_cb(DEVCB_##_devcb); + downcast(*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(*device).set_incdec16_cb(DEVCB_##_devcb); + downcast(*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(*device).set_p0_rd_callback(DEVCB_##_read); + downcast(*device).set_p0_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT1_READ_CALLBACK(_read) \ - devcb = &downcast(*device).set_p1_rd_callback(DEVCB_##_read); + downcast(*device).set_p1_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT2_READ_CALLBACK(_read) \ - devcb = &downcast(*device).set_p2_rd_callback(DEVCB_##_read); + downcast(*device).set_p2_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT3_READ_CALLBACK(_read) \ - devcb = &downcast(*device).set_p3_rd_callback(DEVCB_##_read); + downcast(*device).set_p3_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT0_WRITE_CALLBACK(_write) \ - devcb = &downcast(*device).set_p0_wr_callback(DEVCB_##_write); + downcast(*device).set_p0_wr_callback(DEVCB_##_write); #define MCFG_M5074X_PORT1_WRITE_CALLBACK(_write) \ - devcb = &downcast(*device).set_p1_wr_callback(DEVCB_##_write); + downcast(*device).set_p1_wr_callback(DEVCB_##_write); #define MCFG_M5074X_PORT2_WRITE_CALLBACK(_write) \ - devcb = &downcast(*device).set_p2_wr_callback(DEVCB_##_write); + downcast(*device).set_p2_wr_callback(DEVCB_##_write); #define MCFG_M5074X_PORT3_WRITE_CALLBACK(_write) \ - devcb = &downcast(*device).set_p3_wr_callback(DEVCB_##_write); + downcast(*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(device)->disable_cache(); #define MCFG_M6502_SYNC_CALLBACK(_cb) \ - devcb = &downcast(*device).set_sync_callback(DEVCB_##_cb); + downcast(*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(*device).set_out_sc2_func(DEVCB_##_devcb); + downcast(*device).set_out_sc2_func(DEVCB_##_devcb); #define MCFG_M6801_SER_TX(_devcb) \ - devcb = &downcast(*device).set_out_sertx_func(DEVCB_##_devcb); + downcast(*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(*device).set_port_cb_r<0>(DEVCB_##obj); + downcast(*device).set_port_cb_r<0>(DEVCB_##obj); #define MCFG_M68705_PORTB_R_CB(obj) \ - devcb = &downcast(*device).set_port_cb_r<1>(DEVCB_##obj); + downcast(*device).set_port_cb_r<1>(DEVCB_##obj); #define MCFG_M68705_PORTC_R_CB(obj) \ - devcb = &downcast(*device).set_port_cb_r<2>(DEVCB_##obj); + downcast(*device).set_port_cb_r<2>(DEVCB_##obj); #define MCFG_M68705_PORTD_R_CB(obj) \ - devcb = &downcast(*device).set_port_cb_r<3>(DEVCB_##obj); + downcast(*device).set_port_cb_r<3>(DEVCB_##obj); #define MCFG_M68705_PORTA_W_CB(obj) \ - devcb = &downcast(*device).set_port_cb_w<0>(DEVCB_##obj); + downcast(*device).set_port_cb_w<0>(DEVCB_##obj); #define MCFG_M68705_PORTB_W_CB(obj) \ - devcb = &downcast(*device).set_port_cb_w<1>(DEVCB_##obj); + downcast(*device).set_port_cb_w<1>(DEVCB_##obj); #define MCFG_M68705_PORTC_W_CB(obj) \ - devcb = &downcast(*device).set_port_cb_w<2>(DEVCB_##obj); + downcast(*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(*device).set_port_cb_r<0>(DEVCB_##obj); + downcast(*device).set_port_cb_r<0>(DEVCB_##obj); #define MCFG_M68HC05_PORTB_R_CB(obj) \ - devcb = &downcast(*device).set_port_cb_r<1>(DEVCB_##obj); + downcast(*device).set_port_cb_r<1>(DEVCB_##obj); #define MCFG_M68HC05_PORTC_R_CB(obj) \ - devcb = &downcast(*device).set_port_cb_r<2>(DEVCB_##obj); + downcast(*device).set_port_cb_r<2>(DEVCB_##obj); #define MCFG_M68HC05_PORTD_R_CB(obj) \ - devcb = &downcast(*device).set_port_cb_r<3>(DEVCB_##obj); + downcast(*device).set_port_cb_r<3>(DEVCB_##obj); #define MCFG_M68HC05_PORTA_W_CB(obj) \ - devcb = &downcast(*device).set_port_cb_w<0>(DEVCB_##obj); + downcast(*device).set_port_cb_w<0>(DEVCB_##obj); #define MCFG_M68HC05_PORTB_W_CB(obj) \ - devcb = &downcast(*device).set_port_cb_w<1>(DEVCB_##obj); + downcast(*device).set_port_cb_w<1>(DEVCB_##obj); #define MCFG_M68HC05_PORTC_W_CB(obj) \ - devcb = &downcast(*device).set_port_cb_w<2>(DEVCB_##obj); + downcast(*device).set_port_cb_w<2>(DEVCB_##obj); #define MCFG_M68HC05_PORTD_W_CB(obj) \ - devcb = &downcast(*device).set_port_cb_w<3>(DEVCB_##obj); + downcast(*device).set_port_cb_w<3>(DEVCB_##obj); #define MCFG_M68HC05_TCMP_CB(obj) \ - devcb = &downcast(*device).set_tcmp_cb(DEVCB_##obj); + downcast(*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(*device).set_line_callback(DEVCB_##_devcb); + downcast(*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(*device).set_lic_cb(DEVCB_##_devcb); + downcast(*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(*device).set_read_k_callback(DEVCB_##_devcb); + downcast(*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(*device).set_write_o_callback(DEVCB_##_devcb); + downcast(*device).set_write_o_callback(DEVCB_##_devcb); // P (P3-P0): output-only port #define MCFG_MB88XX_WRITE_P_CB(_devcb) \ - devcb = &downcast(*device).set_write_p_callback(DEVCB_##_devcb); + downcast(*device).set_write_p_callback(DEVCB_##_devcb); // R0 (R3-R0): input/output port #define MCFG_MB88XX_READ_R0_CB(_devcb) \ - devcb = &downcast(*device).set_read_r_callback(0, DEVCB_##_devcb); + downcast(*device).set_read_r_callback(0, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R0_CB(_devcb) \ - devcb = &downcast(*device).set_write_r_callback(0, DEVCB_##_devcb); + downcast(*device).set_write_r_callback(0, DEVCB_##_devcb); // R1 (R7-R4): input/output port #define MCFG_MB88XX_READ_R1_CB(_devcb) \ - devcb = &downcast(*device).set_read_r_callback(1, DEVCB_##_devcb); + downcast(*device).set_read_r_callback(1, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R1_CB(_devcb) \ - devcb = &downcast(*device).set_write_r_callback(1, DEVCB_##_devcb); + downcast(*device).set_write_r_callback(1, DEVCB_##_devcb); // R2 (R11-R8): input/output port #define MCFG_MB88XX_READ_R2_CB(_devcb) \ - devcb = &downcast(*device).set_read_r_callback(2, DEVCB_##_devcb); + downcast(*device).set_read_r_callback(2, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R2_CB(_devcb) \ - devcb = &downcast(*device).set_write_r_callback(2, DEVCB_##_devcb); + downcast(*device).set_write_r_callback(2, DEVCB_##_devcb); // R3 (R15-R12): input/output port #define MCFG_MB88XX_READ_R3_CB(_devcb) \ - devcb = &downcast(*device).set_read_r_callback(3, DEVCB_##_devcb); + downcast(*device).set_read_r_callback(3, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R3_CB(_devcb) \ - devcb = &downcast(*device).set_write_r_callback(3, DEVCB_##_devcb); + downcast(*device).set_write_r_callback(3, DEVCB_##_devcb); // SI: serial input #define MCFG_MB88XX_READ_SI_CB(_devcb) \ - devcb = &downcast(*device).set_read_si_callback(DEVCB_##_devcb); + downcast(*device).set_read_si_callback(DEVCB_##_devcb); // SO: serial output #define MCFG_MB88XX_WRITE_SO_CB(_devcb) \ - devcb = &downcast(*device).set_write_so_callback(DEVCB_##_devcb); + downcast(*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(*device).set_bus_cycle_cb((MCS40CB_##obj)); #define MCFG_I4004_SYNC_CB(obj) \ - devcb = &downcast(*device).set_sync_cb(DEVCB_##obj); + downcast(*device).set_sync_cb(DEVCB_##obj); #define MCFG_I4004_CM_ROM_CB(obj) \ - devcb = &downcast(*device).set_cm_rom_cb(DEVCB_##obj); + downcast(*device).set_cm_rom_cb(DEVCB_##obj); #define MCFG_I4004_CM_RAM0_CB(obj) \ - devcb = &downcast(*device).set_cm_ram_cb<0>(DEVCB_##obj); + downcast(*device).set_cm_ram_cb<0>(DEVCB_##obj); #define MCFG_I4004_CM_RAM1_CB(obj) \ - devcb = &downcast(*device).set_cm_ram_cb<1>(DEVCB_##obj); + downcast(*device).set_cm_ram_cb<1>(DEVCB_##obj); #define MCFG_I4004_CM_RAM2_CB(obj) \ - devcb = &downcast(*device).set_cm_ram_cb<2>(DEVCB_##obj); + downcast(*device).set_cm_ram_cb<2>(DEVCB_##obj); #define MCFG_I4004_CM_RAM3_CB(obj) \ - devcb = &downcast(*device).set_cm_ram_cb<3>(DEVCB_##obj); + downcast(*device).set_cm_ram_cb<3>(DEVCB_##obj); #define MCFG_I4004_4289_PM_CB(obj) \ - devcb = &downcast(*device).set_4289_pm_cb(DEVCB_##obj); + downcast(*device).set_4289_pm_cb(DEVCB_##obj); #define MCFG_I4004_4289_F_L_CB(obj) \ - devcb = &downcast(*device).set_4289_f_l_cb(DEVCB_##obj); + downcast(*device).set_4289_f_l_cb(DEVCB_##obj); #define MCFG_I4040_BUS_CYCLE_CB(obj) \ downcast(*device).set_bus_cycle_cb((MCS40CB_##obj)); #define MCFG_I4040_SYNC_CB(obj) \ - devcb = &downcast(*device).set_sync_cb(DEVCB_##obj); + downcast(*device).set_sync_cb(DEVCB_##obj); #define MCFG_I4040_CM_ROM0_CB(obj) \ - devcb = &downcast(*device).set_cm_rom_cb<0>(DEVCB_##obj); + downcast(*device).set_cm_rom_cb<0>(DEVCB_##obj); #define MCFG_I4040_CM_ROM1_CB(obj) \ - devcb = &downcast(*device).set_cm_rom_cb<1>(DEVCB_##obj); + downcast(*device).set_cm_rom_cb<1>(DEVCB_##obj); #define MCFG_I4040_CM_RAM0_CB(obj) \ - devcb = &downcast(*device).set_cm_ram_cb<0>(DEVCB_##obj); + downcast(*device).set_cm_ram_cb<0>(DEVCB_##obj); #define MCFG_I4040_CM_RAM1_CB(obj) \ - devcb = &downcast(*device).set_cm_ram_cb<1>(DEVCB_##obj); + downcast(*device).set_cm_ram_cb<1>(DEVCB_##obj); #define MCFG_I4040_CM_RAM2_CB(obj) \ - devcb = &downcast(*device).set_cm_ram_cb<2>(DEVCB_##obj); + downcast(*device).set_cm_ram_cb<2>(DEVCB_##obj); #define MCFG_I4040_CM_RAM3_CB(obj) \ - devcb = &downcast(*device).set_cm_ram_cb<3>(DEVCB_##obj); + downcast(*device).set_cm_ram_cb<3>(DEVCB_##obj); #define MCFG_I4040_CY_CB(obj) \ - devcb = &downcast(*device).set_cy_cb(DEVCB_##obj); + downcast(*device).set_cy_cb(DEVCB_##obj); #define MCFG_I4040_STP_ACK_CB(obj) \ - devcb = &downcast(*device).set_stp_ack_cb(DEVCB_##obj); + downcast(*device).set_stp_ack_cb(DEVCB_##obj); #define MCFG_I4040_4289_PM_CB(obj) \ - devcb = &downcast(*device).set_4289_pm_cb(DEVCB_##obj); + downcast(*device).set_4289_pm_cb(DEVCB_##obj); #define MCFG_I4040_4289_F_L_CB(obj) \ - devcb = &downcast(*device).set_4289_f_l_cb(DEVCB_##obj); + downcast(*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(*device).set_port_in_cb(0, DEVCB_##_devcb); + downcast(*device).set_port_in_cb(0, DEVCB_##_devcb); #define MCFG_MCS48_PORT_P1_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_port_out_cb(0, DEVCB_##_devcb); + downcast(*device).set_port_out_cb(0, DEVCB_##_devcb); #define MCFG_MCS48_PORT_P2_IN_CB(_devcb) \ - devcb = &downcast(*device).set_port_in_cb(1, DEVCB_##_devcb); + downcast(*device).set_port_in_cb(1, DEVCB_##_devcb); #define MCFG_MCS48_PORT_P2_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_port_out_cb(1, DEVCB_##_devcb); + downcast(*device).set_port_out_cb(1, DEVCB_##_devcb); #define MCFG_MCS48_PORT_T0_IN_CB(_devcb) \ - devcb = &downcast(*device).set_test_in_cb(0, DEVCB_##_devcb); + downcast(*device).set_test_in_cb(0, DEVCB_##_devcb); #define MCFG_MCS48_PORT_T0_CLK_DEVICE(_tag) \ downcast(*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(*device).set_t0_clk_cb(clock_update_delegate(&_class::_func, #_class "::" _func, owner)); #define MCFG_MCS48_PORT_T1_IN_CB(_devcb) \ - devcb = &downcast(*device).set_test_in_cb(1, DEVCB_##_devcb); + downcast(*device).set_test_in_cb(1, DEVCB_##_devcb); #define MCFG_MCS48_PORT_BUS_IN_CB(_devcb) \ - devcb = &downcast(*device).set_bus_in_cb(DEVCB_##_devcb); + downcast(*device).set_bus_in_cb(DEVCB_##_devcb); #define MCFG_MCS48_PORT_BUS_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_bus_out_cb(DEVCB_##_devcb); + downcast(*device).set_bus_out_cb(DEVCB_##_devcb); // PROG line to 8243 expander #define MCFG_MCS48_PORT_PROG_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_prog_out_cb(DEVCB_##_devcb); + downcast(*device).set_prog_out_cb(DEVCB_##_devcb); /*************************************************************************** @@ -149,6 +149,15 @@ public: template devcb_base &set_test_in_cb(int n, Object &&cb) { return m_test_in_cb[n].set_callback(std::forward(cb)); } template void set_t0_clk_cb(Object &&cb) { m_t0_clk_func = std::forward(cb); } template devcb_base &set_prog_out_cb(Object &&cb) { return m_prog_out_cb.set_callback(std::forward(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(*device).set_port_in_cb(0, DEVCB_##_devcb); + downcast(*device).set_port_in_cb(0, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P0_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_port_out_cb(0, DEVCB_##_devcb); + downcast(*device).set_port_out_cb(0, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P1_IN_CB(_devcb) \ - devcb = &downcast(*device).set_port_in_cb(1, DEVCB_##_devcb); + downcast(*device).set_port_in_cb(1, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P1_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_port_out_cb(1, DEVCB_##_devcb); + downcast(*device).set_port_out_cb(1, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P2_IN_CB(_devcb) \ - devcb = &downcast(*device).set_port_in_cb(2, DEVCB_##_devcb); + downcast(*device).set_port_in_cb(2, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P2_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_port_out_cb(2, DEVCB_##_devcb); + downcast(*device).set_port_out_cb(2, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P3_IN_CB(_devcb) \ - devcb = &downcast(*device).set_port_in_cb(3, DEVCB_##_devcb); + downcast(*device).set_port_in_cb(3, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P3_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_port_out_cb(3, DEVCB_##_devcb); + downcast(*device).set_port_out_cb(3, DEVCB_##_devcb); #define MCFG_MCS51_SERIAL_RX_CB(_devcb) \ - devcb = &downcast(*device).set_serial_rx_cb(DEVCB_##_devcb); + downcast(*device).set_serial_rx_cb(DEVCB_##_devcb); #define MCFG_MCS51_SERIAL_TX_CB(_devcb) \ - devcb = &downcast(*device).set_serial_tx_cb(DEVCB_##_devcb); + downcast(*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 devcb_base &set_serial_rx_cb(Object &&cb) { return m_serial_rx_cb.set_callback(std::forward(cb)); } template devcb_base &set_serial_tx_cb(Object &&cb) { return m_serial_tx_cb.set_callback(std::forward(cb)); } + template auto port_in_cb() { return m_port_in_cb[N].bind(); } + template 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(*device).set_read_k_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_d_callback(DEVCB_##_devcb); + downcast(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_MELPS4_WRITE_D_CB(_devcb) \ - devcb = &downcast(*device).set_write_d_callback(DEVCB_##_devcb); + downcast(*device).set_write_d_callback(DEVCB_##_devcb); // 8-bit S generic I/O port #define MCFG_MELPS4_READ_S_CB(_devcb) \ - devcb = &downcast(*device).set_read_s_callback(DEVCB_##_devcb); + downcast(*device).set_read_s_callback(DEVCB_##_devcb); #define MCFG_MELPS4_WRITE_S_CB(_devcb) \ - devcb = &downcast(*device).set_write_s_callback(DEVCB_##_devcb); + downcast(*device).set_write_s_callback(DEVCB_##_devcb); // 4-bit F generic I/O port #define MCFG_MELPS4_READ_F_CB(_devcb) \ - devcb = &downcast(*device).set_read_f_callback(DEVCB_##_devcb); + downcast(*device).set_read_f_callback(DEVCB_##_devcb); #define MCFG_MELPS4_WRITE_F_CB(_devcb) \ - devcb = &downcast(*device).set_write_f_callback(DEVCB_##_devcb); + downcast(*device).set_write_f_callback(DEVCB_##_devcb); // 4-bit G generic output port #define MCFG_MELPS4_WRITE_G_CB(_devcb) \ - devcb = &downcast(*device).set_write_g_callback(DEVCB_##_devcb); + downcast(*device).set_write_g_callback(DEVCB_##_devcb); // 1-bit U generic output port #define MCFG_MELPS4_WRITE_U_CB(_devcb) \ - devcb = &downcast(*device).set_write_u_callback(DEVCB_##_devcb); + downcast(*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(*device).set_write_t_callback(DEVCB_##_devcb); + downcast(*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(*device).set_endianness(_endianness); #define MCFG_R3000_BRCOND0_INPUT(_devcb) \ - devcb = &downcast(*device).set_brcond0_input(DEVCB_##_devcb); + downcast(*device).set_brcond0_input(DEVCB_##_devcb); #define MCFG_R3000_BRCOND1_INPUT(_devcb) \ - devcb = &downcast(*device).set_brcond1_input(DEVCB_##_devcb); + downcast(*device).set_brcond1_input(DEVCB_##_devcb); #define MCFG_R3000_BRCOND2_INPUT(_devcb) \ - devcb = &downcast(*device).set_brcond2_input(DEVCB_##_devcb); + downcast(*device).set_brcond2_input(DEVCB_##_devcb); #define MCFG_R3000_BRCOND3_INPUT(_devcb) \ - devcb = &downcast(*device).set_brcond3_input(DEVCB_##_devcb); + downcast(*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(*device).set_read_port##X##_callback(DEVCB_##_devcb); + downcast(*device).set_read_port##X##_callback(DEVCB_##_devcb); #define MCFG_MN10200_WRITE_PORT_CB(X, _devcb) \ - devcb = &downcast(*device).set_write_port##X##_callback(DEVCB_##_devcb); + downcast(*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(*device).set_dc_changed_func(DEVCB_##_devcb); + downcast(*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(*device).set_read_dc_func(DEVCB_##_devcb); + downcast(*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(*device).set_pt_in_cb(DEVCB_##_devcb); + downcast(*device).set_pt_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P0_READ_CB(_devcb) \ - devcb = &downcast(*device).set_p0_in_cb(DEVCB_##_devcb); + downcast(*device).set_p0_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P1_READ_CB(_devcb) \ - devcb = &downcast(*device).set_p1_in_cb(DEVCB_##_devcb); + downcast(*device).set_p1_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P2_READ_CB(_devcb) \ - devcb = &downcast(*device).set_p2_in_cb(DEVCB_##_devcb); + downcast(*device).set_p2_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P0_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_p0_out_cb(DEVCB_##_devcb); + downcast(*device).set_p0_out_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P1_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_p1_out_cb(DEVCB_##_devcb); + downcast(*device).set_p1_out_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P2_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_p2_out_cb(DEVCB_##_devcb); + downcast(*device).set_p2_out_cb(DEVCB_##_devcb); class v25_common_device : public cpu_device { @@ -58,10 +58,17 @@ public: template devcb_base &set_p0_in_cb(Object &&cb) { return m_p0_in.set_callback(std::forward(cb)); } template devcb_base &set_p1_in_cb(Object &&cb) { return m_p1_in.set_callback(std::forward(cb)); } template devcb_base &set_p2_in_cb(Object &&cb) { return m_p2_in.set_callback(std::forward(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 devcb_base &set_p0_out_cb(Object &&cb) { return m_p0_out.set_callback(std::forward(cb)); } template devcb_base &set_p1_out_cb(Object &&cb) { return m_p1_out.set_callback(std::forward(cb)); } template devcb_base &set_p2_out_cb(Object &&cb) { return m_p2_out.set_callback(std::forward(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(*device).set_txd_handler(DEVCB_##_devcb); + downcast(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_DTR_HANDLER(_devcb) \ - devcb = &downcast(*device).set_dtr_handler(DEVCB_##_devcb); + downcast(*device).set_dtr_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_RTS_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rts_handler(DEVCB_##_devcb); + downcast(*device).set_rts_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_RXRDY_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rxrdy_handler(DEVCB_##_devcb); + downcast(*device).set_rxrdy_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_TXRDY_HANDLER(_devcb) \ - devcb = &downcast(*device).set_txrdy_handler(DEVCB_##_devcb); + downcast(*device).set_txrdy_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_TXEMPTY_HANDLER(_devcb) \ - devcb = &downcast(*device).set_txempty_handler(DEVCB_##_devcb); + downcast(*device).set_txempty_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_SYNDET_HANDLER(_devcb) \ - devcb = &downcast(*device).set_syndet_handler(DEVCB_##_devcb); + downcast(*device).set_syndet_handler(DEVCB_##_devcb); // TCU #define MCFG_V53_TCU_CLK0(_clk) \ @@ -47,63 +47,63 @@ downcast(*device).set_clk2(_clk); #define MCFG_V53_TCU_OUT0_HANDLER(_devcb) \ - devcb = &downcast(*device).set_out0_handler(DEVCB_##_devcb); + downcast(*device).set_out0_handler(DEVCB_##_devcb); #define MCFG_V53_TCU_OUT1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_out1_handler(DEVCB_##_devcb); + downcast(*device).set_out1_handler(DEVCB_##_devcb); #define MCFG_V53_TCU_OUT2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_out2_handler(DEVCB_##_devcb); + downcast(*device).set_out2_handler(DEVCB_##_devcb); // DMAU #define MCFG_V53_DMAU_OUT_HREQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_hreq_callback(DEVCB_##_devcb); + downcast(*device).set_out_hreq_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_EOP_CB(_devcb) \ - devcb = &downcast(*device).set_out_eop_callback(DEVCB_##_devcb); + downcast(*device).set_out_eop_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_MEMR_CB(_devcb) \ - devcb = &downcast(*device).set_in_memr_callback(DEVCB_##_devcb); + downcast(*device).set_in_memr_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_MEMW_CB(_devcb) \ - devcb = &downcast(*device).set_out_memw_callback(DEVCB_##_devcb); + downcast(*device).set_out_memw_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_0_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_0_callback(DEVCB_##_devcb); + downcast(*device).set_in_ior_0_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_1_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_1_callback(DEVCB_##_devcb); + downcast(*device).set_in_ior_1_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_2_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_2_callback(DEVCB_##_devcb); + downcast(*device).set_in_ior_2_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_3_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_3_callback(DEVCB_##_devcb); + downcast(*device).set_in_ior_3_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_0_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_0_callback(DEVCB_##_devcb); + downcast(*device).set_out_iow_0_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_1_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_1_callback(DEVCB_##_devcb); + downcast(*device).set_out_iow_1_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_2_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_2_callback(DEVCB_##_devcb); + downcast(*device).set_out_iow_2_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_3_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_3_callback(DEVCB_##_devcb); + downcast(*device).set_out_iow_3_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_0_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_0_callback(DEVCB_##_devcb); + downcast(*device).set_out_dack_0_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_1_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_1_callback(DEVCB_##_devcb); + downcast(*device).set_out_dack_1_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_2_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_2_callback(DEVCB_##_devcb); + downcast(*device).set_out_dack_2_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_3_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_3_callback(DEVCB_##_devcb); + downcast(*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(*device).set_rc_read_callback(DEVCB_##_devcb); + downcast(*device).set_rc_read_callback(DEVCB_##_devcb); #define MCFG_PATINHO_BUTTONS_READ_CB(_devcb) \ - devcb = &downcast(*device).set_buttons_read_callback(DEVCB_##_devcb); + downcast(*device).set_buttons_read_callback(DEVCB_##_devcb); #define MCFG_PATINHO_IODEV_READ_CB(devnumber, _devcb) \ - devcb = &downcast(*device).set_iodev_read_callback(devnumber, DEVCB_##_devcb); + downcast(*device).set_iodev_read_callback(devnumber, DEVCB_##_devcb); #define MCFG_PATINHO_IODEV_WRITE_CB(devnumber, _devcb) \ - devcb = &downcast(*device).set_iodev_write_callback(devnumber, DEVCB_##_devcb); + downcast(*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(*device).set_read_a_callback(DEVCB_##_devcb); + downcast(*device).set_read_a_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_A_CB(_devcb) \ - devcb = &downcast(*device).set_write_a_callback(DEVCB_##_devcb); + downcast(*device).set_write_a_callback(DEVCB_##_devcb); // port b, 8 bits, 2-way #define MCFG_PIC16C5x_READ_B_CB(_devcb) \ - devcb = &downcast(*device).set_read_b_callback(DEVCB_##_devcb); + downcast(*device).set_read_b_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_B_CB(_devcb) \ - devcb = &downcast(*device).set_write_b_callback(DEVCB_##_devcb); + downcast(*device).set_write_b_callback(DEVCB_##_devcb); // port c, 8 bits, 2-way #define MCFG_PIC16C5x_READ_C_CB(_devcb) \ - devcb = &downcast(*device).set_read_c_callback(DEVCB_##_devcb); + downcast(*device).set_read_c_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_C_CB(_devcb) \ - devcb = &downcast(*device).set_write_c_callback(DEVCB_##_devcb); + downcast(*device).set_write_c_callback(DEVCB_##_devcb); // port d, 8 bits, 2-way #define MCFG_PIC16C5x_READ_D_CB(_devcb) \ - devcb = &downcast(*device).set_read_d_callback(DEVCB_##_devcb); + downcast(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_D_CB(_devcb) \ - devcb = &downcast(*device).set_write_d_callback(DEVCB_##_devcb); + downcast(*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(*device).set_dia_cb(DEVCB_##_devcb); + downcast(*device).set_dia_cb(DEVCB_##_devcb); #define MCFG_PPS4_DISCRETE_INPUT_B_CB(_devcb) \ - devcb = &downcast(*device).set_dib_cb(DEVCB_##_devcb); + downcast(*device).set_dib_cb(DEVCB_##_devcb); #define MCFG_PPS4_DISCRETE_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_do_cb(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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("dma")->install_write_handler( channel, handler ); #define MCFG_PSX_GPU_READ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_gpu_read_handler(DEVCB_##_devcb); + downcast(*device).set_gpu_read_handler(DEVCB_##_devcb); #define MCFG_PSX_GPU_WRITE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_gpu_write_handler(DEVCB_##_devcb); + downcast(*device).set_gpu_write_handler(DEVCB_##_devcb); #define MCFG_PSX_SPU_READ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_spu_read_handler(DEVCB_##_devcb); + downcast(*device).set_spu_read_handler(DEVCB_##_devcb); #define MCFG_PSX_SPU_WRITE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_spu_write_handler(DEVCB_##_devcb); + downcast(*device).set_spu_write_handler(DEVCB_##_devcb); #define MCFG_PSX_CD_READ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cd_read_handler(DEVCB_##_devcb); + downcast(*device).set_cd_read_handler(DEVCB_##_devcb); #define MCFG_PSX_CD_WRITE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cd_write_handler(DEVCB_##_devcb); + downcast(*device).set_cd_write_handler(DEVCB_##_devcb); #define MCFG_PSX_DISABLE_ROM_BERR \ downcast(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(*device).set_irq0_handler(DEVCB_##_devcb); + downcast(*device).set_irq0_handler(DEVCB_##_devcb); #define MCFG_PSX_RCNT_IRQ1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_irq1_handler(DEVCB_##_devcb); + downcast(*device).set_irq1_handler(DEVCB_##_devcb); #define MCFG_PSX_RCNT_IRQ2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_irq2_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_SCK_HANDLER(_devcb) \ - devcb = &downcast(*device).set_sck_handler(DEVCB_##_devcb); + downcast(*device).set_sck_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_TXD_HANDLER(_devcb) \ - devcb = &downcast(*device).set_txd_handler(DEVCB_##_devcb); + downcast(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_DTR_HANDLER(_devcb) \ - devcb = &downcast(*device).set_dtr_handler(DEVCB_##_devcb); + downcast(*device).set_dtr_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_RTS_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rts_handler(DEVCB_##_devcb); + downcast(*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(*device).set_dp_reg_r_callback(DEVCB_##_devcb); + downcast(*device).set_dp_reg_r_callback(DEVCB_##_devcb); #define MCFG_RSP_DP_REG_W_CB(_devcb) \ - devcb = &downcast(*device).set_dp_reg_w_callback(DEVCB_##_devcb); + downcast(*device).set_dp_reg_w_callback(DEVCB_##_devcb); #define MCFG_RSP_SP_REG_R_CB(_devcb) \ - devcb = &downcast(*device).set_sp_reg_r_callback(DEVCB_##_devcb); + downcast(*device).set_sp_reg_r_callback(DEVCB_##_devcb); #define MCFG_RSP_SP_REG_W_CB(_devcb) \ - devcb = &downcast(*device).set_sp_reg_w_callback(DEVCB_##_devcb); + downcast(*device).set_sp_reg_w_callback(DEVCB_##_devcb); #define MCFG_RSP_SP_SET_STATUS_CB(_devcb) \ - devcb = &downcast(*device).set_status_callback(DEVCB_##_devcb); + downcast(*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(*device).set_sense_handler(DEVCB_##_devcb); + downcast(*device).set_sense_handler(DEVCB_##_devcb); #define MCFG_S2650_FLAG_OUTPUT(_devcb) \ - devcb = &downcast(*device).set_flag_handler(DEVCB_##_devcb); + downcast(*device).set_flag_handler(DEVCB_##_devcb); #define MCFG_S2650_INTACK_HANDLER(_devcb) \ - devcb = &downcast(*device).set_intack_handler(DEVCB_##_devcb); + downcast(*device).set_intack_handler(DEVCB_##_devcb); class s2650_device : public cpu_device, public s2650_disassembler::config { @@ -46,6 +46,9 @@ public: template devcb_base &set_sense_handler(Object &&cb) { return m_sense_handler.set_callback(std::forward(cb)); } template devcb_base &set_flag_handler(Object &&cb) { return m_flag_handler.set_callback(std::forward(cb)); } template devcb_base &set_intack_handler(Object &&cb) { return m_intack_handler.set_callback(std::forward(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(*device).set_reset_cb(DEVCB_##_devcb); + downcast(*device).set_reset_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_BRK_HANDLER(_devcb) \ - devcb = &downcast(*device).set_brk_cb(DEVCB_##_devcb); + downcast(*device).set_brk_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_X_HANDLER(_devcb) \ - devcb = &downcast(*device).set_x_cb(DEVCB_##_devcb); + downcast(*device).set_x_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_A_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ina_cb(DEVCB_##_devcb); + downcast(*device).set_ina_cb(DEVCB_##_devcb); #define MCFG_SC61860_WRITE_A_HANDLER(_devcb) \ - devcb = &downcast(*device).set_outa_cb(DEVCB_##_devcb); + downcast(*device).set_outa_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_B_HANDLER(_devcb) \ - devcb = &downcast(*device).set_inb_cb(DEVCB_##_devcb); + downcast(*device).set_inb_cb(DEVCB_##_devcb); #define MCFG_SC61860_WRITE_B_HANDLER(_devcb) \ - devcb = &downcast(*device).set_outb_cb(DEVCB_##_devcb); + downcast(*device).set_outb_cb(DEVCB_##_devcb); #define MCFG_SC61860_WRITE_C_HANDLER(_devcb) \ - devcb = &downcast(*device).set_outc_cb(DEVCB_##_devcb); + downcast(*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(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_SCUDSP_IN_DMA_CB(_devcb) \ - devcb = &downcast(*device).set_in_dma_callback(DEVCB_##_devcb); + downcast(*device).set_in_dma_callback(DEVCB_##_devcb); #define MCFG_SCUDSP_OUT_DMA_CB(_devcb) \ - devcb = &downcast(*device).set_out_dma_callback(DEVCB_##_devcb); + downcast(*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(*device).set_write_o_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_k_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_ba_callback(DEVCB_##_devcb); + downcast(*device).set_read_ba_callback(DEVCB_##_devcb); // 1-bit B(beta) input pin (pull-up) #define MCFG_SM510_READ_B_CB(_devcb) \ - devcb = &downcast(*device).set_read_b_callback(DEVCB_##_devcb); + downcast(*device).set_read_b_callback(DEVCB_##_devcb); // 8-bit S strobe output port #define MCFG_SM510_WRITE_S_CB(_devcb) \ - devcb = &downcast(*device).set_write_s_callback(DEVCB_##_devcb); + downcast(*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(*device).set_write_r_callback(DEVCB_##_devcb); + downcast(*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(*device).set_write_sega_callback(DEVCB_##_devcb); + downcast(*device).set_write_sega_callback(DEVCB_##_devcb); #define MCFG_SM510_WRITE_SEGB_CB(_devcb) \ - devcb = &downcast(*device).set_write_segb_callback(DEVCB_##_devcb); + downcast(*device).set_write_segb_callback(DEVCB_##_devcb); #define MCFG_SM510_WRITE_SEGC_CB(_devcb) \ - devcb = &downcast(*device).set_write_segc_callback(DEVCB_##_devcb); + downcast(*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(*device).set_write_segbs_callback(DEVCB_##_devcb); + downcast(*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(*device).set_dma_cb(DEVCB_##_devcb); + downcast(*device).set_dma_cb(DEVCB_##_devcb); #define MCFG_SM8500_TIMER_CB(_devcb) \ - devcb = &downcast(*device).set_timer_cb(DEVCB_##_devcb); + downcast(*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(*device).set_out_irq_func(DEVCB_##_devcb); + downcast(*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(*device).set_initial_mode(_mode); #define MCFG_T11_RESET(_devcb) \ - devcb = &downcast(*device).set_out_reset_func(DEVCB_##_devcb); + downcast(*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(*device).set_port_read_cb(0, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(0, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P1_READ_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_cb(1, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(1, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P2_READ_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_cb(2, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(2, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P3_READ_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_cb(3, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(3, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P4_READ_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_cb(4, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(4, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P5_READ_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_cb(5, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(5, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P6_READ_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_cb(6, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(6, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P7_READ_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_cb(7, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(7, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P8_READ_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_cb(8, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(8, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P0_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(0, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(0, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P1_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(1, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(1, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P2_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(2, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(2, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P3_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(3, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(3, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P4_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(4, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(4, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P5_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(5, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(5, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P6_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(6, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(6, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P7_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(7, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(7, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P8_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(8, DEVCB_##_devcb); + downcast(*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(*device).set_port1_read(DEVCB_##_port_read); + downcast(*device).set_port1_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT1_WRITE( _port_write ) \ - devcb = &downcast(*device).set_port1_write(DEVCB_##_port_write); + downcast(*device).set_port1_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT2_WRITE( _port_write ) \ - devcb = &downcast(*device).set_port2_write(DEVCB_##_port_write); + downcast(*device).set_port2_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT5_READ( _port_read ) \ - devcb = &downcast(*device).set_port5_read(DEVCB_##_port_read); + downcast(*device).set_port5_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT5_WRITE( _port_write ) \ - devcb = &downcast(*device).set_port5_write(DEVCB_##_port_write); + downcast(*device).set_port5_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT6_READ( _port_read ) \ - devcb = &downcast(*device).set_port6_read(DEVCB_##_port_read); + downcast(*device).set_port6_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT6_WRITE( _port_write ) \ - devcb = &downcast(*device).set_port6_write(DEVCB_##_port_write); + downcast(*device).set_port6_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT7_READ( _port_read ) \ - devcb = &downcast(*device).set_port7_read(DEVCB_##_port_read); + downcast(*device).set_port7_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT7_WRITE( _port_write ) \ - devcb = &downcast(*device).set_port7_write(DEVCB_##_port_write); + downcast(*device).set_port7_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT8_READ( _port_read ) \ - devcb = &downcast(*device).set_port8_read(DEVCB_##_port_read); + downcast(*device).set_port8_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT8_WRITE( _port_write ) \ - devcb = &downcast(*device).set_port8_write(DEVCB_##_port_write); + downcast(*device).set_port8_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT9_READ( _port_read ) \ - devcb = &downcast(*device).set_port9_read(DEVCB_##_port_read); + downcast(*device).set_port9_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORTA_READ( _port_read ) \ - devcb = &downcast(*device).set_porta_read(DEVCB_##_port_read); + downcast(*device).set_porta_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORTA_WRITE( _port_write ) \ - devcb = &downcast(*device).set_porta_write(DEVCB_##_port_write); + downcast(*device).set_porta_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORTB_READ( _port_read ) \ - devcb = &downcast(*device).set_portb_read(DEVCB_##_port_read); + downcast(*device).set_portb_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORTB_WRITE( _port_write ) \ - devcb = &downcast(*device).set_portb_write(DEVCB_##_port_write); + downcast(*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(*device).set_port0_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORT0_WRITE( _port_write ) devcb = &downcast(*device).set_port0_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORT1_READ( _port_read ) devcb = &downcast(*device).set_port1_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORT1_WRITE( _port_write ) devcb = &downcast(*device).set_port1_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORT2_READ( _port_read ) devcb = &downcast(*device).set_port2_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORT2_WRITE( _port_write ) devcb = &downcast(*device).set_port2_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORT3_READ( _port_read ) devcb = &downcast(*device).set_port3_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORT3_WRITE( _port_write ) devcb = &downcast(*device).set_port3_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORT4_READ( _port_read ) devcb = &downcast(*device).set_port4_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORT4_WRITE( _port_write ) devcb = &downcast(*device).set_port4_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORT5_READ( _port_read ) devcb = &downcast(*device).set_port5_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORT5_WRITE( _port_write ) devcb = &downcast(*device).set_port5_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORT6_READ( _port_read ) devcb = &downcast(*device).set_port6_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORT6_WRITE( _port_write ) devcb = &downcast(*device).set_port6_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORT7_READ( _port_read ) devcb = &downcast(*device).set_port7_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORT7_WRITE( _port_write ) devcb = &downcast(*device).set_port7_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORT8_READ( _port_read ) devcb = &downcast(*device).set_port8_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORT8_WRITE( _port_write ) devcb = &downcast(*device).set_port8_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORT9_READ( _port_read ) devcb = &downcast(*device).set_port9_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORT9_WRITE( _port_write ) devcb = &downcast(*device).set_port9_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORTA_READ( _port_read ) devcb = &downcast(*device).set_porta_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORTA_WRITE( _port_write ) devcb = &downcast(*device).set_porta_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORTB_READ( _port_read ) devcb = &downcast(*device).set_portb_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORTB_WRITE( _port_write ) devcb = &downcast(*device).set_portb_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORTC_READ( _port_read ) devcb = &downcast(*device).set_portc_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORTC_WRITE( _port_write ) devcb = &downcast(*device).set_portc_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORTD_READ( _port_read ) devcb = &downcast(*device).set_portd_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORTD_WRITE( _port_write ) devcb = &downcast(*device).set_portd_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_PORTE_READ( _port_read ) devcb = &downcast(*device).set_porte_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_PORTE_WRITE( _port_write ) devcb = &downcast(*device).set_porte_write(DEVCB_##_port_write); -#define MCFG_TMP95C063_AN0_READ( _port_read ) devcb = &downcast(*device).set_an0_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_AN1_READ( _port_read ) devcb = &downcast(*device).set_an1_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_AN2_READ( _port_read ) devcb = &downcast(*device).set_an2_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_AN3_READ( _port_read ) devcb = &downcast(*device).set_an3_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_AN4_READ( _port_read ) devcb = &downcast(*device).set_an4_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_AN5_READ( _port_read ) devcb = &downcast(*device).set_an5_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_AN6_READ( _port_read ) devcb = &downcast(*device).set_an6_read(DEVCB_##_port_read); -#define MCFG_TMP95C063_AN7_READ( _port_read ) devcb = &downcast(*device).set_an7_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT0_READ( _port_read ) downcast(*device).set_port0_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT0_WRITE( _port_write ) downcast(*device).set_port0_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT1_READ( _port_read ) downcast(*device).set_port1_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT1_WRITE( _port_write ) downcast(*device).set_port1_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT2_READ( _port_read ) downcast(*device).set_port2_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT2_WRITE( _port_write ) downcast(*device).set_port2_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT3_READ( _port_read ) downcast(*device).set_port3_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT3_WRITE( _port_write ) downcast(*device).set_port3_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT4_READ( _port_read ) downcast(*device).set_port4_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT4_WRITE( _port_write ) downcast(*device).set_port4_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT5_READ( _port_read ) downcast(*device).set_port5_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT5_WRITE( _port_write ) downcast(*device).set_port5_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT6_READ( _port_read ) downcast(*device).set_port6_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT6_WRITE( _port_write ) downcast(*device).set_port6_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT7_READ( _port_read ) downcast(*device).set_port7_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT7_WRITE( _port_write ) downcast(*device).set_port7_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT8_READ( _port_read ) downcast(*device).set_port8_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT8_WRITE( _port_write ) downcast(*device).set_port8_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT9_READ( _port_read ) downcast(*device).set_port9_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT9_WRITE( _port_write ) downcast(*device).set_port9_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTA_READ( _port_read ) downcast(*device).set_porta_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTA_WRITE( _port_write ) downcast(*device).set_porta_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTB_READ( _port_read ) downcast(*device).set_portb_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTB_WRITE( _port_write ) downcast(*device).set_portb_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTC_READ( _port_read ) downcast(*device).set_portc_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTC_WRITE( _port_write ) downcast(*device).set_portc_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTD_READ( _port_read ) downcast(*device).set_portd_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTD_WRITE( _port_write ) downcast(*device).set_portd_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTE_READ( _port_read ) downcast(*device).set_porte_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTE_WRITE( _port_write ) downcast(*device).set_porte_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_AN0_READ( _port_read ) downcast(*device).set_an0_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN1_READ( _port_read ) downcast(*device).set_an1_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN2_READ( _port_read ) downcast(*device).set_an2_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN3_READ( _port_read ) downcast(*device).set_an3_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN4_READ( _port_read ) downcast(*device).set_an4_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN5_READ( _port_read ) downcast(*device).set_an5_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN6_READ( _port_read ) downcast(*device).set_an6_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN7_READ( _port_read ) downcast(*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(*device).set_read_ctl_callback(DEVCB_##_devcb); + downcast(*device).set_read_ctl_callback(DEVCB_##_devcb); #define MCFG_TMS0270_WRITE_CTL_CB(_devcb) \ - devcb = &downcast(*device).set_write_ctl_callback(DEVCB_##_devcb); + downcast(*device).set_write_ctl_callback(DEVCB_##_devcb); #define MCFG_TMS0270_WRITE_PDC_CB(_devcb) \ - devcb = &downcast(*device).set_write_pdc_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_k_callback(DEVCB_##_devcb); + downcast(*device).set_read_k_callback(DEVCB_##_devcb); // O/Segment output pins #define MCFG_TMS1XXX_WRITE_O_CB(_devcb) \ - devcb = &downcast(*device).set_write_o_callback(DEVCB_##_devcb); + downcast(*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(*device).set_write_r_callback(DEVCB_##_devcb); + downcast(*device).set_write_r_callback(DEVCB_##_devcb); // OFF request on TMS0980 and up #define MCFG_TMS1XXX_POWER_OFF_CB(_devcb) \ - devcb = &downcast(*device).set_power_off_callback(DEVCB_##_devcb); + downcast(*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(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */ + downcast(*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(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */ + downcast(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */ #define MCFG_TMS32025_HOLD_IN_CB(_devcb) \ - devcb = &downcast(*device).set_hold_in_cb(DEVCB_##_devcb); /* HOLD input */ + downcast(*device).set_hold_in_cb(DEVCB_##_devcb); /* HOLD input */ #define MCFG_TMS32025_HOLD_ACK_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_hold_ack_out_cb(DEVCB_##_devcb); /* HOLD Acknowledge output */ + downcast(*device).set_hold_ack_out_cb(DEVCB_##_devcb); /* HOLD Acknowledge output */ #define MCFG_TMS32025_XF_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_xf_out_cb(DEVCB_##_devcb); /* XF output */ + downcast(*device).set_xf_out_cb(DEVCB_##_devcb); /* XF output */ #define MCFG_TMS32025_DR_IN_CB(_devcb) \ - devcb = &downcast(*device).set_dr_in_cb(DEVCB_##_devcb); /* Serial Data Receive input */ + downcast(*device).set_dr_in_cb(DEVCB_##_devcb); /* Serial Data Receive input */ #define MCFG_TMS32025_DX_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_dx_out_cb(DEVCB_##_devcb); /* Serial Data Transmit output */ + downcast(*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(*device).set_mcbl_mode(_mode); #define MCFG_TMS3203X_XF0_CB(_devcb) \ - devcb = &downcast(*device).set_xf0_callback(DEVCB_##_devcb); + downcast(*device).set_xf0_callback(DEVCB_##_devcb); #define MCFG_TMS3203X_XF1_CB(_devcb) \ - devcb = &downcast(*device).set_xf1_callback(DEVCB_##_devcb); + downcast(*device).set_xf1_callback(DEVCB_##_devcb); #define MCFG_TMS3203X_IACK_CB(_devcb) \ - devcb = &downcast(*device).set_iack_callback(DEVCB_##_devcb); + downcast(*device).set_iack_callback(DEVCB_##_devcb); #define MCFG_TMS3203X_HOLDA_CB(_devcb) \ - devcb = &downcast(*device).set_holda_callback(DEVCB_##_devcb); + downcast(*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(*device).set_output_int_callback(DEVCB_##_devcb); + downcast(*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(*device).set_port_read_cb(0, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(0, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTA_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(0, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(0, DEVCB_##_devcb); // write-only #define MCFG_TMS7000_OUT_PORTB_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(1, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(1, DEVCB_##_devcb); #define MCFG_TMS7000_IN_PORTC_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_cb(2, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(2, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTC_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(2, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(2, DEVCB_##_devcb); #define MCFG_TMS7000_IN_PORTD_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_cb(3, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(3, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTD_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(3, DEVCB_##_devcb); + downcast(*device).set_port_write_cb(3, DEVCB_##_devcb); // TMS70C46 only #define MCFG_TMS7000_IN_PORTE_CB(_devcb) \ - devcb = &downcast(*device).set_port_read_cb(4, DEVCB_##_devcb); + downcast(*device).set_port_read_cb(4, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTE_CB(_devcb) \ - devcb = &downcast(*device).set_port_write_cb(4, DEVCB_##_devcb); + downcast(*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(*device).set_extop_callback(DEVCB_##_extop); + downcast(*device).set_extop_callback(DEVCB_##_extop); #define MCFG_TMS9995_IAQ_HANDLER( _iaq ) \ - devcb = &downcast(*device).set_iaq_callback(DEVCB_##_iaq); + downcast(*device).set_iaq_callback(DEVCB_##_iaq); #define MCFG_TMS9995_CLKOUT_HANDLER( _clkout ) \ - devcb = &downcast(*device).set_clkout_callback(DEVCB_##_clkout); + downcast(*device).set_clkout_callback(DEVCB_##_clkout); #define MCFG_TMS9995_HOLDA_HANDLER( _holda ) \ - devcb = &downcast(*device).set_holda_callback(DEVCB_##_holda); + downcast(*device).set_holda_callback(DEVCB_##_holda); #define MCFG_TMS9995_DBIN_HANDLER( _dbin ) \ - devcb = &downcast(*device).set_dbin_callback(DEVCB_##_dbin); + downcast(*device).set_dbin_callback(DEVCB_##_dbin); #define MCFG_TMS9995_ENABLE_OVINT( _ovint ) \ downcast(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(*device).set_extop_callback(DEVCB_##_extop); + downcast(*device).set_extop_callback(DEVCB_##_extop); #define MCFG_TMS99xx_INTLEVEL_HANDLER( _intlevel ) \ - devcb = &downcast(*device).set_intlevel_callback(DEVCB_##_intlevel); + downcast(*device).set_intlevel_callback(DEVCB_##_intlevel); #define MCFG_TMS99xx_IAQ_HANDLER( _iaq ) \ - devcb = &downcast(*device).set_iaq_callback(DEVCB_##_iaq); + downcast(*device).set_iaq_callback(DEVCB_##_iaq); #define MCFG_TMS99xx_CLKOUT_HANDLER( _clkout ) \ - devcb = &downcast(*device).set_clkout_callback(DEVCB_##_clkout); + downcast(*device).set_clkout_callback(DEVCB_##_clkout); #define MCFG_TMS99xx_WAIT_HANDLER( _wait ) \ - devcb = &downcast(*device).set_wait_callback(DEVCB_##_wait); + downcast(*device).set_wait_callback(DEVCB_##_wait); #define MCFG_TMS99xx_HOLDA_HANDLER( _holda ) \ - devcb = &downcast(*device).set_holda_callback(DEVCB_##_holda); + downcast(*device).set_holda_callback(DEVCB_##_holda); #define MCFG_TMS99xx_DBIN_HANDLER( _dbin ) \ - devcb = &downcast(*device).set_dbin_callback(DEVCB_##_dbin); + downcast(*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(*device).set_read_a_callback(DEVCB_##_devcb); + downcast(*device).set_read_a_callback(DEVCB_##_devcb); #define MCFG_UCOM4_READ_B_CB(_devcb) \ - devcb = &downcast(*device).set_read_b_callback(DEVCB_##_devcb); + downcast(*device).set_read_b_callback(DEVCB_##_devcb); #define MCFG_UCOM4_READ_C_CB(_devcb) \ - devcb = &downcast(*device).set_read_c_callback(DEVCB_##_devcb); + downcast(*device).set_read_c_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_C_CB(_devcb) \ - devcb = &downcast(*device).set_write_c_callback(DEVCB_##_devcb); + downcast(*device).set_write_c_callback(DEVCB_##_devcb); #define MCFG_UCOM4_READ_D_CB(_devcb) \ - devcb = &downcast(*device).set_read_d_callback(DEVCB_##_devcb); + downcast(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_D_CB(_devcb) \ - devcb = &downcast(*device).set_write_d_callback(DEVCB_##_devcb); + downcast(*device).set_write_d_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_E_CB(_devcb) \ - devcb = &downcast(*device).set_write_e_callback(DEVCB_##_devcb); + downcast(*device).set_write_e_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_F_CB(_devcb) \ - devcb = &downcast(*device).set_write_f_callback(DEVCB_##_devcb); + downcast(*device).set_write_f_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_G_CB(_devcb) \ - devcb = &downcast(*device).set_write_g_callback(DEVCB_##_devcb); + downcast(*device).set_write_g_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_H_CB(_devcb) \ - devcb = &downcast(*device).set_write_h_callback(DEVCB_##_devcb); + downcast(*device).set_write_h_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_I_CB(_devcb) \ - devcb = &downcast(*device).set_write_i_callback(DEVCB_##_devcb); + downcast(*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(*device).set_in_int_callback(DEVCB_##_devcb); + downcast(*device).set_in_int_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SI_CB(_devcb) \ - devcb = &downcast(*device).set_in_si_callback(DEVCB_##_devcb); + downcast(*device).set_in_si_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SCK_CB(_devcb) \ - devcb = &downcast(*device).set_in_sck_callback(DEVCB_##_devcb); + downcast(*device).set_in_sck_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SIEN_CB(_devcb) \ - devcb = &downcast(*device).set_in_sien_callback(DEVCB_##_devcb); + downcast(*device).set_in_sien_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SOEN_CB(_devcb) \ - devcb = &downcast(*device).set_in_soen_callback(DEVCB_##_devcb); + downcast(*device).set_in_soen_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_DACK_CB(_devcb) \ - devcb = &downcast(*device).set_in_dack_callback(DEVCB_##_devcb); + downcast(*device).set_in_dack_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_P0_CB(_devcb) \ - devcb = &downcast(*device).set_out_p0_callback(DEVCB_##_devcb); + downcast(*device).set_out_p0_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_P1_CB(_devcb) \ - devcb = &downcast(*device).set_out_p1_callback(DEVCB_##_devcb); + downcast(*device).set_out_p1_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_SO_CB(_devcb) \ - devcb = &downcast(*device).set_out_so_callback(DEVCB_##_devcb); + downcast(*device).set_out_so_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_SORQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_sorq_callback(DEVCB_##_devcb); + downcast(*device).set_out_sorq_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_DRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_drq_callback(DEVCB_##_devcb); + downcast(*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(*device).set_to_func(DEVCB_##_devcb); + downcast(*device).set_to_func(DEVCB_##_devcb); #define MCFG_UPD7810_CO0(_devcb) \ - devcb = &downcast(*device).set_co0_func(DEVCB_##_devcb); + downcast(*device).set_co0_func(DEVCB_##_devcb); #define MCFG_UPD7810_CO1(_devcb) \ - devcb = &downcast(*device).set_co1_func(DEVCB_##_devcb); + downcast(*device).set_co1_func(DEVCB_##_devcb); #define MCFG_UPD7810_TXD(_devcb) \ - devcb = &downcast(*device).set_txd_func(DEVCB_##_devcb); + downcast(*device).set_txd_func(DEVCB_##_devcb); #define MCFG_UPD7810_RXD(_devcb) \ - devcb = &downcast(*device).set_rxd_func(DEVCB_##_devcb); + downcast(*device).set_rxd_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN0(_devcb) \ - devcb = &downcast(*device).set_an0_func(DEVCB_##_devcb); + downcast(*device).set_an0_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN1(_devcb) \ - devcb = &downcast(*device).set_an1_func(DEVCB_##_devcb); + downcast(*device).set_an1_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN2(_devcb) \ - devcb = &downcast(*device).set_an2_func(DEVCB_##_devcb); + downcast(*device).set_an2_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN3(_devcb) \ - devcb = &downcast(*device).set_an3_func(DEVCB_##_devcb); + downcast(*device).set_an3_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN4(_devcb) \ - devcb = &downcast(*device).set_an4_func(DEVCB_##_devcb); + downcast(*device).set_an4_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN5(_devcb) \ - devcb = &downcast(*device).set_an5_func(DEVCB_##_devcb); + downcast(*device).set_an5_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN6(_devcb) \ - devcb = &downcast(*device).set_an6_func(DEVCB_##_devcb); + downcast(*device).set_an6_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN7(_devcb) \ - devcb = &downcast(*device).set_an7_func(DEVCB_##_devcb); + downcast(*device).set_an7_func(DEVCB_##_devcb); #define MCFG_UPD7810_PORTA_READ_CB(_devcb) \ - devcb = &downcast(*device).set_pa_in_cb(DEVCB_##_devcb); + downcast(*device).set_pa_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTB_READ_CB(_devcb) \ - devcb = &downcast(*device).set_pb_in_cb(DEVCB_##_devcb); + downcast(*device).set_pb_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTC_READ_CB(_devcb) \ - devcb = &downcast(*device).set_pc_in_cb(DEVCB_##_devcb); + downcast(*device).set_pc_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTD_READ_CB(_devcb) \ - devcb = &downcast(*device).set_pd_in_cb(DEVCB_##_devcb); + downcast(*device).set_pd_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTF_READ_CB(_devcb) \ - devcb = &downcast(*device).set_pf_in_cb(DEVCB_##_devcb); + downcast(*device).set_pf_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTA_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_pa_out_cb(DEVCB_##_devcb); + downcast(*device).set_pa_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTB_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_pb_out_cb(DEVCB_##_devcb); + downcast(*device).set_pb_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTC_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_pc_out_cb(DEVCB_##_devcb); + downcast(*device).set_pc_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTD_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_pd_out_cb(DEVCB_##_devcb); + downcast(*device).set_pd_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTF_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_pf_out_cb(DEVCB_##_devcb); + downcast(*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(*device).set_pt_in_cb(DEVCB_##_devcb); + downcast(*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(*device).set_input_cb(0, DEVCB_##_devcb); + downcast(*device).set_input_cb(0, DEVCB_##_devcb); #define MCFG_Z8_PORT_P1_READ_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(1, DEVCB_##_devcb); + downcast(*device).set_input_cb(1, DEVCB_##_devcb); #define MCFG_Z8_PORT_P2_READ_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(2, DEVCB_##_devcb); + downcast(*device).set_input_cb(2, DEVCB_##_devcb); #define MCFG_Z8_PORT_P3_READ_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(3, DEVCB_##_devcb); + downcast(*device).set_input_cb(3, DEVCB_##_devcb); #define MCFG_Z8_PORT_P0_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(0, DEVCB_##_devcb); + downcast(*device).set_output_cb(0, DEVCB_##_devcb); #define MCFG_Z8_PORT_P1_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(1, DEVCB_##_devcb); + downcast(*device).set_output_cb(1, DEVCB_##_devcb); #define MCFG_Z8_PORT_P2_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(2, DEVCB_##_devcb); + downcast(*device).set_output_cb(2, DEVCB_##_devcb); #define MCFG_Z8_PORT_P3_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(3, DEVCB_##_devcb); + downcast(*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(*device).set_zc0_callback(DEVCB_##_devcb); + downcast(*device).set_zc0_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C011_ZC1_CB(_devcb) \ - devcb = &downcast(*device).set_zc1_callback(DEVCB_##_devcb); + downcast(*device).set_zc1_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C011_ZC2_CB(_devcb) \ - devcb = &downcast(*device).set_zc2_callback(DEVCB_##_devcb); + downcast(*device).set_zc2_callback(DEVCB_##_devcb); // I/O callbacks #define MCFG_TMPZ84C011_PORTA_READ_CB(_devcb) \ - devcb = &downcast(*device).set_inportsa_cb(DEVCB_##_devcb); + downcast(*device).set_inportsa_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTB_READ_CB(_devcb) \ - devcb = &downcast(*device).set_inportsb_cb(DEVCB_##_devcb); + downcast(*device).set_inportsb_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTC_READ_CB(_devcb) \ - devcb = &downcast(*device).set_inportsc_cb(DEVCB_##_devcb); + downcast(*device).set_inportsc_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTD_READ_CB(_devcb) \ - devcb = &downcast(*device).set_inportsd_cb(DEVCB_##_devcb); + downcast(*device).set_inportsd_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTE_READ_CB(_devcb) \ - devcb = &downcast(*device).set_inportse_cb(DEVCB_##_devcb); + downcast(*device).set_inportse_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTA_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_outportsa_cb(DEVCB_##_devcb); + downcast(*device).set_outportsa_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTB_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_outportsb_cb(DEVCB_##_devcb); + downcast(*device).set_outportsb_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTC_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_outportsc_cb(DEVCB_##_devcb); + downcast(*device).set_outportsc_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTD_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_outportsd_cb(DEVCB_##_devcb); + downcast(*device).set_outportsd_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTE_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_outportse_cb(DEVCB_##_devcb); + downcast(*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(*device).set_out_txda_callback(DEVCB_##_devcb); + downcast(*device).set_out_txda_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_DTRA_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtra_callback(DEVCB_##_devcb); + downcast(*device).set_out_dtra_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RTSA_CB(_devcb) \ - devcb = &downcast(*device).set_out_rtsa_callback(DEVCB_##_devcb); + downcast(*device).set_out_rtsa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_WRDYA_CB(_devcb) \ - devcb = &downcast(*device).set_out_wrdya_callback(DEVCB_##_devcb); + downcast(*device).set_out_wrdya_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_SYNCA_CB(_devcb) \ - devcb = &downcast(*device).set_out_synca_callback(DEVCB_##_devcb); + downcast(*device).set_out_synca_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_TXDB_CB(_devcb) \ - devcb = &downcast(*device).set_out_txdb_callback(DEVCB_##_devcb); + downcast(*device).set_out_txdb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_DTRB_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtrb_callback(DEVCB_##_devcb); + downcast(*device).set_out_dtrb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RTSB_CB(_devcb) \ - devcb = &downcast(*device).set_out_rtsb_callback(DEVCB_##_devcb); + downcast(*device).set_out_rtsb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_WRDYB_CB(_devcb) \ - devcb = &downcast(*device).set_out_wrdyb_callback(DEVCB_##_devcb); + downcast(*device).set_out_wrdyb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_SYNCB_CB(_devcb) \ - devcb = &downcast(*device).set_out_syncb_callback(DEVCB_##_devcb); + downcast(*device).set_out_syncb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RXDRQA_CB(_devcb) \ - devcb = &downcast(*device).set_out_rxdrqa_callback(DEVCB_##_devcb); + downcast(*device).set_out_rxdrqa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_TXDRQA_CB(_devcb) \ - devcb = &downcast(*device).set_out_txdrqa_callback(DEVCB_##_devcb); + downcast(*device).set_out_txdrqa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RXDRQB_CB(_devcb) \ - devcb = &downcast(*device).set_out_rxdrqb_callback(DEVCB_##_devcb); + downcast(*device).set_out_rxdrqb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_TXDRQB_CB(_devcb) \ - devcb = &downcast(*device).set_out_txdrqb_callback(DEVCB_##_devcb); + downcast(*device).set_out_txdrqb_callback(DEVCB_##_devcb); // CTC callbacks #define MCFG_TMPZ84C015_ZC0_CB(_devcb) \ - devcb = &downcast(*device).set_zc_callback<0>(DEVCB_##_devcb); + downcast(*device).set_zc_callback<0>(DEVCB_##_devcb); #define MCFG_TMPZ84C015_ZC1_CB(_devcb) \ - devcb = &downcast(*device).set_zc_callback<1>(DEVCB_##_devcb); + downcast(*device).set_zc_callback<1>(DEVCB_##_devcb); #define MCFG_TMPZ84C015_ZC2_CB(_devcb) \ - devcb = &downcast(*device).set_zc_callback<2>(DEVCB_##_devcb); + downcast(*device).set_zc_callback<2>(DEVCB_##_devcb); #define MCFG_TMPZ84C015_ZC3_CB(_devcb) \ - devcb = &downcast(*device).set_zc_callback<3>(DEVCB_##_devcb); + downcast(*device).set_zc_callback<3>(DEVCB_##_devcb); // PIO callbacks #define MCFG_TMPZ84C015_IN_PA_CB(_devcb) \ - devcb = &downcast(*device).set_in_pa_callback(DEVCB_##_devcb); + downcast(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_PA_CB(_devcb) \ - devcb = &downcast(*device).set_out_pa_callback(DEVCB_##_devcb); + downcast(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_ARDY_CB(_devcb) \ - devcb = &downcast(*device).set_out_ardy_callback(DEVCB_##_devcb); + downcast(*device).set_out_ardy_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_IN_PB_CB(_devcb) \ - devcb = &downcast(*device).set_in_pb_callback(DEVCB_##_devcb); + downcast(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_PB_CB(_devcb) \ - devcb = &downcast(*device).set_out_pb_callback(DEVCB_##_devcb); + downcast(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_BRDY_CB(_devcb) \ - devcb = &downcast(*device).set_out_brdy_callback(DEVCB_##_devcb); + downcast(*device).set_out_brdy_callback(DEVCB_##_devcb); /*************************************************************************** @@ -115,27 +115,48 @@ public: template devcb_base &set_out_rtsa_callback(Object &&cb) { return m_out_rtsa_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_wrdya_callback(Object &&cb) { return m_out_wrdya_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_synca_callback(Object &&cb) { return m_out_synca_cb.set_callback(std::forward(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 devcb_base &set_out_txdb_callback(Object &&cb) { return m_out_txdb_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_dtrb_callback(Object &&cb) { return m_out_dtrb_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_rtsb_callback(Object &&cb) { return m_out_rtsb_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_wrdyb_callback(Object &&cb) { return m_out_wrdyb_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_syncb_callback(Object &&cb) { return m_out_syncb_cb.set_callback(std::forward(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 devcb_base &set_out_rxdrqa_callback(Object &&cb) { return m_out_rxdrqa_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_txdrqa_callback(Object &&cb) { return m_out_txdrqa_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_rxdrqb_callback(Object &&cb) { return m_out_rxdrqb_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_txdrqb_callback(Object &&cb) { return m_out_txdrqb_cb.set_callback(std::forward(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 devcb_base &set_zc_callback(Object &&cb) { return m_zc_cb[N].set_callback(std::forward(cb)); } + template auto zc_callback() { return m_zc_cb[N].bind(); } template devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_ardy_callback(Object &&cb) { return m_out_ardy_cb.set_callback(std::forward(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 devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_brdy_callback(Object &&cb) { return m_out_brdy_cb.set_callback(std::forward(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(*device).set_irqack_cb(DEVCB_##_devcb); + downcast(*device).set_irqack_cb(DEVCB_##_devcb); #define MCFG_Z80_SET_REFRESH_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_refresh_cb(DEVCB_##_devcb); + downcast(*device).set_refresh_cb(DEVCB_##_devcb); #define MCFG_Z80_SET_HALT_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_halt_cb(DEVCB_##_devcb); + downcast(*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(*device).set_mo_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_idx_func(DEVCB_##_devcb); + downcast(*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(*device).set_input_callback(DEVCB_##_devcb); + downcast(*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(*device).set_online_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irl_handler(DEVCB_##_devcb); + downcast(*device).set_irl_handler(DEVCB_##_devcb); #define MCFG_1MB5_HALT_HANDLER(_devcb) \ - devcb = &downcast(*device).set_halt_handler(DEVCB_##_devcb); + downcast(*device).set_halt_handler(DEVCB_##_devcb); #define MCFG_1MB5_RESET_HANDLER(_devcb) \ - devcb = &downcast(*device).set_reset_handler(DEVCB_##_devcb); + downcast(*device).set_reset_handler(DEVCB_##_devcb); #define MCFG_1MB5_INT_HANDLER(_devcb) \ - devcb = &downcast(*device).set_int_handler(DEVCB_##_devcb); + downcast(*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(device)->set_dir_callback(DEVCB_##_dir); + downcast(device)->set_dir_callback(DEVCB_##_dir); #define MCFG_40105_DATA_OUT_READY_CB(_dor) \ - devcb = &downcast(device)->set_dor_callback(DEVCB_##_dor); + downcast(device)->set_dor_callback(DEVCB_##_dor); #define MCFG_40105_DATA_OUT_CB(_out) \ - devcb = &downcast(device)->set_data_out_callback(DEVCB_##_out); + downcast(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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_NCR53C7XX_HOST_WRITE(_devcb) \ - devcb = &downcast(*device).set_host_write(DEVCB_##_devcb); + downcast(*device).set_host_write(DEVCB_##_devcb); #define MCFG_NCR53C7XX_HOST_READ(_devcb) \ - devcb = &downcast(*device).set_host_read(DEVCB_##_devcb); + downcast(*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(*device).set_atn_wr_callback(DEVCB_##_write); + downcast(*device).set_atn_wr_callback(DEVCB_##_write); #define MCFG_64H156_SYNC_CALLBACK(_write) \ - devcb = &downcast(*device).set_sync_wr_callback(DEVCB_##_write); + downcast(*device).set_sync_wr_callback(DEVCB_##_write); #define MCFG_64H156_BYTE_CALLBACK(_write) \ - devcb = &downcast(*device).set_byte_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_readpa_handler(DEVCB_##_devcb); + downcast(*device).set_readpa_handler(DEVCB_##_devcb); #define MCFG_VIA6522_READPB_HANDLER(_devcb) \ - devcb = &downcast(*device).set_readpb_handler(DEVCB_##_devcb); + downcast(*device).set_readpb_handler(DEVCB_##_devcb); // TODO: CONVERT THESE TO WRITE LINE #define MCFG_VIA6522_WRITEPA_HANDLER(_devcb) \ - devcb = &downcast(*device).set_writepa_handler(DEVCB_##_devcb); + downcast(*device).set_writepa_handler(DEVCB_##_devcb); #define MCFG_VIA6522_WRITEPB_HANDLER(_devcb) \ - devcb = &downcast(*device).set_writepb_handler(DEVCB_##_devcb); + downcast(*device).set_writepb_handler(DEVCB_##_devcb); #define MCFG_VIA6522_CA2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ca2_handler(DEVCB_##_devcb); + downcast(*device).set_ca2_handler(DEVCB_##_devcb); #define MCFG_VIA6522_CB1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cb1_handler(DEVCB_##_devcb); + downcast(*device).set_cb1_handler(DEVCB_##_devcb); #define MCFG_VIA6522_CB2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cb2_handler(DEVCB_##_devcb); + downcast(*device).set_cb2_handler(DEVCB_##_devcb); #define MCFG_VIA6522_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); /*************************************************************************** @@ -85,41 +85,49 @@ public: // TODO: REMOVE THESE template devcb_base &set_readpa_handler(Object &&cb) { return m_in_a_handler.set_callback(std::forward(cb)); } template devcb_base &set_readpb_handler(Object &&cb) { return m_in_b_handler.set_callback(std::forward(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 devcb_base &set_writepa_handler(Object &&cb) { return m_out_a_handler.set_callback(std::forward(cb)); } template devcb_base &set_writepb_handler(Object &&cb) { return m_out_b_handler.set_callback(std::forward(cb)); } + auto writepa_handler() { return m_out_a_handler.bind(); } + auto writepb_handler() { return m_out_b_handler.bind(); } template devcb_base &set_ca2_handler(Object &&cb) { return m_ca2_handler.set_callback(std::forward(cb)); } template devcb_base &set_cb1_handler(Object &&cb) { return m_cb1_handler.set_callback(std::forward(cb)); } template devcb_base &set_cb2_handler(Object &&cb) { return m_cb2_handler.set_callback(std::forward(cb)); } template devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward(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(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_TPI6525_IN_PA_CB(_devcb) \ - devcb = &downcast(*device).set_in_pa_callback(DEVCB_##_devcb); + downcast(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_TPI6525_OUT_PA_CB(_devcb) \ - devcb = &downcast(*device).set_out_pa_callback(DEVCB_##_devcb); + downcast(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_TPI6525_IN_PB_CB(_devcb) \ - devcb = &downcast(*device).set_in_pb_callback(DEVCB_##_devcb); + downcast(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_TPI6525_OUT_PB_CB(_devcb) \ - devcb = &downcast(*device).set_out_pb_callback(DEVCB_##_devcb); + downcast(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_TPI6525_IN_PC_CB(_devcb) \ - devcb = &downcast(*device).set_in_pc_callback(DEVCB_##_devcb); + downcast(*device).set_in_pc_callback(DEVCB_##_devcb); #define MCFG_TPI6525_OUT_PC_CB(_devcb) \ - devcb = &downcast(*device).set_out_pc_callback(DEVCB_##_devcb); + downcast(*device).set_out_pc_callback(DEVCB_##_devcb); #define MCFG_TPI6525_OUT_CA_CB(_devcb) \ - devcb = &downcast(*device).set_out_ca_callback(DEVCB_##_devcb); + downcast(*device).set_out_ca_callback(DEVCB_##_devcb); #define MCFG_TPI6525_OUT_CB_CB(_devcb) \ - devcb = &downcast(*device).set_out_cb_callback(DEVCB_##_devcb); + downcast(*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(*device).set_in_pa_callback(DEVCB_##_devcb); + downcast(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_RIOT6532_OUT_PA_CB(_devcb) \ - devcb = &downcast(*device).set_out_pa_callback(DEVCB_##_devcb); + downcast(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_RIOT6532_IN_PB_CB(_devcb) \ - devcb = &downcast(*device).set_in_pb_callback(DEVCB_##_devcb); + downcast(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_RIOT6532_OUT_PB_CB(_devcb) \ - devcb = &downcast(*device).set_out_pb_callback(DEVCB_##_devcb); + downcast(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_RIOT6532_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_intal0_callback(DEVCB_##_devcb); + downcast(*device).set_out_intal0_callback(DEVCB_##_devcb); #define MCFG_BIM68153_OUT_INTAL1_CB(_devcb) \ - devcb = &downcast(*device).set_out_intal1_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_iack0_callback(DEVCB_##_devcb); + downcast(*device).set_out_iack0_callback(DEVCB_##_devcb); #define MCFG_BIM68153_OUT_IACK1_CB(_devcb) \ - devcb = &downcast(*device).set_out_iack1_callback(DEVCB_##_devcb); + downcast(*device).set_out_iack1_callback(DEVCB_##_devcb); #define MCFG_BIM68153_OUT_IACK2_CB(_devcb) \ - devcb = &downcast(*device).set_out_iack2_callback(DEVCB_##_devcb); + downcast(*device).set_out_iack2_callback(DEVCB_##_devcb); #define MCFG_BIM68153_OUT_IACK3_CB(_devcb) \ - devcb = &downcast(*device).set_out_iack3_callback(DEVCB_##_devcb); + downcast(*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(*device).set_readpa_handler(DEVCB_##_devcb); + downcast(*device).set_readpa_handler(DEVCB_##_devcb); #define MCFG_PIA_READPB_HANDLER(_devcb) \ - devcb = &downcast(*device).set_readpb_handler(DEVCB_##_devcb); + downcast(*device).set_readpb_handler(DEVCB_##_devcb); #define MCFG_PIA_READCA1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_readca1_handler(DEVCB_##_devcb); + downcast(*device).set_readca1_handler(DEVCB_##_devcb); #define MCFG_PIA_READCA2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_readca2_handler(DEVCB_##_devcb); + downcast(*device).set_readca2_handler(DEVCB_##_devcb); #define MCFG_PIA_READCB1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_readcb1_handler(DEVCB_##_devcb); + downcast(*device).set_readcb1_handler(DEVCB_##_devcb); // TODO: CONVERT THESE TO WRITE LINE #define MCFG_PIA_WRITEPA_HANDLER(_devcb) \ - devcb = &downcast(*device).set_writepa_handler(DEVCB_##_devcb); + downcast(*device).set_writepa_handler(DEVCB_##_devcb); #define MCFG_PIA_WRITEPB_HANDLER(_devcb) \ - devcb = &downcast(*device).set_writepb_handler(DEVCB_##_devcb); + downcast(*device).set_writepb_handler(DEVCB_##_devcb); #define MCFG_PIA_CA2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ca2_handler(DEVCB_##_devcb); + downcast(*device).set_ca2_handler(DEVCB_##_devcb); #define MCFG_PIA_CB2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cb2_handler(DEVCB_##_devcb); + downcast(*device).set_cb2_handler(DEVCB_##_devcb); #define MCFG_PIA_IRQA_HANDLER(_devcb) \ - devcb = &downcast(*device).set_irqa_handler(DEVCB_##_devcb); + downcast(*device).set_irqa_handler(DEVCB_##_devcb); #define MCFG_PIA_IRQB_HANDLER(_devcb) \ - devcb = &downcast(*device).set_irqb_handler(DEVCB_##_devcb); + downcast(*device).set_irqb_handler(DEVCB_##_devcb); /*************************************************************************** @@ -86,15 +86,26 @@ public: template devcb_base &set_readca1_handler(Obj &&object) { return m_in_ca1_handler.set_callback(std::forward(object)); } template devcb_base &set_readca2_handler(Obj &&object) { return m_in_ca2_handler.set_callback(std::forward(object)); } template devcb_base &set_readcb1_handler(Obj &&object) { return m_in_cb1_handler.set_callback(std::forward(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 devcb_base &set_writepa_handler(Obj &&object) { return m_out_a_handler.set_callback(std::forward(object)); } template devcb_base &set_writepb_handler(Obj &&object) { return m_out_b_handler.set_callback(std::forward(object)); } + auto writepa_handler() { return m_out_a_handler.bind(); } + auto writepb_handler() { return m_out_b_handler.bind(); } template devcb_base &set_ca2_handler(Obj &&object) { return m_ca2_handler.set_callback(std::forward(object)); } template devcb_base &set_cb2_handler(Obj &&object) { return m_cb2_handler.set_callback(std::forward(object)); } template devcb_base &set_irqa_handler(Obj &&object) { return m_irqa_handler.set_callback(std::forward(object)); } template devcb_base &set_irqb_handler(Obj &&object) { return m_irqb_handler.set_callback(std::forward(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(*device).set_pa_in_callback(DEVCB_##_devcb); + downcast(*device).set_pa_in_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PA_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_pa_out_callback(DEVCB_##_devcb); + downcast(*device).set_pa_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PB_INPUT_CB(_devcb) \ - devcb = &downcast(*device).set_pb_in_callback(DEVCB_##_devcb); + downcast(*device).set_pb_in_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PB_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_pb_out_callback(DEVCB_##_devcb); + downcast(*device).set_pb_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PC_INPUT_CB(_devcb) \ - devcb = &downcast(*device).set_pc_in_callback(DEVCB_##_devcb); + downcast(*device).set_pc_in_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PC_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_pc_out_callback(DEVCB_##_devcb); + downcast(*device).set_pc_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_H1_CB(_devcb) \ - devcb = &downcast(*device).set_h1_out_callback(DEVCB_##_devcb); + downcast(*device).set_h1_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_H2_CB(_devcb) \ - devcb = &downcast(*device).set_h2_out_callback(DEVCB_##_devcb); + downcast(*device).set_h2_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_H3_CB(_devcb) \ - devcb = &downcast(*device).set_h3_out_callback(DEVCB_##_devcb); + downcast(*device).set_h3_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_H4_CB(_devcb) \ - devcb = &downcast(*device).set_h4_out_callback(DEVCB_##_devcb); + downcast(*device).set_h4_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_TIMER_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_tirq_out_callback(DEVCB_##_devcb); + downcast(*device).set_tirq_out_callback(DEVCB_##_devcb); #define MCFG_PIT68230_PORT_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_pirq_out_callback(DEVCB_##_devcb); + downcast(*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(*device).set_a_tx_cb(DEVCB_##_cb); + downcast(*device).set_a_tx_cb(DEVCB_##_cb); #define MCFG_MC68307_SERIAL_B_TX_CALLBACK(_cb) \ - devcb = &downcast(*device).set_b_tx_cb(DEVCB_##_cb); + downcast(*device).set_b_tx_cb(DEVCB_##_cb); // deprecated: use ipX_w() instead #define MCFG_MC68307_SERIAL_INPORT_CALLBACK(_cb) \ - devcb = &downcast(*device).set_inport_cb(DEVCB_##_cb); + downcast(*device).set_inport_cb(DEVCB_##_cb); #define MCFG_MC68307_SERIAL_OUTPORT_CALLBACK(_cb) \ - devcb = &downcast(*device).set_outport_cb(DEVCB_##_cb); + downcast(*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(*device).set_pa_in_callback(DEVCB_##_devcb); + downcast(*device).set_pa_in_callback(DEVCB_##_devcb); #define MCFG_MC68340_PA_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_pa_out_callback(DEVCB_##_devcb); + downcast(*device).set_pa_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_PB_INPUT_CB(_devcb) \ - devcb = &downcast(*device).set_pb_in_callback(DEVCB_##_devcb); + downcast(*device).set_pb_in_callback(DEVCB_##_devcb); #define MCFG_MC68340_PB_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_pb_out_callback(DEVCB_##_devcb); + downcast(*device).set_pb_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_ADD_CRYSTAL(_crystal) \ downcast(*device).set_crystal(_crystal); #define MCFG_MC68340_TOUT1_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_tout1_out_callback(DEVCB_##_devcb); + downcast(*device).set_tout1_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_TIN1_INPUT_CB(_devcb) \ - devcb = &downcast(*device).set_tin1_out_callback(DEVCB_##_devcb); + downcast(*device).set_tin1_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_TGATE1_INPUT_CB(_devcb) \ - devcb = &downcast(*device).set_tgate1_out_callback(DEVCB_##_devcb); + downcast(*device).set_tgate1_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_TOUT2_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_tout2_out_callback(DEVCB_##_devcb); + downcast(*device).set_tout2_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_TIN2_INPUT_CB(_devcb) \ - devcb = &downcast(*device).set_tin2_out_callback(DEVCB_##_devcb); + downcast(*device).set_tin2_out_callback(DEVCB_##_devcb); #define MCFG_MC68340_TGATE2_INPUT_CB(_devcb) \ - devcb = &downcast(*device).set_tgate2_out_callback(DEVCB_##_devcb); + downcast(*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(*device).set_external_clocks(_clk0, _clk1, _clk2); #define MCFG_PTM6840_O1_CB(_devcb) \ - devcb = &downcast(*device).set_out_callback(0, DEVCB_##_devcb); + downcast(*device).set_out_callback(0, DEVCB_##_devcb); #define MCFG_PTM6840_O2_CB(_devcb) \ - devcb = &downcast(*device).set_out_callback(1, DEVCB_##_devcb); + downcast(*device).set_out_callback(1, DEVCB_##_devcb); #define MCFG_PTM6840_O3_CB(_devcb) \ - devcb = &downcast(*device).set_out_callback(2, DEVCB_##_devcb); + downcast(*device).set_out_callback(2, DEVCB_##_devcb); #define MCFG_PTM6840_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*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 devcb_base &set_out_callback(int index, Object &&cb) { return m_out_cb[index].set_callback(std::forward(cb)); } template devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward(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(*device).set_txd_handler(DEVCB_##_devcb); + downcast(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_ACIA6850_RTS_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rts_handler(DEVCB_##_devcb); + downcast(*device).set_rts_handler(DEVCB_##_devcb); #define MCFG_ACIA6850_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); class acia6850_device : public device_t { @@ -33,6 +33,9 @@ public: template devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward(cb)); } template devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward(cb)); } template devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward(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(*device).set_out_txd_callback(DEVCB_##_devcb); + downcast(*device).set_out_txd_callback(DEVCB_##_devcb); #define MCFG_MPCC_OUT_DTR_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtr_callback(DEVCB_##_devcb); + downcast(*device).set_out_dtr_callback(DEVCB_##_devcb); #define MCFG_MPCC_OUT_RTS_CB(_devcb) \ - devcb = &downcast(*device).set_out_rts_callback(DEVCB_##_devcb); + downcast(*device).set_out_rts_callback(DEVCB_##_devcb); #define MCFG_MPCC_OUT_TRXC_CB(_devcb) \ - devcb = &downcast(*device).set_out_trxc_callback(DEVCB_##_devcb); + downcast(*device).set_out_trxc_callback(DEVCB_##_devcb); #define MCFG_MPCC_OUT_RTXC_CB(_devcb) \ - devcb = &downcast(*device).set_out_rtxc_callback(DEVCB_##_devcb); + downcast(*device).set_out_rtxc_callback(DEVCB_##_devcb); #define MCFG_MPCC_OUT_INT_CB(_devcb) \ - devcb = &downcast(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*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(*device).set_ram_size(_ramsize); #define MCFG_FIFO7200_EF_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ef_handler(DEVCB_##_devcb); + downcast(*device).set_ef_handler(DEVCB_##_devcb); #define MCFG_FIFO7200_FF_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ff_handler(DEVCB_##_devcb); + downcast(*device).set_ff_handler(DEVCB_##_devcb); #define MCFG_FIFO7200_HF_HANDLER(_devcb) \ - devcb = &downcast(*device).set_hf_handler(DEVCB_##_devcb); + downcast(*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(*device).set_y1_cb(DEVCB_##_devcb); + downcast(*device).set_y1_cb(DEVCB_##_devcb); #define MCFG_7400_Y2_CB(_devcb) \ - devcb = &downcast(*device).set_y2_cb(DEVCB_##_devcb); + downcast(*device).set_y2_cb(DEVCB_##_devcb); #define MCFG_7400_Y3_CB(_devcb) \ - devcb = &downcast(*device).set_y3_cb(DEVCB_##_devcb); + downcast(*device).set_y3_cb(DEVCB_##_devcb); #define MCFG_7400_Y4_CB(_devcb) \ - devcb = &downcast(*device).set_y4_cb(DEVCB_##_devcb); + downcast(*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(*device).set_y1_cb(DEVCB_##_devcb); + downcast(*device).set_y1_cb(DEVCB_##_devcb); #define MCFG_7404_Y2_CB(_devcb) \ - devcb = &downcast(*device).set_y2_cb(DEVCB_##_devcb); + downcast(*device).set_y2_cb(DEVCB_##_devcb); #define MCFG_7404_Y3_CB(_devcb) \ - devcb = &downcast(*device).set_y3_cb(DEVCB_##_devcb); + downcast(*device).set_y3_cb(DEVCB_##_devcb); #define MCFG_7404_Y4_CB(_devcb) \ - devcb = &downcast(*device).set_y4_cb(DEVCB_##_devcb); + downcast(*device).set_y4_cb(DEVCB_##_devcb); #define MCFG_7404_Y5_CB(_devcb) \ - devcb = &downcast(*device).set_y5_cb(DEVCB_##_devcb); + downcast(*device).set_y5_cb(DEVCB_##_devcb); #define MCFG_7404_Y6_CB(_devcb) \ - devcb = &downcast(*device).set_y6_cb(DEVCB_##_devcb); + downcast(*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(*device).set_clear_pin_value(_value); #define MCFG_TTL74123_OUTPUT_CHANGED_CB(_devcb) \ - devcb = &downcast(*device).set_output_changed_callback(DEVCB_##_devcb); + downcast(*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(*device).set_output_line_0_callback(DEVCB_##_devcb); + downcast(*device).set_output_line_0_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_1_CB(_devcb) \ - devcb = &downcast(*device).set_output_line_1_callback(DEVCB_##_devcb); + downcast(*device).set_output_line_1_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_2_CB(_devcb) \ - devcb = &downcast(*device).set_output_line_2_callback(DEVCB_##_devcb); + downcast(*device).set_output_line_2_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_3_CB(_devcb) \ - devcb = &downcast(*device).set_output_line_3_callback(DEVCB_##_devcb); + downcast(*device).set_output_line_3_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_4_CB(_devcb) \ - devcb = &downcast(*device).set_output_line_4_callback(DEVCB_##_devcb); + downcast(*device).set_output_line_4_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_5_CB(_devcb) \ - devcb = &downcast(*device).set_output_line_5_callback(DEVCB_##_devcb); + downcast(*device).set_output_line_5_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_6_CB(_devcb) \ - devcb = &downcast(*device).set_output_line_6_callback(DEVCB_##_devcb); + downcast(*device).set_output_line_6_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_7_CB(_devcb) \ - devcb = &downcast(*device).set_output_line_7_callback(DEVCB_##_devcb); + downcast(*device).set_output_line_7_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_8_CB(_devcb) \ - devcb = &downcast(*device).set_output_line_8_callback(DEVCB_##_devcb); + downcast(*device).set_output_line_8_callback(DEVCB_##_devcb); #define MCFG_TTL74145_OUTPUT_LINE_9_CB(_devcb) \ - devcb = &downcast(*device).set_output_line_9_callback(DEVCB_##_devcb); + downcast(*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(*device).set_za_callback(DEVCB_##_devcb); + downcast(*device).set_za_callback(DEVCB_##_devcb); #define MCFG_TTL153_ZB_CB(_devcb) \ - devcb = &downcast(*device).set_zb_callback(DEVCB_##_devcb); + downcast(*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(*device).set_a_in_callback(DEVCB_##_devcb); + downcast(*device).set_a_in_callback(DEVCB_##_devcb); #define MCFG_74157_B_IN_CB(_devcb) \ - devcb = &downcast(*device).set_b_in_callback(DEVCB_##_devcb); + downcast(*device).set_b_in_callback(DEVCB_##_devcb); #define MCFG_74157_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_out_callback(DEVCB_##_devcb); + downcast(*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 devcb_base &set_a_in_callback(Object &&cb) { return m_a_in_cb.set_callback(std::forward(cb)); } template devcb_base &set_b_in_callback(Object &&cb) { return m_b_in_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_callback(Object &&cb) { return m_out_cb.set_callback(std::forward(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(*device).set_qa_cb(DEVCB_##_devcb); + downcast(*device).set_qa_cb(DEVCB_##_devcb); #define MCFG_7416x_QB_CB(_devcb) \ - devcb = &downcast(*device).set_qb_cb(DEVCB_##_devcb); + downcast(*device).set_qb_cb(DEVCB_##_devcb); #define MCFG_7416x_QC_CB(_devcb) \ - devcb = &downcast(*device).set_qc_cb(DEVCB_##_devcb); + downcast(*device).set_qc_cb(DEVCB_##_devcb); #define MCFG_7416x_QD_CB(_devcb) \ - devcb = &downcast(*device).set_qd_cb(DEVCB_##_devcb); + downcast(*device).set_qd_cb(DEVCB_##_devcb); #define MCFG_7416x_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(DEVCB_##_devcb); + downcast(*device).set_output_cb(DEVCB_##_devcb); #define MCFG_7416x_TC_CB(_devcb) \ - devcb = &downcast(*device).set_tc_cb(DEVCB_##_devcb); + downcast(*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(*device).set_data_callback(DEVCB_##_devcb); + downcast(*device).set_data_callback(DEVCB_##_devcb); #define MCFG_TTL165_QH_CB(_devcb) \ - devcb = &downcast(*device).set_qh_callback(DEVCB_##_devcb); + downcast(*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(*device).set_data_callback(DEVCB_##_devcb); + downcast(*device).set_data_callback(DEVCB_##_devcb); #define MCFG_TTL166_QH_CB(_devcb) \ - devcb = &downcast(*device).set_qh_callback(DEVCB_##_devcb); + downcast(*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(*device).set_q1_cb(DEVCB_##_devcb); + downcast(*device).set_q1_cb(DEVCB_##_devcb); #define MCFG_74174_Q2_CB(_devcb) \ - devcb = &downcast(*device).set_q2_cb(DEVCB_##_devcb); + downcast(*device).set_q2_cb(DEVCB_##_devcb); #define MCFG_74174_Q3_CB(_devcb) \ - devcb = &downcast(*device).set_q3_cb(DEVCB_##_devcb); + downcast(*device).set_q3_cb(DEVCB_##_devcb); #define MCFG_74174_Q4_CB(_devcb) \ - devcb = &downcast(*device).set_q4_cb(DEVCB_##_devcb); + downcast(*device).set_q4_cb(DEVCB_##_devcb); #define MCFG_74175_Q1_CB(_devcb) \ - devcb = &downcast(*device).set_q1_cb(DEVCB_##_devcb); + downcast(*device).set_q1_cb(DEVCB_##_devcb); #define MCFG_74175_Q2_CB(_devcb) \ - devcb = &downcast(*device).set_q2_cb(DEVCB_##_devcb); + downcast(*device).set_q2_cb(DEVCB_##_devcb); #define MCFG_74175_Q3_CB(_devcb) \ - devcb = &downcast(*device).set_q3_cb(DEVCB_##_devcb); + downcast(*device).set_q3_cb(DEVCB_##_devcb); #define MCFG_74175_Q4_CB(_devcb) \ - devcb = &downcast(*device).set_q4_cb(DEVCB_##_devcb); + downcast(*device).set_q4_cb(DEVCB_##_devcb); #define MCFG_74174_Q5_CB(_devcb) \ - devcb = &downcast(*device).set_q5_cb(DEVCB_##_devcb); + downcast(*device).set_q5_cb(DEVCB_##_devcb); #define MCFG_74174_Q6_CB(_devcb) \ - devcb = &downcast(*device).set_q6_cb(DEVCB_##_devcb); + downcast(*device).set_q6_cb(DEVCB_##_devcb); #define MCFG_74175_NOT_Q1_CB(_devcb) \ - devcb = &downcast(*device).set_not_q1_cb(DEVCB_##_devcb); + downcast(*device).set_not_q1_cb(DEVCB_##_devcb); #define MCFG_74175_NOT_Q2_CB(_devcb) \ - devcb = &downcast(*device).set_not_q2_cb(DEVCB_##_devcb); + downcast(*device).set_not_q2_cb(DEVCB_##_devcb); #define MCFG_74175_NOT_Q3_CB(_devcb) \ - devcb = &downcast(*device).set_not_q3_cb(DEVCB_##_devcb); + downcast(*device).set_not_q3_cb(DEVCB_##_devcb); #define MCFG_74175_NOT_Q4_CB(_devcb) \ - devcb = &downcast(*device).set_not_q1_cb(DEVCB_##_devcb); + downcast(*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(*device).set_q_out_cb<0>(DEVCB_##_devcb); + downcast(*device).set_q_out_cb<0>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_q_out_cb<1>(DEVCB_##_devcb); + downcast(*device).set_q_out_cb<1>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_q_out_cb<2>(DEVCB_##_devcb); + downcast(*device).set_q_out_cb<2>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_q_out_cb<3>(DEVCB_##_devcb); + downcast(*device).set_q_out_cb<3>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_q_out_cb<4>(DEVCB_##_devcb); + downcast(*device).set_q_out_cb<4>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_q_out_cb<5>(DEVCB_##_devcb); + downcast(*device).set_q_out_cb<5>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_q_out_cb<6>(DEVCB_##_devcb); + downcast(*device).set_q_out_cb<6>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_q_out_cb<7>(DEVCB_##_devcb); + downcast(*device).set_q_out_cb<7>(DEVCB_##_devcb); #define MCFG_ADDRESSABLE_LATCH_PARALLEL_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_parallel_out_cb(DEVCB_##_devcb); + downcast(*device).set_parallel_out_cb(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -68,6 +68,8 @@ public: // static configuration template devcb_base &set_q_out_cb(Object &&cb) { return m_q_out_cb[Bit].set_callback(std::forward(cb)); } template devcb_base &set_parallel_out_cb(Object &&cb) { return m_parallel_out_cb.set_callback(std::forward(cb)); } + template 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(*device).set_output_cb(DEVCB_##_devcb); + downcast(*device).set_output_cb(DEVCB_##_devcb); #define MCFG_7474_COMP_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_comp_output_cb(DEVCB_##_devcb); + downcast(*device).set_comp_output_cb(DEVCB_##_devcb); //************************************************************************** @@ -73,6 +73,8 @@ public: // static configuration helpers template devcb_base &set_output_cb(Object &&cb) { return m_output_func.set_callback(std::forward(cb)); } template devcb_base &set_comp_output_cb(Object &&cb) { return m_comp_output_func.set_callback(std::forward(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(*device).set_keyboard_type(kbdc8042_device::_kbdt); #define MCFG_KBDC8042_SYSTEM_RESET_CB(_devcb) \ - devcb = &downcast(*device).set_system_reset_callback(DEVCB_##_devcb); + downcast(*device).set_system_reset_callback(DEVCB_##_devcb); #define MCFG_KBDC8042_GATE_A20_CB(_devcb) \ - devcb = &downcast(*device).set_gate_a20_callback(DEVCB_##_devcb); + downcast(*device).set_gate_a20_callback(DEVCB_##_devcb); #define MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(_devcb) \ - devcb = &downcast(*device).set_input_buffer_full_callback(DEVCB_##_devcb); + downcast(*device).set_input_buffer_full_callback(DEVCB_##_devcb); #define MCFG_KBDC8042_OUTPUT_BUFFER_EMPTY_CB(_devcb) \ - devcb = &downcast(*device).set_output_buffer_empty_callback(DEVCB_##_devcb); + downcast(*device).set_output_buffer_empty_callback(DEVCB_##_devcb); #define MCFG_KBDC8042_SPEAKER_CB(_devcb) \ - devcb = &downcast(*device).set_speaker_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_cb(DEVCB_##_devcb); + downcast(*device).set_out_cb(DEVCB_##_devcb); #define MCFG_82S126_O1_CB(_devcb) \ - devcb = &downcast(*device).set_o1_cb(DEVCB_##_devcb); + downcast(*device).set_o1_cb(DEVCB_##_devcb); #define MCFG_82S126_O2_CB(_devcb) \ - devcb = &downcast(*device).set_o2_cb(DEVCB_##_devcb); + downcast(*device).set_o2_cb(DEVCB_##_devcb); #define MCFG_82S126_O3_CB(_devcb) \ - devcb = &downcast(*device).set_o3_cb(DEVCB_##_devcb); + downcast(*device).set_o3_cb(DEVCB_##_devcb); #define MCFG_82S126_O4_CB(_devcb) \ - devcb = &downcast(*device).set_o4_cb(DEVCB_##_devcb); + downcast(*device).set_o4_cb(DEVCB_##_devcb); #define MCFG_82S129_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_out_cb(DEVCB_##_devcb); + downcast(*device).set_out_cb(DEVCB_##_devcb); #define MCFG_82S129_O1_CB(_devcb) \ - devcb = &downcast(*device).set_o1_cb(DEVCB_##_devcb); + downcast(*device).set_o1_cb(DEVCB_##_devcb); #define MCFG_82S129_O2_CB(_devcb) \ - devcb = &downcast(*device).set_o2_cb(DEVCB_##_devcb); + downcast(*device).set_o2_cb(DEVCB_##_devcb); #define MCFG_82S129_O3_CB(_devcb) \ - devcb = &downcast(*device).set_o3_cb(DEVCB_##_devcb); + downcast(*device).set_o3_cb(DEVCB_##_devcb); #define MCFG_82S129_O4_CB(_devcb) \ - devcb = &downcast(*device).set_o4_cb(DEVCB_##_devcb); + downcast(*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(*device).set_mem_r_callback(DEVCB_##_devcb); + downcast(*device).set_mem_r_callback(DEVCB_##_devcb); #define MCFG_PAULA_INT_CB(_devcb) \ - devcb = &downcast(*device).set_int_w_callback(DEVCB_##_devcb); + downcast(*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(*device).set_intrq_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_out_tx_callback(DEVCB_##_devcb); + downcast(*device).set_out_tx_callback(DEVCB_##_devcb); #define MCFG_AAKART_OUT_RX_CB(_devcb) \ - devcb = &downcast(*device).set_out_rx_callback(DEVCB_##_devcb); + downcast(*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(*device).set_eoc_callback(DEVCB_##_devcb); + downcast(*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(*device).set_eoc_ff_callback(DEVCB_##_devcb); + downcast(*device).set_eoc_ff_callback(DEVCB_##_devcb); #define MCFG_ADC0808_IN0_CB(_devcb) \ - devcb = &downcast(*device).set_in_callback(DEVCB_##_devcb, 0); + downcast(*device).set_in_callback(DEVCB_##_devcb, 0); #define MCFG_ADC0808_IN1_CB(_devcb) \ - devcb = &downcast(*device).set_in_callback(DEVCB_##_devcb, 1); + downcast(*device).set_in_callback(DEVCB_##_devcb, 1); #define MCFG_ADC0808_IN2_CB(_devcb) \ - devcb = &downcast(*device).set_in_callback(DEVCB_##_devcb, 2); + downcast(*device).set_in_callback(DEVCB_##_devcb, 2); #define MCFG_ADC0808_IN3_CB(_devcb) \ - devcb = &downcast(*device).set_in_callback(DEVCB_##_devcb, 3); + downcast(*device).set_in_callback(DEVCB_##_devcb, 3); #define MCFG_ADC0808_IN4_CB(_devcb) \ - devcb = &downcast(*device).set_in_callback(DEVCB_##_devcb, 4); + downcast(*device).set_in_callback(DEVCB_##_devcb, 4); #define MCFG_ADC0808_IN5_CB(_devcb) \ - devcb = &downcast(*device).set_in_callback(DEVCB_##_devcb, 5); + downcast(*device).set_in_callback(DEVCB_##_devcb, 5); #define MCFG_ADC0808_IN6_CB(_devcb) \ - devcb = &downcast(*device).set_in_callback(DEVCB_##_devcb, 6); + downcast(*device).set_in_callback(DEVCB_##_devcb, 6); #define MCFG_ADC0808_IN7_CB(_devcb) \ - devcb = &downcast(*device).set_in_callback(DEVCB_##_devcb, 7); + downcast(*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(*device).set_intr_callback(DEVCB_##_devcb); + downcast(*device).set_intr_callback(DEVCB_##_devcb); #define MCFG_ADC0844_CH1_CB(_devcb) \ - devcb = &downcast(*device).set_ch1_callback(DEVCB_##_devcb); + downcast(*device).set_ch1_callback(DEVCB_##_devcb); #define MCFG_ADC0844_CH2_CB(_devcb) \ - devcb = &downcast(*device).set_ch2_callback(DEVCB_##_devcb); + downcast(*device).set_ch2_callback(DEVCB_##_devcb); #define MCFG_ADC0844_CH3_CB(_devcb) \ - devcb = &downcast(*device).set_ch3_callback(DEVCB_##_devcb); + downcast(*device).set_ch3_callback(DEVCB_##_devcb); #define MCFG_ADC0844_CH4_CB(_devcb) \ - devcb = &downcast(*device).set_ch4_callback(DEVCB_##_devcb); + downcast(*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(*device).set_ch5_callback(DEVCB_##_devcb); + downcast(*device).set_ch5_callback(DEVCB_##_devcb); #define MCFG_ADC0848_CH6_CB(_devcb) \ - devcb = &downcast(*device).set_ch6_callback(DEVCB_##_devcb); + downcast(*device).set_ch6_callback(DEVCB_##_devcb); #define MCFG_ADC0848_CH7_CB(_devcb) \ - devcb = &downcast(*device).set_ch7_callback(DEVCB_##_devcb); + downcast(*device).set_ch7_callback(DEVCB_##_devcb); #define MCFG_ADC0848_CH8_CB(_devcb) \ - devcb = &downcast(*device).set_ch8_callback(DEVCB_##_devcb); + downcast(*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(*device).set_mem_r_callback(DEVCB_##_devcb); + downcast(*device).set_mem_r_callback(DEVCB_##_devcb); #define MCFG_AKIKO_MEM_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_mem_w_callback(DEVCB_##_devcb); + downcast(*device).set_mem_w_callback(DEVCB_##_devcb); #define MCFG_AKIKO_INT_CB(_devcb) \ - devcb = &downcast(*device).set_int_w_callback(DEVCB_##_devcb); + downcast(*device).set_int_w_callback(DEVCB_##_devcb); #define MCFG_AKIKO_SCL_HANDLER(_devcb) \ - devcb = &downcast(*device).set_scl_handler(DEVCB_##_devcb); + downcast(*device).set_scl_handler(DEVCB_##_devcb); #define MCFG_AKIKO_SDA_READ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_sda_read_handler(DEVCB_##_devcb); + downcast(*device).set_sda_read_handler(DEVCB_##_devcb); #define MCFG_AKIKO_SDA_WRITE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_sda_write_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_out_cb(0, DEVCB_##_devcb); + downcast(*device).set_out_cb(0, DEVCB_##_devcb); #define MCFG_AM9513_OUT2_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_out_cb(1, DEVCB_##_devcb); + downcast(*device).set_out_cb(1, DEVCB_##_devcb); #define MCFG_AM9513_OUT3_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_out_cb(2, DEVCB_##_devcb); + downcast(*device).set_out_cb(2, DEVCB_##_devcb); #define MCFG_AM9513_OUT4_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_out_cb(3, DEVCB_##_devcb); + downcast(*device).set_out_cb(3, DEVCB_##_devcb); #define MCFG_AM9513_OUT5_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_out_cb(4, DEVCB_##_devcb); + downcast(*device).set_out_cb(4, DEVCB_##_devcb); #define MCFG_AM9513_FOUT_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_fout_cb(DEVCB_##_devcb); + downcast(*device).set_fout_cb(DEVCB_##_devcb); @@ -68,6 +68,12 @@ public: // static configuration template devcb_base &set_out_cb(int c, Object &&cb) { assert(c >= 0 && c < 5); return m_out_cb[c].set_callback(std::forward(cb)); } template devcb_base &set_fout_cb(Object &&cb) { return m_fout_cb.set_callback(std::forward(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 devcb_base &set_out_hreq_callback(Object &&cb) { return m_out_hreq_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_eop_callback(Object &&cb) { return m_out_eop_cb.set_callback(std::forward(cb)); } + auto out_hreq_callback() { return m_out_hreq_cb.bind(); } + auto out_eop_callback() { return m_out_eop_cb.bind(); } template devcb_base &set_in_memr_callback(Object &&cb) { return m_in_memr_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_memw_callback(Object &&cb) { return m_out_memw_cb.set_callback(std::forward(cb)); } + auto in_memr_callback() { return m_in_memr_cb.bind(); } + auto out_memw_callback() { return m_out_memw_cb.bind(); } template devcb_base &set_in_ior_callback(Object &&cb) { return m_in_ior_cb[C].set_callback(std::forward(cb)); } template devcb_base &set_out_iow_callback(Object &&cb) { return m_out_iow_cb[C].set_callback(std::forward(cb)); } template devcb_base &set_out_dack_callback(Object &&cb) { return m_out_dack_cb[C].set_callback(std::forward(cb)); } + template auto in_ior_callback() { return m_in_ior_cb[C].bind(); } + template auto out_iow_callback() { return m_out_iow_cb[C].bind(); } + template 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(*device).set_out_hreq_callback(DEVCB_##_devcb); + downcast(*device).set_out_hreq_callback(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_EOP_CB(_devcb) \ - devcb = &downcast(*device).set_out_eop_callback(DEVCB_##_devcb); + downcast(*device).set_out_eop_callback(DEVCB_##_devcb); #define MCFG_AM9517A_IN_MEMR_CB(_devcb) \ - devcb = &downcast(*device).set_in_memr_callback(DEVCB_##_devcb); + downcast(*device).set_in_memr_callback(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_MEMW_CB(_devcb) \ - devcb = &downcast(*device).set_out_memw_callback(DEVCB_##_devcb); + downcast(*device).set_out_memw_callback(DEVCB_##_devcb); #define MCFG_AM9517A_IN_IOR_0_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_callback<0>(DEVCB_##_devcb); + downcast(*device).set_in_ior_callback<0>(DEVCB_##_devcb); #define MCFG_AM9517A_IN_IOR_1_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_callback<1>(DEVCB_##_devcb); + downcast(*device).set_in_ior_callback<1>(DEVCB_##_devcb); #define MCFG_AM9517A_IN_IOR_2_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_callback<2>(DEVCB_##_devcb); + downcast(*device).set_in_ior_callback<2>(DEVCB_##_devcb); #define MCFG_AM9517A_IN_IOR_3_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_callback<3>(DEVCB_##_devcb); + downcast(*device).set_in_ior_callback<3>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_IOW_0_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_iow_callback<0>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_IOW_1_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_iow_callback<1>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_IOW_2_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_callback<2>(DEVCB_##_devcb); + downcast(*device).set_out_iow_callback<2>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_IOW_3_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_callback<3>(DEVCB_##_devcb); + downcast(*device).set_out_iow_callback<3>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_DACK_0_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_dack_callback<0>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_DACK_1_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_dack_callback<1>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_DACK_2_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_callback<2>(DEVCB_##_devcb); + downcast(*device).set_out_dack_callback<2>(DEVCB_##_devcb); #define MCFG_AM9517A_OUT_DACK_3_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_callback<3>(DEVCB_##_devcb); + downcast(*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(*device).static_set_out_int_callback(DEVCB_##_devcb); + downcast(*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(*device).set_index_wr_callback(DEVCB_##_write); + downcast(*device).set_index_wr_callback(DEVCB_##_write); #define MCFG_AMIGA_FDC_READ_DMA_CALLBACK(_read) \ - devcb = &downcast(*device).set_dma_rd_callback(DEVCB_##_read); + downcast(*device).set_dma_rd_callback(DEVCB_##_read); #define MCFG_AMIGA_FDC_WRITE_DMA_CALLBACK(_write) \ - devcb = &downcast(*device).set_dma_wr_callback(DEVCB_##_write); + downcast(*device).set_dma_wr_callback(DEVCB_##_write); #define MCFG_AMIGA_FDC_DSKBLK_CALLBACK(_write) \ - devcb = &downcast(*device).set_dskblk_wr_callback(DEVCB_##_write); + downcast(*device).set_dskblk_wr_callback(DEVCB_##_write); #define MCFG_AMIGA_FDC_DSKSYN_CALLBACK(_write) \ - devcb = &downcast(*device).set_dsksyn_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_so_cb(DEVCB_##_cb); + downcast(*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(*device).set_system_reset_callback(DEVCB_##_devcb); + downcast(*device).set_system_reset_callback(DEVCB_##_devcb); #define MCFG_AT_KEYBOARD_CONTROLLER_GATE_A20_CB(_devcb) \ - devcb = &downcast(*device).set_gate_a20_callback(DEVCB_##_devcb); + downcast(*device).set_gate_a20_callback(DEVCB_##_devcb); #define MCFG_AT_KEYBOARD_CONTROLLER_INPUT_BUFFER_FULL_CB(_devcb) \ - devcb = &downcast(*device).set_input_buffer_full_callback(DEVCB_##_devcb); + downcast(*device).set_input_buffer_full_callback(DEVCB_##_devcb); #define MCFG_AT_KEYBOARD_CONTROLLER_OUTPUT_BUFFER_EMPTY_CB(_devcb) \ - devcb = &downcast(*device).set_output_buffer_empty_callback(DEVCB_##_devcb); + downcast(*device).set_output_buffer_empty_callback(DEVCB_##_devcb); #define MCFG_AT_KEYBOARD_CONTROLLER_KEYBOARD_CLOCK_CB(_devcb) \ - devcb = &downcast(*device).set_keyboard_clock_callback(DEVCB_##_devcb); + downcast(*device).set_keyboard_clock_callback(DEVCB_##_devcb); #define MCFG_AT_KEYBOARD_CONTROLLER_KEYBOARD_DATA_CB(_devcb) \ - devcb = &downcast(*device).set_keyboard_data_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_ATA_INTERFACE_DMARQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_dmarq_handler(DEVCB_##_devcb); + downcast(*device).set_dmarq_handler(DEVCB_##_devcb); #define MCFG_ATA_INTERFACE_DASP_HANDLER(_devcb) \ - devcb = &downcast(*device).set_dasp_handler(DEVCB_##_devcb); + downcast(*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(*device).set_line_callback(DEVCB_##_devcb); + downcast(*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 devcb_base &set_write_dav_callback(Object &&cb) { return m_write_dav_cb.set_callback(std::forward(cb)); } template devcb_base &set_write_tbmt_callback(Object &&cb) { return m_write_tbmt_cb.set_callback(std::forward(cb)); } template devcb_base &set_write_eoc_callback(Object &&cb) { return m_write_eoc_cb.set_callback(std::forward(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(*device).set_auto_rdav(_auto_rdav); #define MCFG_AY31015_READ_SI_CB(_devcb) \ - devcb = &downcast(*device).set_read_si_callback(DEVCB_##_devcb); + downcast(*device).set_read_si_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_SO_CB(_devcb) \ - devcb = &downcast(*device).set_write_so_callback(DEVCB_##_devcb); + downcast(*device).set_write_so_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_PE_CB(_devcb) \ - devcb = &downcast(*device).set_write_pe_callback(DEVCB_##_devcb); + downcast(*device).set_write_pe_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_FE_CB(_devcb) \ - devcb = &downcast(*device).set_write_fe_callback(DEVCB_##_devcb); + downcast(*device).set_write_fe_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_OR_CB(_devcb) \ - devcb = &downcast(*device).set_write_or_callback(DEVCB_##_devcb); + downcast(*device).set_write_or_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_DAV_CB(_devcb) \ - devcb = &downcast(*device).set_write_dav_callback(DEVCB_##_devcb); + downcast(*device).set_write_dav_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_TBMT_CB(_devcb) \ - devcb = &downcast(*device).set_write_tbmt_callback(DEVCB_##_devcb); + downcast(*device).set_write_tbmt_callback(DEVCB_##_devcb); #define MCFG_AY31015_WRITE_EOC_CB(_devcb) \ - devcb = &downcast(*device).set_write_eoc_callback(DEVCB_##_devcb); + downcast(*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(*device).set_auto_rdav(_auto_rdav); #define MCFG_AY51013_READ_SI_CB(_devcb) \ - devcb = &downcast(*device).set_read_si_callback(DEVCB_##_devcb); + downcast(*device).set_read_si_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_SO_CB(_devcb) \ - devcb = &downcast(*device).set_write_so_callback(DEVCB_##_devcb); + downcast(*device).set_write_so_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_PE_CB(_devcb) \ - devcb = &downcast(*device).set_write_pe_callback(DEVCB_##_devcb); + downcast(*device).set_write_pe_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_FE_CB(_devcb) \ - devcb = &downcast(*device).set_write_fe_callback(DEVCB_##_devcb); + downcast(*device).set_write_fe_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_OR_CB(_devcb) \ - devcb = &downcast(*device).set_write_or_callback(DEVCB_##_devcb); + downcast(*device).set_write_or_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_DAV_CB(_devcb) \ - devcb = &downcast(*device).set_write_dav_callback(DEVCB_##_devcb); + downcast(*device).set_write_dav_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_TBMT_CB(_devcb) \ - devcb = &downcast(*device).set_write_tbmt_callback(DEVCB_##_devcb); + downcast(*device).set_write_tbmt_callback(DEVCB_##_devcb); #define MCFG_AY51013_WRITE_EOC_CB(_devcb) \ - devcb = &downcast(*device).set_write_eoc_callback(DEVCB_##_devcb); + downcast(*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(*device).set_mode_rd_callback(DEVCB_##_read); + downcast(*device).set_mode_rd_callback(DEVCB_##_read); #define MCFG_CDP1852_SR_CALLBACK(_write) \ - devcb = &downcast(*device).set_sr_wr_callback(DEVCB_##_write); + downcast(*device).set_sr_wr_callback(DEVCB_##_write); #define MCFG_CDP1852_DI_CALLBACK(_read) \ - devcb = &downcast(*device).set_data_rd_callback(DEVCB_##_read); + downcast(*device).set_data_rd_callback(DEVCB_##_read); #define MCFG_CDP1852_DO_CALLBACK(_write) \ - devcb = &downcast(*device).set_data_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_d1_rd_callback(DEVCB_##_read); + downcast(*device).set_d1_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D2_CALLBACK(_read) \ - devcb = &downcast(*device).set_d2_rd_callback(DEVCB_##_read); + downcast(*device).set_d2_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D3_CALLBACK(_read) \ - devcb = &downcast(*device).set_d3_rd_callback(DEVCB_##_read); + downcast(*device).set_d3_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D4_CALLBACK(_read) \ - devcb = &downcast(*device).set_d4_rd_callback(DEVCB_##_read); + downcast(*device).set_d4_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D5_CALLBACK(_read) \ - devcb = &downcast(*device).set_d5_rd_callback(DEVCB_##_read); + downcast(*device).set_d5_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D6_CALLBACK(_read) \ - devcb = &downcast(*device).set_d6_rd_callback(DEVCB_##_read); + downcast(*device).set_d6_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D7_CALLBACK(_read) \ - devcb = &downcast(*device).set_d7_rd_callback(DEVCB_##_read); + downcast(*device).set_d7_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D8_CALLBACK(_read) \ - devcb = &downcast(*device).set_d8_rd_callback(DEVCB_##_read); + downcast(*device).set_d8_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D9_CALLBACK(_read) \ - devcb = &downcast(*device).set_d9_rd_callback(DEVCB_##_read); + downcast(*device).set_d9_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D10_CALLBACK(_read) \ - devcb = &downcast(*device).set_d10_rd_callback(DEVCB_##_read); + downcast(*device).set_d10_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_D11_CALLBACK(_read) \ - devcb = &downcast(*device).set_d11_rd_callback(DEVCB_##_read); + downcast(*device).set_d11_rd_callback(DEVCB_##_read); #define MCFG_CDP1871_DA_CALLBACK(_write) \ - devcb = &downcast(*device).set_da_wr_callback(DEVCB_##_write); + downcast(*device).set_da_wr_callback(DEVCB_##_write); #define MCFG_CDP1871_RPT_CALLBACK(_write) \ - devcb = &downcast(*device).set_rpt_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_irq_cb(DEVCB_##_cb); + downcast(*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(*device).set_signal_handler(DEVCB_##_devcb); + downcast(*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 devcb_base &set_signal_handler(Object &&cb) { return m_signal_handler.set_callback(std::forward(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(*device).set_fx4_handler(DEVCB_##_devcb); + downcast(*device).set_fx4_handler(DEVCB_##_devcb); #define MCFG_COM8116_FR_HANDLER(_devcb) \ - devcb = &downcast(*device).set_fr_handler(DEVCB_##_devcb); + downcast(*device).set_fr_handler(DEVCB_##_devcb); #define MCFG_COM8116_FT_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ft_handler(DEVCB_##_devcb); + downcast(*device).set_ft_handler(DEVCB_##_devcb); ///************************************************************************* @@ -58,6 +58,9 @@ public: template devcb_base &set_fx4_handler(Object &&cb) { return m_fx4_handler.set_callback(std::forward(cb)); } template devcb_base &set_fr_handler(Object &&cb) { return m_fr_handler.set_callback(std::forward(cb)); } template devcb_base &set_ft_handler(Object &&cb) { return m_ft_handler.set_callback(std::forward(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(*device).set_stch_handler(DEVCB_##_devcb); + downcast(*device).set_stch_handler(DEVCB_##_devcb); #define MCFG_CR511B_STEN_HANDLER(_devcb) \ - devcb = &downcast(*device).set_sten_handler(DEVCB_##_devcb); + downcast(*device).set_sten_handler(DEVCB_##_devcb); #define MCFG_CR511B_DRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_drq_handler(DEVCB_##_devcb); + downcast(*device).set_drq_handler(DEVCB_##_devcb); #define MCFG_CR511B_DTEN_HANDLER(_devcb) \ - devcb = &downcast(*device).set_dten_handler(DEVCB_##_devcb); + downcast(*device).set_dten_handler(DEVCB_##_devcb); #define MCFG_CR511B_SCOR_HANDLER(_devcb) \ - devcb = &downcast(*device).set_scor_handler(DEVCB_##_devcb); + downcast(*device).set_scor_handler(DEVCB_##_devcb); #define MCFG_CR511B_XAEN_HANDLER(_devcb) \ - devcb = &downcast(*device).set_xaen_handler(DEVCB_##_devcb); + downcast(*device).set_xaen_handler(DEVCB_##_devcb); //************************************************************************** @@ -83,6 +83,12 @@ public: template devcb_base &set_dten_handler(Object &&cb) { return m_dten_handler.set_callback(std::forward(cb)); } template devcb_base &set_scor_handler(Object &&cb) { return m_scor_handler.set_callback(std::forward(cb)); } template devcb_base &set_xaen_handler(Object &&cb) { return m_xaen_handler.set_callback(std::forward(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(*device).set_keybctag(_keybctag); #define MCFG_CS4031_IOR(_ior) \ - devcb = &downcast(device)->set_ior_callback(DEVCB_##_ior); + downcast(device)->set_ior_callback(DEVCB_##_ior); #define MCFG_CS4031_IOW(_iow) \ - devcb = &downcast(device)->set_iow_callback(DEVCB_##_iow); + downcast(device)->set_iow_callback(DEVCB_##_iow); #define MCFG_CS4031_TC(_tc) \ - devcb = &downcast(device)->set_tc_callback(DEVCB_##_tc); + downcast(device)->set_tc_callback(DEVCB_##_tc); #define MCFG_CS4031_HOLD(_hold) \ - devcb = &downcast(device)->set_hold_callback(DEVCB_##_hold); + downcast(device)->set_hold_callback(DEVCB_##_hold); #define MCFG_CS4031_NMI(_nmi) \ - devcb = &downcast(device)->set_nmi_callback(DEVCB_##_nmi); + downcast(device)->set_nmi_callback(DEVCB_##_nmi); #define MCFG_CS4031_INTR(_intr) \ - devcb = &downcast(device)->set_intr_callback(DEVCB_##_intr); + downcast(device)->set_intr_callback(DEVCB_##_intr); #define MCFG_CS4031_CPURESET(_cpureset) \ - devcb = &downcast(device)->set_cpureset_callback(DEVCB_##_cpureset); + downcast(device)->set_cpureset_callback(DEVCB_##_cpureset); #define MCFG_CS4031_A20M(_a20m) \ - devcb = &downcast(device)->set_a20m_callback(DEVCB_##_a20m); + downcast(device)->set_a20m_callback(DEVCB_##_a20m); #define MCFG_CS4031_SPKR(_spkr) \ - devcb = &downcast(device)->set_spkr_callback(DEVCB_##_spkr); + downcast(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(*device).set_input_cb(0, DEVCB_##_devcb); + downcast(*device).set_input_cb(0, DEVCB_##_devcb); #define MCFG_CXD1095_IN_PORTB_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(1, DEVCB_##_devcb); + downcast(*device).set_input_cb(1, DEVCB_##_devcb); #define MCFG_CXD1095_IN_PORTC_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(2, DEVCB_##_devcb); + downcast(*device).set_input_cb(2, DEVCB_##_devcb); #define MCFG_CXD1095_IN_PORTD_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(3, DEVCB_##_devcb); + downcast(*device).set_input_cb(3, DEVCB_##_devcb); #define MCFG_CXD1095_IN_PORTE_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(4, DEVCB_##_devcb); + downcast(*device).set_input_cb(4, DEVCB_##_devcb); #define MCFG_CXD1095_OUT_PORTA_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(0, DEVCB_##_devcb); + downcast(*device).set_output_cb(0, DEVCB_##_devcb); #define MCFG_CXD1095_OUT_PORTB_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(1, DEVCB_##_devcb); + downcast(*device).set_output_cb(1, DEVCB_##_devcb); #define MCFG_CXD1095_OUT_PORTC_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(2, DEVCB_##_devcb); + downcast(*device).set_output_cb(2, DEVCB_##_devcb); #define MCFG_CXD1095_OUT_PORTD_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(3, DEVCB_##_devcb); + downcast(*device).set_output_cb(3, DEVCB_##_devcb); #define MCFG_CXD1095_OUT_PORTE_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(4, DEVCB_##_devcb); + downcast(*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(*device).set_cfgout_handler(DEVCB_##_devcb); + downcast(*device).set_cfgout_handler(DEVCB_##_devcb); #define MCFG_DMAC_INT_HANDLER(_devcb) \ - devcb = &downcast(*device).set_int_handler(DEVCB_##_devcb); + downcast(*device).set_int_handler(DEVCB_##_devcb); #define MCFG_DMAC_XDACK_HANDLER(_devcb) \ - devcb = &downcast(*device).set_xdack_handler(DEVCB_##_devcb); + downcast(*device).set_xdack_handler(DEVCB_##_devcb); #define MCFG_DMAC_SCSI_READ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_scsi_read_handler(DEVCB_##_devcb); + downcast(*device).set_scsi_read_handler(DEVCB_##_devcb); #define MCFG_DMAC_SCSI_WRITE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_scsi_write_handler(DEVCB_##_devcb); + downcast(*device).set_scsi_write_handler(DEVCB_##_devcb); #define MCFG_DMAC_IO_READ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_io_read_handler(DEVCB_##_devcb); + downcast(*device).set_io_read_handler(DEVCB_##_devcb); #define MCFG_DMAC_IO_WRITE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_io_write_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_DP8390D_BREQ_CB(_devcb) \ - devcb = &downcast(*device).set_breq_callback(DEVCB_##_devcb); + downcast(*device).set_breq_callback(DEVCB_##_devcb); #define MCFG_DP8390D_MEM_READ_CB(_devcb) \ - devcb = &downcast(*device).set_mem_read_callback(DEVCB_##_devcb); + downcast(*device).set_mem_read_callback(DEVCB_##_devcb); #define MCFG_DP8390D_MEM_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_mem_write_callback(DEVCB_##_devcb); + downcast(*device).set_mem_write_callback(DEVCB_##_devcb); #define MCFG_RTL8019A_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_RTL8019A_BREQ_CB(_devcb) \ - devcb = &downcast(*device).set_breq_callback(DEVCB_##_devcb); + downcast(*device).set_breq_callback(DEVCB_##_devcb); #define MCFG_RTL8019A_MEM_READ_CB(_devcb) \ - devcb = &downcast(*device).set_mem_read_callback(DEVCB_##_devcb); + downcast(*device).set_mem_read_callback(DEVCB_##_devcb); #define MCFG_RTL8019A_MEM_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_mem_write_callback(DEVCB_##_devcb); + downcast(*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(*device).set_backing_handler(DEVCB_##_devcb); + downcast(*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(*device).set_inta_cb(DEVCB_##_devcb); + downcast(*device).set_inta_cb(DEVCB_##_devcb); #define MCFG_DS1386_INTB_HANDLER(_devcb) \ - devcb = &downcast(*device).set_intb_cb(DEVCB_##_devcb); + downcast(*device).set_intb_cb(DEVCB_##_devcb); #define MCFG_DS1386_SQW_HANDLER(_devcb) \ - devcb = &downcast(*device).set_sqw_cb(DEVCB_##_devcb); + downcast(*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(*device).set_in_ren_callback(DEVCB_##_devcb); + downcast(*device).set_in_ren_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_IFC_CB(_devcb) \ - devcb = &downcast(*device).set_in_ifc_callback(DEVCB_##_devcb); + downcast(*device).set_in_ifc_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_NDAC_CB(_devcb) \ - devcb = &downcast(*device).set_in_ndac_callback(DEVCB_##_devcb); + downcast(*device).set_in_ndac_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_NRFD_CB(_devcb) \ - devcb = &downcast(*device).set_in_nrfd_callback(DEVCB_##_devcb); + downcast(*device).set_in_nrfd_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_DAV_CB(_devcb) \ - devcb = &downcast(*device).set_in_dav_callback(DEVCB_##_devcb); + downcast(*device).set_in_dav_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_EOI_CB(_devcb) \ - devcb = &downcast(*device).set_in_eoi_callback(DEVCB_##_devcb); + downcast(*device).set_in_eoi_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_ATN_CB(_devcb) \ - devcb = &downcast(*device).set_in_atn_callback(DEVCB_##_devcb); + downcast(*device).set_in_atn_callback(DEVCB_##_devcb); #define MCFG_DS75161A_IN_SRQ_CB(_devcb) \ - devcb = &downcast(*device).set_in_srq_callback(DEVCB_##_devcb); + downcast(*device).set_in_srq_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_REN_CB(_devcb) \ - devcb = &downcast(*device).set_out_ren_callback(DEVCB_##_devcb); + downcast(*device).set_out_ren_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_IFC_CB(_devcb) \ - devcb = &downcast(*device).set_out_ifc_callback(DEVCB_##_devcb); + downcast(*device).set_out_ifc_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_NDAC_CB(_devcb) \ - devcb = &downcast(*device).set_out_ndac_callback(DEVCB_##_devcb); + downcast(*device).set_out_ndac_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_NRFD_CB(_devcb) \ - devcb = &downcast(*device).set_out_nrfd_callback(DEVCB_##_devcb); + downcast(*device).set_out_nrfd_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_DAV_CB(_devcb) \ - devcb = &downcast(*device).set_out_dav_callback(DEVCB_##_devcb); + downcast(*device).set_out_dav_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_EOI_CB(_devcb) \ - devcb = &downcast(*device).set_out_eoi_callback(DEVCB_##_devcb); + downcast(*device).set_out_eoi_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_ATN_CB(_devcb) \ - devcb = &downcast(*device).set_out_atn_callback(DEVCB_##_devcb); + downcast(*device).set_out_atn_callback(DEVCB_##_devcb); #define MCFG_DS75161A_OUT_SRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_srq_callback(DEVCB_##_devcb); + downcast(*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(*device).set_nlq_lp_wr_callback(DEVCB_##_write); + downcast(*device).set_nlq_lp_wr_callback(DEVCB_##_write); #define MCFG_E05A03_PE_LP_CALLBACK(_write) \ - devcb = &downcast(*device).set_pe_lp_wr_callback(DEVCB_##_write); + downcast(*device).set_pe_lp_wr_callback(DEVCB_##_write); #define MCFG_E05A03_RESO_CALLBACK(_write) \ - devcb = &downcast(*device).set_reso_wr_callback(DEVCB_##_write); + downcast(*device).set_reso_wr_callback(DEVCB_##_write); #define MCFG_E05A03_PE_CALLBACK(_write) \ - devcb = &downcast(*device).set_pe_wr_callback(DEVCB_##_write); + downcast(*device).set_pe_wr_callback(DEVCB_##_write); #define MCFG_E05A03_DATA_CALLBACK(_read) \ - devcb = &downcast(*device).set_data_rd_callback(DEVCB_##_read); + downcast(*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(*device).set_printhead_wr_callback(DEVCB_##_write); + downcast(*device).set_printhead_wr_callback(DEVCB_##_write); #define MCFG_E05A30_PF_STEPPER_CALLBACK(_write) \ - devcb = &downcast(*device).set_pf_stepper_wr_callback(DEVCB_##_write); + downcast(*device).set_pf_stepper_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CR_STEPPER_CALLBACK(_write) \ - devcb = &downcast(*device).set_cr_stepper_wr_callback(DEVCB_##_write); + downcast(*device).set_cr_stepper_wr_callback(DEVCB_##_write); #define MCFG_E05A30_READY_CALLBACK(_write) \ - devcb = &downcast(*device).set_ready_wr_callback(DEVCB_##_write); + downcast(*device).set_ready_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CENTRONICS_ACK_CALLBACK(_write) \ - devcb = &downcast(*device).set_centronics_ack_wr_callback(DEVCB_##_write); + downcast(*device).set_centronics_ack_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CENTRONICS_BUSY_CALLBACK(_write) \ - devcb = &downcast(*device).set_centronics_busy_wr_callback(DEVCB_##_write); + downcast(*device).set_centronics_busy_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CENTRONICS_PERROR_CALLBACK(_write) \ - devcb = &downcast(*device).set_centronics_perror_wr_callback(DEVCB_##_write); + downcast(*device).set_centronics_perror_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CENTRONICS_FAULT_CALLBACK(_write) \ - devcb = &downcast(*device).set_centronics_fault_wr_callback(DEVCB_##_write); + downcast(*device).set_centronics_fault_wr_callback(DEVCB_##_write); #define MCFG_E05A30_CENTRONICS_SELECT_CALLBACK(_write) \ - devcb = &downcast(*device).set_centronics_select_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_do_callback(DEVCB_##_devcb); + downcast(*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 devcb_base &set_do_callback(Object &&cb) { return m_do_cb.set_callback(std::forward(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(*device).set_gp20_reset_callback(DEVCB_##_devcb); + downcast(*device).set_gp20_reset_callback(DEVCB_##_devcb); #define MCFG_FDC37C93X_GP25_GATEA20_CB(_devcb) \ - devcb = &downcast(*device).set_gp25_gatea20_callback(DEVCB_##_devcb); + downcast(*device).set_gp25_gatea20_callback(DEVCB_##_devcb); #define MCFG_FDC37C93X_IRQ1_CB(_devcb) \ - devcb = &downcast(*device).set_irq1_callback(DEVCB_##_devcb); + downcast(*device).set_irq1_callback(DEVCB_##_devcb); #define MCFG_FDC37C93X_IRQ8_CB(_devcb) \ - devcb = &downcast(*device).set_irq8_callback(DEVCB_##_devcb); + downcast(*device).set_irq8_callback(DEVCB_##_devcb); #define MCFG_FDC37C93X_IRQ9_CB(_devcb) \ - devcb = &downcast(*device).set_irq9_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_FGA002_OUT_LIACK4_CB(_devcb) \ - devcb = &downcast(*device).set_liack4_callback(DEVCB_##_devcb); + downcast(*device).set_liack4_callback(DEVCB_##_devcb); #define MCFG_FGA002_OUT_LIACK5_CB(_devcb) \ - devcb = &downcast(*device).set_liack5_callback(DEVCB_##_devcb); + downcast(*device).set_liack5_callback(DEVCB_##_devcb); #define MCFG_FGA002_OUT_LIACK6_CB(_devcb) \ - devcb = &downcast(*device).set_liack6_callback(DEVCB_##_devcb); + downcast(*device).set_liack6_callback(DEVCB_##_devcb); #define MCFG_FGA002_OUT_LIACK7_CB(_devcb) \ - devcb = &downcast(*device).set_liack7_callback(DEVCB_##_devcb); + downcast(*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(*device).set_id(_id); #define MCFG_GAYLE_INT2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_int2_handler(DEVCB_##_devcb); + downcast(*device).set_int2_handler(DEVCB_##_devcb); #define MCFG_GAYLE_CS0_READ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cs0_read_handler(DEVCB_##_devcb); + downcast(*device).set_cs0_read_handler(DEVCB_##_devcb); #define MCFG_GAYLE_CS0_WRITE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cs0_write_handler(DEVCB_##_devcb); + downcast(*device).set_cs0_write_handler(DEVCB_##_devcb); #define MCFG_GAYLE_CS1_READ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cs1_read_handler(DEVCB_##_devcb); + downcast(*device).set_cs1_read_handler(DEVCB_##_devcb); #define MCFG_GAYLE_CS1_WRITE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_cs1_write_handler(DEVCB_##_devcb); + downcast(*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(*device).set_empty_cb(DEVCB_##_devcb); + downcast(*device).set_empty_cb(DEVCB_##_devcb); #define MCFG_GENERIC_FIFO_FULL_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_full_cb(DEVCB_##_devcb); + downcast(*device).set_full_cb(DEVCB_##_devcb); template 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(*device).set_data_pending_callback(DEVCB_##_devcb); + downcast(*device).set_data_pending_callback(DEVCB_##_devcb); #define MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(_ack) \ downcast(*device).set_separate_acknowledge(_ack); @@ -49,6 +49,7 @@ class generic_latch_base_device : public device_t public: // configuration template devcb_base &set_data_pending_callback(Object &&cb) { return m_data_pending_cb.set_callback(std::forward(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(*device).set_dma_end_callback(DEVCB_##_devcb); + downcast(*device).set_dma_end_callback(DEVCB_##_devcb); #define MCFG_HD63450_DMA_ERROR_CB(_devcb) \ - devcb = &downcast(*device).set_dma_error_callback(DEVCB_##_devcb); + downcast(*device).set_dma_error_callback(DEVCB_##_devcb); #define MCFG_HD63450_DMA_READ_0_CB(_devcb) \ - devcb = &downcast(*device).set_dma_read_callback<0>(DEVCB_##_devcb); + downcast(*device).set_dma_read_callback<0>(DEVCB_##_devcb); #define MCFG_HD63450_DMA_READ_1_CB(_devcb) \ - devcb = &downcast(*device).set_dma_read_callback<1>(DEVCB_##_devcb); + downcast(*device).set_dma_read_callback<1>(DEVCB_##_devcb); #define MCFG_HD63450_DMA_READ_2_CB(_devcb) \ - devcb = &downcast(*device).set_dma_read_callback<2>(DEVCB_##_devcb); + downcast(*device).set_dma_read_callback<2>(DEVCB_##_devcb); #define MCFG_HD63450_DMA_READ_3_CB(_devcb) \ - devcb = &downcast(*device).set_dma_read_callback<3>(DEVCB_##_devcb); + downcast(*device).set_dma_read_callback<3>(DEVCB_##_devcb); #define MCFG_HD63450_DMA_WRITE_0_CB(_devcb) \ - devcb = &downcast(*device).set_dma_write_callback<0>(DEVCB_##_devcb); + downcast(*device).set_dma_write_callback<0>(DEVCB_##_devcb); #define MCFG_HD63450_DMA_WRITE_1_CB(_devcb) \ - devcb = &downcast(*device).set_dma_write_callback<1>(DEVCB_##_devcb); + downcast(*device).set_dma_write_callback<1>(DEVCB_##_devcb); #define MCFG_HD63450_DMA_WRITE_2_CB(_devcb) \ - devcb = &downcast(*device).set_dma_write_callback<2>(DEVCB_##_devcb); + downcast(*device).set_dma_write_callback<2>(DEVCB_##_devcb); #define MCFG_HD63450_DMA_WRITE_3_CB(_devcb) \ - devcb = &downcast(*device).set_dma_write_callback<3>(DEVCB_##_devcb); + downcast(*device).set_dma_write_callback<3>(DEVCB_##_devcb); #define MCFG_HD63450_CPU(_tag) \ downcast(*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(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_HD64610_OUT_1HZ_CB(_devcb) \ - devcb = &downcast(*device).set_out_1hz_callback(DEVCB_##_devcb); + downcast(*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(*device).set_intrq_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_dmarq_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_dip_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_auxbus_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_dma_rd_callback(DEVCB_##_read); + downcast(*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(*device).set_dma_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_TACO_FLG_HANDLER(_devcb) \ - devcb = &downcast(*device).set_flg_handler(DEVCB_##_devcb); + downcast(*device).set_flg_handler(DEVCB_##_devcb); #define MCFG_TACO_STS_HANDLER(_devcb) \ - devcb = &downcast(*device).set_sts_handler(DEVCB_##_devcb); + downcast(*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(*device).set_intrq_wr_callback(DEVCB_##_write); + downcast(*device).set_intrq_wr_callback(DEVCB_##_write); #define MCFG_I7220_DRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_drq_wr_callback(DEVCB_##_write); + downcast(*device).set_drq_wr_callback(DEVCB_##_write); #define MCFG_I7220_DATA_SIZE(data_size) \ downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_I80130_ACK_CALLBACK(_write) \ - devcb = &downcast(*device).set_ack_wr_callback(DEVCB_##_write); + downcast(*device).set_ack_wr_callback(DEVCB_##_write); #define MCFG_I80130_LIR_CALLBACK(_write) \ - devcb = &downcast(*device).set_lir_wr_callback(DEVCB_##_write); + downcast(*device).set_lir_wr_callback(DEVCB_##_write); #define MCFG_I80130_SYSTICK_CALLBACK(_write) \ - devcb = &downcast(*device).set_systick_wr_callback(DEVCB_##_write); + downcast(*device).set_systick_wr_callback(DEVCB_##_write); #define MCFG_I80130_DELAY_CALLBACK(_write) \ - devcb = &downcast(*device).set_delay_wr_callback(DEVCB_##_write); + downcast(*device).set_delay_wr_callback(DEVCB_##_write); #define MCFG_I80130_BAUD_CALLBACK(_write) \ - devcb = &downcast(*device).set_baud_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_data_width(_data_width); #define MCFG_I8087_INT_HANDLER(_devcb) \ - devcb = &downcast(*device).set_int(DEVCB_##_devcb); + downcast(*device).set_int(DEVCB_##_devcb); #define MCFG_I8087_BUSY_HANDLER(_devcb) \ - devcb = &downcast(*device).set_busy(DEVCB_##_devcb); + downcast(*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(*device).set_in_pa_callback(DEVCB_##_devcb); + downcast(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_I8155_IN_PORTB_CB(_devcb) \ - devcb = &downcast(*device).set_in_pb_callback(DEVCB_##_devcb); + downcast(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_I8155_IN_PORTC_CB(_devcb) \ - devcb = &downcast(*device).set_in_pc_callback(DEVCB_##_devcb); + downcast(*device).set_in_pc_callback(DEVCB_##_devcb); #define MCFG_I8155_OUT_PORTA_CB(_devcb) \ - devcb = &downcast(*device).set_out_pa_callback(DEVCB_##_devcb); + downcast(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_I8155_OUT_PORTB_CB(_devcb) \ - devcb = &downcast(*device).set_out_pb_callback(DEVCB_##_devcb); + downcast(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_I8155_OUT_PORTC_CB(_devcb) \ - devcb = &downcast(*device).set_out_pc_callback(DEVCB_##_devcb); + downcast(*device).set_out_pc_callback(DEVCB_##_devcb); #define MCFG_I8155_OUT_TIMEROUT_CB(_devcb) \ - devcb = &downcast(*device).set_out_to_callback(DEVCB_##_devcb); + downcast(*device).set_out_to_callback(DEVCB_##_devcb); //************************************************************************** @@ -82,6 +82,13 @@ public: template devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_pc_callback(Object &&cb) { return m_out_pc_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_to_callback(Object &&cb) { return m_out_to_cb.set_callback(std::forward(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(*device).set_int_wr_callback(DEVCB_##_write); + downcast(*device).set_int_wr_callback(DEVCB_##_write); #define MCFG_I8212_DI_CALLBACK(_read) \ - devcb = &downcast(*device).set_di_rd_callback(DEVCB_##_read); + downcast(*device).set_di_rd_callback(DEVCB_##_read); #define MCFG_I8212_DO_CALLBACK(_write) \ - devcb = &downcast(*device).set_do_wr_callback(DEVCB_##_write); + downcast(*device).set_do_wr_callback(DEVCB_##_write); #define MCFG_I8212_MD_CALLBACK(_read) \ - devcb = &downcast(*device).set_md_rd_callback(DEVCB_##_read); + downcast(*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(*device).set_int_wr_callback(DEVCB_##_write); + downcast(*device).set_int_wr_callback(DEVCB_##_write); #define MCFG_I8214_ENLG_CALLBACK(_write) \ - devcb = &downcast(*device).set_enlg_wr_callback(DEVCB_##_write); + downcast(*device).set_enlg_wr_callback(DEVCB_##_write); @@ -54,6 +54,8 @@ public: template devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward(cb)); } template devcb_base &set_enlg_wr_callback(Object &&cb) { return m_write_enlg.set_callback(std::forward(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(*device).set_smi_callback(DEVCB_##_devcb); + downcast(*device).set_smi_callback(DEVCB_##_devcb); #define MCFG_I82371SB_BOOT_STATE_HOOK(_devcb) \ - devcb = &downcast(*device).set_boot_state_hook(DEVCB_##_devcb); + downcast(*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(*device).set_irq_pri_callback(DEVCB_##_devcb); + downcast(*device).set_irq_pri_callback(DEVCB_##_devcb); #define MCFG_I82371SB_IDE_IRQ_SEC_CB(_devcb) \ - devcb = &downcast(*device).set_irq_sec_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_handler(DEVCB_##_devcb); + downcast(*device).set_read_handler(DEVCB_##_devcb); #define MCFG_I8243_WRITEHANDLER(_devcb) \ - devcb = &downcast(*device).set_write_handler(DEVCB_##_devcb); + downcast(*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(*device).set_txd_handler(DEVCB_##_devcb); + downcast(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_I8251_DTR_HANDLER(_devcb) \ - devcb = &downcast(*device).set_dtr_handler(DEVCB_##_devcb); + downcast(*device).set_dtr_handler(DEVCB_##_devcb); #define MCFG_I8251_RTS_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rts_handler(DEVCB_##_devcb); + downcast(*device).set_rts_handler(DEVCB_##_devcb); #define MCFG_I8251_RXRDY_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rxrdy_handler(DEVCB_##_devcb); + downcast(*device).set_rxrdy_handler(DEVCB_##_devcb); #define MCFG_I8251_TXRDY_HANDLER(_devcb) \ - devcb = &downcast(*device).set_txrdy_handler(DEVCB_##_devcb); + downcast(*device).set_txrdy_handler(DEVCB_##_devcb); #define MCFG_I8251_TXEMPTY_HANDLER(_devcb) \ - devcb = &downcast(*device).set_txempty_handler(DEVCB_##_devcb); + downcast(*device).set_txempty_handler(DEVCB_##_devcb); #define MCFG_I8251_SYNDET_HANDLER(_devcb) \ - devcb = &downcast(*device).set_syndet_handler(DEVCB_##_devcb); + downcast(*device).set_syndet_handler(DEVCB_##_devcb); class i8251_device : public device_t, public device_serial_interface @@ -55,6 +55,13 @@ public: template devcb_base &set_txrdy_handler(Object &&cb) { return m_txrdy_handler.set_callback(std::forward(cb)); } template devcb_base &set_txempty_handler(Object &&cb) { return m_txempty_handler.set_callback(std::forward(cb)); } template devcb_base &set_syndet_handler(Object &&cb) { return m_syndet_handler.set_callback(std::forward(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(*device).set_in_pa_callback(DEVCB_##_devcb); + downcast(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_I8255_IN_PORTB_CB(_devcb) \ - devcb = &downcast(*device).set_in_pb_callback(DEVCB_##_devcb); + downcast(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_I8255_IN_PORTC_CB(_devcb) \ - devcb = &downcast(*device).set_in_pc_callback(DEVCB_##_devcb); + downcast(*device).set_in_pc_callback(DEVCB_##_devcb); #define MCFG_I8255_OUT_PORTA_CB(_devcb) \ - devcb = &downcast(*device).set_out_pa_callback(DEVCB_##_devcb); + downcast(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_I8255_OUT_PORTB_CB(_devcb) \ - devcb = &downcast(*device).set_out_pb_callback(DEVCB_##_devcb); + downcast(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_I8255_OUT_PORTC_CB(_devcb) \ - devcb = &downcast(*device).set_out_pc_callback(DEVCB_##_devcb); + downcast(*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(*device).set_tri_pa_callback(DEVCB_##_devcb); + downcast(*device).set_tri_pa_callback(DEVCB_##_devcb); #define MCFG_I8255_TRISTATE_PORTB_CB(_devcb) \ - devcb = &downcast(*device).set_tri_pb_callback(DEVCB_##_devcb); + downcast(*device).set_tri_pb_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -84,6 +84,14 @@ public: template devcb_base &set_out_pc_callback(Object &&cb) { return m_out_pc_cb.set_callback(std::forward(cb)); } template devcb_base &set_tri_pa_callback(Object &&cb) { return m_tri_pa_cb.set_callback(std::forward(cb)); } template devcb_base &set_tri_pb_callback(Object &&cb) { return m_tri_pb_cb.set_callback(std::forward(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(*device).set_out_hrq_callback(DEVCB_##_devcb); + downcast(*device).set_out_hrq_callback(DEVCB_##_devcb); #define MCFG_I8257_OUT_TC_CB(_devcb) \ - devcb = &downcast(*device).set_out_tc_callback(DEVCB_##_devcb); + downcast(*device).set_out_tc_callback(DEVCB_##_devcb); #define MCFG_I8257_IN_MEMR_CB(_devcb) \ - devcb = &downcast(*device).set_in_memr_callback(DEVCB_##_devcb); + downcast(*device).set_in_memr_callback(DEVCB_##_devcb); #define MCFG_I8257_OUT_MEMW_CB(_devcb) \ - devcb = &downcast(*device).set_out_memw_callback(DEVCB_##_devcb); + downcast(*device).set_out_memw_callback(DEVCB_##_devcb); #define MCFG_I8257_IN_IOR_0_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_callback<0>(DEVCB_##_devcb); + downcast(*device).set_in_ior_callback<0>(DEVCB_##_devcb); #define MCFG_I8257_IN_IOR_1_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_callback<1>(DEVCB_##_devcb); + downcast(*device).set_in_ior_callback<1>(DEVCB_##_devcb); #define MCFG_I8257_IN_IOR_2_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_callback<2>(DEVCB_##_devcb); + downcast(*device).set_in_ior_callback<2>(DEVCB_##_devcb); #define MCFG_I8257_IN_IOR_3_CB(_devcb) \ - devcb = &downcast(*device).set_in_ior_callback<3>(DEVCB_##_devcb); + downcast(*device).set_in_ior_callback<3>(DEVCB_##_devcb); #define MCFG_I8257_OUT_IOW_0_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_iow_callback<0>(DEVCB_##_devcb); #define MCFG_I8257_OUT_IOW_1_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_iow_callback<1>(DEVCB_##_devcb); #define MCFG_I8257_OUT_IOW_2_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_callback<2>(DEVCB_##_devcb); + downcast(*device).set_out_iow_callback<2>(DEVCB_##_devcb); #define MCFG_I8257_OUT_IOW_3_CB(_devcb) \ - devcb = &downcast(*device).set_out_iow_callback<3>(DEVCB_##_devcb); + downcast(*device).set_out_iow_callback<3>(DEVCB_##_devcb); #define MCFG_I8257_OUT_DACK_0_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_dack_callback<0>(DEVCB_##_devcb); #define MCFG_I8257_OUT_DACK_1_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_dack_callback<1>(DEVCB_##_devcb); #define MCFG_I8257_OUT_DACK_2_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_callback<2>(DEVCB_##_devcb); + downcast(*device).set_out_dack_callback<2>(DEVCB_##_devcb); #define MCFG_I8257_OUT_DACK_3_CB(_devcb) \ - devcb = &downcast(*device).set_out_dack_callback<3>(DEVCB_##_devcb); + downcast(*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(*device).set_out_irq_callback(DEVCB_##_out_irq); + downcast(*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(*device).set_intrq_wr_callback(DEVCB_##_write); + downcast(*device).set_intrq_wr_callback(DEVCB_##_write); #define MCFG_I8271_DRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_drq_wr_callback(DEVCB_##_write); + downcast(*device).set_drq_wr_callback(DEVCB_##_write); #define MCFG_I8271_HDL_CALLBACK(_write) \ - devcb = &downcast(*device).set_hdl_wr_callback(DEVCB_##_write); + downcast(*device).set_hdl_wr_callback(DEVCB_##_write); #define MCFG_I8271_OPT_CALLBACK(_write) \ - devcb = &downcast(*device).set_opt_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_I8279_OUT_SL_CB(_devcb) \ - devcb = &downcast(*device).set_out_sl_callback(DEVCB_##_devcb); + downcast(*device).set_out_sl_callback(DEVCB_##_devcb); #define MCFG_I8279_OUT_DISP_CB(_devcb) \ - devcb = &downcast(*device).set_out_disp_callback(DEVCB_##_devcb); + downcast(*device).set_out_disp_callback(DEVCB_##_devcb); #define MCFG_I8279_OUT_BD_CB(_devcb) \ - devcb = &downcast(*device).set_out_bd_callback(DEVCB_##_devcb); + downcast(*device).set_out_bd_callback(DEVCB_##_devcb); #define MCFG_I8279_IN_RL_CB(_devcb) \ - devcb = &downcast(*device).set_in_rl_callback(DEVCB_##_devcb); + downcast(*device).set_in_rl_callback(DEVCB_##_devcb); #define MCFG_I8279_IN_SHIFT_CB(_devcb) \ - devcb = &downcast(*device).set_in_shift_callback(DEVCB_##_devcb); + downcast(*device).set_in_shift_callback(DEVCB_##_devcb); #define MCFG_I8279_IN_CTRL_CB(_devcb) \ - devcb = &downcast(*device).set_in_ctrl_callback(DEVCB_##_devcb); + downcast(*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(*device).set_in_pa_callback(DEVCB_##_devcb); + downcast(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_I8355_OUT_PA_CB(_devcb) \ - devcb = &downcast(*device).set_out_pa_callback(DEVCB_##_devcb); + downcast(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_I8355_IN_PB_CB(_devcb) \ - devcb = &downcast(*device).set_in_pb_callback(DEVCB_##_devcb); + downcast(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_I8355_OUT_PB_CB(_devcb) \ - devcb = &downcast(*device).set_out_pb_callback(DEVCB_##_devcb); + downcast(*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(*device).set_keyboard_callback(DEVCB_##_devcb); + downcast(*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(*device).set_trc(_trc); #define MCFG_IM6402_TRO_CALLBACK(_write) \ - devcb = &downcast(*device).set_tro_wr_callback(DEVCB_##_write); + downcast(*device).set_tro_wr_callback(DEVCB_##_write); #define MCFG_IM6402_DR_CALLBACK(_write) \ - devcb = &downcast(*device).set_dr_wr_callback(DEVCB_##_write); + downcast(*device).set_dr_wr_callback(DEVCB_##_write); #define MCFG_IM6402_TBRE_CALLBACK(_write) \ - devcb = &downcast(*device).set_tbre_wr_callback(DEVCB_##_write); + downcast(*device).set_tbre_wr_callback(DEVCB_##_write); #define MCFG_IM6402_TRE_CALLBACK(_write) \ - devcb = &downcast(*device).set_tre_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_output_handler(DEVCB_##_devcb); + downcast(*device).set_output_handler(DEVCB_##_devcb); //************************************************************************** @@ -45,6 +45,7 @@ class input_merger_device : public device_t public: // callback template devcb_base &set_output_handler(Object &&cb) { return m_output_handler.set_callback(std::forward(cb)); } + auto output_handler() { return m_output_handler.bind(); } // input lines template 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(*device).set_in_a_callback(DEVCB_##_devcb); + downcast(*device).set_in_a_callback(DEVCB_##_devcb); #define MCFG_INS8154_OUT_A_CB(_devcb) \ - devcb = &downcast(*device).set_out_a_callback(DEVCB_##_devcb); + downcast(*device).set_out_a_callback(DEVCB_##_devcb); #define MCFG_INS8154_IN_B_CB(_devcb) \ - devcb = &downcast(*device).set_in_b_callback(DEVCB_##_devcb); + downcast(*device).set_in_b_callback(DEVCB_##_devcb); #define MCFG_INS8154_OUT_B_CB(_devcb) \ - devcb = &downcast(*device).set_out_b_callback(DEVCB_##_devcb); + downcast(*device).set_out_b_callback(DEVCB_##_devcb); #define MCFG_INS8154_OUT_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq_callback(DEVCB_##_devcb); //currently unused + downcast(*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 devcb_base &set_out_tx_callback(Object &&cb) { return m_out_tx_cb.set_callback(std::forward(cb)); } @@ -27,6 +26,12 @@ public: template devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_out1_callback(Object &&cb) { return m_out_out1_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_out2_callback(Object &&cb) { return m_out_out2_cb.set_callback(std::forward(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(*device).set_out_tx_callback(DEVCB_##_devcb); + downcast(*device).set_out_tx_callback(DEVCB_##_devcb); #define MCFG_INS8250_OUT_DTR_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtr_callback(DEVCB_##_devcb); + downcast(*device).set_out_dtr_callback(DEVCB_##_devcb); #define MCFG_INS8250_OUT_RTS_CB(_devcb) \ - devcb = &downcast(*device).set_out_rts_callback(DEVCB_##_devcb); + downcast(*device).set_out_rts_callback(DEVCB_##_devcb); #define MCFG_INS8250_OUT_INT_CB(_devcb) \ - devcb = &downcast(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_INS8250_OUT_OUT1_CB(_devcb) \ - devcb = &downcast(*device).set_out_out1_callback(DEVCB_##_devcb); + downcast(*device).set_out_out1_callback(DEVCB_##_devcb); #define MCFG_INS8250_OUT_OUT2_CB(_devcb) \ - devcb = &downcast(*device).set_out_out2_callback(DEVCB_##_devcb); + downcast(*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(*device).set_int1_en_callback(DEVCB_##_devcb); + downcast(*device).set_int1_en_callback(DEVCB_##_devcb); #define MCFG_K053252_INT2_EN_CB(_devcb) \ - devcb = &downcast(*device).set_int2_en_callback(DEVCB_##_devcb); + downcast(*device).set_int2_en_callback(DEVCB_##_devcb); #define MCFG_K053252_INT1_ACK_CB(_devcb) \ - devcb = &downcast(*device).set_int1_ack_callback(DEVCB_##_devcb); + downcast(*device).set_int1_ack_callback(DEVCB_##_devcb); #define MCFG_K053252_INT2_ACK_CB(_devcb) \ - devcb = &downcast(*device).set_int2_ack_callback(DEVCB_##_devcb); + downcast(*device).set_int2_ack_callback(DEVCB_##_devcb); #define MCFG_K053252_INT_TIME_CB(_devcb) \ - devcb = &downcast(*device).set_int_time_callback(DEVCB_##_devcb); + downcast(*device).set_int_time_callback(DEVCB_##_devcb); #define MCFG_K053252_OFFSETS(_offsx, _offsy) \ downcast(*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(*device).set_x0_cb(DEVCB_##_cb); + downcast(*device).set_x0_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X1(_cb) \ - devcb = &downcast(*device).set_x1_cb(DEVCB_##_cb); + downcast(*device).set_x1_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X2(_cb) \ - devcb = &downcast(*device).set_x2_cb(DEVCB_##_cb); + downcast(*device).set_x2_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X3(_cb) \ - devcb = &downcast(*device).set_x3_cb(DEVCB_##_cb); + downcast(*device).set_x3_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X4(_cb) \ - devcb = &downcast(*device).set_x4_cb(DEVCB_##_cb); + downcast(*device).set_x4_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X5(_cb) \ - devcb = &downcast(*device).set_x5_cb(DEVCB_##_cb); + downcast(*device).set_x5_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X6(_cb) \ - devcb = &downcast(*device).set_x6_cb(DEVCB_##_cb); + downcast(*device).set_x6_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X7(_cb) \ - devcb = &downcast(*device).set_x7_cb(DEVCB_##_cb); + downcast(*device).set_x7_cb(DEVCB_##_cb); #define MCFG_AY3600_MATRIX_X8(_cb) \ - devcb = &downcast(*device).set_x8_cb(DEVCB_##_cb); + downcast(*device).set_x8_cb(DEVCB_##_cb); #define MCFG_AY3600_SHIFT_CB(_cb) \ - devcb = &downcast(*device).set_shift_cb(DEVCB_##_cb); + downcast(*device).set_shift_cb(DEVCB_##_cb); #define MCFG_AY3600_CONTROL_CB(_cb) \ - devcb = &downcast(*device).set_control_cb(DEVCB_##_cb); + downcast(*device).set_control_cb(DEVCB_##_cb); #define MCFG_AY3600_DATA_READY_CB(_cb) \ - devcb = &downcast(*device).set_data_ready_cb(DEVCB_##_cb); + downcast(*device).set_data_ready_cb(DEVCB_##_cb); #define MCFG_AY3600_AKO_CB(_cb) \ - devcb = &downcast(*device).set_ako_cb(DEVCB_##_cb); + downcast(*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(*device).set_x_cb<0>(DEVCB_##_cb); + downcast(*device).set_x_cb<0>(DEVCB_##_cb); #define MCFG_KR2376_MATRIX_X1(_cb) \ - devcb = &downcast(*device).set_x_cb<1>(DEVCB_##_cb); + downcast(*device).set_x_cb<1>(DEVCB_##_cb); #define MCFG_KR2376_MATRIX_X2(_cb) \ - devcb = &downcast(*device).set_x_cb<2>(DEVCB_##_cb); + downcast(*device).set_x_cb<2>(DEVCB_##_cb); #define MCFG_KR2376_MATRIX_X3(_cb) \ - devcb = &downcast(*device).set_x_cb<3>(DEVCB_##_cb); + downcast(*device).set_x_cb<3>(DEVCB_##_cb); #define MCFG_KR2376_MATRIX_X4(_cb) \ - devcb = &downcast(*device).set_x_cb<4>(DEVCB_##_cb); + downcast(*device).set_x_cb<4>(DEVCB_##_cb); #define MCFG_KR2376_MATRIX_X5(_cb) \ - devcb = &downcast(*device).set_x_cb<5>(DEVCB_##_cb); + downcast(*device).set_x_cb<5>(DEVCB_##_cb); #define MCFG_KR2376_MATRIX_X6(_cb) \ - devcb = &downcast(*device).set_x_cb<6>(DEVCB_##_cb); + downcast(*device).set_x_cb<6>(DEVCB_##_cb); #define MCFG_KR2376_MATRIX_X7(_cb) \ - devcb = &downcast(*device).set_x_cb<7>(DEVCB_##_cb); + downcast(*device).set_x_cb<7>(DEVCB_##_cb); #define MCFG_KR2376_SHIFT_CB(_cb) \ - devcb = &downcast(*device).set_shift_cb(DEVCB_##_cb); + downcast(*device).set_shift_cb(DEVCB_##_cb); #define MCFG_KR2376_CONTROL_CB(_cb) \ - devcb = &downcast(*device).set_control_cb(DEVCB_##_cb); + downcast(*device).set_control_cb(DEVCB_##_cb); #define MCFG_KR2376_STROBE_CB(_cb) \ - devcb = &downcast(*device).set_strobe_cb(DEVCB_##_cb); + downcast(*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(*device).set_write_cb<0>(DEVCB_##_devcb); + downcast(*device).set_write_cb<0>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_1(_devcb) \ - devcb = &downcast(*device).set_write_cb<1>(DEVCB_##_devcb); + downcast(*device).set_write_cb<1>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_2(_devcb) \ - devcb = &downcast(*device).set_write_cb<2>(DEVCB_##_devcb); + downcast(*device).set_write_cb<2>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_3(_devcb) \ - devcb = &downcast(*device).set_write_cb<3>(DEVCB_##_devcb); + downcast(*device).set_write_cb<3>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_4(_devcb) \ - devcb = &downcast(*device).set_write_cb<4>(DEVCB_##_devcb); + downcast(*device).set_write_cb<4>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_5(_devcb) \ - devcb = &downcast(*device).set_write_cb<5>(DEVCB_##_devcb); + downcast(*device).set_write_cb<5>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_6(_devcb) \ - devcb = &downcast(*device).set_write_cb<6>(DEVCB_##_devcb); + downcast(*device).set_write_cb<6>(DEVCB_##_devcb); #define MCFG_LATCH8_WRITE_7(_devcb) \ - devcb = &downcast(*device).set_write_cb<7>(DEVCB_##_devcb); + downcast(*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(*device).set_read_cb<0>(DEVCB_##_devcb); + downcast(*device).set_read_cb<0>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_1(_devcb) \ - devcb = &downcast(*device).set_read_cb<1>(DEVCB_##_devcb); + downcast(*device).set_read_cb<1>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_2(_devcb) \ - devcb = &downcast(*device).set_read_cb<2>(DEVCB_##_devcb); + downcast(*device).set_read_cb<2>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_3(_devcb) \ - devcb = &downcast(*device).set_read_cb<3>(DEVCB_##_devcb); + downcast(*device).set_read_cb<3>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_4(_devcb) \ - devcb = &downcast(*device).set_read_cb<4>(DEVCB_##_devcb); + downcast(*device).set_read_cb<4>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_5(_devcb) \ - devcb = &downcast(*device).set_read_cb<5>(DEVCB_##_devcb); + downcast(*device).set_read_cb<5>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_6(_devcb) \ - devcb = &downcast(*device).set_read_cb<6>(DEVCB_##_devcb); + downcast(*device).set_read_cb<6>(DEVCB_##_devcb); #define MCFG_LATCH8_READ_7(_devcb) \ - devcb = &downcast(*device).set_read_cb<7>(DEVCB_##_devcb); + downcast(*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(device)->set_command_strobe_callback(DEVCB_##_cb); + downcast(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(*device).set_porta_r_callback(DEVCB_##_devcb); + downcast(*device).set_porta_r_callback(DEVCB_##_devcb); #define MCFG_LH5810_PORTA_W_CB(_devcb) \ - devcb = &downcast(*device).set_porta_w_callback(DEVCB_##_devcb); + downcast(*device).set_porta_w_callback(DEVCB_##_devcb); #define MCFG_LH5810_PORTB_R_CB(_devcb) \ - devcb = &downcast(*device).set_portb_r_callback(DEVCB_##_devcb); + downcast(*device).set_portb_r_callback(DEVCB_##_devcb); #define MCFG_LH5810_PORTB_W_CB(_devcb) \ - devcb = &downcast(*device).set_portb_w_callback(DEVCB_##_devcb); + downcast(*device).set_portb_w_callback(DEVCB_##_devcb); #define MCFG_LH5810_PORTC_W_CB(_devcb) \ - devcb = &downcast(*device).set_portc_w_callback(DEVCB_##_devcb); + downcast(*device).set_portc_w_callback(DEVCB_##_devcb); #define MCFG_LH5810_OUT_INT_CB(_devcb) \ - devcb = &downcast(*device).set_out_int_callback(DEVCB_##_devcb); //currently unused + downcast(*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(*device).set_intl_handler(DEVCB_##_devcb); + downcast(*device).set_intl_handler(DEVCB_##_devcb); #define MCFG_MB8421_INTR_HANDLER(_devcb) \ - devcb = &downcast(*device).set_intr_handler(DEVCB_##_devcb); + downcast(*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(*device).set_gain_changed_callback(DEVCB_##_devcb); + downcast(*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(device)->set_drq_cb(_tx_drq, _rx_drq); #define MCFG_MB8795_TX_IRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_tx_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_tx_irq_wr_callback(DEVCB_##_write); #define MCFG_MB8795_RX_IRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_rx_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_rx_irq_wr_callback(DEVCB_##_write); #define MCFG_MB8795_TX_DRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_tx_drq_wr_callback(DEVCB_##_write); + downcast(*device).set_tx_drq_wr_callback(DEVCB_##_write); #define MCFG_MB8795_RX_DRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_rx_drq_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_MB89352A_DRQ_CB(_devcb) \ - devcb = &downcast(*device).set_drq_callback(DEVCB_##_devcb); + downcast(*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(*device).set_in_a_pa_callback(DEVCB_##_devcb); + downcast(*device).set_in_a_pa_callback(DEVCB_##_devcb); #define MCFG_MB89363B_IN_PORTB_CB(_devcb) \ - devcb = &downcast(*device).set_in_a_pb_callback(DEVCB_##_devcb); + downcast(*device).set_in_a_pb_callback(DEVCB_##_devcb); #define MCFG_MB89363B_IN_PORTC_CB(_devcb) \ - devcb = &downcast(*device).set_in_a_pc_callback(DEVCB_##_devcb); + downcast(*device).set_in_a_pc_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTA_CB(_devcb) \ - devcb = &downcast(*device).set_out_a_pa_callback(DEVCB_##_devcb); + downcast(*device).set_out_a_pa_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTB_CB(_devcb) \ - devcb = &downcast(*device).set_out_a_pb_callback(DEVCB_##_devcb); + downcast(*device).set_out_a_pb_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTC_CB(_devcb) \ - devcb = &downcast(*device).set_out_a_pc_callback(DEVCB_##_devcb); + downcast(*device).set_out_a_pc_callback(DEVCB_##_devcb); #define MCFG_MB89363B_IN_PORTD_CB(_devcb) \ - devcb = &downcast(*device).set_in_b_pa_callback(DEVCB_##_devcb); + downcast(*device).set_in_b_pa_callback(DEVCB_##_devcb); #define MCFG_MB89363B_IN_PORTE_CB(_devcb) \ - devcb = &downcast(*device).set_in_b_pb_callback(DEVCB_##_devcb); + downcast(*device).set_in_b_pb_callback(DEVCB_##_devcb); #define MCFG_MB89363B_IN_PORTF_CB(_devcb) \ - devcb = &downcast(*device).set_in_b_pc_callback(DEVCB_##_devcb); + downcast(*device).set_in_b_pc_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTD_CB(_devcb) \ - devcb = &downcast(*device).set_out_b_pa_callback(DEVCB_##_devcb); + downcast(*device).set_out_b_pa_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTE_CB(_devcb) \ - devcb = &downcast(*device).set_out_b_pb_callback(DEVCB_##_devcb); + downcast(*device).set_out_b_pb_callback(DEVCB_##_devcb); #define MCFG_MB89363B_OUT_PORTF_CB(_devcb) \ - devcb = &downcast(*device).set_out_b_pc_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_MB89374_PO0_CB(_devcb) \ - devcb = &downcast(*device).set_out_po_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_po_callback<0>(DEVCB_##_devcb); #define MCFG_MB89374_PO1_CB(_devcb) \ - devcb = &downcast(*device).set_out_po_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_po_callback<1>(DEVCB_##_devcb); #define MCFG_MB89374_PO2_CB(_devcb) \ - devcb = &downcast(*device).set_out_po_callback<2>(DEVCB_##_devcb); + downcast(*device).set_out_po_callback<2>(DEVCB_##_devcb); #define MCFG_MB89374_PO3_CB(_devcb) \ - devcb = &downcast(*device).set_out_po_callback<3>(DEVCB_##_devcb); + downcast(*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(*device).set_out_fx_cb( 0, DEVCB_##_devcb); -#define MCFG_MC14411_F2_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb( 1, DEVCB_##_devcb); -#define MCFG_MC14411_F3_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb( 2, DEVCB_##_devcb); -#define MCFG_MC14411_F4_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb( 3, DEVCB_##_devcb); -#define MCFG_MC14411_F5_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb( 4, DEVCB_##_devcb); -#define MCFG_MC14411_F6_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb( 5, DEVCB_##_devcb); -#define MCFG_MC14411_F7_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb( 6, DEVCB_##_devcb); -#define MCFG_MC14411_F8_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb( 7, DEVCB_##_devcb); -#define MCFG_MC14411_F9_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb( 8, DEVCB_##_devcb); -#define MCFG_MC14411_F10_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb( 9, DEVCB_##_devcb); -#define MCFG_MC14411_F11_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb(10, DEVCB_##_devcb); -#define MCFG_MC14411_F12_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb(11, DEVCB_##_devcb); -#define MCFG_MC14411_F13_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb(12, DEVCB_##_devcb); -#define MCFG_MC14411_F14_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb(13, DEVCB_##_devcb); -#define MCFG_MC14411_F15_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb(14, DEVCB_##_devcb); -#define MCFG_MC14411_F16_CB(_devcb) devcb = &downcast(*device).set_out_fx_cb(15, DEVCB_##_devcb); +#define MCFG_MC14411_F1_CB(_devcb) downcast(*device).set_out_fx_cb( 0, DEVCB_##_devcb); +#define MCFG_MC14411_F2_CB(_devcb) downcast(*device).set_out_fx_cb( 1, DEVCB_##_devcb); +#define MCFG_MC14411_F3_CB(_devcb) downcast(*device).set_out_fx_cb( 2, DEVCB_##_devcb); +#define MCFG_MC14411_F4_CB(_devcb) downcast(*device).set_out_fx_cb( 3, DEVCB_##_devcb); +#define MCFG_MC14411_F5_CB(_devcb) downcast(*device).set_out_fx_cb( 4, DEVCB_##_devcb); +#define MCFG_MC14411_F6_CB(_devcb) downcast(*device).set_out_fx_cb( 5, DEVCB_##_devcb); +#define MCFG_MC14411_F7_CB(_devcb) downcast(*device).set_out_fx_cb( 6, DEVCB_##_devcb); +#define MCFG_MC14411_F8_CB(_devcb) downcast(*device).set_out_fx_cb( 7, DEVCB_##_devcb); +#define MCFG_MC14411_F9_CB(_devcb) downcast(*device).set_out_fx_cb( 8, DEVCB_##_devcb); +#define MCFG_MC14411_F10_CB(_devcb) downcast(*device).set_out_fx_cb( 9, DEVCB_##_devcb); +#define MCFG_MC14411_F11_CB(_devcb) downcast(*device).set_out_fx_cb(10, DEVCB_##_devcb); +#define MCFG_MC14411_F12_CB(_devcb) downcast(*device).set_out_fx_cb(11, DEVCB_##_devcb); +#define MCFG_MC14411_F13_CB(_devcb) downcast(*device).set_out_fx_cb(12, DEVCB_##_devcb); +#define MCFG_MC14411_F14_CB(_devcb) downcast(*device).set_out_fx_cb(13, DEVCB_##_devcb); +#define MCFG_MC14411_F15_CB(_devcb) downcast(*device).set_out_fx_cb(14, DEVCB_##_devcb); +#define MCFG_MC14411_F16_CB(_devcb) downcast(*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 devcb_base &set_out_fx_cb(int index, Object &&cb) { return m_out_fx_cbs[index].set_callback(std::forward(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(*device).set_irq_callback(DEVCB_##_irq); + downcast(*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 devcb_base &set_irq_callback(Object &&cb) { return m_write_irq.set_callback(std::forward(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(*device).set_txc(_clock); #define MCFG_MC2661_TXD_HANDLER(_write) \ - devcb = &downcast(*device).set_txd_callback(DEVCB_##_write); + downcast(*device).set_txd_callback(DEVCB_##_write); #define MCFG_MC2661_RXRDY_HANDLER(_write) \ - devcb = &downcast(*device).set_rxrdy_callback(DEVCB_##_write); + downcast(*device).set_rxrdy_callback(DEVCB_##_write); #define MCFG_MC2661_TXRDY_HANDLER(_write) \ - devcb = &downcast(*device).set_txrdy_callback(DEVCB_##_write); + downcast(*device).set_txrdy_callback(DEVCB_##_write); #define MCFG_MC2661_RTS_HANDLER(_write) \ - devcb = &downcast(*device).set_rts_callback(DEVCB_##_write); + downcast(*device).set_rts_callback(DEVCB_##_write); #define MCFG_MC2661_DTR_HANDLER(_write) \ - devcb = &downcast(*device).set_dtr_callback(DEVCB_##_write); + downcast(*device).set_dtr_callback(DEVCB_##_write); #define MCFG_MC2661_TXEMT_DSCHG_HANDLER(_write) \ - devcb = &downcast(*device).set_txemt_dschg_callback(DEVCB_##_write); + downcast(*device).set_txemt_dschg_callback(DEVCB_##_write); #define MCFG_MC2661_BKDET_HANDLER(_write) \ - devcb = &downcast(*device).set_bkdet_callback(DEVCB_##_write); + downcast(*device).set_bkdet_callback(DEVCB_##_write); #define MCFG_MC2661_XSYNC_HANDLER(_write) \ - devcb = &downcast(*device).set_xsync_callback(DEVCB_##_write); + downcast(*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(*device).set_cpu_tag(_tag); #define MCFG_MC68328_OUT_PORT_A_CB(_devcb) \ - devcb = &downcast(*device).set_out_port_a_callback(DEVCB_##_devcb); + downcast(*device).set_out_port_a_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_B_CB(_devcb) \ - devcb = &downcast(*device).set_out_port_b_callback(DEVCB_##_devcb); + downcast(*device).set_out_port_b_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_C_CB(_devcb) \ - devcb = &downcast(*device).set_out_port_c_callback(DEVCB_##_devcb); + downcast(*device).set_out_port_c_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_D_CB(_devcb) \ - devcb = &downcast(*device).set_out_port_d_callback(DEVCB_##_devcb); + downcast(*device).set_out_port_d_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_E_CB(_devcb) \ - devcb = &downcast(*device).set_out_port_e_callback(DEVCB_##_devcb); + downcast(*device).set_out_port_e_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_F_CB(_devcb) \ - devcb = &downcast(*device).set_out_port_f_callback(DEVCB_##_devcb); + downcast(*device).set_out_port_f_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_G_CB(_devcb) \ - devcb = &downcast(*device).set_out_port_g_callback(DEVCB_##_devcb); + downcast(*device).set_out_port_g_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_J_CB(_devcb) \ - devcb = &downcast(*device).set_out_port_j_callback(DEVCB_##_devcb); + downcast(*device).set_out_port_j_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_K_CB(_devcb) \ - devcb = &downcast(*device).set_out_port_k_callback(DEVCB_##_devcb); + downcast(*device).set_out_port_k_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PORT_M_CB(_devcb) \ - devcb = &downcast(*device).set_out_port_m_callback(DEVCB_##_devcb); + downcast(*device).set_out_port_m_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_A_CB(_devcb) \ - devcb = &downcast(*device).set_in_port_a_callback(DEVCB_##_devcb); + downcast(*device).set_in_port_a_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_B_CB(_devcb) \ - devcb = &downcast(*device).set_in_port_b_callback(DEVCB_##_devcb); + downcast(*device).set_in_port_b_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_C_CB(_devcb) \ - devcb = &downcast(*device).set_in_port_c_callback(DEVCB_##_devcb); + downcast(*device).set_in_port_c_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_D_CB(_devcb) \ - devcb = &downcast(*device).set_in_port_d_callback(DEVCB_##_devcb); + downcast(*device).set_in_port_d_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_E_CB(_devcb) \ - devcb = &downcast(*device).set_in_port_e_callback(DEVCB_##_devcb); + downcast(*device).set_in_port_e_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_F_CB(_devcb) \ - devcb = &downcast(*device).set_in_port_f_callback(DEVCB_##_devcb); + downcast(*device).set_in_port_f_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_G_CB(_devcb) \ - devcb = &downcast(*device).set_in_port_g_callback(DEVCB_##_devcb); + downcast(*device).set_in_port_g_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_J_CB(_devcb) \ - devcb = &downcast(*device).set_in_port_j_callback(DEVCB_##_devcb); + downcast(*device).set_in_port_j_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_K_CB(_devcb) \ - devcb = &downcast(*device).set_in_port_k_callback(DEVCB_##_devcb); + downcast(*device).set_in_port_k_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_PORT_M_CB(_devcb) \ - devcb = &downcast(*device).set_in_port_m_callback(DEVCB_##_devcb); + downcast(*device).set_in_port_m_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_PWM_CB(_devcb) \ - devcb = &downcast(*device).set_out_pwm_callback(DEVCB_##_devcb); + downcast(*device).set_out_pwm_callback(DEVCB_##_devcb); #define MCFG_MC68328_OUT_SPIM_CB(_devcb) \ - devcb = &downcast(*device).set_out_spim_callback(DEVCB_##_devcb); + downcast(*device).set_out_spim_callback(DEVCB_##_devcb); #define MCFG_MC68328_IN_SPIM_CB(_devcb) \ - devcb = &downcast(*device).set_in_spim_callback(DEVCB_##_devcb); + downcast(*device).set_in_spim_callback(DEVCB_##_devcb); #define MCFG_MC68328_SPIM_XCH_TRIGGER_CB(_devcb) \ - devcb = &downcast(*device).set_spim_xch_trigger_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_out_port_callback(DEVCB_##_devcb); + downcast(*device).set_out_port_callback(DEVCB_##_devcb); #define MCFG_MC6846_OUT_CP1_CB(_devcb) \ - devcb = &downcast(*device).set_out_cp1_callback(DEVCB_##_devcb); + downcast(*device).set_out_cp1_callback(DEVCB_##_devcb); #define MCFG_MC6846_OUT_CP2_CB(_devcb) \ - devcb = &downcast(*device).set_out_cp2_callback(DEVCB_##_devcb); + downcast(*device).set_out_cp2_callback(DEVCB_##_devcb); #define MCFG_MC6846_IN_PORT_CB(_devcb) \ - devcb = &downcast(*device).set_in_port_callback(DEVCB_##_devcb); + downcast(*device).set_in_port_callback(DEVCB_##_devcb); #define MCFG_MC6846_OUT_CTO_CB(_devcb) \ - devcb = &downcast(*device).set_out_cto_callback(DEVCB_##_devcb); + downcast(*device).set_out_cto_callback(DEVCB_##_devcb); #define MCFG_MC6846_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*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(*device).set_tx_clock(_clock); #define MCFG_MC6852_TX_DATA_CALLBACK(_write) \ - devcb = &downcast(*device).set_tx_data_wr_callback(DEVCB_##_write); + downcast(*device).set_tx_data_wr_callback(DEVCB_##_write); #define MCFG_MC6852_IRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_MC6852_SM_DTR_CALLBACK(_write) \ - devcb = &downcast(*device).set_sm_dtr_wr_callback(DEVCB_##_write); + downcast(*device).set_sm_dtr_wr_callback(DEVCB_##_write); #define MCFG_MC6852_TUF_CALLBACK(_write) \ - devcb = &downcast(*device).set_tuf_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_MC6854_OUT_TXD_CB(_devcb) \ - devcb = &downcast(*device).set_out_txd_callback(DEVCB_##_devcb); + downcast(*device).set_out_txd_callback(DEVCB_##_devcb); #define MCFG_MC6854_OUT_FRAME_CB(_class, _method) \ downcast(*device).set_out_frame_callback(mc6854_device::out_frame_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_MC6854_OUT_RTS_CB(_devcb) \ - devcb = &downcast(*device).set_out_rts_callback(DEVCB_##_devcb); + downcast(*device).set_out_rts_callback(DEVCB_##_devcb); #define MCFG_MC6854_OUT_DTR_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtr_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_cb(DEVCB_##_cb); + downcast(*device).set_irq_cb(DEVCB_##_cb); #define MCFG_MC68681_A_TX_CALLBACK(_cb) \ - devcb = &downcast(*device).set_a_tx_cb(DEVCB_##_cb); + downcast(*device).set_a_tx_cb(DEVCB_##_cb); #define MCFG_MC68681_B_TX_CALLBACK(_cb) \ - devcb = &downcast(*device).set_b_tx_cb(DEVCB_##_cb); + downcast(*device).set_b_tx_cb(DEVCB_##_cb); // deprecated: use ipX_w() instead #define MCFG_MC68681_INPORT_CALLBACK(_cb) \ - devcb = &downcast(*device).set_inport_cb(DEVCB_##_cb); + downcast(*device).set_inport_cb(DEVCB_##_cb); #define MCFG_MC68681_OUTPORT_CALLBACK(_cb) \ - devcb = &downcast(*device).set_outport_cb(DEVCB_##_cb); + downcast(*device).set_outport_cb(DEVCB_##_cb); #define MCFG_MC68681_SET_EXTERNAL_CLOCKS(_a, _b, _c, _d) \ downcast(*device).set_clocks(_a, _b, _c, _d); // SC28C94 specific callbacks #define MCFG_SC28C94_C_TX_CALLBACK(_cb) \ - devcb = &downcast(*device).set_c_tx_cb(DEVCB_##_cb); + downcast(*device).set_c_tx_cb(DEVCB_##_cb); #define MCFG_SC28C94_D_TX_CALLBACK(_cb) \ - devcb = &downcast(*device).set_d_tx_cb(DEVCB_##_cb); + downcast(*device).set_d_tx_cb(DEVCB_##_cb); #define MC68681_RX_FIFO_SIZE 3 @@ -131,6 +131,11 @@ public: template devcb_base &set_b_tx_cb(Object &&cb) { return write_b_tx.set_callback(std::forward(cb)); } template devcb_base &set_inport_cb(Object &&cb) { return read_inport.set_callback(std::forward(cb)); } template devcb_base &set_outport_cb(Object &&cb) { return write_outport.set_callback(std::forward(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(*device).set_tx_clock(_clk); #define MCFG_MC68901_OUT_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_GPIO_CB(_devcb) \ - devcb = &downcast(*device).set_out_gpio_callback(DEVCB_##_devcb); + downcast(*device).set_out_gpio_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_TAO_CB(_devcb) \ - devcb = &downcast(*device).set_out_tao_callback(DEVCB_##_devcb); + downcast(*device).set_out_tao_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_TBO_CB(_devcb) \ - devcb = &downcast(*device).set_out_tbo_callback(DEVCB_##_devcb); + downcast(*device).set_out_tbo_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_TCO_CB(_devcb) \ - devcb = &downcast(*device).set_out_tco_callback(DEVCB_##_devcb); + downcast(*device).set_out_tco_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_TDO_CB(_devcb) \ - devcb = &downcast(*device).set_out_tdo_callback(DEVCB_##_devcb); + downcast(*device).set_out_tdo_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_SO_CB(_devcb) \ - devcb = &downcast(*device).set_out_so_callback(DEVCB_##_devcb); + downcast(*device).set_out_so_callback(DEVCB_##_devcb); /*#define MCFG_MC68901_OUT_RR_CB(_devcb) \ - devcb = &downcast(*device).set_out_rr_callback(DEVCB_##_devcb); + downcast(*device).set_out_rr_callback(DEVCB_##_devcb); #define MCFG_MC68901_OUT_TR_CB(_devcb) \ - devcb = &downcast(*device).set_out_tr_callback(DEVCB_##_devcb);*/ + downcast(*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(*device).set_int_wr_callback(DEVCB_##_write); + downcast(*device).set_int_wr_callback(DEVCB_##_write); #define MCFG_MCCS1850_PSE_CALLBACK(_write) \ - devcb = &downcast(*device).set_pse_wr_callback(DEVCB_##_write); + downcast(*device).set_pse_wr_callback(DEVCB_##_write); #define MCFG_MCCS1850_NUC_CALLBACK(_write) \ - devcb = &downcast(*device).set_nuc_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_stx_callback(DEVCB_##_devcb); + downcast(*device).set_stx_callback(DEVCB_##_devcb); #define MCFG_MICROTOUCH_TOUCH_CB(_class, _touch_cb) \ downcast(*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(*device).set_x_cb<0>(DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X2(_cb) devcb = &downcast(*device).set_x_cb<1>(DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X3(_cb) devcb = &downcast(*device).set_x_cb<2>(DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X4(_cb) devcb = &downcast(*device).set_x_cb<3>(DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X5(_cb) devcb = &downcast(*device).set_x_cb<4>(DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X6(_cb) devcb = &downcast(*device).set_x_cb<5>(DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X7(_cb) devcb = &downcast(*device).set_x_cb<6>(DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X8(_cb) devcb = &downcast(*device).set_x_cb<7>(DEVCB_##_cb); -#define MCFG_MM5740_MATRIX_X9(_cb) devcb = &downcast(*device).set_x_cb<8>(DEVCB_##_cb); -#define MCFG_MM5740_SHIFT_CB(_cb) devcb = &downcast(*device).set_shift_cb(DEVCB_##_cb); -#define MCFG_MM5740_CONTROL_CB(_cb) devcb = &downcast(*device).set_control_cb(DEVCB_##_cb); -#define MCFG_MM5740_DATA_READY_CB(_cb) devcb = &downcast(*device).set_data_ready_cb(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X1(_cb) downcast(*device).set_x_cb<0>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X2(_cb) downcast(*device).set_x_cb<1>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X3(_cb) downcast(*device).set_x_cb<2>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X4(_cb) downcast(*device).set_x_cb<3>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X5(_cb) downcast(*device).set_x_cb<4>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X6(_cb) downcast(*device).set_x_cb<5>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X7(_cb) downcast(*device).set_x_cb<6>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X8(_cb) downcast(*device).set_x_cb<7>(DEVCB_##_cb); +#define MCFG_MM5740_MATRIX_X9(_cb) downcast(*device).set_x_cb<8>(DEVCB_##_cb); +#define MCFG_MM5740_SHIFT_CB(_cb) downcast(*device).set_shift_cb(DEVCB_##_cb); +#define MCFG_MM5740_CONTROL_CB(_cb) downcast(*device).set_control_cb(DEVCB_##_cb); +#define MCFG_MM5740_DATA_READY_CB(_cb) downcast(*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(*device).set_irq_cb(DEVCB_##_cb); + downcast(*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(*device).set_cap_debounce(_value); #define MCFG_MM74C922_DA_CALLBACK(_write) \ - devcb = &downcast(*device).set_da_wr_callback(DEVCB_##_write); + downcast(*device).set_da_wr_callback(DEVCB_##_write); #define MCFG_MM74C922_X1_CALLBACK(_read) \ - devcb = &downcast(*device).set_x1_rd_callback(DEVCB_##_read); + downcast(*device).set_x1_rd_callback(DEVCB_##_read); #define MCFG_MM74C922_X2_CALLBACK(_read) \ - devcb = &downcast(*device).set_x2_rd_callback(DEVCB_##_read); + downcast(*device).set_x2_rd_callback(DEVCB_##_read); #define MCFG_MM74C922_X3_CALLBACK(_read) \ - devcb = &downcast(*device).set_x3_rd_callback(DEVCB_##_read); + downcast(*device).set_x3_rd_callback(DEVCB_##_read); #define MCFG_MM74C922_X4_CALLBACK(_read) \ - devcb = &downcast(*device).set_x4_rd_callback(DEVCB_##_read); + downcast(*device).set_x4_rd_callback(DEVCB_##_read); #define MCFG_MM74C922_X5_CALLBACK(_read) \ - devcb = &downcast(*device).set_x5_rd_callback(DEVCB_##_read); + downcast(*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(*device).set_tod_clock(_clock); #define MCFG_MOS6526_IRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_MOS6526_CNT_CALLBACK(_write) \ - devcb = &downcast(*device).set_cnt_wr_callback(DEVCB_##_write); + downcast(*device).set_cnt_wr_callback(DEVCB_##_write); #define MCFG_MOS6526_SP_CALLBACK(_write) \ - devcb = &downcast(*device).set_sp_wr_callback(DEVCB_##_write); + downcast(*device).set_sp_wr_callback(DEVCB_##_write); #define MCFG_MOS6526_PA_INPUT_CALLBACK(_read) \ - devcb = &downcast(*device).set_pa_rd_callback(DEVCB_##_read); + downcast(*device).set_pa_rd_callback(DEVCB_##_read); #define MCFG_MOS6526_PA_OUTPUT_CALLBACK(_write) \ - devcb = &downcast(*device).set_pa_wr_callback(DEVCB_##_write); + downcast(*device).set_pa_wr_callback(DEVCB_##_write); #define MCFG_MOS6526_PB_INPUT_CALLBACK(_read) \ - devcb = &downcast(*device).set_pb_rd_callback(DEVCB_##_read); + downcast(*device).set_pb_rd_callback(DEVCB_##_read); #define MCFG_MOS6526_PB_OUTPUT_CALLBACK(_write) \ - devcb = &downcast(*device).set_pb_wr_callback(DEVCB_##_write); + downcast(*device).set_pb_wr_callback(DEVCB_##_write); #define MCFG_MOS6526_PC_CALLBACK(_write) \ - devcb = &downcast(*device).set_pc_wr_callback(DEVCB_##_write); + downcast(*device).set_pc_wr_callback(DEVCB_##_write); @@ -119,6 +119,14 @@ public: template devcb_base &set_pb_rd_callback(Object &&cb) { return m_read_pb.set_callback(std::forward(cb)); } template devcb_base &set_pb_wr_callback(Object &&cb) { return m_write_pb.set_callback(std::forward(cb)); } template devcb_base &set_pc_wr_callback(Object &&cb) { return m_write_pc.set_callback(std::forward(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(*device).set_p0_handler(DEVCB_##_devcb); + downcast(*device).set_p0_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_p1_handler(DEVCB_##_devcb); + downcast(*device).set_p1_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_p2_handler(DEVCB_##_devcb); + downcast(*device).set_p2_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P3_HANDLER(_devcb) \ - devcb = &downcast(*device).set_p3_handler(DEVCB_##_devcb); + downcast(*device).set_p3_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P4_HANDLER(_devcb) \ - devcb = &downcast(*device).set_p4_handler(DEVCB_##_devcb); + downcast(*device).set_p4_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P5_HANDLER(_devcb) \ - devcb = &downcast(*device).set_p5_handler(DEVCB_##_devcb); + downcast(*device).set_p5_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P6_HANDLER(_devcb) \ - devcb = &downcast(*device).set_p6_handler(DEVCB_##_devcb); + downcast(*device).set_p6_handler(DEVCB_##_devcb); #define MCFG_MOS6529_P7_HANDLER(_devcb) \ - devcb = &downcast(*device).set_p7_handler(DEVCB_##_devcb); + downcast(*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(*device).set_in_pa_callback(DEVCB_##_devcb); + downcast(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_MOS6530_OUT_PA_CB(_devcb) \ - devcb = &downcast(*device).set_out_pa_callback(DEVCB_##_devcb); + downcast(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_MOS6530_IN_PB_CB(_devcb) \ - devcb = &downcast(*device).set_in_pb_callback(DEVCB_##_devcb); + downcast(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_MOS6530_OUT_PB_CB(_devcb) \ - devcb = &downcast(*device).set_out_pb_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_MOS6530n_IN_PA_CB(_read) \ - devcb = &downcast(*device).set_pa_rd_callback(DEVCB_##_read); + downcast(*device).set_pa_rd_callback(DEVCB_##_read); #define MCFG_MOS6530n_OUT_PA_CB(_write) \ - devcb = &downcast(*device).set_pa_wr_callback(DEVCB_##_write); + downcast(*device).set_pa_wr_callback(DEVCB_##_write); #define MCFG_MOS6530n_IN_PB_CB(_read) \ - devcb = &downcast(*device).set_pb_rd_callback(DEVCB_##_read); + downcast(*device).set_pb_rd_callback(DEVCB_##_read); #define MCFG_MOS6530n_OUT_PB_CB(_write) \ - devcb = &downcast(*device).set_pb_wr_callback(DEVCB_##_write); + downcast(*device).set_pb_wr_callback(DEVCB_##_write); #define MCFG_MOS6530n_IN_PA0_CB(_read) \ - devcb = &downcast(*device).set_pa_rd_callback<0>(DEVCB_##_read); + downcast(*device).set_pa_rd_callback<0>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA1_CB(_read) \ - devcb = &downcast(*device).set_pa_rd_callback<1>(DEVCB_##_read); + downcast(*device).set_pa_rd_callback<1>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA2_CB(_read) \ - devcb = &downcast(*device).set_pa_rd_callback<2>(DEVCB_##_read); + downcast(*device).set_pa_rd_callback<2>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA3_CB(_read) \ - devcb = &downcast(*device).set_pa_rd_callback<3>(DEVCB_##_read); + downcast(*device).set_pa_rd_callback<3>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA4_CB(_read) \ - devcb = &downcast(*device).set_pa_rd_callback<4>(DEVCB_##_read); + downcast(*device).set_pa_rd_callback<4>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA5_CB(_read) \ - devcb = &downcast(*device).set_pa_rd_callback<5>(DEVCB_##_read); + downcast(*device).set_pa_rd_callback<5>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA6_CB(_read) \ - devcb = &downcast(*device).set_pa_rd_callback<6>(DEVCB_##_read); + downcast(*device).set_pa_rd_callback<6>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PA7_CB(_read) \ - devcb = &downcast(*device).set_pa_rd_callback<7>(DEVCB_##_read); + downcast(*device).set_pa_rd_callback<7>(DEVCB_##_read); #define MCFG_MOS6530n_OUT_PA0_CB(_write) \ - devcb = &downcast(*device).set_pa_wr_callback<0>(DEVCB_##_write); + downcast(*device).set_pa_wr_callback<0>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA1_CB(_write) \ - devcb = &downcast(*device).set_pa_wr_callback<1>(DEVCB_##_write); + downcast(*device).set_pa_wr_callback<1>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA2_CB(_write) \ - devcb = &downcast(*device).set_pa_wr_callback<2>(DEVCB_##_write); + downcast(*device).set_pa_wr_callback<2>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA3_CB(_write) \ - devcb = &downcast(*device).set_pa_wr_callback<3>(DEVCB_##_write); + downcast(*device).set_pa_wr_callback<3>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA4_CB(_write) \ - devcb = &downcast(*device).set_pa_wr_callback<4>(DEVCB_##_write); + downcast(*device).set_pa_wr_callback<4>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA5_CB(_write) \ - devcb = &downcast(*device).set_pa_wr_callback<5>(DEVCB_##_write); + downcast(*device).set_pa_wr_callback<5>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA6_CB(_write) \ - devcb = &downcast(*device).set_pa_wr_callback<6>(DEVCB_##_write); + downcast(*device).set_pa_wr_callback<6>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PA7_CB(_write) \ - devcb = &downcast(*device).set_pa_wr_callback<7>(DEVCB_##_write); + downcast(*device).set_pa_wr_callback<7>(DEVCB_##_write); #define MCFG_MOS6530n_IN_PB0_CB(_read) \ - devcb = &downcast(*device).set_pb_rd_callback<0>(DEVCB_##_read); + downcast(*device).set_pb_rd_callback<0>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB1_CB(_read) \ - devcb = &downcast(*device).set_pb_rd_callback<1>(DEVCB_##_read); + downcast(*device).set_pb_rd_callback<1>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB2_CB(_read) \ - devcb = &downcast(*device).set_pb_rd_callback<2>(DEVCB_##_read); + downcast(*device).set_pb_rd_callback<2>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB3_CB(_read) \ - devcb = &downcast(*device).set_pb_rd_callback<3>(DEVCB_##_read); + downcast(*device).set_pb_rd_callback<3>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB4_CB(_read) \ - devcb = &downcast(*device).set_pb_rd_callback<4>(DEVCB_##_read); + downcast(*device).set_pb_rd_callback<4>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB5_CB(_read) \ - devcb = &downcast(*device).set_pb_rd_callback<5>(DEVCB_##_read); + downcast(*device).set_pb_rd_callback<5>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB6_CB(_read) \ - devcb = &downcast(*device).set_pb_rd_callback<6>(DEVCB_##_read); + downcast(*device).set_pb_rd_callback<6>(DEVCB_##_read); #define MCFG_MOS6530n_IN_PB7_CB(_read) \ - devcb = &downcast(*device).set_pb_rd_callback<7>(DEVCB_##_read); + downcast(*device).set_pb_rd_callback<7>(DEVCB_##_read); #define MCFG_MOS6530n_OUT_PB0_CB(_write) \ - devcb = &downcast(*device).set_pb_wr_callback<0>(DEVCB_##_write); + downcast(*device).set_pb_wr_callback<0>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB1_CB(_write) \ - devcb = &downcast(*device).set_pb_wr_callback<1>(DEVCB_##_write); + downcast(*device).set_pb_wr_callback<1>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB2_CB(_write) \ - devcb = &downcast(*device).set_pb_wr_callback<2>(DEVCB_##_write); + downcast(*device).set_pb_wr_callback<2>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB3_CB(_write) \ - devcb = &downcast(*device).set_pb_wr_callback<3>(DEVCB_##_write); + downcast(*device).set_pb_wr_callback<3>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB4_CB(_write) \ - devcb = &downcast(*device).set_pb_wr_callback<4>(DEVCB_##_write); + downcast(*device).set_pb_wr_callback<4>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB5_CB(_write) \ - devcb = &downcast(*device).set_pb_wr_callback<5>(DEVCB_##_write); + downcast(*device).set_pb_wr_callback<5>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB6_CB(_write) \ - devcb = &downcast(*device).set_pb_wr_callback<6>(DEVCB_##_write); + downcast(*device).set_pb_wr_callback<6>(DEVCB_##_write); #define MCFG_MOS6530n_OUT_PB7_CB(_write) \ - devcb = &downcast(*device).set_pb_wr_callback<7>(DEVCB_##_write); + downcast(*device).set_pb_wr_callback<7>(DEVCB_##_write); @@ -194,6 +194,15 @@ public: template devcb_base &set_pa_wr_callback(Object &&cb) { return m_out_pa_cb[N].set_callback(std::forward(cb)); } template devcb_base &set_pb_rd_callback(Object &&cb) { return m_in_pb_cb[N].set_callback(std::forward(cb)); } template devcb_base &set_pb_wr_callback(Object &&cb) { return m_out_pb_cb[N].set_callback(std::forward(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 auto pa_rd_callback() { return m_in_pa_cb[N].bind(); } + template auto pa_wr_callback() { return m_out_pa_cb[N].bind(); } + template auto pb_rd_callback() { return m_in_pb_cb[N].bind(); } + template 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(*device).set_xtal(_xtal); #define MCFG_MOS6551_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_MOS6551_TXD_HANDLER(_devcb) \ - devcb = &downcast(*device).set_txd_handler(DEVCB_##_devcb); + downcast(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_MOS6551_RXC_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rxc_handler(DEVCB_##_devcb); + downcast(*device).set_rxc_handler(DEVCB_##_devcb); #define MCFG_MOS6551_RTS_HANDLER(_devcb) \ - devcb = &downcast(*device).set_rts_handler(DEVCB_##_devcb); + downcast(*device).set_rts_handler(DEVCB_##_devcb); #define MCFG_MOS6551_DTR_HANDLER(_devcb) \ - devcb = &downcast(*device).set_dtr_handler(DEVCB_##_devcb); + downcast(*device).set_dtr_handler(DEVCB_##_devcb); class mos6551_device : public device_t { @@ -58,6 +58,11 @@ public: template devcb_base &set_rxc_handler(Object &&cb) { return m_rxc_handler.set_callback(std::forward(cb)); } template devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward(cb)); } template devcb_base &set_dtr_handler(Object &&cb) { return m_dtr_handler.set_callback(std::forward(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(*device).set_z80en_wr_callback(DEVCB_##_write); + downcast(*device).set_z80en_wr_callback(DEVCB_##_write); #define MCFG_MOS8722_FSDIR_CALLBACK(_write) \ - devcb = &downcast(*device).set_fsdir_wr_callback(DEVCB_##_write); + downcast(*device).set_fsdir_wr_callback(DEVCB_##_write); #define MCFG_MOS8722_GAME_CALLBACK(_read) \ - devcb = &downcast(*device).set_game_rd_callback(DEVCB_##_read); + downcast(*device).set_game_rd_callback(DEVCB_##_read); #define MCFG_MOS8722_EXROM_CALLBACK(_read) \ - devcb = &downcast(*device).set_exrom_rd_callback(DEVCB_##_read); + downcast(*device).set_exrom_rd_callback(DEVCB_##_read); #define MCFG_MOS8722_SENSE40_CALLBACK(_read) \ - devcb = &downcast(*device).set_sense40_rd_callback(DEVCB_##_read); + downcast(*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(device)->set_irqf(DEVCB_##irqf); + downcast(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(*device).set_d0_handler(DEVCB_##_devcb); + downcast(*device).set_d0_handler(DEVCB_##_devcb); #define MCFG_MSM58321_D1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_d1_handler(DEVCB_##_devcb); + downcast(*device).set_d1_handler(DEVCB_##_devcb); #define MCFG_MSM58321_D2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_d2_handler(DEVCB_##_devcb); + downcast(*device).set_d2_handler(DEVCB_##_devcb); #define MCFG_MSM58321_D3_HANDLER(_devcb) \ - devcb = &downcast(*device).set_d3_handler(DEVCB_##_devcb); + downcast(*device).set_d3_handler(DEVCB_##_devcb); #define MCFG_MSM58321_BUSY_HANDLER(_devcb) \ - devcb = &downcast(*device).set_busy_handler(DEVCB_##_devcb); + downcast(*device).set_busy_handler(DEVCB_##_devcb); #define MCFG_MSM58321_YEAR0(_year0) \ downcast(*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(*device).set_out_int_handler(DEVCB_##_devcb); + downcast(*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 devcb_base &set_out_int_handler(Object &&cb) { return m_out_int_handler.set_callback(std::forward(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(*device).set_input_tag<3>(_input); #define MCFG_MSM6253_IN0_ANALOG_READ(_class, _method) \ - downcast(*device).set_input_cb<0>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast(*device).set_input_cb<0>(&_class::_method, #_class "::" #_method, this); #define MCFG_MSM6253_IN1_ANALOG_READ(_class, _method) \ - downcast(*device).set_input_cb<1>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast(*device).set_input_cb<1>(&_class::_method, #_class "::" #_method, this); #define MCFG_MSM6253_IN2_ANALOG_READ(_class, _method) \ - downcast(*device).set_input_cb<2>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast(*device).set_input_cb<2>(&_class::_method, #_class "::" #_method, this); #define MCFG_MSM6253_IN3_ANALOG_READ(_class, _method) \ - downcast(*device).set_input_cb<3>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast(*device).set_input_cb<3>(&_class::_method, #_class "::" #_method, this); #define MCFG_MSM6253_IN0_ANALOG_DEVREAD(_tag, _class, _method) \ - downcast(*device).set_input_cb<0>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); + downcast(*device).set_input_cb<0>(&_class::_method, #_class "::" #_method, _tag); #define MCFG_MSM6253_IN1_ANALOG_DEVREAD(_tag, _class, _method) \ - downcast(*device).set_input_cb<1>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); + downcast(*device).set_input_cb<1>(&_class::_method, #_class "::" #_method, _tag); #define MCFG_MSM6253_IN2_ANALOG_DEVREAD(_tag, _class, _method) \ - downcast(*device).set_input_cb<2>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); + downcast(*device).set_input_cb<2>(&_class::_method, #_class "::" #_method, _tag); #define MCFG_MSM6253_IN3_ANALOG_DEVREAD(_tag, _class, _method) \ - downcast(*device).set_input_cb<3>(msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag)); + downcast(*device).set_input_cb<3>(&_class::_method, #_class "::" #_method, _tag); //************************************************************************** @@ -71,7 +71,7 @@ public: // configuration template void set_input_tag(const char *tag) { m_analog_ports[P].set_tag(tag); } - template void set_input_cb(Object &&cb) { m_analog_input_cb[P] = std::forward(cb); } + template void set_input_cb(T &&... args) { m_analog_input_cb[P] = port_read_delegate(std::forward(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(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_NCR5380N_DRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_drq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_int_callback(DEVCB_##_int); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_NCR5390_DRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_drq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_out_irq_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_NCR539X_OUT_DRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_drq_callback(DEVCB_##_devcb); + downcast(*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(device)->set_timer1_clock(_t1clk); #define MCFG_NSC810_PORTA_READ(_read) \ - devcb = &downcast(*device).set_portA_read_callback(DEVCB_##_read); + downcast(*device).set_portA_read_callback(DEVCB_##_read); #define MCFG_NSC810_PORTB_READ(_read) \ - devcb = &downcast(*device).set_portB_read_callback(DEVCB_##_read); + downcast(*device).set_portB_read_callback(DEVCB_##_read); #define MCFG_NSC810_PORTC_READ(_read) \ - devcb = &downcast(*device).set_portC_read_callback(DEVCB_##_read); + downcast(*device).set_portC_read_callback(DEVCB_##_read); #define MCFG_NSC810_PORTA_WRITE(_write) \ - devcb = &downcast(*device).set_portA_write_callback(DEVCB_##_write); + downcast(*device).set_portA_write_callback(DEVCB_##_write); #define MCFG_NSC810_PORTB_WRITE(_write) \ - devcb = &downcast(*device).set_portB_write_callback(DEVCB_##_write); + downcast(*device).set_portB_write_callback(DEVCB_##_write); #define MCFG_NSC810_PORTC_WRITE(_write) \ - devcb = &downcast(*device).set_portC_write_callback(DEVCB_##_write); + downcast(*device).set_portC_write_callback(DEVCB_##_write); #define MCFG_NSC810_TIMER0_OUT(_write) \ - devcb = &downcast(*device).set_timer0_callback(DEVCB_##_write); + downcast(*device).set_timer0_callback(DEVCB_##_write); #define MCFG_NSC810_TIMER1_OUT(_write) \ - devcb = &downcast(*device).set_timer1_callback(DEVCB_##_write); + downcast(*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(device)->set_rst_callback(DEVCB_##_line); + downcast(device)->set_rst_callback(DEVCB_##_line); #define MCFG_NSCSICB_ATN_HANDLER(_line) \ - devcb = &downcast(device)->set_atn_callback(DEVCB_##_line); + downcast(device)->set_atn_callback(DEVCB_##_line); #define MCFG_NSCSICB_ACK_HANDLER(_line) \ - devcb = &downcast(device)->set_ack_callback(DEVCB_##_line); + downcast(device)->set_ack_callback(DEVCB_##_line); #define MCFG_NSCSICB_REQ_HANDLER(_line) \ - devcb = &downcast(device)->set_req_callback(DEVCB_##_line); + downcast(device)->set_req_callback(DEVCB_##_line); #define MCFG_NSCSICB_MSG_HANDLER(_line) \ - devcb = &downcast(device)->set_msg_callback(DEVCB_##_line); + downcast(device)->set_msg_callback(DEVCB_##_line); #define MCFG_NSCSICB_IO_HANDLER(_line) \ - devcb = &downcast(device)->set_io_callback(DEVCB_##_line); + downcast(device)->set_io_callback(DEVCB_##_line); #define MCFG_NSCSICB_CD_HANDLER(_line) \ downcast(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(*device).set_bit_handler<0>(DEVCB_##_devcb); + downcast(*device).set_bit_handler<0>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_bit_handler<1>(DEVCB_##_devcb); + downcast(*device).set_bit_handler<1>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_bit_handler<2>(DEVCB_##_devcb); + downcast(*device).set_bit_handler<2>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT3_HANDLER(_devcb) \ - devcb = &downcast(*device).set_bit_handler<3>(DEVCB_##_devcb); + downcast(*device).set_bit_handler<3>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT4_HANDLER(_devcb) \ - devcb = &downcast(*device).set_bit_handler<4>(DEVCB_##_devcb); + downcast(*device).set_bit_handler<4>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT5_HANDLER(_devcb) \ - devcb = &downcast(*device).set_bit_handler<5>(DEVCB_##_devcb); + downcast(*device).set_bit_handler<5>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT6_HANDLER(_devcb) \ - devcb = &downcast(*device).set_bit_handler<6>(DEVCB_##_devcb); + downcast(*device).set_bit_handler<6>(DEVCB_##_devcb); #define MCFG_OUTPUT_LATCH_BIT7_HANDLER(_devcb) \ - devcb = &downcast(*device).set_bit_handler<7>(DEVCB_##_devcb); + downcast(*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 devcb_base &set_bit_handler(Object &&cb) { return m_bit_handlers[Bit].set_callback(std::forward(cb)); } + template 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(*device).set_intrq_wr_callback(DEVCB_##_write); + downcast(*device).set_intrq_wr_callback(DEVCB_##_write); #define MCFG_PC_FDC_DRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_drq_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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 devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward(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(device)->set_map(id, address_map_constructor(&map, #map, this), this); #define MCFG_PCI9050_USER_INPUT_CALLBACK(_write) \ - devcb = &downcast(*device).set_user_input_callback(DEVCB_##_write); + downcast(*device).set_user_input_callback(DEVCB_##_write); #define MCFG_PCI9050_USER_OUTPUT_CALLBACK(_read) \ - devcb = &downcast(*device).set_user_output_callback(DEVCB_##_read); + downcast(*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(*device).set_keypress_callback(DEVCB_##_cb); + downcast(*device).set_keypress_callback(DEVCB_##_cb); #define MCFG_AT_KEYB_ADD(_tag, _def_set, _cb) \ MCFG_DEVICE_ADD(_tag, AT_KEYB, 0) \ downcast(*device).set_type(pc_keyboard_device::KEYBOARD_TYPE::AT, _def_set); \ - devcb = &downcast(*device).set_keypress_callback(DEVCB_##_cb); + downcast(*device).set_keypress_callback(DEVCB_##_cb); #define MCFG_AT_MF2_KEYB_ADD(_tag, _def_set, _cb) \ MCFG_DEVICE_ADD(_tag, AT_KEYB, 0) \ downcast(*device).set_type(pc_keyboard_device::KEYBOARD_TYPE_MF2, _def_set); \ - devcb = &downcast(*device).set_keypress_callback(DEVCB_##_cb); + downcast(*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(*device).m68k_r_callback(DEVCB_##_devcb); + downcast(*device).m68k_r_callback(DEVCB_##_devcb); #define MCFG_PDC_W_CB(_devcb) \ - devcb = &downcast(*device).m68k_w_callback(DEVCB_##_devcb); + downcast(*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 devcb_base& set_dio_read_cb(Object &&cb) - { return m_dio_read_func.set_callback(std::forward(cb)); } - - template devcb_base& set_dio_write_cb(Object &&cb) - { return m_dio_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_488_signal_write_cb(phi_488_signal_t signal , Object &&cb) - { return m_signal_wr_fns[ signal ].set_callback(std::forward(cb)); } - - template devcb_base& set_int_write_cb(Object &&cb) - { return m_int_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_dmarq_write_cb(Object &&cb) - { return m_dmarq_write_func.set_callback(std::forward(cb)); } - - template devcb_base &set_sys_cntrl_read_cb(Object &&cb) - { return m_sys_cntrl_read_func.set_callback(std::forward(cb)); } + template devcb_base& set_dio_read_cb(Object &&cb) { return m_dio_read_func.set_callback(std::forward(cb)); } + template devcb_base& set_dio_write_cb(Object &&cb) { return m_dio_write_func.set_callback(std::forward(cb)); } + template devcb_base& set_488_signal_write_cb(phi_488_signal_t signal , Object &&cb) { return m_signal_wr_fns[ signal ].set_callback(std::forward(cb)); } + template devcb_base& set_int_write_cb(Object &&cb) { return m_int_write_func.set_callback(std::forward(cb)); } + template devcb_base& set_dmarq_write_cb(Object &&cb) { return m_dmarq_write_func.set_callback(std::forward(cb)); } + template devcb_base &set_sys_cntrl_read_cb(Object &&cb) { return m_sys_cntrl_read_func.set_callback(std::forward(cb)); } + + auto dio_read_cb() { return m_dio_read_func.bind(); } + auto dio_write_cb() { return m_dio_write_func.bind(); } + template 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(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*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(*device).set_in_sp_callback(DEVCB_##_devcb); + downcast(*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(*device).set_read_slave_ack_callback(DEVCB_##_devcb); + downcast(*device).set_read_slave_ack_callback(DEVCB_##_devcb); class pic8259_device : public device_t @@ -53,6 +53,9 @@ public: template devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_func.set_callback(std::forward(cb)); } template devcb_base &set_in_sp_callback(Object &&cb) { return m_in_sp_func.set_callback(std::forward(cb)); } template devcb_base &set_read_slave_ack_callback(Object &&cb) { return m_read_slave_ack_func.set_callback(std::forward(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(*device).set_clk<2>(_clk); #define MCFG_PIT8253_OUT0_HANDLER(_devcb) \ - devcb = &downcast(*device).set_out_handler<0>(DEVCB_##_devcb); + downcast(*device).set_out_handler<0>(DEVCB_##_devcb); #define MCFG_PIT8253_OUT1_HANDLER(_devcb) \ - devcb = &downcast(*device).set_out_handler<1>(DEVCB_##_devcb); + downcast(*device).set_out_handler<1>(DEVCB_##_devcb); #define MCFG_PIT8253_OUT2_HANDLER(_devcb) \ - devcb = &downcast(*device).set_out_handler<2>(DEVCB_##_devcb); + downcast(*device).set_out_handler<2>(DEVCB_##_devcb); enum class pit_type @@ -133,6 +133,7 @@ public: template void set_clk(double clk) { m_clk[N] = clk; } template void set_clk(const XTAL &xtal) { set_clk(xtal.dvalue()); } template devcb_base &set_out_handler(Object &&cb) { return m_out_handler[N].set_callback(std::forward(cb)); } + template 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(*device).set_gpio0_set_cb(DEVCB_##_devcb); + downcast(*device).set_gpio0_set_cb(DEVCB_##_devcb); #define MCFG_PXA255_GPIO0_CLEAR_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_gpio0_clear_cb(DEVCB_##_devcb); + downcast(*device).set_gpio0_clear_cb(DEVCB_##_devcb); #define MCFG_PXA255_GPIO0_IN_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_gpio0_in_cb(DEVCB_##_devcb); + downcast(*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(*device).set_count_out_cb(DEVCB_##_devcb); + downcast(*device).set_count_out_cb(DEVCB_##_devcb); #define MCFG_RIPPLE_COUNTER_ROM_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_rom_out_cb(DEVCB_##_devcb); + downcast(*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 devcb_base &set_count_out_cb(Object &&cb) { return m_count_out_cb.set_callback(std::forward(cb)); } template devcb_base &set_rom_out_cb(Object &&cb) { return m_rom_out_cb.set_callback(std::forward(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(*device).set_out_alarm_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_alarm_callback(DEVCB_##_devcb); + downcast(*device).set_out_alarm_callback(DEVCB_##_devcb); #define MCFG_RP5C15_OUT_CLKOUT_CB(_devcb) \ - devcb = &downcast(*device).set_out_clkout_callback(DEVCB_##_devcb); + downcast(*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(*device).set_int_callback(DEVCB_##_devcb); + downcast(*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(*device).set_data_cb(DEVCB_##cb); + downcast(*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(*device).set_interrupt_callback(DEVCB_##cb); + downcast(*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(*device).set_divider((divider)); #define MCFG_S2623_SET_INTREQ_CALLBACK(cb) \ - devcb = &downcast(*device).set_intreq_cb(DEVCB_##cb); + downcast(*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(*device).set_screen_tag(screen_tag); #define MCFG_S3C2400_CORE_PIN_R_CB(cb) \ - devcb = &downcast(*device).set_core_pin_r_callback(DEVCB_##cb); + downcast(*device).set_core_pin_r_callback(DEVCB_##cb); #define MCFG_S3C2400_CORE_PIN_W_CB(cb) \ - devcb = &downcast(*device).set_core_pin_w_callback(DEVCB_##cb); + downcast(*device).set_core_pin_w_callback(DEVCB_##cb); #define MCFG_S3C2400_GPIO_PORT_R_CB(cb) \ - devcb = &downcast(*device).set_gpio_port_r_callback(DEVCB_##cb); + downcast(*device).set_gpio_port_r_callback(DEVCB_##cb); #define MCFG_S3C2400_GPIO_PORT_W_CB(cb) \ - devcb = &downcast(*device).set_gpio_port_w_callback(DEVCB_##cb); + downcast(*device).set_gpio_port_w_callback(DEVCB_##cb); #define MCFG_S3C2400_I2C_SCL_W_CB(cb) \ - devcb = &downcast(*device).set_i2c_scl_w_callback(DEVCB_##cb); + downcast(*device).set_i2c_scl_w_callback(DEVCB_##cb); #define MCFG_S3C2400_I2C_SDA_R_CB(cb) \ - devcb = &downcast(*device).set_i2c_sda_r_callback(DEVCB_##cb); + downcast(*device).set_i2c_sda_r_callback(DEVCB_##cb); #define MCFG_S3C2400_I2C_SDA_W_CB(cb) \ - devcb = &downcast(*device).set_i2c_sda_w_callback(DEVCB_##cb); + downcast(*device).set_i2c_sda_w_callback(DEVCB_##cb); #define MCFG_S3C2400_ADC_DATA_R_CB(cb) \ - devcb = &downcast(*device).set_adc_data_r_callback(DEVCB_##cb); + downcast(*device).set_adc_data_r_callback(DEVCB_##cb); #define MCFG_S3C2400_I2S_DATA_W_CB(cb) \ - devcb = &downcast(*device).set_i2s_data_w_callback(DEVCB_##cb); + downcast(*device).set_i2s_data_w_callback(DEVCB_##cb); #define MCFG_S3C2400_LCD_FLAGS(flags) \ downcast(*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(*device).set_screen_tag(screen_tag); #define MCFG_S3C2410_CORE_PIN_R_CB(cb) \ - devcb = &downcast(*device).set_core_pin_r_callback(DEVCB_##cb); + downcast(*device).set_core_pin_r_callback(DEVCB_##cb); #define MCFG_S3C2410_CORE_PIN_W_CB(cb) \ - devcb = &downcast(*device).set_core_pin_w_callback(DEVCB_##cb); + downcast(*device).set_core_pin_w_callback(DEVCB_##cb); #define MCFG_S3C2410_GPIO_PORT_R_CB(cb) \ - devcb = &downcast(*device).set_gpio_port_r_callback(DEVCB_##cb); + downcast(*device).set_gpio_port_r_callback(DEVCB_##cb); #define MCFG_S3C2410_GPIO_PORT_W_CB(cb) \ - devcb = &downcast(*device).set_gpio_port_w_callback(DEVCB_##cb); + downcast(*device).set_gpio_port_w_callback(DEVCB_##cb); #define MCFG_S3C2410_I2C_SCL_W_CB(cb) \ - devcb = &downcast(*device).set_i2c_scl_w_callback(DEVCB_##cb); + downcast(*device).set_i2c_scl_w_callback(DEVCB_##cb); #define MCFG_S3C2410_I2C_SDA_R_CB(cb) \ - devcb = &downcast(*device).set_i2c_sda_r_callback(DEVCB_##cb); + downcast(*device).set_i2c_sda_r_callback(DEVCB_##cb); #define MCFG_S3C2410_I2C_SDA_W_CB(cb) \ - devcb = &downcast(*device).set_i2c_sda_w_callback(DEVCB_##cb); + downcast(*device).set_i2c_sda_w_callback(DEVCB_##cb); #define MCFG_S3C2410_ADC_DATA_R_CB(cb) \ - devcb = &downcast(*device).set_adc_data_r_callback(DEVCB_##cb); + downcast(*device).set_adc_data_r_callback(DEVCB_##cb); #define MCFG_S3C2410_I2S_DATA_W_CB(cb) \ - devcb = &downcast(*device).set_i2s_data_w_callback(DEVCB_##cb); + downcast(*device).set_i2s_data_w_callback(DEVCB_##cb); #define MCFG_S3C2410_NAND_COMMAND_W_CB(cb) \ - devcb = &downcast(*device).set_nand_command_w_callback(DEVCB_##cb); + downcast(*device).set_nand_command_w_callback(DEVCB_##cb); #define MCFG_S3C2410_NAND_ADDRESS_W_CB(cb) \ - devcb = &downcast(*device).set_nand_address_w_callback(DEVCB_##cb); + downcast(*device).set_nand_address_w_callback(DEVCB_##cb); #define MCFG_S3C2410_NAND_DATA_R_CB(cb) \ - devcb = &downcast(*device).set_nand_data_r_callback(DEVCB_##cb); + downcast(*device).set_nand_data_r_callback(DEVCB_##cb); #define MCFG_S3C2410_NAND_DATA_W_CB(cb) \ - devcb = &downcast(*device).set_nand_data_w_callback(DEVCB_##cb); + downcast(*device).set_nand_data_w_callback(DEVCB_##cb); #define MCFG_S3C2410_LCD_FLAGS(flags) \ downcast(*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(*device).set_screen_tag(screen_tag); #define MCFG_S3C2440_CORE_PIN_R_CB(_devcb) \ - devcb = &downcast(*device).set_core_pin_r_callback(DEVCB_##_devcb); + downcast(*device).set_core_pin_r_callback(DEVCB_##_devcb); #define MCFG_S3C2440_CORE_PIN_W_CB(_devcb) \ - devcb = &downcast(*device).set_core_pin_w_callback(DEVCB_##_devcb); + downcast(*device).set_core_pin_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_GPIO_PORT_R_CB(_devcb) \ - devcb = &downcast(*device).set_gpio_port_r_callback(DEVCB_##_devcb); + downcast(*device).set_gpio_port_r_callback(DEVCB_##_devcb); #define MCFG_S3C2440_GPIO_PORT_W_CB(_devcb) \ - devcb = &downcast(*device).set_gpio_port_w_callback(DEVCB_##_devcb); + downcast(*device).set_gpio_port_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_I2C_SCL_W_CB(_devcb) \ - devcb = &downcast(*device).set_i2c_scl_w_callback(DEVCB_##_devcb); + downcast(*device).set_i2c_scl_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_I2C_SDA_R_CB(_devcb) \ - devcb = &downcast(*device).set_i2c_sda_r_callback(DEVCB_##_devcb); + downcast(*device).set_i2c_sda_r_callback(DEVCB_##_devcb); #define MCFG_S3C2440_I2C_SDA_W_CB(_devcb) \ - devcb = &downcast(*device).set_i2c_sda_w_callback(DEVCB_##_devcb); + downcast(*device).set_i2c_sda_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_ADC_DATA_R_CB(_devcb) \ - devcb = &downcast(*device).set_adc_data_r_callback(DEVCB_##_devcb); + downcast(*device).set_adc_data_r_callback(DEVCB_##_devcb); #define MCFG_S3C2440_I2S_DATA_W_CB(_devcb) \ - devcb = &downcast(*device).set_i2s_data_w_callback(DEVCB_##_devcb); + downcast(*device).set_i2s_data_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_NAND_COMMAND_W_CB(_devcb) \ - devcb = &downcast(*device).set_nand_command_w_callback(DEVCB_##_devcb); + downcast(*device).set_nand_command_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_NAND_ADDRESS_W_CB(_devcb) \ - devcb = &downcast(*device).set_nand_address_w_callback(DEVCB_##_devcb); + downcast(*device).set_nand_address_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_NAND_DATA_R_CB(_devcb) \ - devcb = &downcast(*device).set_nand_data_r_callback(DEVCB_##_devcb); + downcast(*device).set_nand_data_r_callback(DEVCB_##_devcb); #define MCFG_S3C2440_NAND_DATA_W_CB(_devcb) \ - devcb = &downcast(*device).set_nand_data_w_callback(DEVCB_##_devcb); + downcast(*device).set_nand_data_w_callback(DEVCB_##_devcb); #define MCFG_S3C2440_LCD_FLAGS(_flags) \ downcast(*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(*device).set_gpio_port_r_callback(DEVCB_##cb); + downcast(*device).set_gpio_port_r_callback(DEVCB_##cb); #define MCFG_S3C44B0_GPIO_PORT_W_CB(cb) \ - devcb = &downcast(*device).set_gpio_port_w_callback(DEVCB_##cb); + downcast(*device).set_gpio_port_w_callback(DEVCB_##cb); #define MCFG_S3C44B0_I2C_SCL_W_CB(cb) \ - devcb = &downcast(*device).set_i2c_scl_w_callback(DEVCB_##cb); + downcast(*device).set_i2c_scl_w_callback(DEVCB_##cb); #define MCFG_S3C44B0_I2C_SDA_R_CB(cb) \ - devcb = &downcast(*device).set_i2c_sda_r_callback(DEVCB_##cb); + downcast(*device).set_i2c_sda_r_callback(DEVCB_##cb); #define MCFG_S3C44B0_I2C_SDA_W_CB(cb) \ - devcb = &downcast(*device).set_i2c_sda_w_callback(DEVCB_##cb); + downcast(*device).set_i2c_sda_w_callback(DEVCB_##cb); #define MCFG_S3C44B0_ADC_DATA_R_CB(cb) \ - devcb = &downcast(*device).set_adc_data_r_callback(DEVCB_##cb); + downcast(*device).set_adc_data_r_callback(DEVCB_##cb); #define MCFG_S3C44B0_I2S_DATA_W_CB(cb) \ - devcb = &downcast(*device).set_i2s_data_w_callback(DEVCB_##cb); + downcast(*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(*device).set_type(_type); #define MCFG_SAA1043_BC_CALLBACK(_write) \ - devcb = &downcast(*device).set_bc_callback(DEVCB_##_write); + downcast(*device).set_bc_callback(DEVCB_##_write); #define MCFG_SAA1043_FH2_CALLBACK(_write) \ - devcb = &downcast(*device).set_fh2_callback(DEVCB_##_write); + downcast(*device).set_fh2_callback(DEVCB_##_write); #define MCFG_SAA1043_FH3_CALLBACK(_write) \ - devcb = &downcast(*device).set_fh3_callback(DEVCB_##_write); + downcast(*device).set_fh3_callback(DEVCB_##_write); #define MCFG_SAA1043_FH80_CALLBACK(_write) \ - devcb = &downcast(*device).set_fh80_callback(DEVCB_##_write); + downcast(*device).set_fh80_callback(DEVCB_##_write); #define MCFG_SAA1043_PH_CALLBACK(_write) \ - devcb = &downcast(*device).set_ph_callback(DEVCB_##_write); + downcast(*device).set_ph_callback(DEVCB_##_write); #define MCFG_SAA1043_NS_CALLBACK(_write) \ - devcb = &downcast(*device).set_ns_callback(DEVCB_##_write); + downcast(*device).set_ns_callback(DEVCB_##_write); #define MCFG_SAA1043_RI_CALLBACK(_write) \ - devcb = &downcast(*device).set_ri_callback(DEVCB_##_write); + downcast(*device).set_ri_callback(DEVCB_##_write); #define MCFG_SAA1043_WMP_CALLBACK(_write) \ - devcb = &downcast(*device).set_wmp_callback(DEVCB_##_write); + downcast(*device).set_wmp_callback(DEVCB_##_write); #define MCFG_SAA1043_RR_CALLBACK(_write) \ - devcb = &downcast(*device).set_rr_callback(DEVCB_##_write); + downcast(*device).set_rr_callback(DEVCB_##_write); #define MCFG_SAA1043_V1_CALLBACK(_write) \ - devcb = &downcast(*device).set_v1_callback(DEVCB_##_write); + downcast(*device).set_v1_callback(DEVCB_##_write); #define MCFG_SAA1043_V2_CALLBACK(_write) \ - devcb = &downcast(*device).set_v2_callback(DEVCB_##_write); + downcast(*device).set_v2_callback(DEVCB_##_write); #define MCFG_SAA1043_CLP_CALLBACK(_write) \ - devcb = &downcast(*device).set_clp_callback(DEVCB_##_write); + downcast(*device).set_clp_callback(DEVCB_##_write); #define MCFG_SAA1043_DL_CALLBACK(_write) \ - devcb = &downcast(*device).set_dl_callback(DEVCB_##_write); + downcast(*device).set_dl_callback(DEVCB_##_write); #define MCFG_SAA1043_H1_CALLBACK(_write) \ - devcb = &downcast(*device).set_h1_callback(DEVCB_##_write); + downcast(*device).set_h1_callback(DEVCB_##_write); #define MCFG_SAA1043_H2_CALLBACK(_write) \ - devcb = &downcast(*device).set_h2_callback(DEVCB_##_write); + downcast(*device).set_h2_callback(DEVCB_##_write); #define MCFG_SAA1043_CB_CALLBACK(_write) \ - devcb = &downcast(*device).set_cb_callback(DEVCB_##_write); + downcast(*device).set_cb_callback(DEVCB_##_write); #define MCFG_SAA1043_CS_CALLBACK(_write) \ - devcb = &downcast(*device).set_cs_callback(DEVCB_##_write); + downcast(*device).set_cs_callback(DEVCB_##_write); #define MCFG_SAA1043_ID_CALLBACK(_write) \ - devcb = &downcast(*device).set_id_callback(DEVCB_##_write); + downcast(*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(*device).set_out_txda_callback(DEVCB_##_devcb); + downcast(*device).set_out_txda_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_DTRA_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtra_callback(DEVCB_##_devcb); + downcast(*device).set_out_dtra_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_RTSA_CB(_devcb) \ - devcb = &downcast(*device).set_out_rtsa_callback(DEVCB_##_devcb); + downcast(*device).set_out_rtsa_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_SYNCA_CB(_devcb) \ - devcb = &downcast(*device).set_out_synca_callback(DEVCB_##_devcb); + downcast(*device).set_out_synca_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_TRXCA_CB(_devcb) \ - devcb = &downcast(*device).set_out_trxca_callback(DEVCB_##_devcb); + downcast(*device).set_out_trxca_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_RTXCA_CB(_devcb) \ - devcb = &downcast(*device).set_out_rtxca_callback(DEVCB_##_devcb); + downcast(*device).set_out_rtxca_callback(DEVCB_##_devcb); // Port B callbacks #define MCFG_DUSCC_OUT_TXDB_CB(_devcb) \ - devcb = &downcast(*device).set_out_txdb_callback(DEVCB_##_devcb); + downcast(*device).set_out_txdb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_DTRB_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtrb_callback(DEVCB_##_devcb); + downcast(*device).set_out_dtrb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_RTSB_CB(_devcb) \ - devcb = &downcast(*device).set_out_rtsb_callback(DEVCB_##_devcb); + downcast(*device).set_out_rtsb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_SYNCB_CB(_devcb) \ - devcb = &downcast(*device).set_out_syncb_callback(DEVCB_##_devcb); + downcast(*device).set_out_syncb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_TRXCB_CB(_devcb) \ - devcb = &downcast(*device).set_out_trxcb_callback(DEVCB_##_devcb); + downcast(*device).set_out_trxcb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_RTXCB_CB(_devcb) \ - devcb = &downcast(*device).set_out_rtxcb_callback(DEVCB_##_devcb); + downcast(*device).set_out_rtxcb_callback(DEVCB_##_devcb); #define MCFG_DUSCC_OUT_INT_CB(_devcb) \ - devcb = &downcast(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*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(*device).set_nand_type((nand_device::chip::type)); #define MCFG_NAND_RNB_CALLBACK(write) \ - devcb = &downcast(*device).set_rnb_wr_callback(DEVCB_##write); + downcast(*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(*device).set_irq_callback(DEVCB_##write); + downcast(*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(*device).set_irq_callback(DEVCB_##write); + downcast(*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(*device).set_control_port_tags(ctrl1_tag, ctrl2_tag); #define MCFG_SMPC_HLE_PDR1_IN_CB(_devcb) \ - devcb = &downcast(*device).set_pdr1_in_handler(DEVCB_##_devcb); + downcast(*device).set_pdr1_in_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_PDR2_IN_CB(_devcb) \ - devcb = &downcast(*device).set_pdr2_in_handler(DEVCB_##_devcb); + downcast(*device).set_pdr2_in_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_PDR1_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_pdr1_out_handler(DEVCB_##_devcb); + downcast(*device).set_pdr1_out_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_PDR2_OUT_CB(_devcb) \ - devcb = &downcast(*device).set_pdr2_out_handler(DEVCB_##_devcb); + downcast(*device).set_pdr2_out_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_MASTER_RESET_CB(_devcb) \ - devcb = &downcast(*device).set_master_reset_handler(DEVCB_##_devcb); + downcast(*device).set_master_reset_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_MASTER_NMI_CB(_devcb) \ - devcb = &downcast(*device).set_master_nmi_handler(DEVCB_##_devcb); + downcast(*device).set_master_nmi_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_SLAVE_RESET_CB(_devcb) \ - devcb = &downcast(*device).set_slave_reset_handler(DEVCB_##_devcb); + downcast(*device).set_slave_reset_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_SOUND_RESET_CB(_devcb) \ - devcb = &downcast(*device).set_sound_reset_handler(DEVCB_##_devcb); + downcast(*device).set_sound_reset_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_SYSTEM_RESET_CB(_devcb) \ - devcb = &downcast(*device).set_system_reset_handler(DEVCB_##_devcb); + downcast(*device).set_system_reset_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_SYSTEM_HALT_CB(_devcb) \ - devcb = &downcast(*device).set_system_halt_handler(DEVCB_##_devcb); + downcast(*device).set_system_halt_handler(DEVCB_##_devcb); #define MCFG_SMPC_HLE_DOT_SELECT_CB(_devcb) \ - devcb = &downcast(*device).set_dot_select_handler(DEVCB_##_devcb); + downcast(*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(*device).set_interrupt_handler(DEVCB_##_devcb); + downcast(*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(*device).set_optic_handler(DEVCB_##_write); + downcast(*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(*device).set_input_cb(0, DEVCB_##_devcb); + downcast(*device).set_input_cb(0, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT2_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(1, DEVCB_##_devcb); + downcast(*device).set_input_cb(1, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT3_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(2, DEVCB_##_devcb); + downcast(*device).set_input_cb(2, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT4_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(3, DEVCB_##_devcb); + downcast(*device).set_input_cb(3, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT5_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(4, DEVCB_##_devcb); + downcast(*device).set_input_cb(4, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT6_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(5, DEVCB_##_devcb); + downcast(*device).set_input_cb(5, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT7_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(6, DEVCB_##_devcb); + downcast(*device).set_input_cb(6, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT8_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(7, DEVCB_##_devcb); + downcast(*device).set_input_cb(7, DEVCB_##_devcb); #define MCFG_TE7750_IN_PORT9_CB(_devcb) \ - devcb = &downcast(*device).set_input_cb(8, DEVCB_##_devcb); + downcast(*device).set_input_cb(8, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT1_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(0, DEVCB_##_devcb); + downcast(*device).set_output_cb(0, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT2_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(1, DEVCB_##_devcb); + downcast(*device).set_output_cb(1, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT3_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(2, DEVCB_##_devcb); + downcast(*device).set_output_cb(2, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT4_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(3, DEVCB_##_devcb); + downcast(*device).set_output_cb(3, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT5_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(4, DEVCB_##_devcb); + downcast(*device).set_output_cb(4, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT6_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(5, DEVCB_##_devcb); + downcast(*device).set_output_cb(5, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT7_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(6, DEVCB_##_devcb); + downcast(*device).set_output_cb(6, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT8_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(7, DEVCB_##_devcb); + downcast(*device).set_output_cb(7, DEVCB_##_devcb); #define MCFG_TE7750_OUT_PORT9_CB(_devcb) \ - devcb = &downcast(*device).set_output_cb(8, DEVCB_##_devcb); + downcast(*device).set_output_cb(8, DEVCB_##_devcb); #define MCFG_TE7750_IOS_CB(_devcb) \ - devcb = &downcast(*device).set_ios_cb(DEVCB_##_devcb); + downcast(*device).set_ios_cb(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -83,6 +83,25 @@ public: { return m_ios_cb.set_callback(std::forward(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(*device).set_reset_handler(DEVCB_##_devcb); + downcast(*device).set_reset_handler(DEVCB_##_devcb); #define MCFG_M48T37_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_cpu_tag(_tag); #define MCFG_TMP68301_IN_PARALLEL_CB(cb) \ - devcb = &downcast(*device).set_in_parallel_callback((DEVCB_##cb)); + downcast(*device).set_in_parallel_callback((DEVCB_##cb)); #define MCFG_TMP68301_OUT_PARALLEL_CB(cb) \ - devcb = &downcast(*device).set_out_parallel_callback((DEVCB_##cb)); + downcast(*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(*device).set_read_port_callback<(tms1024_device::X)>((DEVCB_##cb)); + downcast(*device).set_read_port_callback<(tms1024_device::X)>((DEVCB_##cb)); #define MCFG_TMS1025_WRITE_PORT_CB(X, cb) \ - devcb = &downcast(*device).set_write_port_callback<(tms1024_device::X)>((DEVCB_##cb)); + downcast(*device).set_write_port_callback<(tms1024_device::X)>((DEVCB_##cb)); // pinout reference @@ -71,6 +71,14 @@ public: // configuration helpers template devcb_base &set_read_port_callback(Object &&cb) { return m_read_port[N].set_callback(std::forward(cb)); } template devcb_base &set_write_port_callback(Object &&cb) { return m_write_port[N].set_callback(std::forward(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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_TMS5501_XMT_CALLBACK(_write) \ - devcb = &downcast(*device).set_xmt_wr_callback(DEVCB_##_write); + downcast(*device).set_xmt_wr_callback(DEVCB_##_write); #define MCFG_TMS5501_XI_CALLBACK(_read) \ - devcb = &downcast(*device).set_xi_rd_callback(DEVCB_##_read); + downcast(*device).set_xi_rd_callback(DEVCB_##_read); #define MCFG_TMS5501_XO_CALLBACK(_write) \ - devcb = &downcast(*device).set_xo_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_readblock_callback(DEVCB_##_read); + downcast(*device).set_readblock_callback(DEVCB_##_read); #define MCFG_TMS9901_P0_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<0>(DEVCB_##_write); + downcast(*device).set_p_callback<0>(DEVCB_##_write); #define MCFG_TMS9901_P1_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<1>(DEVCB_##_write); + downcast(*device).set_p_callback<1>(DEVCB_##_write); #define MCFG_TMS9901_P2_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<2>(DEVCB_##_write); + downcast(*device).set_p_callback<2>(DEVCB_##_write); #define MCFG_TMS9901_P3_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<3>(DEVCB_##_write); + downcast(*device).set_p_callback<3>(DEVCB_##_write); #define MCFG_TMS9901_P4_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<4>(DEVCB_##_write); + downcast(*device).set_p_callback<4>(DEVCB_##_write); #define MCFG_TMS9901_P5_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<5>(DEVCB_##_write); + downcast(*device).set_p_callback<5>(DEVCB_##_write); #define MCFG_TMS9901_P6_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<6>(DEVCB_##_write); + downcast(*device).set_p_callback<6>(DEVCB_##_write); #define MCFG_TMS9901_P7_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<7>(DEVCB_##_write); + downcast(*device).set_p_callback<7>(DEVCB_##_write); #define MCFG_TMS9901_P8_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<8>(DEVCB_##_write); + downcast(*device).set_p_callback<8>(DEVCB_##_write); #define MCFG_TMS9901_P9_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<9>(DEVCB_##_write); + downcast(*device).set_p_callback<9>(DEVCB_##_write); #define MCFG_TMS9901_P10_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<10>(DEVCB_##_write); + downcast(*device).set_p_callback<10>(DEVCB_##_write); #define MCFG_TMS9901_P11_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<11>(DEVCB_##_write); + downcast(*device).set_p_callback<11>(DEVCB_##_write); #define MCFG_TMS9901_P12_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<12>(DEVCB_##_write); + downcast(*device).set_p_callback<12>(DEVCB_##_write); #define MCFG_TMS9901_P13_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<13>(DEVCB_##_write); + downcast(*device).set_p_callback<13>(DEVCB_##_write); #define MCFG_TMS9901_P14_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<14>(DEVCB_##_write); + downcast(*device).set_p_callback<14>(DEVCB_##_write); #define MCFG_TMS9901_P15_HANDLER( _write ) \ - devcb = &downcast(*device).set_p_callback<15>(DEVCB_##_write); + downcast(*device).set_p_callback<15>(DEVCB_##_write); #define MCFG_TMS9901_INTLEVEL_HANDLER( _intlevel ) \ - devcb = &downcast(*device).set_intlevel_callback(DEVCB_##_intlevel); + downcast(*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(*device).set_int_callback((DEVCB_##cb)); + downcast(*device).set_int_callback((DEVCB_##cb)); #define MCFG_TMS9902_RCV_CB(cb) \ - devcb = &downcast(*device).set_rcv_callback((DEVCB_##cb)); + downcast(*device).set_rcv_callback((DEVCB_##cb)); #define MCFG_TMS9902_XMIT_CB(cb) \ - devcb = &downcast(*device).set_xmit_callback((DEVCB_##cb)); + downcast(*device).set_xmit_callback((DEVCB_##cb)); #define MCFG_TMS9902_CTRL_CB(cb) \ - devcb = &downcast(*device).set_ctrl_callback((DEVCB_##cb)); + downcast(*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(*device).set_hirq_handler(DEVCB_##_devcb); + downcast(*device).set_hirq_handler(DEVCB_##_devcb); #define MCFG_TUBE_PNMI_HANDLER(_devcb) \ - devcb = &downcast(*device).set_pnmi_handler(DEVCB_##_devcb); + downcast(*device).set_pnmi_handler(DEVCB_##_devcb); #define MCFG_TUBE_PIRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_pirq_handler(DEVCB_##_devcb); + downcast(*device).set_pirq_handler(DEVCB_##_devcb); #define MCFG_TUBE_DRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_drq_handler(DEVCB_##_devcb); + downcast(*device).set_drq_handler(DEVCB_##_devcb); @@ -52,6 +52,10 @@ public: template devcb_base &set_pnmi_handler(Object &&cb) { return m_pnmi_handler.set_callback(std::forward(cb)); } template devcb_base &set_pirq_handler(Object &&cb) { return m_pirq_handler.set_callback(std::forward(cb)); } template devcb_base &set_drq_handler(Object &&cb) { return m_drq_handler.set_callback(std::forward(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(*device).set_clock((clk)); #define MCFG_UPD71071_OUT_HREQ_CB(cb) \ - devcb = &downcast(*device).set_out_hreq_callback((DEVCB_##cb)); + downcast(*device).set_out_hreq_callback((DEVCB_##cb)); #define MCFG_UPD71071_OUT_EOP_CB(cb) \ - devcb = &downcast(*device).set_out_eop_callback((DEVCB_##cb)); + downcast(*device).set_out_eop_callback((DEVCB_##cb)); #define MCFG_UPD71071_DMA_READ_0_CB(cb) \ - devcb = &downcast(*device).set_dma_read_callback<0>((DEVCB_##cb)); + downcast(*device).set_dma_read_callback<0>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_READ_1_CB(cb) \ - devcb = &downcast(*device).set_dma_read_callback<1>((DEVCB_##cb)); + downcast(*device).set_dma_read_callback<1>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_READ_2_CB(cb) \ - devcb = &downcast(*device).set_dma_read_callback<2>((DEVCB_##cb)); + downcast(*device).set_dma_read_callback<2>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_READ_3_CB(cb) \ - devcb = &downcast(*device).set_dma_read_callback<3>((DEVCB_##cb)); + downcast(*device).set_dma_read_callback<3>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_WRITE_0_CB(cb) \ - devcb = &downcast(*device).set_dma_write_callback<0>((DEVCB_##cb)); + downcast(*device).set_dma_write_callback<0>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_WRITE_1_CB(cb) \ - devcb = &downcast(*device).set_dma_write_callback<1>((DEVCB_##cb)); + downcast(*device).set_dma_write_callback<1>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_WRITE_2_CB(cb) \ - devcb = &downcast(*device).set_dma_write_callback<2>((DEVCB_##cb)); + downcast(*device).set_dma_write_callback<2>((DEVCB_##cb)); #define MCFG_UPD71071_DMA_WRITE_3_CB(cb) \ - devcb = &downcast(*device).set_dma_write_callback<3>((DEVCB_##cb)); + downcast(*device).set_dma_write_callback<3>((DEVCB_##cb)); #define MCFG_UPD71071_OUT_DACK_0_CB(cb) \ - devcb = &downcast(*device).set_out_dack_callback<0>((DEVCB_##cb)); + downcast(*device).set_out_dack_callback<0>((DEVCB_##cb)); #define MCFG_UPD71071_OUT_DACK_1_CB(cb) \ - devcb = &downcast(*device).set_out_dack_callback<1>((DEVCB_##cb)); + downcast(*device).set_out_dack_callback<1>((DEVCB_##cb)); #define MCFG_UPD71071_OUT_DACK_2_CB(cb) \ - devcb = &downcast(*device).set_out_dack_callback<2>((DEVCB_##cb)); + downcast(*device).set_out_dack_callback<2>((DEVCB_##cb)); #define MCFG_UPD71071_OUT_DACK_3_CB(cb) \ - devcb = &downcast(*device).set_out_dack_callback<3>((DEVCB_##cb)); + downcast(*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(*device).set_input_handler(DEVCB_##_devcb); + downcast(*device).set_input_handler(DEVCB_##_devcb); #define MCFG_UPD765_INTRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_intrq_wr_callback(DEVCB_##_write); + downcast(*device).set_intrq_wr_callback(DEVCB_##_write); #define MCFG_UPD765_DRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_drq_wr_callback(DEVCB_##_write); + downcast(*device).set_drq_wr_callback(DEVCB_##_write); #define MCFG_UPD765_HDL_CALLBACK(_write) \ - devcb = &downcast(*device).set_hdl_wr_callback(DEVCB_##_write); + downcast(*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 devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward(cb)); } template devcb_base &set_drq_wr_callback(Object &&cb) { return drq_cb.set_callback(std::forward(cb)); } template devcb_base &set_hdl_wr_callback(Object &&cb) { return hdl_cb.set_callback(std::forward(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(*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(*device).set_out_irq5_callback(DEVCB_##_devcb); + downcast(*device).set_out_irq5_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_DRQ3_CB(_devcb) \ - devcb = &downcast(*device).set_out_drq3_callback(DEVCB_##_devcb); + downcast(*device).set_out_drq3_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_MR_CB(_devcb) \ - devcb = &downcast(*device).set_out_mr_callback(DEVCB_##_devcb); + downcast(*device).set_out_mr_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_BUSY_CB(_devcb) \ - devcb = &downcast(*device).set_out_busy_callback(DEVCB_##_devcb); + downcast(*device).set_out_busy_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_REQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_req_callback(DEVCB_##_devcb); + downcast(*device).set_out_req_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_RA3_CB(_devcb) \ - devcb = &downcast(*device).set_out_ra3_callback(DEVCB_##_devcb); + downcast(*device).set_out_ra3_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_IN_RD322_CB(_devcb) \ - devcb = &downcast(*device).set_in_rd322_callback(DEVCB_##_devcb); + downcast(*device).set_in_rd322_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_IN_RAMCS_CB(_devcb) \ - devcb = &downcast(*device).set_in_ramcs_callback(DEVCB_##_devcb); + downcast(*device).set_in_ramcs_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_RAMWR_CB(_devcb) \ - devcb = &downcast(*device).set_out_ramwr_callback(DEVCB_##_devcb); + downcast(*device).set_out_ramwr_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_IN_CS1010_CB(_devcb) \ - devcb = &downcast(*device).set_in_cs1010_callback(DEVCB_##_devcb); + downcast(*device).set_in_cs1010_callback(DEVCB_##_devcb); #define MCFG_WD11C00_17_OUT_CS1010_CB(_devcb) \ - devcb = &downcast(*device).set_out_cs1010_callback(DEVCB_##_devcb); + downcast(*device).set_out_cs1010_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -73,6 +73,17 @@ public: template devcb_base &set_out_ramwr_callback(Object &&cb) { return m_out_ramwr_cb.set_callback(std::forward(cb)); } template devcb_base &set_in_cs1010_callback(Object &&cb) { return m_in_cs1010_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_cs1010_callback(Object &&cb) { return m_out_cs1010_cb.set_callback(std::forward(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(*device).set_out_intrq_callback(DEVCB_##_devcb); + downcast(*device).set_out_intrq_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_BDRQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_bdrq_callback(DEVCB_##_devcb); + downcast(*device).set_out_bdrq_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_BCR_CB(_devcb) \ - devcb = &downcast(*device).set_out_bcr_callback(DEVCB_##_devcb); + downcast(*device).set_out_bcr_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_BRDY_CB(_devcb) \ - devcb = &downcast(*device).set_in_brdy_callback(DEVCB_##_devcb); + downcast(*device).set_in_brdy_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_BCS_CB(_devcb) \ - devcb = &downcast(*device).set_in_bcs_callback(DEVCB_##_devcb); + downcast(*device).set_in_bcs_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_BCS_CB(_devcb) \ - devcb = &downcast(*device).set_out_bcs_callback(DEVCB_##_devcb); + downcast(*device).set_out_bcs_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_DIRIN_CB(_devcb) \ - devcb = &downcast(*device).set_out_dirin_callback(DEVCB_##_devcb); + downcast(*device).set_out_dirin_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_STEP_CB(_devcb) \ - devcb = &downcast(*device).set_out_step_callback(DEVCB_##_devcb); + downcast(*device).set_out_step_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_RWC_CB(_devcb) \ - devcb = &downcast(*device).set_out_rwc_callback(DEVCB_##_devcb); + downcast(*device).set_out_rwc_callback(DEVCB_##_devcb); #define MCFG_WD2010_OUT_WG_CB(_devcb) \ - devcb = &downcast(*device).set_out_wg_callback(DEVCB_##_devcb); + downcast(*device).set_out_wg_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_DRDY_CB(_devcb) \ - devcb = &downcast(*device).set_in_drdy_callback(DEVCB_##_devcb); + downcast(*device).set_in_drdy_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_INDEX_CB(_devcb) \ - devcb = &downcast(*device).set_in_index_callback(DEVCB_##_devcb); + downcast(*device).set_in_index_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_WF_CB(_devcb) \ - devcb = &downcast(*device).set_in_wf_callback(DEVCB_##_devcb); + downcast(*device).set_in_wf_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_TK000_CB(_devcb) \ - devcb = &downcast(*device).set_in_tk000_callback(DEVCB_##_devcb); + downcast(*device).set_in_tk000_callback(DEVCB_##_devcb); #define MCFG_WD2010_IN_SC_CB(_devcb) \ - devcb = &downcast(*device).set_in_sc_callback(DEVCB_##_devcb); + downcast(*device).set_in_sc_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -90,6 +90,21 @@ public: template devcb_base &set_in_wf_callback(Object &&cb) { return m_in_wf_cb.set_callback(std::forward(cb)); } template devcb_base &set_in_tk000_callback(Object &&cb) { return m_in_tk000_cb.set_callback(std::forward(cb)); } template devcb_base &set_in_sc_callback(Object &&cb) { return m_in_sc_cb.set_callback(std::forward(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(*device).set_irq_callback((DEVCB_##cb)); + downcast(*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(*device).set_keybctag(_keybctag); #define MCFG_WD7600_IOR(_ior) \ - devcb = &downcast(device)->set_ior_callback(DEVCB_##_ior); + downcast(device)->set_ior_callback(DEVCB_##_ior); #define MCFG_WD7600_IOW(_iow) \ - devcb = &downcast(device)->set_iow_callback(DEVCB_##_iow); + downcast(device)->set_iow_callback(DEVCB_##_iow); #define MCFG_WD7600_TC(_tc) \ - devcb = &downcast(device)->set_tc_callback(DEVCB_##_tc); + downcast(device)->set_tc_callback(DEVCB_##_tc); #define MCFG_WD7600_HOLD(_hold) \ - devcb = &downcast(device)->set_hold_callback(DEVCB_##_hold); + downcast(device)->set_hold_callback(DEVCB_##_hold); #define MCFG_WD7600_NMI(_nmi) \ - devcb = &downcast(device)->set_nmi_callback(DEVCB_##_nmi); + downcast(device)->set_nmi_callback(DEVCB_##_nmi); #define MCFG_WD7600_INTR(_intr) \ - devcb = &downcast(device)->set_intr_callback(DEVCB_##_intr); + downcast(device)->set_intr_callback(DEVCB_##_intr); #define MCFG_WD7600_CPURESET(_cpureset) \ - devcb = &downcast(device)->set_cpureset_callback(DEVCB_##_cpureset); + downcast(device)->set_cpureset_callback(DEVCB_##_cpureset); #define MCFG_WD7600_A20M(_a20m) \ - devcb = &downcast(device)->set_a20m_callback(DEVCB_##_a20m); + downcast(device)->set_a20m_callback(DEVCB_##_a20m); #define MCFG_WD7600_SPKR(_spkr) \ - devcb = &downcast(device)->set_spkr_callback(DEVCB_##_spkr); + downcast(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(device)->set_disable_motor_control(true); #define MCFG_WD_FDC_INTRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_intrq_wr_callback(DEVCB_##_write); + downcast(*device).set_intrq_wr_callback(DEVCB_##_write); #define MCFG_WD_FDC_DRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_drq_wr_callback(DEVCB_##_write); + downcast(*device).set_drq_wr_callback(DEVCB_##_write); #define MCFG_WD_FDC_HLD_CALLBACK(_write) \ - devcb = &downcast(*device).set_hld_wr_callback(DEVCB_##_write); + downcast(*device).set_hld_wr_callback(DEVCB_##_write); #define MCFG_WD_FDC_ENP_CALLBACK(_write) \ - devcb = &downcast(*device).set_enp_wr_callback(DEVCB_##_write); + downcast(*device).set_enp_wr_callback(DEVCB_##_write); #define MCFG_WD_FDC_ENMF_CALLBACK(_read) \ - devcb = &downcast(*device).set_enmf_rd_callback(DEVCB_##_read); + downcast(*device).set_enmf_rd_callback(DEVCB_##_read); class wd_fdc_device_base : public device_t { public: @@ -73,6 +73,11 @@ public: template devcb_base &set_hld_wr_callback(Object &&cb) { return hld_cb.set_callback(std::forward(cb)); } template devcb_base &set_enp_wr_callback(Object &&cb) { return enp_cb.set_callback(std::forward(cb)); } template devcb_base &set_enmf_rd_callback(Object &&cb) { return enmf_cb.set_callback(std::forward(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(*device).set_txd_handler(DEVCB_##_devcb); + downcast(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_YM2148_PORT_WRITE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_port_write_handler(DEVCB_##_devcb); + downcast(*device).set_port_write_handler(DEVCB_##_devcb); #define MCFG_YM2148_PORT_READ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_port_read_handler(DEVCB_##_devcb); + downcast(*device).set_port_read_handler(DEVCB_##_devcb); #define MCFG_YM2148_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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 #define MCFG_YM3802_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_YM3802_TXD_HANDLER(_devcb) \ - devcb = &downcast(*device).set_txd_handler(DEVCB_##_devcb); + downcast(*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(*device).set_intr_callback(DEVCB_##_devcb); + downcast(*device).set_intr_callback(DEVCB_##_devcb); #define MCFG_Z80CTC_ZC0_CB(_devcb) \ - devcb = &downcast(*device).set_zc_callback<0>(DEVCB_##_devcb); + downcast(*device).set_zc_callback<0>(DEVCB_##_devcb); #define MCFG_Z80CTC_ZC1_CB(_devcb) \ - devcb = &downcast(*device).set_zc_callback<1>(DEVCB_##_devcb); + downcast(*device).set_zc_callback<1>(DEVCB_##_devcb); #define MCFG_Z80CTC_ZC2_CB(_devcb) \ - devcb = &downcast(*device).set_zc_callback<2>(DEVCB_##_devcb); + downcast(*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(*device).set_zc_callback<3>(DEVCB_##_devcb); + downcast(*device).set_zc_callback<3>(DEVCB_##_devcb); //************************************************************************** @@ -105,6 +105,8 @@ public: template devcb_base &set_intr_callback(Object &&cb) { return m_intr_cb.set_callback(std::forward(cb)); } template devcb_base &set_zc_callback(Object &&cb) { return m_zc_cb[Channel].set_callback(std::forward(cb)); } + auto intr_callback() { return m_intr_cb.bind(); } + template 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(*device).set_vector(_vector); \ #define MCFG_Z80DAISY_GENERIC_INT_CB(_devcb) \ - devcb = &downcast(*device).set_int_handler(DEVCB_##_devcb); + downcast(*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(*device).configure_channels(_rxa, _txa, _rxb, _txb); #define MCFG_Z80DART_OUT_TXDA_CB(_devcb) \ - devcb = &downcast(*device).set_out_txda_callback(DEVCB_##_devcb); + downcast(*device).set_out_txda_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_DTRA_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtra_callback(DEVCB_##_devcb); + downcast(*device).set_out_dtra_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_RTSA_CB(_devcb) \ - devcb = &downcast(*device).set_out_rtsa_callback(DEVCB_##_devcb); + downcast(*device).set_out_rtsa_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_WRDYA_CB(_devcb) \ - devcb = &downcast(*device).set_out_wrdya_callback(DEVCB_##_devcb); + downcast(*device).set_out_wrdya_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_SYNCA_CB(_devcb) \ - devcb = &downcast(*device).set_out_synca_callback(DEVCB_##_devcb); + downcast(*device).set_out_synca_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_TXDB_CB(_devcb) \ - devcb = &downcast(*device).set_out_txdb_callback(DEVCB_##_devcb); + downcast(*device).set_out_txdb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_DTRB_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtrb_callback(DEVCB_##_devcb); + downcast(*device).set_out_dtrb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_RTSB_CB(_devcb) \ - devcb = &downcast(*device).set_out_rtsb_callback(DEVCB_##_devcb); + downcast(*device).set_out_rtsb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_WRDYB_CB(_devcb) \ - devcb = &downcast(*device).set_out_wrdyb_callback(DEVCB_##_devcb); + downcast(*device).set_out_wrdyb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_SYNCB_CB(_devcb) \ - devcb = &downcast(*device).set_out_syncb_callback(DEVCB_##_devcb); + downcast(*device).set_out_syncb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_INT_CB(_devcb) \ - devcb = &downcast(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_RXDRQA_CB(_devcb) \ - devcb = &downcast(*device).set_out_rxdrqa_callback(DEVCB_##_devcb); + downcast(*device).set_out_rxdrqa_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_TXDRQA_CB(_devcb) \ - devcb = &downcast(*device).set_out_txdrqa_callback(DEVCB_##_devcb); + downcast(*device).set_out_txdrqa_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_RXDRQB_CB(_devcb) \ - devcb = &downcast(*device).set_out_rxdrqb_callback(DEVCB_##_devcb); + downcast(*device).set_out_rxdrqb_callback(DEVCB_##_devcb); #define MCFG_Z80DART_OUT_TXDRQB_CB(_devcb) \ - devcb = &downcast(*device).set_out_txdrqb_callback(DEVCB_##_devcb); + downcast(*device).set_out_txdrqb_callback(DEVCB_##_devcb); //************************************************************************** @@ -462,6 +462,21 @@ public: template devcb_base &set_out_txdrqa_callback(Object &&cb) { return m_out_txdrqa_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_rxdrqb_callback(Object &&cb) { return m_out_rxdrqb_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_txdrqb_callback(Object &&cb) { return m_out_txdrqb_cb.set_callback(std::forward(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(*device).set_out_busreq_callback(DEVCB_##_devcb); + downcast(*device).set_out_busreq_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_OUT_INT_CB(_devcb) \ - devcb = &downcast(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_OUT_BAO_CB(_devcb) \ - devcb = &downcast(*device).set_out_bao_callback(DEVCB_##_devcb); + downcast(*device).set_out_bao_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_IN_MREQ_CB(_devcb) \ - devcb = &downcast(*device).set_in_mreq_callback(DEVCB_##_devcb); + downcast(*device).set_in_mreq_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_OUT_MREQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_mreq_callback(DEVCB_##_devcb); + downcast(*device).set_out_mreq_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_IN_IORQ_CB(_devcb) \ - devcb = &downcast(*device).set_in_iorq_callback(DEVCB_##_devcb); + downcast(*device).set_in_iorq_callback(DEVCB_##_devcb); #define MCFG_Z80DMA_OUT_IORQ_CB(_devcb) \ - devcb = &downcast(*device).set_out_iorq_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_IN_PA_CB(_devcb) \ - devcb = &downcast(*device).set_in_pa_callback(DEVCB_##_devcb); + downcast(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_OUT_PA_CB(_devcb) \ - devcb = &downcast(*device).set_out_pa_callback(DEVCB_##_devcb); + downcast(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_OUT_ARDY_CB(_devcb) \ - devcb = &downcast(*device).set_out_ardy_callback(DEVCB_##_devcb); + downcast(*device).set_out_ardy_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_IN_PB_CB(_devcb) \ - devcb = &downcast(*device).set_in_pb_callback(DEVCB_##_devcb); + downcast(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_OUT_PB_CB(_devcb) \ - devcb = &downcast(*device).set_out_pb_callback(DEVCB_##_devcb); + downcast(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_Z80PIO_OUT_BRDY_CB(_devcb) \ - devcb = &downcast(*device).set_out_brdy_callback(DEVCB_##_devcb); + downcast(*device).set_out_brdy_callback(DEVCB_##_devcb); //************************************************************************** @@ -91,6 +91,14 @@ public: template devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_brdy_callback(Object &&cb) { return m_out_brdy_cb.set_callback(std::forward(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(*device).configure_channels(_rxa, _txa, _rxb, _txb); #define MCFG_Z80SCC_OUT_INT_CB(_devcb) \ - devcb = &downcast(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*device).set_out_int_callback(DEVCB_##_devcb); // Port A callbacks #define MCFG_Z80SCC_OUT_TXDA_CB(_devcb) \ - devcb = &downcast(*device).set_out_txd_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_txd_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_DTRA_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtr_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_dtr_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_RTSA_CB(_devcb) \ - devcb = &downcast(*device).set_out_rts_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_rts_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_WREQA_CB(_devcb) \ - devcb = &downcast(*device).set_out_wreq_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_wreq_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_SYNCA_CB(_devcb) \ - devcb = &downcast(*device).set_out_sync_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_sync_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_RXDRQA_CB(_devcb) \ - devcb = &downcast(*device).set_out_rxdrq_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_rxdrq_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_TXDRQA_CB(_devcb) \ - devcb = &downcast(*device).set_out_txdrq_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_txdrq_callback<0>(DEVCB_##_devcb); // Port B callbacks #define MCFG_Z80SCC_OUT_TXDB_CB(_devcb) \ - devcb = &downcast(*device).set_out_txd_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_txd_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_DTRB_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtr_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_dtr_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_RTSB_CB(_devcb) \ - devcb = &downcast(*device).set_out_rts_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_rts_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_WREQB_CB(_devcb) \ - devcb = &downcast(*device).set_out_wreq_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_wreq_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_SYNCB_CB(_devcb) \ - devcb = &downcast(*device).set_out_sync_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_sync_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_RXDRQB_CB(_devcb) \ - devcb = &downcast(*device).set_out_rxdrq_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_rxdrq_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SCC_OUT_TXDRQB_CB(_devcb) \ - devcb = &downcast(*device).set_out_txdrq_callback<1>(DEVCB_##_devcb); + downcast(*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; @@ -389,6 +389,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 //------------------------------------------------- @@ -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(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(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(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_Z80SIO_CPU(_cputag) \ downcast(*device).set_cputag(_cputag); // Port A callbacks #define MCFG_Z80SIO_OUT_TXDA_CB(_devcb) \ - devcb = &downcast(*device).set_out_txd_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_txd_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_DTRA_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtr_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_dtr_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_RTSA_CB(_devcb) \ - devcb = &downcast(*device).set_out_rts_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_rts_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_WRDYA_CB(_devcb) \ - devcb = &downcast(*device).set_out_wrdy_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_wrdy_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_SYNCA_CB(_devcb) \ - devcb = &downcast(*device).set_out_sync_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_sync_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_RXDRQA_CB(_devcb) \ - devcb = &downcast(*device).set_out_rxdrq_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_rxdrq_callback<0>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_TXDRQA_CB(_devcb) \ - devcb = &downcast(*device).set_out_txdrq_callback<0>(DEVCB_##_devcb); + downcast(*device).set_out_txdrq_callback<0>(DEVCB_##_devcb); // Port B callbacks #define MCFG_Z80SIO_OUT_TXDB_CB(_devcb) \ - devcb = &downcast(*device).set_out_txd_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_txd_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_DTRB_CB(_devcb) \ - devcb = &downcast(*device).set_out_dtr_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_dtr_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_RTSB_CB(_devcb) \ - devcb = &downcast(*device).set_out_rts_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_rts_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_WRDYB_CB(_devcb) \ - devcb = &downcast(*device).set_out_wrdy_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_wrdy_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_SYNCB_CB(_devcb) \ - devcb = &downcast(*device).set_out_sync_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_sync_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_RXDRQB_CB(_devcb) \ - devcb = &downcast(*device).set_out_rxdrq_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_rxdrq_callback<1>(DEVCB_##_devcb); #define MCFG_Z80SIO_OUT_TXDRQB_CB(_devcb) \ - devcb = &downcast(*device).set_out_txdrq_callback<1>(DEVCB_##_devcb); + downcast(*device).set_out_txdrq_callback<1>(DEVCB_##_devcb); //************************************************************************** @@ -347,7 +347,23 @@ public: template devcb_base &set_out_rxdrq_callback(Object &&cb) { return m_out_rxdrq_cb[N].set_callback(std::forward(cb)); } template devcb_base &set_out_txdrq_callback(Object &&cb) { return m_out_txdrq_cb[N].set_callback(std::forward(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 void set_cputag(T &&tag) { m_hostcpu.set_tag(std::forward(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 m_chanA; required_device m_chanB; + optional_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(*device).set_tx_clock(_clock); #define MCFG_Z80STI_OUT_INT_CB(_devcb) \ - devcb = &downcast(*device).set_out_int_callback(DEVCB_##_devcb); + downcast(*device).set_out_int_callback(DEVCB_##_devcb); #define MCFG_Z80STI_IN_GPIO_CB(_devcb) \ - devcb = &downcast(*device).set_in_gpio_callback(DEVCB_##_devcb); + downcast(*device).set_in_gpio_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_GPIO_CB(_devcb) \ - devcb = &downcast(*device).set_out_gpio_callback(DEVCB_##_devcb); + downcast(*device).set_out_gpio_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_SO_CB(_devcb) \ - devcb = &downcast(*device).set_out_so_callback(DEVCB_##_devcb); + downcast(*device).set_out_so_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_TAO_CB(_devcb) \ - devcb = &downcast(*device).set_out_tao_callback(DEVCB_##_devcb); + downcast(*device).set_out_tao_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_TBO_CB(_devcb) \ - devcb = &downcast(*device).set_out_tbo_callback(DEVCB_##_devcb); + downcast(*device).set_out_tbo_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_TCO_CB(_devcb) \ - devcb = &downcast(*device).set_out_tco_callback(DEVCB_##_devcb); + downcast(*device).set_out_tco_callback(DEVCB_##_devcb); #define MCFG_Z80STI_OUT_TDO_CB(_devcb) \ - devcb = &downcast(*device).set_out_tdo_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_Z8536_PA_IN_CALLBACK(_read) \ - devcb = &downcast(*device).set_pa_rd_callback(DEVCB_##_read); + downcast(*device).set_pa_rd_callback(DEVCB_##_read); #define MCFG_Z8536_PA_OUT_CALLBACK(_write) \ - devcb = &downcast(*device).set_pa_wr_callback(DEVCB_##_write); + downcast(*device).set_pa_wr_callback(DEVCB_##_write); #define MCFG_Z8536_PB_IN_CALLBACK(_read) \ - devcb = &downcast(*device).set_pb_rd_callback(DEVCB_##_read); + downcast(*device).set_pb_rd_callback(DEVCB_##_read); #define MCFG_Z8536_PB_OUT_CALLBACK(_write) \ - devcb = &downcast(*device).set_pb_wr_callback(DEVCB_##_write); + downcast(*device).set_pb_wr_callback(DEVCB_##_write); #define MCFG_Z8536_PC_IN_CALLBACK(_read) \ - devcb = &downcast(*device).set_pc_rd_callback(DEVCB_##_read); + downcast(*device).set_pc_rd_callback(DEVCB_##_read); #define MCFG_Z8536_PC_OUT_CALLBACK(_write) \ - devcb = &downcast(*device).set_pc_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_irq_handler((DEVCB_##cb)); + downcast(*device).set_irq_handler((DEVCB_##cb)); class ym2203_device : public ay8910_device { @@ -21,6 +21,7 @@ public: // configuration helpers template devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward(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(*device).set_irq_handler(DEVCB_##cb); + downcast(*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(*device).set_irq_handler((DEVCB_##cb)); + downcast(*device).set_irq_handler((DEVCB_##cb)); class ym2610_device : public ay8910_device { @@ -21,6 +21,7 @@ public: // configuration helpers template devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward(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(*device).set_irq_handler((DEVCB_##cb)); + downcast(*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(*device).set_irq_handler((DEVCB_##cb)); + downcast(*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(*device).set_irq_handler((DEVCB_##cb)); + downcast(*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(*device).set_irq_handler((DEVCB_##cb)); + downcast(*device).set_irq_handler((DEVCB_##cb)); class ym3812_device : public device_t, public device_sound_interface { @@ -14,6 +14,7 @@ public: // configuration helpers template devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward(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(*device).set_irq_handler((DEVCB_##cb)); + downcast(*device).set_irq_handler((DEVCB_##cb)); #define MCFG_Y8950_KEYBOARD_READ_HANDLER(cb) \ - devcb = &downcast(*device).set_keyboard_read_handler((DEVCB_##cb)); + downcast(*device).set_keyboard_read_handler((DEVCB_##cb)); #define MCFG_Y8950_KEYBOARD_WRITE_HANDLER(cb) \ - devcb = &downcast(*device).set_keyboard_write_handler((DEVCB_##cb)); + downcast(*device).set_keyboard_write_handler((DEVCB_##cb)); #define MCFG_Y8950_IO_READ_HANDLER(cb) \ - devcb = &downcast(*device).set_io_read_handler((DEVCB_##cb)); + downcast(*device).set_io_read_handler((DEVCB_##cb)); #define MCFG_Y8950_IO_WRITE_HANDLER(cb) \ - devcb = &downcast(*device).set_io_write_handler((DEVCB_##cb)); + downcast(*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(*device).set_irq_callback((DEVCB_##cb)); + downcast(*device).set_irq_callback((DEVCB_##cb)); #define MCFG_AD1848_DRQ_CALLBACK(cb) \ - devcb = &downcast(*device).set_drq_callback((DEVCB_##cb)); + downcast(*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(*device).set_roffset((offs)); #define MCFG_AICA_IRQ_CB(cb) \ - devcb = &downcast(*device).set_irq_callback((DEVCB_##cb)); + downcast(*device).set_irq_callback((DEVCB_##cb)); #define MCFG_AICA_MAIN_IRQ_CB(cb) \ - devcb = &downcast(*device).set_main_irq_callback((DEVCB_##cb)); + downcast(*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(*device).set_type(asc_device::asc_type::_type); #define MCFG_IRQ_FUNC(_irqf) \ - devcb = &downcast(device)->set_irqf(DEVCB_##_irqf); + downcast(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(*device).set_si_callback(DEVCB_##_devcb); + downcast(*device).set_si_callback(DEVCB_##_devcb); #define MCFG_ASTROCADE_IO_SO0_STROBE_CB(_devcb) \ - devcb = &downcast(*device).set_so_callback<0>(DEVCB_##_devcb); + downcast(*device).set_so_callback<0>(DEVCB_##_devcb); #define MCFG_ASTROCADE_IO_SO1_STROBE_CB(_devcb) \ - devcb = &downcast(*device).set_so_callback<1>(DEVCB_##_devcb); + downcast(*device).set_so_callback<1>(DEVCB_##_devcb); #define MCFG_ASTROCADE_IO_SO2_STROBE_CB(_devcb) \ - devcb = &downcast(*device).set_so_callback<2>(DEVCB_##_devcb); + downcast(*device).set_so_callback<2>(DEVCB_##_devcb); #define MCFG_ASTROCADE_IO_SO3_STROBE_CB(_devcb) \ - devcb = &downcast(*device).set_so_callback<3>(DEVCB_##_devcb); + downcast(*device).set_so_callback<3>(DEVCB_##_devcb); #define MCFG_ASTROCADE_IO_SO4_STROBE_CB(_devcb) \ - devcb = &downcast(*device).set_so_callback<4>(DEVCB_##_devcb); + downcast(*device).set_so_callback<4>(DEVCB_##_devcb); #define MCFG_ASTROCADE_IO_SO5_STROBE_CB(_devcb) \ - devcb = &downcast(*device).set_so_callback<5>(DEVCB_##_devcb); + downcast(*device).set_so_callback<5>(DEVCB_##_devcb); #define MCFG_ASTROCADE_IO_SO6_STROBE_CB(_devcb) \ - devcb = &downcast(*device).set_so_callback<6>(DEVCB_##_devcb); + downcast(*device).set_so_callback<6>(DEVCB_##_devcb); #define MCFG_ASTROCADE_IO_SO7_STROBE_CB(_devcb) \ - devcb = &downcast(*device).set_so_callback<7>(DEVCB_##_devcb); + downcast(*device).set_so_callback<7>(DEVCB_##_devcb); #define MCFG_ASTROCADE_IO_POT0(_tag) \ downcast(*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(*device).set_resistors_load(_res0, _res1, _res2); #define MCFG_AY8910_PORT_A_READ_CB(_devcb) \ - devcb = &downcast(*device).set_port_a_read_callback(DEVCB_##_devcb); + downcast(*device).set_port_a_read_callback(DEVCB_##_devcb); #define MCFG_AY8910_PORT_B_READ_CB(_devcb) \ - devcb = &downcast(*device).set_port_b_read_callback(DEVCB_##_devcb); + downcast(*device).set_port_b_read_callback(DEVCB_##_devcb); #define MCFG_AY8910_PORT_A_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_a_write_callback(DEVCB_##_devcb); + downcast(*device).set_port_a_write_callback(DEVCB_##_devcb); #define MCFG_AY8910_PORT_B_WRITE_CB(_devcb) \ - devcb = &downcast(*device).set_port_b_write_callback(DEVCB_##_devcb); + downcast(*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 devcb_base &set_port_b_read_callback(Object &&cb) { return m_port_b_read_cb.set_callback(std::forward(cb)); } template devcb_base &set_port_a_write_callback(Object &&cb) { return m_port_a_write_cb.set_callback(std::forward(cb)); } template devcb_base &set_port_b_write_callback(Object &&cb) { return m_port_b_write_cb.set_callback(std::forward(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(*device).set_pal_ntsc_rd_callback(DEVCB_##_read); + downcast(*device).set_pal_ntsc_rd_callback(DEVCB_##_read); #define MCFG_CDP1869_PRD_CALLBACK(_write) \ - devcb = &downcast(*device).set_prd_wr_callback(DEVCB_##_write); + downcast(*device).set_prd_wr_callback(DEVCB_##_write); #define MCFG_CDP1869_COLOR_CLOCK(_clk) \ downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_DAVE_LH_CALLBACK(_write) \ - devcb = &downcast(*device).set_lh_wr_callback(DEVCB_##_write); + downcast(*device).set_lh_wr_callback(DEVCB_##_write); #define MCFG_DAVE_RH_CALLBACK(_write) \ - devcb = &downcast(*device).set_rh_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_irq_handler(DEVCB_##cb); + downcast(*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 devcb_base &set_irq_handler(T &&cb) { return m_irq_handler.set_callback(std::forward(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(*device).set_channels(_channels); #define MCFG_ES5503_IRQ_FUNC(_write) \ - devcb = &downcast(*device).set_irqf(DEVCB_##_write); + downcast(*device).set_irqf(DEVCB_##_write); #define MCFG_ES5503_ADC_FUNC(_read) \ - devcb = &downcast(*device).set_adcf(DEVCB_##_read); + downcast(*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(*device).set_channels(_chan); #define MCFG_ES5506_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_ES5506_READ_PORT_CB(_devcb) \ - devcb = &downcast(*device).set_read_port_callback(DEVCB_##_devcb); + downcast(*device).set_read_port_callback(DEVCB_##_devcb); #define MCFG_ES5505_REGION0(_region) \ @@ -46,10 +46,10 @@ downcast(*device).set_channels(_chan); #define MCFG_ES5505_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_ES5505_READ_PORT_CB(_devcb) \ - devcb = &downcast(*device).set_read_port_callback(DEVCB_##_devcb); + downcast(*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(*device).set_reset_handler(DEVCB_##_devcb); + downcast(*device).set_reset_handler(DEVCB_##_devcb); #define MCFG_ES8712_MSM_WRITE_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_msm_write_callback(DEVCB_##_devcb); + downcast(*device).set_msm_write_callback(DEVCB_##_devcb); #define MCFG_ES8712_MSM_TAG(_msmtag) \ downcast(*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(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*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(*device).set_port_write_handler(DEVCB_##_devcb); + downcast(*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(*device).set_override("^" _region); #define MCFG_K054539_TIMER_HANDLER(_devcb) \ - devcb = &downcast(*device).set_timer_handler(DEVCB_##_devcb); + downcast(*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(*device).set_int_handler((DEVCB_##cb)); + downcast(*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(*device).set_select_callback(DEVCB_##_read); + downcast(*device).set_select_callback(DEVCB_##_read); #define MCFG_LC7535_VOLUME_CB(_class, _method) \ downcast(*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(*device).set_reqwr_callback(*device, DEVCB_##_write); + downcast(*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(*device).set_vdd_voltage(_voltage); #define MCFG_MM5837_OUTPUT_CB(_devcb) \ - devcb = &downcast(*device).set_output_callback(DEVCB_##_devcb); + downcast(*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(*device).set_potx_rd_callback(DEVCB_##_read); + downcast(*device).set_potx_rd_callback(DEVCB_##_read); #define MCFG_MOS6560_POTY_CALLBACK(_read) \ - devcb = &downcast(*device).set_poty_rd_callback(DEVCB_##_read); + downcast(*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(*device).set_potx_rd_callback(DEVCB_##_read); + downcast(*device).set_potx_rd_callback(DEVCB_##_read); #define MCFG_MOS6581_POTY_CALLBACK(_read) \ - devcb = &downcast(*device).set_poty_rd_callback(DEVCB_##_read); + downcast(*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(*device).set_prescaler_selector((msm5205_device::select)); #define MCFG_MSM5205_VCK_CALLBACK(cb) \ - devcb = &downcast(*device).set_vck_callback((DEVCB_##cb)); + downcast(*device).set_vck_callback((DEVCB_##cb)); #define MCFG_MSM5205_VCLK_CB(cb) \ - devcb = &downcast(*device).set_vck_legacy_callback((DEVCB_##cb)); + downcast(*device).set_vck_legacy_callback((DEVCB_##cb)); #define MCFG_MSM6585_PRESCALER_SELECTOR(select) \ downcast(*device).set_prescaler_selector((msm6585_device::select)); #define MCFG_MSM6585_VCK_CALLBACK(cb) \ - devcb = &downcast(*device).set_vck_callback((DEVCB_##cb)); + downcast(*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 devcb_base &set_vck_callback(Object &&cb) { return m_vck_cb.set_callback(std::forward(cb)); } template devcb_base &set_vck_legacy_callback(Object &&cb) { return m_vck_legacy_cb.set_callback(std::forward(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(*device).set_capacitors(_a, _b, _c, _d, _e, _f, _g, _h); #define MCFG_MSM5232_GATE_HANDLER_CB(_devcb) \ - devcb = &downcast(*device).set_gate_handler_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_NES_APU_MEM_READ_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_mem_read_callback(DEVCB_##_devcb); + downcast(*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(*device).set_pot_r_callback<0>(DEVCB_##_devcb); + downcast(*device).set_pot_r_callback<0>(DEVCB_##_devcb); #define MCFG_POKEY_POT1_R_CB(_devcb) \ - devcb = &downcast(*device).set_pot_r_callback<1>(DEVCB_##_devcb); + downcast(*device).set_pot_r_callback<1>(DEVCB_##_devcb); #define MCFG_POKEY_POT2_R_CB(_devcb) \ - devcb = &downcast(*device).set_pot_r_callback<2>(DEVCB_##_devcb); + downcast(*device).set_pot_r_callback<2>(DEVCB_##_devcb); #define MCFG_POKEY_POT3_R_CB(_devcb) \ - devcb = &downcast(*device).set_pot_r_callback<3>(DEVCB_##_devcb); + downcast(*device).set_pot_r_callback<3>(DEVCB_##_devcb); #define MCFG_POKEY_POT4_R_CB(_devcb) \ - devcb = &downcast(*device).set_pot_r_callback<4>(DEVCB_##_devcb); + downcast(*device).set_pot_r_callback<4>(DEVCB_##_devcb); #define MCFG_POKEY_POT5_R_CB(_devcb) \ - devcb = &downcast(*device).set_pot_r_callback<5>(DEVCB_##_devcb); + downcast(*device).set_pot_r_callback<5>(DEVCB_##_devcb); #define MCFG_POKEY_POT6_R_CB(_devcb) \ - devcb = &downcast(*device).set_pot_r_callback<6>(DEVCB_##_devcb); + downcast(*device).set_pot_r_callback<6>(DEVCB_##_devcb); #define MCFG_POKEY_POT7_R_CB(_devcb) \ - devcb = &downcast(*device).set_pot_r_callback<7>(DEVCB_##_devcb); + downcast(*device).set_pot_r_callback<7>(DEVCB_##_devcb); #define MCFG_POKEY_ALLPOT_R_CB(_devcb) \ - devcb = &downcast(*device).set_allpot_r_callback(DEVCB_##_devcb); + downcast(*device).set_allpot_r_callback(DEVCB_##_devcb); #define MCFG_POKEY_SERIN_R_CB(_devcb) \ - devcb = &downcast(*device).set_serin_r_callback(DEVCB_##_devcb); + downcast(*device).set_serin_r_callback(DEVCB_##_devcb); #define MCFG_POKEY_SEROUT_W_CB(_devcb) \ - devcb = &downcast(*device).set_serout_w_callback(DEVCB_##_devcb); + downcast(*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(*device).set_external_rom(_bool); #define MCFG_QS1000_IN_P1_CB(_devcb) \ - devcb = &downcast(*device).set_in_p1_callback(DEVCB_##_devcb); + downcast(*device).set_in_p1_callback(DEVCB_##_devcb); #define MCFG_QS1000_IN_P2_CB(_devcb) \ - devcb = &downcast(*device).set_in_p2_callback(DEVCB_##_devcb); + downcast(*device).set_in_p2_callback(DEVCB_##_devcb); #define MCFG_QS1000_IN_P3_CB(_devcb) \ - devcb = &downcast(*device).set_in_p3_callback(DEVCB_##_devcb); + downcast(*device).set_in_p3_callback(DEVCB_##_devcb); #define MCFG_QS1000_OUT_P1_CB(_devcb) \ - devcb = &downcast(*device).set_out_p1_callback(DEVCB_##_devcb); + downcast(*device).set_out_p1_callback(DEVCB_##_devcb); #define MCFG_QS1000_OUT_P2_CB(_devcb) \ - devcb = &downcast(*device).set_out_p2_callback(DEVCB_##_devcb); + downcast(*device).set_out_p2_callback(DEVCB_##_devcb); #define MCFG_QS1000_OUT_P3_CB(_devcb) \ - devcb = &downcast(*device).set_out_p3_callback(DEVCB_##_devcb); + downcast(*device).set_out_p3_callback(DEVCB_##_devcb); /*#define MCFG_QS1000_SERIAL_W_CB(_devcb) \ - devcb = &downcast(*device).set_serial_w_callback(DEVCB_##_devcb);*/ + downcast(*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(*device).set_bsy_handler(DEVCB_##_devcb); + downcast(*device).set_bsy_handler(DEVCB_##_devcb); #define MCFG_S14001A_EXT_READ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_ext_read_handler(DEVCB_##_devcb); + downcast(*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(*device).set_roffset(_offs); #define MCFG_SCSP_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_SCSP_MAIN_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_main_irq_callback(DEVCB_##_devcb); + downcast(*device).set_main_irq_callback(DEVCB_##_devcb); #define MCFG_SCSP_EXTS_CB(_devcb) \ - devcb = &downcast(*device).set_exts_callback(DEVCB_##_devcb); + downcast(*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(*device).set_ready_handler((DEVCB_##cb)); + downcast(*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(*device).set_drq_callback(DEVCB_##_write); + downcast(*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(*device).set_data_request_callback(DEVCB_##_devcb); + downcast(*device).set_data_request_callback(DEVCB_##_devcb); #define MCFG_SP0256_STANDBY_CB(_devcb) \ - devcb = &downcast(*device).set_standby_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_soundram_callback(DEVCB_##_devcb); + downcast(*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(device)->set_eos_callback(DEVCB_##_eos); + downcast(device)->set_eos_callback(DEVCB_##_eos); #define MCFG_T6721A_PHI2_HANDLER(_phi2) \ - devcb = &downcast(device)->set_phi2_callback(DEVCB_##_phi2); + downcast(device)->set_phi2_callback(DEVCB_##_phi2); #define MCFG_T6721A_DTRD_HANDLER(_dtrd) \ - devcb = &downcast(device)->set_dtrd_callback(DEVCB_##_dtrd); + downcast(device)->set_dtrd_callback(DEVCB_##_dtrd); #define MCFG_T6721A_APD_HANDLER(_apd) \ - devcb = &downcast(device)->set_apd_callback(DEVCB_##_apd); + downcast(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(*device).set_m0_callback(DEVCB_##_devcb); + downcast(*device).set_m0_callback(DEVCB_##_devcb); #define MCFG_TMS5110_M1_CB(_devcb) \ - devcb = &downcast(*device).set_m1_callback(DEVCB_##_devcb); + downcast(*device).set_m1_callback(DEVCB_##_devcb); #define MCFG_TMS5110_ADDR_CB(_devcb) \ - devcb = &downcast(*device).set_addr_callback(DEVCB_##_devcb); + downcast(*device).set_addr_callback(DEVCB_##_devcb); #define MCFG_TMS5110_DATA_CB(_devcb) \ - devcb = &downcast(*device).set_data_callback(DEVCB_##_devcb); + downcast(*device).set_data_callback(DEVCB_##_devcb); #define MCFG_TMS5110_ROMCLK_CB(_devcb) \ - devcb = &downcast(*device).set_romclk_callback(DEVCB_##_devcb); + downcast(*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(*device).set_stop_bit(_bit); #define MCFG_TMSPROM_PDC_CB(_devcb) \ - devcb = &downcast(*device).set_pdc_callback(DEVCB_##_devcb); + downcast(*device).set_pdc_callback(DEVCB_##_devcb); #define MCFG_TMSPROM_CTL_CB(_devcb) \ - devcb = &downcast(*device).set_ctl_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); /* Ready callback function, active low, i.e. state=0 */ #define MCFG_TMS52XX_READYQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_readyq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_m0_callback(DEVCB_##_devcb); + downcast(*device).set_m0_callback(DEVCB_##_devcb); #define MCFG_TMS52XX_M1_CB(_devcb) \ - devcb = &downcast(*device).set_m1_callback(DEVCB_##_devcb); + downcast(*device).set_m1_callback(DEVCB_##_devcb); #define MCFG_TMS52XX_ADDR_CB(_devcb) \ - devcb = &downcast(*device).set_addr_callback(DEVCB_##_devcb); + downcast(*device).set_addr_callback(DEVCB_##_devcb); #define MCFG_TMS52XX_DATA_CB(_devcb) \ - devcb = &downcast(*device).set_data_callback(DEVCB_##_devcb); + downcast(*device).set_data_callback(DEVCB_##_devcb); #define MCFG_TMS52XX_ROMCLK_CB(_devcb) \ - devcb = &downcast(device).set_romclk_callback(DEVCB_##_devcb); + downcast(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(*device).set_ack_handler(DEVCB_##_devcb); + downcast(*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(*device).set_drq_callback(DEVCB_##_write); + downcast(*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(*device).set_data_callback(DEVCB_##_devcb); + downcast(*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(device)->set_ar_callback(DEVCB_##_devcb); + downcast(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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_YM2151_PORT_WRITE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_port_write_handler(DEVCB_##_devcb); + downcast(*device).set_port_write_handler(DEVCB_##_devcb); //************************************************************************** @@ -63,6 +63,8 @@ public: // configuration helpers template devcb_base &set_irq_handler(Object &&cb) { return m_irqhandler.set_callback(std::forward(cb)); } template devcb_base &set_port_write_handler(Object &&cb) { return m_portwritehandler.set_callback(std::forward(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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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 devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward(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(*device).set_ext_read_handler(DEVCB_##_devcb); + downcast(*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(*device).set_signal_type(_bool); #define MCFG_SEGA315_5124_INT_CB(_devcb) \ - devcb = &downcast(*device).set_int_callback(DEVCB_##_devcb); + downcast(*device).set_int_callback(DEVCB_##_devcb); #define MCFG_SEGA315_5124_CSYNC_CB(_devcb) \ - devcb = &downcast(*device).set_csync_callback(DEVCB_##_devcb); + downcast(*device).set_csync_callback(DEVCB_##_devcb); #define MCFG_SEGA315_5124_PAUSE_CB(_devcb) \ - devcb = &downcast(*device).set_pause_callback(DEVCB_##_devcb); + downcast(*device).set_pause_callback(DEVCB_##_devcb); #define MCFG_SEGA315_5246_SET_SCREEN MCFG_VIDEO_SET_SCREEN @@ -235,13 +235,13 @@ private: downcast(*device).set_signal_type(_bool); #define MCFG_SEGA315_5246_INT_CB(_devcb) \ - devcb = &downcast(*device).set_int_callback(DEVCB_##_devcb); + downcast(*device).set_int_callback(DEVCB_##_devcb); #define MCFG_SEGA315_5246_CSYNC_CB(_devcb) \ - devcb = &downcast(*device).set_csync_callback(DEVCB_##_devcb); + downcast(*device).set_csync_callback(DEVCB_##_devcb); #define MCFG_SEGA315_5246_PAUSE_CB(_devcb) \ - devcb = &downcast(*device).set_pause_callback(DEVCB_##_devcb); + downcast(*device).set_pause_callback(DEVCB_##_devcb); #define MCFG_SEGA315_5378_SET_SCREEN MCFG_VIDEO_SET_SCREEN @@ -250,13 +250,13 @@ private: downcast(*device).set_signal_type(_bool); #define MCFG_SEGA315_5378_INT_CB(_devcb) \ - devcb = &downcast(*device).set_int_callback(DEVCB_##_devcb); + downcast(*device).set_int_callback(DEVCB_##_devcb); #define MCFG_SEGA315_5378_CSYNC_CB(_devcb) \ - devcb = &downcast(*device).set_csync_callback(DEVCB_##_devcb); + downcast(*device).set_csync_callback(DEVCB_##_devcb); #define MCFG_SEGA315_5378_PAUSE_CB(_devcb) \ - devcb = &downcast(*device).set_pause_callback(DEVCB_##_devcb); + downcast(*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(*device).set_signal_type(_bool); #define MCFG_SEGA315_5313_INT_CB(_devcb) \ - devcb = &downcast(*device).set_int_callback(DEVCB_##_devcb); + downcast(*device).set_int_callback(DEVCB_##_devcb); #define MCFG_SEGA315_5313_PAUSE_CB(_devcb) \ - devcb = &downcast(*device).set_pause_callback(DEVCB_##_devcb); + downcast(*device).set_pause_callback(DEVCB_##_devcb); #define MCFG_SEGA315_5313_SND_IRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_sndirqline_callback(DEVCB_##_write); + downcast(*device).set_sndirqline_callback(DEVCB_##_write); #define MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_lv6irqline_callback(DEVCB_##_write); + downcast(*device).set_lv6irqline_callback(DEVCB_##_write); #define MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_lv4irqline_callback(DEVCB_##_write); + downcast(*device).set_lv4irqline_callback(DEVCB_##_write); #define MCFG_SEGA315_5313_ALT_TIMING(_data) \ downcast(*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(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_CDP1861_DMA_OUT_CALLBACK(_write) \ - devcb = &downcast(*device).set_dma_out_wr_callback(DEVCB_##_write); + downcast(*device).set_dma_out_wr_callback(DEVCB_##_write); #define MCFG_CDP1861_EFX_CALLBACK(_write) \ - devcb = &downcast(*device).set_efx_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_rd_rd_callback(DEVCB_##_read); + downcast(*device).set_rd_rd_callback(DEVCB_##_read); #define MCFG_CDP1861_BD_CALLBACK(_read) \ - devcb = &downcast(*device).set_bd_rd_callback(DEVCB_##_read); + downcast(*device).set_bd_rd_callback(DEVCB_##_read); #define MCFG_CDP1861_GD_CALLBACK(_read) \ - devcb = &downcast(*device).set_gd_rd_callback(DEVCB_##_read); + downcast(*device).set_gd_rd_callback(DEVCB_##_read); #define MCFG_CDP1862_LUMINANCE(_r, _b, _g, _bkg) \ downcast(*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(*device).set_compute_addr(_compute_addr); #define MCFG_CESBLIT_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*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(*device).config_set_character_width(_value); #define MCFG_CRT9007_INT_CALLBACK(_write) \ - devcb = &downcast(*device).set_int_wr_callback(DEVCB_##_write); + downcast(*device).set_int_wr_callback(DEVCB_##_write); #define MCFG_CRT9007_DMAR_CALLBACK(_write) \ - devcb = &downcast(*device).set_dmar_wr_callback(DEVCB_##_write); + downcast(*device).set_dmar_wr_callback(DEVCB_##_write); #define MCFG_CRT9007_VS_CALLBACK(_write) \ - devcb = &downcast(*device).set_vs_wr_callback(DEVCB_##_write); + downcast(*device).set_vs_wr_callback(DEVCB_##_write); #define MCFG_CRT9007_HS_CALLBACK(_write) \ - devcb = &downcast(*device).set_hs_wr_callback(DEVCB_##_write); + downcast(*device).set_hs_wr_callback(DEVCB_##_write); #define MCFG_CRT9007_VLT_CALLBACK(_write) \ - devcb = &downcast(*device).set_vlt_wr_callback(DEVCB_##_write); + downcast(*device).set_vlt_wr_callback(DEVCB_##_write); #define MCFG_CRT9007_CURS_CALLBACK(_write) \ - devcb = &downcast(*device).set_curs_wr_callback(DEVCB_##_write); + downcast(*device).set_curs_wr_callback(DEVCB_##_write); #define MCFG_CRT9007_DRB_CALLBACK(_write) \ - devcb = &downcast(*device).set_drb_wr_callback(DEVCB_##_write); + downcast(*device).set_drb_wr_callback(DEVCB_##_write); #define MCFG_CRT9007_WBEN_CALLBACK(_write) \ - devcb = &downcast(*device).set_wben_wr_callback(DEVCB_##_write); + downcast(*device).set_wben_wr_callback(DEVCB_##_write); #define MCFG_CRT9007_CBLANK_CALLBACK(_write) \ - devcb = &downcast(*device).set_cblank_wr_callback(DEVCB_##_write); + downcast(*device).set_cblank_wr_callback(DEVCB_##_write); #define MCFG_CRT9007_SLG_CALLBACK(_write) \ - devcb = &downcast(*device).set_slg_wr_callback(DEVCB_##_write); + downcast(*device).set_slg_wr_callback(DEVCB_##_write); #define MCFG_CRT9007_SLD_CALLBACK(_write) \ - devcb = &downcast(*device).set_sld_wr_callback(DEVCB_##_write); + downcast(*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(*device).set_wen2(1); #define MCFG_CRT9212_DOUT_CALLBACK(_write) \ - devcb = &downcast(*device).set_dout_wr_callback(DEVCB_##_write); + downcast(*device).set_dout_wr_callback(DEVCB_##_write); #define MCFG_CRT9212_ROF_CALLBACK(_write) \ - devcb = &downcast(*device).set_rof_wr_callback(DEVCB_##_write); + downcast(*device).set_rof_wr_callback(DEVCB_##_write); #define MCFG_CRT9212_WOF_CALLBACK(_write) \ - devcb = &downcast(*device).set_wof_wr_callback(DEVCB_##_write); + downcast(*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(*device).config_set_hpixels_per_column(_pix); #define MCFG_CRTC_EGA_RES_OUT_DE_CB(_devcb) \ - devcb = &downcast(*device).set_res_out_de_callback(DEVCB_##_devcb); + downcast(*device).set_res_out_de_callback(DEVCB_##_devcb); #define MCFG_CRTC_EGA_RES_OUT_HSYNC_CB(_devcb) \ - devcb = &downcast(*device).set_res_out_hsync_callback(DEVCB_##_devcb); + downcast(*device).set_res_out_hsync_callback(DEVCB_##_devcb); #define MCFG_CRTC_EGA_RES_OUT_VSYNC_CB(_devcb) \ - devcb = &downcast(*device).set_res_out_vsync_callback(DEVCB_##_devcb); + downcast(*device).set_res_out_vsync_callback(DEVCB_##_devcb); #define MCFG_CRTC_EGA_RES_OUT_VBLANK_CB(_devcb) \ - devcb = &downcast(*device).set_res_out_vblank_callback(DEVCB_##_devcb); + downcast(*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(*device).set_update_handler(DEVCB_##_devcb); + downcast(*device).set_update_handler(DEVCB_##_devcb); #define MCFG_DL1416_UPDATE_HANDLER(_devcb) \ - devcb = &downcast(*device).set_update_handler(DEVCB_##_devcb); + downcast(*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(*device).set_update_callback(DEVCB_##cb); + downcast(*device).set_update_callback(DEVCB_##cb); #define MCFG_DM9368_RBO_CALLBACK(cb) \ - devcb = &downcast(*device).set_rbo_callback(DEVCB_##cb); + downcast(*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(*device).set_nb_of_pages(_pages_number); #define MCFG_EF9364_IRQ_HANDLER(_devcb) \ - devcb = &downcast(*device).set_irq_handler(DEVCB_##_devcb); + downcast(*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(*device).set_display_mode((ef9365_device::display_mode)); #define MCFG_EF936X_IRQ_HANDLER(cb) \ - devcb = &downcast(*device).set_irq_handler((DEVCB_##cb)); + downcast(*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(*device).set_int_hblank_callback(DEVCB_##_devcb); + downcast(*device).set_int_hblank_callback(DEVCB_##_devcb); #define MCFG_GBA_LCD_INT_VBLANK(_devcb) \ - devcb = &downcast(*device).set_int_vblank_callback(DEVCB_##_devcb); + downcast(*device).set_int_vblank_callback(DEVCB_##_devcb); #define MCFG_GBA_LCD_INT_VCOUNT(_devcb) \ - devcb = &downcast(*device).set_int_vcount_callback(DEVCB_##_devcb); + downcast(*device).set_int_vcount_callback(DEVCB_##_devcb); #define MCFG_GBA_LCD_DMA_HBLANK(_devcb) \ - devcb = &downcast(*device).set_dma_hblank_callback(DEVCB_##_devcb); + downcast(*device).set_dma_hblank_callback(DEVCB_##_devcb); #define MCFG_GBA_LCD_DMA_VBLANK(_devcb) \ - devcb = &downcast(*device).set_dma_vblank_callback(DEVCB_##_devcb); + downcast(*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(*device).set_on_callback(DEVCB_##_devcb); + downcast(*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(*device).set_rd_rd_callback(DEVCB_##_read); + downcast(*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(*device).set_write_cols_callback(DEVCB_##_devcb); + downcast(*device).set_write_cols_callback(DEVCB_##_devcb); // DATA OUT pin, don't use on HLCD0569 #define MCFG_HLCD0515_WRITE_DATA_CB(_devcb) \ - devcb = &downcast(*device).set_write_data_callback(DEVCB_##_devcb); + downcast(*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(*device).set_write_cols_callback(DEVCB_##_devcb); + downcast(*device).set_write_cols_callback(DEVCB_##_devcb); // INTERRUPT pin #define MCFG_HLCD0538_INTERRUPT_CB(_devcb) \ - devcb = &downcast(*device).set_write_interrupt_callback(DEVCB_##_devcb); + downcast(*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(*device).set_next_pixel_0_callback(DEVCB_##_devcb); + downcast(*device).set_next_pixel_0_callback(DEVCB_##_devcb); #define MCFG_HUC6202_TIME_TIL_NEXT_EVENT_0_CB(_devcb) \ - devcb = &downcast(*device).set_time_til_next_event_0_callback(DEVCB_##_devcb); + downcast(*device).set_time_til_next_event_0_callback(DEVCB_##_devcb); #define MCFG_HUC6202_VSYNC_CHANGED_0_CB(_devcb) \ - devcb = &downcast(*device).set_vsync_changed_0_callback(DEVCB_##_devcb); + downcast(*device).set_vsync_changed_0_callback(DEVCB_##_devcb); #define MCFG_HUC6202_HSYNC_CHANGED_0_CB(_devcb) \ - devcb = &downcast(*device).set_hsync_changed_0_callback(DEVCB_##_devcb); + downcast(*device).set_hsync_changed_0_callback(DEVCB_##_devcb); #define MCFG_HUC6202_READ_0_CB(_devcb) \ - devcb = &downcast(*device).set_read_0_callback(DEVCB_##_devcb); + downcast(*device).set_read_0_callback(DEVCB_##_devcb); #define MCFG_HUC6202_WRITE_0_CB(_devcb) \ - devcb = &downcast(*device).set_write_0_callback(DEVCB_##_devcb); + downcast(*device).set_write_0_callback(DEVCB_##_devcb); #define MCFG_HUC6202_NEXT_PIXEL_1_CB(_devcb) \ - devcb = &downcast(*device).set_next_pixel_1_callback(DEVCB_##_devcb); + downcast(*device).set_next_pixel_1_callback(DEVCB_##_devcb); #define MCFG_HUC6202_TIME_TIL_NEXT_EVENT_1_CB(_devcb) \ - devcb = &downcast(*device).set_time_til_next_event_1_callback(DEVCB_##_devcb); + downcast(*device).set_time_til_next_event_1_callback(DEVCB_##_devcb); #define MCFG_HUC6202_VSYNC_CHANGED_1_CB(_devcb) \ - devcb = &downcast(*device).set_vsync_changed_1_callback(DEVCB_##_devcb); + downcast(*device).set_vsync_changed_1_callback(DEVCB_##_devcb); #define MCFG_HUC6202_HSYNC_CHANGED_1_CB(_devcb) \ - devcb = &downcast(*device).set_hsync_changed_1_callback(DEVCB_##_devcb); + downcast(*device).set_hsync_changed_1_callback(DEVCB_##_devcb); #define MCFG_HUC6202_READ_1_CB(_devcb) \ - devcb = &downcast(*device).set_read_1_callback(DEVCB_##_devcb); + downcast(*device).set_read_1_callback(DEVCB_##_devcb); #define MCFG_HUC6202_WRITE_1_CB(_devcb) \ - devcb = &downcast(*device).set_write_1_callback(DEVCB_##_devcb); + downcast(*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(*device).set_next_pixel_data_callback(DEVCB_##_devcb); + downcast(*device).set_next_pixel_data_callback(DEVCB_##_devcb); #define MCFG_HUC6260_TIME_TIL_NEXT_EVENT_CB(_devcb) \ - devcb = &downcast(*device).set_time_til_next_event_callback(DEVCB_##_devcb); + downcast(*device).set_time_til_next_event_callback(DEVCB_##_devcb); #define MCFG_HUC6260_VSYNC_CHANGED_CB(_devcb) \ - devcb = &downcast(*device).set_vsync_changed_callback(DEVCB_##_devcb); + downcast(*device).set_vsync_changed_callback(DEVCB_##_devcb); #define MCFG_HUC6260_HSYNC_CHANGED_CB(_devcb) \ - devcb = &downcast(*device).set_hsync_changed_callback(DEVCB_##_devcb); + downcast(*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(*device).set_vram_size(_size); #define MCFG_HUC6270_IRQ_CHANGED_CB(_devcb) \ - devcb = &downcast(*device).set_irq_changed_callback(DEVCB_##_devcb); + downcast(*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(*device).set_irq_changed_callback((DEVCB_##cb)); + downcast(*device).set_irq_changed_callback((DEVCB_##cb)); #define MCFG_HUC6272_RAINBOW(tag) \ downcast(*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(*device).set_irq_cb(DEVCB_##_devcb); + downcast(*device).set_irq_cb(DEVCB_##_devcb); #define MCFG_I8244_POSTPROCESS_CB(_devcb) \ - devcb = &downcast(*device).set_postprocess_cb(DEVCB_##_devcb); + downcast(*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(*device).set_cpu_tag(_cpu_tag); #define MCFG_I82730_SINT_HANDLER(_devcb) \ - devcb = &downcast(*device).set_sint_handler(DEVCB_##_devcb); + downcast(*device).set_sint_handler(DEVCB_##_devcb); #define MCFG_I82730_UPDATE_ROW_CB(_class, _method) \ downcast(*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(*device).set_character_width(_value); #define MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \ - downcast(*device).set_display_callback(i8275_device::draw_character_delegate(&_class::_method, #_class "::" #_method, this)); + downcast(*device).set_display_callback(&_class::_method, #_class "::" #_method, this); #define MCFG_I8275_DRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_drq_wr_callback(DEVCB_##_write); + downcast(*device).set_drq_wr_callback(DEVCB_##_write); #define MCFG_I8275_IRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_I8275_HRTC_CALLBACK(_write) \ - devcb = &downcast(*device).set_hrtc_wr_callback(DEVCB_##_write); + downcast(*device).set_hrtc_wr_callback(DEVCB_##_write); #define MCFG_I8275_VRTC_CALLBACK(_write) \ - devcb = &downcast(*device).set_vrtc_wr_callback(DEVCB_##_write); + downcast(*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 void set_display_callback(Object &&cb) { m_display_cb = std::forward(cb); } + template void set_display_callback(T &&... args) { m_display_cb = draw_character_delegate(std::forward(args)...); } template devcb_base &set_drq_wr_callback(Object &&cb) { return m_write_drq.set_callback(std::forward(cb)); } template devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward(cb)); } template devcb_base &set_hrtc_wr_callback(Object &&cb) { return m_write_hrtc.set_callback(std::forward(cb)); } template devcb_base &set_vrtc_wr_callback(Object &&cb) { return m_write_vrtc.set_callback(std::forward(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(*device).set_gfxdecode_tag(gfxtag); #define MCFG_I4100_BLITTER_END_CALLBACK(_devcb) \ - devcb = &downcast(*device).set_blitter_irq_callback(DEVCB_##_devcb); + downcast(*device).set_blitter_irq_callback(DEVCB_##_devcb); #define MCFG_I4100_TILEMAP_XOFFSETS(_a, _b, _c) \ downcast(*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(*device).set_vow_callback(DEVCB_##_write); + downcast(*device).set_vow_callback(DEVCB_##_write); #define MCFG_MB88303_VOBN_CALLBACK(_write) \ - devcb = &downcast(*device).set_vob_n_callback(DEVCB_##_write); + downcast(*device).set_vob_n_callback(DEVCB_##_write); #define MCFG_MB88303_DO_CALLBACK(_write) \ - devcb = &downcast(*device).set_do_callback(DEVCB_##_write); + downcast(*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(*device).set_char_width(_pixels); #define MCFG_MC6845_RECONFIGURE_CB(_class, _method) \ - downcast(*device).set_reconfigure_callback(mc6845_device::reconfigure_delegate(&_class::_method, #_class "::" #_method, this)); + downcast(*device).set_reconfigure_callback(&_class::_method, #_class "::" #_method, this); #define MCFG_MC6845_BEGIN_UPDATE_CB(_class, _method) \ - downcast(*device).set_begin_update_callback(mc6845_device::begin_update_delegate(&_class::_method, #_class "::" #_method, this)); + downcast(*device).set_begin_update_callback(&_class::_method, #_class "::" #_method, this); #define MCFG_MC6845_UPDATE_ROW_CB(_class, _method) \ - downcast(*device).set_update_row_callback(mc6845_device::update_row_delegate(&_class::_method, #_class "::" #_method, this)); + downcast(*device).set_update_row_callback(&_class::_method, #_class "::" #_method, this); #define MCFG_MC6845_END_UPDATE_CB(_class, _method) \ - downcast(*device).set_end_update_callback(mc6845_device::end_update_delegate(&_class::_method, #_class "::" #_method, this)); + downcast(*device).set_end_update_callback(&_class::_method, #_class "::" #_method, this); #define MCFG_MC6845_ADDR_CHANGED_CB(_class, _method) \ - downcast(*device).set_on_update_addr_change_callback(mc6845_device::on_update_addr_changed_delegate(&_class::_method, #_class "::" #_method, this)); + downcast(*device).set_on_update_addr_change_callback(&_class::_method, #_class "::" #_method, this); #define MCFG_MC6845_OUT_DE_CB(_write) \ - devcb = &downcast(*device).set_out_de_callback(DEVCB_##_write); + downcast(*device).set_out_de_callback(DEVCB_##_write); #define MCFG_MC6845_OUT_CUR_CB(_write) \ - devcb = &downcast(*device).set_out_cur_callback(DEVCB_##_write); + downcast(*device).set_out_cur_callback(DEVCB_##_write); #define MCFG_MC6845_OUT_HSYNC_CB(_write) \ - devcb = &downcast(*device).set_out_hsync_callback(DEVCB_##_write); + downcast(*device).set_out_hsync_callback(DEVCB_##_write); #define MCFG_MC6845_OUT_VSYNC_CB(_write) \ - devcb = &downcast(*device).set_out_vsync_callback(DEVCB_##_write); + downcast(*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 void set_reconfigure_callback(Object &&cb) { m_reconfigure_cb = std::forward(cb); } - template void set_begin_update_callback(Object &&cb) { m_begin_update_cb = std::forward(cb); } - template void set_update_row_callback(Object &&cb) { m_update_row_cb = std::forward(cb); } - template void set_end_update_callback(Object &&cb) { m_end_update_cb = std::forward(cb); } - template void set_on_update_addr_change_callback(Object &&cb) { m_on_update_addr_changed_cb = std::forward(cb); } + template void set_reconfigure_callback(T &&... args) { m_reconfigure_cb = reconfigure_delegate(std::forward(args)...); } + template void set_begin_update_callback(T &&... args) { m_begin_update_cb = begin_update_delegate(std::forward(args)...); } + template void set_update_row_callback(T &&... args) { m_update_row_cb = update_row_delegate(std::forward(args)...); } + template void set_end_update_callback(T &&... args) { m_end_update_cb = end_update_delegate(std::forward(args)...); } + template void set_on_update_addr_change_callback(T &&... args) { m_on_update_addr_changed_cb = on_update_addr_changed_delegate(std::forward(args)...); } template devcb_base &set_out_de_callback(Object &&cb) { return m_out_de_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_cur_callback(Object &&cb) { return m_out_cur_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_hsync_callback(Object &&cb) { return m_out_hsync_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_vsync_callback(Object &&cb) { return m_out_vsync_cb.set_callback(std::forward(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(*device).set_hsync_wr_callback(DEVCB_##_write); + downcast(*device).set_hsync_wr_callback(DEVCB_##_write); #define MCFG_MC6847_FSYNC_CALLBACK(_write) \ - devcb = &downcast(*device).set_fsync_wr_callback(DEVCB_##_write); + downcast(*device).set_fsync_wr_callback(DEVCB_##_write); #define MCFG_MC6847_CHARROM_CALLBACK(_class, _method) \ downcast(*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(*device).set_input_callback(DEVCB_##_read); + downcast(*device).set_input_callback(DEVCB_##_read); #define MCFG_MC6847_FIXED_MODE(_mode) \ downcast(*device).set_get_fixed_mode(_mode); @@ -88,6 +88,8 @@ public: template devcb_base &set_hsync_wr_callback(Object &&cb) { return m_write_hsync.set_callback(std::forward(cb)); } template devcb_base &set_fsync_wr_callback(Object &&cb) { return m_write_fsync.set_callback(std::forward(cb)); } + auto hsync_wr_callback() { return m_write_hsync.bind(); } + auto fsync_wr_callback() { return m_write_fsync.bind(); } template void set_get_char_rom(Object &&cb) { m_charrom_cb = std::forward(cb); } @@ -512,6 +514,7 @@ class mc6847_base_device : public mc6847_friend_device { public: template devcb_base &set_input_callback(Object &&cb) { return m_input_cb.set_callback(std::forward(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(*device).set_cpu_tag(_tag); #define MCFG_MOS6566_IRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_irq_wr_callback(DEVCB_##_write); + downcast(*device).set_irq_wr_callback(DEVCB_##_write); #define MCFG_MOS6566_BA_CALLBACK(_write) \ - devcb = &downcast(*device).set_ba_wr_callback(DEVCB_##_write); + downcast(*device).set_ba_wr_callback(DEVCB_##_write); #define MCFG_MOS6566_AEC_CALLBACK(_write) \ - devcb = &downcast(*device).set_aec_wr_callback(DEVCB_##_write); + downcast(*device).set_aec_wr_callback(DEVCB_##_write); #define MCFG_MOS8564_K_CALLBACK(_write) \ - devcb = &downcast(*device).set_k_wr_callback(DEVCB_##_write); + downcast(*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 devcb_base &set_int_callback(Object &&cb) { return m_int_callback.set_callback(std::forward(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(*device).set_read_bg_callback(DEVCB_##_devcb); + downcast(*device).set_read_bg_callback(DEVCB_##_devcb); #define MCFG_PPU_VT03_READ_SP_CB(_devcb) \ - devcb = &downcast(*device).set_read_sp_callback(DEVCB_##_devcb); + downcast(*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(*device).set_vblank_handler(DEVCB_##_devcb); + downcast(*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(*device).set_d_rd_callback(DEVCB_##_read); + downcast(*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(*device).set_intr_callback(DEVCB_##_intr); + downcast(*device).set_intr_callback(DEVCB_##_intr); #define MCFG_SCN2672_CHARACTER_WIDTH(_value) \ downcast(*device).set_character_width(_value); @@ -19,7 +19,7 @@ #define MCFG_SCN2674_INTR_CALLBACK(_intr) \ - devcb = &downcast(*device).set_intr_callback(DEVCB_##_intr); + downcast(*device).set_intr_callback(DEVCB_##_intr); #define MCFG_SCN2674_CHARACTER_WIDTH(_value) \ downcast(*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 devcb_base &set_open_bus_callback(Object &&cb) { return m_openbus_cb.set_callback(std::forward(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(*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(*device).set_vram_size(_size); #define MCFG_TMS34061_INTERRUPT_CB(_devcb) \ - devcb = &downcast(*device).set_interrupt_callback(DEVCB_##_devcb); + downcast(*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(*device).set_vsyn_wr_callback(DEVCB_##_write); + downcast(*device).set_vsyn_wr_callback(DEVCB_##_write); #define MCFG_TMS9927_HSYN_CALLBACK(_write) \ - devcb = &downcast(*device).set_hsyn_wr_callback(DEVCB_##_write); + downcast(*device).set_hsyn_wr_callback(DEVCB_##_write); #define MCFG_TMS9927_CHAR_WIDTH(_pixels) \ downcast(*device).set_char_width(_pixels); @@ -32,6 +32,8 @@ public: template devcb_base &set_vsyn_wr_callback(Object &&cb) { return m_write_vsyn.set_callback(std::forward(cb)); } template devcb_base &set_hsyn_wr_callback(Object &&cb) { return m_write_hsyn.set_callback(std::forward(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(*device).set_vram_size(_size); #define MCFG_TMS9928A_OUT_INT_LINE_CB(_devcb) \ - devcb = &downcast(*device).set_out_int_line_callback(DEVCB_##_devcb); + downcast(*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(*device).set_out_gromclk_callback(DEVCB_##_devcb); + downcast(*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 devcb_base &set_out_int_line_callback(Object &&cb) { return m_out_int_line_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_gromclk_callback(Object &&cb) { return m_out_gromclk_cb.set_callback(std::forward(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(*device).set_character_width(_value); #define MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \ - downcast(*device).set_display_callback(upd3301_device::draw_character_delegate(&_class::_method, #_class "::" #_method, this)); + downcast(*device).set_display_callback(&_class::_method, #_class "::" #_method, this); #define MCFG_UPD3301_DRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_drq_wr_callback(DEVCB_##_write); + downcast(*device).set_drq_wr_callback(DEVCB_##_write); #define MCFG_UPD3301_INT_CALLBACK(_write) \ - devcb = &downcast(*device).set_int_wr_callback(DEVCB_##_write); + downcast(*device).set_int_wr_callback(DEVCB_##_write); #define MCFG_UPD3301_HRTC_CALLBACK(_write) \ - devcb = &downcast(*device).set_hrtc_wr_callback(DEVCB_##_write); + downcast(*device).set_hrtc_wr_callback(DEVCB_##_write); #define MCFG_UPD3301_VRTC_CALLBACK(_write) \ - devcb = &downcast(*device).set_vrtc_wr_callback(DEVCB_##_write); + downcast(*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 void set_display_callback(Object &&cb) { m_display_cb = std::forward(cb); } + template void set_display_callback(T &&... args) { m_display_cb = draw_character_delegate(std::forward(args)...); } template devcb_base &set_drq_wr_callback(Object &&cb) { return m_write_drq.set_callback(std::forward(cb)); } template devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward(cb)); } template devcb_base &set_hrtc_wr_callback(Object &&cb) { return m_write_hrtc.set_callback(std::forward(cb)); } template devcb_base &set_vrtc_wr_callback(Object &&cb) { return m_write_vrtc.set_callback(std::forward(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(*device).set_draw_text_callback(upd7220_device::draw_text_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_UPD7220_DRQ_CALLBACK(_write) \ - devcb = &downcast(*device).set_drq_wr_callback(DEVCB_##_write); + downcast(*device).set_drq_wr_callback(DEVCB_##_write); #define MCFG_UPD7220_HSYNC_CALLBACK(_write) \ - devcb = &downcast(*device).set_hsync_wr_callback(DEVCB_##_write); + downcast(*device).set_hsync_wr_callback(DEVCB_##_write); #define MCFG_UPD7220_VSYNC_CALLBACK(_write) \ - devcb = &downcast(*device).set_vsync_wr_callback(DEVCB_##_write); + downcast(*device).set_vsync_wr_callback(DEVCB_##_write); #define MCFG_UPD7220_BLANK_CALLBACK(_write) \ - devcb = &downcast(*device).set_blank_wr_callback(DEVCB_##_write); + downcast(*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(device)->set_interrupt_callback(DEVCB_##_irq); + downcast(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(*device).set_vic3_type((vic3_device::vic3_type::type)); #define MCFG_VIC3_DMA_READ_CB(cb) \ - devcb = &downcast(*device).set_dma_read_callback((DEVCB_##cb)); + downcast(*device).set_dma_read_callback((DEVCB_##cb)); #define MCFG_VIC3_DMA_READ_COLOR_CB(cb) \ - devcb = &downcast(*device).set_dma_read_color_callback((DEVCB_##cb)); + downcast(*device).set_dma_read_color_callback((DEVCB_##cb)); #define MCFG_VIC3_INTERRUPT_CB(cb) \ - devcb = &downcast(*device).set_interrupt_callback((DEVCB_##cb)); + downcast(*device).set_interrupt_callback((DEVCB_##cb)); #define MCFG_VIC3_PORT_CHANGED_CB(cb) \ - devcb = &downcast(*device).set_port_changed_callback((DEVCB_##cb)); + downcast(*device).set_port_changed_callback((DEVCB_##cb)); #define MCFG_VIC3_LIGHTPEN_BUTTON_CB(cb) \ - devcb = &downcast(*device).set_lightpen_button_callback((DEVCB_##cb)); + downcast(*device).set_lightpen_button_callback((DEVCB_##cb)); #define MCFG_VIC3_LIGHTPEN_X_CB(cb) \ - devcb = &downcast(*device).set_lightpen_x_callback((DEVCB_##cb)); + downcast(*device).set_lightpen_x_callback((DEVCB_##cb)); #define MCFG_VIC3_LIGHTPEN_Y_CB(cb) \ - devcb = &downcast(*device).set_lightpen_y_callback((DEVCB_##cb)); + downcast(*device).set_lightpen_y_callback((DEVCB_##cb)); #define MCFG_VIC3_C64_MEM_R_CB(cb) \ - devcb = &downcast(*device).set_c64_mem_r_callback((DEVCB_##cb)); + downcast(*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(*device).set_cpu_tag(_tag); #define MCFG_VOODOO_VBLANK_CB(_devcb) \ - devcb = &downcast(*device).set_vblank_callback(DEVCB_##_devcb); + downcast(*device).set_vblank_callback(DEVCB_##_devcb); #define MCFG_VOODOO_STALL_CB(_devcb) \ - devcb = &downcast(*device).set_stall_callback(DEVCB_##_devcb); + downcast(*device).set_stall_callback(DEVCB_##_devcb); #define MCFG_VOODOO_PCIINT_CB(_devcb) \ - devcb = &downcast(*device).set_pciint_callback(DEVCB_##_devcb); + downcast(*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(*device).set_vblank_callback(DEVCB_##_devcb); + downcast(*device).set_vblank_callback(DEVCB_##_devcb); #define MCFG_ZEUS2_IRQ_CB(_devcb) \ - devcb = &downcast(*device).set_irq_callback(DEVCB_##_devcb); + downcast(*device).set_irq_callback(DEVCB_##_devcb); #define MCFG_ZEUS2_FLOAT_MODE(_mode) \ downcast(device)->set_float_mode(_mode); -- cgit v1.2.3