summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatarGravatar Vas Crabb <vas@vastheman.com>2018-05-04 03:01:32 +1000
committerGravatarGravatar Vas Crabb <vas@vastheman.com>2018-05-04 03:01:32 +1000
commit32a73f450da82c345b0f694bee311af34a5e717d (patch) (github)
treede6259ee4c0120e992f348afcc9078e16bbe49d4
parentaa96f47092f764f089c2ce9e0f26d756197150e8 (diff)
downloadmame-32a73f450da82c345b0f694bee311af34a5e717d.tar.bz2
mame-32a73f450da82c345b0f694bee311af34a5e717d.zip
Make MCFG_DEVICE_ADD and callable device types more flexible:
* Allows defaulted clocks (see subtle example with vboy) * Allows additional constructors (see RS232 port in tranz330) * Allows use of device finder in place of tag in MCFG_DEVICE_ADD * Requires out-of-line destructor for devices using incomplete types * Requires XTAL or explicit u32 for clocks for devices with private types Devices must still define the standard constructor. When writing additional constructors, be aware that the constructor runs before device_add_mconfig in the context of the existing device, not the new device. See osborne1, zorba, tranz330, and vboy for examples of this in use. Compilation is a bit slower, but this is temporary while refactoring is in progress. Eliminated the need for MCFG_SOUND_ROUTE_EX. Removed macros from slot option configuration - they just obfuscated code and slowed it down with needless dynamic casts, but didn't actually simplify it.
-rw-r--r--src/devices/bus/a2bus/a2diskiing.cpp7
-rw-r--r--src/devices/bus/a2bus/a2dx1.cpp4
-rw-r--r--src/devices/bus/a2bus/a2hsscsi.cpp13
-rw-r--r--src/devices/bus/a2bus/a2sam.cpp2
-rw-r--r--src/devices/bus/a2bus/a2scsi.cpp13
-rw-r--r--src/devices/bus/a2bus/corvfdc01.cpp7
-rw-r--r--src/devices/bus/a2bus/corvfdc02.cpp7
-rw-r--r--src/devices/bus/a7800/a78_carts.h45
-rw-r--r--src/devices/bus/a800/a800_carts.h76
-rw-r--r--src/devices/bus/a800/a8sio.cpp7
-rw-r--r--src/devices/bus/a800/a8sio.h2
-rw-r--r--src/devices/bus/abcbus/abc890.cpp6
-rw-r--r--src/devices/bus/abcbus/abcbus.cpp75
-rw-r--r--src/devices/bus/abcbus/abcbus.h6
-rw-r--r--src/devices/bus/abcbus/fd2.cpp7
-rw-r--r--src/devices/bus/abcbus/lux10828.cpp15
-rw-r--r--src/devices/bus/abcbus/lux21046.cpp17
-rw-r--r--src/devices/bus/abckb/abckb.cpp13
-rw-r--r--src/devices/bus/abckb/abckb.h2
-rw-r--r--src/devices/bus/adam/exp.cpp21
-rw-r--r--src/devices/bus/adam/exp.h6
-rw-r--r--src/devices/bus/adamnet/adamnet.cpp15
-rw-r--r--src/devices/bus/adamnet/adamnet.h4
-rw-r--r--src/devices/bus/adamnet/fdc.cpp7
-rw-r--r--src/devices/bus/amiga/keyboard/keyboard.cpp27
-rw-r--r--src/devices/bus/amiga/keyboard/keyboard.h2
-rw-r--r--src/devices/bus/amiga/zorro/cards.cpp63
-rw-r--r--src/devices/bus/amiga/zorro/cards.h10
-rw-r--r--src/devices/bus/apricot/expansion/cards.cpp11
-rw-r--r--src/devices/bus/apricot/expansion/cards.h2
-rw-r--r--src/devices/bus/apricot/keyboard/keyboard.cpp7
-rw-r--r--src/devices/bus/apricot/keyboard/keyboard.h2
-rw-r--r--src/devices/bus/bbc/1mhzbus/1mhzbus.cpp31
-rw-r--r--src/devices/bus/bbc/1mhzbus/1mhzbus.h2
-rw-r--r--src/devices/bus/bbc/1mhzbus/opus3.cpp7
-rw-r--r--src/devices/bus/bbc/analogue/analogue.cpp13
-rw-r--r--src/devices/bus/bbc/analogue/analogue.h2
-rw-r--r--src/devices/bus/bbc/fdc/acorn.cpp15
-rw-r--r--src/devices/bus/bbc/fdc/cumana.cpp15
-rw-r--r--src/devices/bus/bbc/fdc/cv1797.cpp15
-rw-r--r--src/devices/bus/bbc/fdc/fdc.cpp37
-rw-r--r--src/devices/bus/bbc/fdc/fdc.h2
-rw-r--r--src/devices/bus/bbc/fdc/opus.cpp15
-rw-r--r--src/devices/bus/bbc/fdc/watford.cpp15
-rw-r--r--src/devices/bus/bbc/joyport/joyport.cpp9
-rw-r--r--src/devices/bus/bbc/joyport/joyport.h2
-rw-r--r--src/devices/bus/bbc/tube/tube.cpp44
-rw-r--r--src/devices/bus/bbc/tube/tube.h6
-rw-r--r--src/devices/bus/bbc/userport/userport.cpp15
-rw-r--r--src/devices/bus/bbc/userport/userport.h2
-rw-r--r--src/devices/bus/bml3/bml3mp1802.cpp7
-rw-r--r--src/devices/bus/bw2/exp.cpp7
-rw-r--r--src/devices/bus/bw2/exp.h3
-rw-r--r--src/devices/bus/c64/exp.cpp141
-rw-r--r--src/devices/bus/c64/exp.h4
-rw-r--r--src/devices/bus/c64/user.cpp19
-rw-r--r--src/devices/bus/c64/user.h2
-rw-r--r--src/devices/bus/cbm2/exp.cpp13
-rw-r--r--src/devices/bus/cbm2/exp.h3
-rw-r--r--src/devices/bus/cbm2/user.cpp5
-rw-r--r--src/devices/bus/cbm2/user.h3
-rw-r--r--src/devices/bus/cbmiec/c1541.cpp7
-rw-r--r--src/devices/bus/cbmiec/c1571.cpp14
-rw-r--r--src/devices/bus/cbmiec/c1581.cpp7
-rw-r--r--src/devices/bus/cbmiec/cbmiec.cpp55
-rw-r--r--src/devices/bus/cbmiec/cbmiec.h3
-rw-r--r--src/devices/bus/cbmiec/fd2000.cpp14
-rw-r--r--src/devices/bus/cbus/pc9801_86.cpp4
-rw-r--r--src/devices/bus/centronics/covox.cpp6
-rw-r--r--src/devices/bus/centronics/ctronics.cpp23
-rw-r--r--src/devices/bus/centronics/ctronics.h2
-rw-r--r--src/devices/bus/centronics/digiblst.cpp2
-rw-r--r--src/devices/bus/centronics/epson_lx810l.cpp2
-rw-r--r--src/devices/bus/cgenie/expansion/carts.cpp7
-rw-r--r--src/devices/bus/cgenie/expansion/carts.h2
-rw-r--r--src/devices/bus/cgenie/expansion/floppy.cpp17
-rw-r--r--src/devices/bus/cgenie/parallel/carts.cpp9
-rw-r--r--src/devices/bus/cgenie/parallel/carts.h2
-rw-r--r--src/devices/bus/coco/coco_fdc.cpp7
-rw-r--r--src/devices/bus/coco/coco_multi.cpp44
-rw-r--r--src/devices/bus/coco/coco_orch90.cpp4
-rw-r--r--src/devices/bus/coco/dragon_fdc.cpp23
-rw-r--r--src/devices/bus/coleco/ctrl.cpp9
-rw-r--r--src/devices/bus/coleco/ctrl.h2
-rw-r--r--src/devices/bus/coleco/exp.cpp9
-rw-r--r--src/devices/bus/coleco/exp.h2
-rw-r--r--src/devices/bus/compis/graphics.cpp9
-rw-r--r--src/devices/bus/compis/graphics.h2
-rw-r--r--src/devices/bus/compucolor/floppy.cpp14
-rw-r--r--src/devices/bus/compucolor/floppy.h2
-rw-r--r--src/devices/bus/comx35/exp.cpp21
-rw-r--r--src/devices/bus/comx35/exp.h2
-rw-r--r--src/devices/bus/comx35/fdc.cpp9
-rw-r--r--src/devices/bus/cpc/amdrum.cpp2
-rw-r--r--src/devices/bus/cpc/cpc_rom.cpp2
-rw-r--r--src/devices/bus/cpc/cpc_rs232.cpp2
-rw-r--r--src/devices/bus/cpc/cpc_ssa1.cpp2
-rw-r--r--src/devices/bus/cpc/ddi1.cpp9
-rw-r--r--src/devices/bus/cpc/magicsound.cpp2
-rw-r--r--src/devices/bus/cpc/mface2.cpp2
-rw-r--r--src/devices/bus/cpc/playcity.cpp2
-rw-r--r--src/devices/bus/ecbbus/ecbbus.cpp17
-rw-r--r--src/devices/bus/ecbbus/ecbbus.h2
-rw-r--r--src/devices/bus/econet/e01.cpp7
-rw-r--r--src/devices/bus/econet/econet.cpp9
-rw-r--r--src/devices/bus/econet/econet.h4
-rw-r--r--src/devices/bus/einstein/pipe/pipe.cpp11
-rw-r--r--src/devices/bus/einstein/pipe/pipe.h2
-rw-r--r--src/devices/bus/einstein/userport/userport.cpp9
-rw-r--r--src/devices/bus/einstein/userport/userport.h2
-rw-r--r--src/devices/bus/electron/cart/ap34.cpp9
-rw-r--r--src/devices/bus/electron/cart/cumana.cpp9
-rw-r--r--src/devices/bus/electron/cart/peg400.cpp9
-rw-r--r--src/devices/bus/electron/cart/slot.cpp29
-rw-r--r--src/devices/bus/electron/cart/slot.h2
-rw-r--r--src/devices/bus/electron/cart/stlefs.cpp9
-rw-r--r--src/devices/bus/electron/exp.cpp25
-rw-r--r--src/devices/bus/electron/exp.h2
-rw-r--r--src/devices/bus/electron/plus3.cpp9
-rw-r--r--src/devices/bus/ep64/exdos.cpp7
-rw-r--r--src/devices/bus/ep64/exp.cpp7
-rw-r--r--src/devices/bus/ep64/exp.h2
-rw-r--r--src/devices/bus/epson_sio/epson_sio.cpp9
-rw-r--r--src/devices/bus/epson_sio/epson_sio.h2
-rw-r--r--src/devices/bus/epson_sio/pf10.cpp7
-rw-r--r--src/devices/bus/epson_sio/tf20.cpp7
-rw-r--r--src/devices/bus/gamate/rom.cpp11
-rw-r--r--src/devices/bus/gamate/slot.h2
-rw-r--r--src/devices/bus/gamegear/ggext.cpp7
-rw-r--r--src/devices/bus/gamegear/ggext.h2
-rw-r--r--src/devices/bus/generic/carts.cpp25
-rw-r--r--src/devices/bus/generic/carts.h6
-rw-r--r--src/devices/bus/hexbus/hexbus.cpp7
-rw-r--r--src/devices/bus/hexbus/hexbus.h2
-rw-r--r--src/devices/bus/hexbus/hx5102.cpp7
-rw-r--r--src/devices/bus/hp80_io/hp80_io.cpp7
-rw-r--r--src/devices/bus/hp80_io/hp80_io.h2
-rw-r--r--src/devices/bus/hp80_optroms/hp80_optrom.cpp7
-rw-r--r--src/devices/bus/hp80_optroms/hp80_optrom.h2
-rw-r--r--src/devices/bus/hp9845_io/hp9845_io.cpp9
-rw-r--r--src/devices/bus/hp9845_io/hp9845_io.h2
-rw-r--r--src/devices/bus/hp_hil/hil_devices.cpp7
-rw-r--r--src/devices/bus/hp_hil/hil_devices.h2
-rw-r--r--src/devices/bus/hp_optroms/hp_optrom.cpp7
-rw-r--r--src/devices/bus/hp_optroms/hp_optrom.h2
-rw-r--r--src/devices/bus/ieee488/c2031.cpp7
-rw-r--r--src/devices/bus/ieee488/c2040.cpp7
-rw-r--r--src/devices/bus/ieee488/c8050.cpp21
-rw-r--r--src/devices/bus/ieee488/c8280.cpp7
-rw-r--r--src/devices/bus/ieee488/hp9895.cpp7
-rw-r--r--src/devices/bus/ieee488/ieee488.cpp47
-rw-r--r--src/devices/bus/ieee488/ieee488.h6
-rw-r--r--src/devices/bus/ieee488/softbox.cpp2
-rw-r--r--src/devices/bus/imi7000/imi7000.cpp7
-rw-r--r--src/devices/bus/imi7000/imi7000.h2
-rw-r--r--src/devices/bus/intellec4/intellec4.cpp11
-rw-r--r--src/devices/bus/intellec4/intellec4.h2
-rw-r--r--src/devices/bus/interpro/keyboard/keyboard.cpp9
-rw-r--r--src/devices/bus/interpro/keyboard/keyboard.h2
-rw-r--r--src/devices/bus/interpro/sr/sr_cards.cpp15
-rw-r--r--src/devices/bus/interpro/sr/sr_cards.h2
-rw-r--r--src/devices/bus/intv/slot.cpp19
-rw-r--r--src/devices/bus/intv/slot.h2
-rw-r--r--src/devices/bus/intv_ctrl/ctrl.cpp7
-rw-r--r--src/devices/bus/intv_ctrl/ctrl.h2
-rw-r--r--src/devices/bus/intv_ctrl/ecs_ctrl.cpp18
-rw-r--r--src/devices/bus/intv_ctrl/ecs_ctrl.h2
-rw-r--r--src/devices/bus/iq151/disc2.cpp7
-rw-r--r--src/devices/bus/isa/com.cpp13
-rw-r--r--src/devices/bus/isa/dectalk.cpp2
-rw-r--r--src/devices/bus/isa/fdc.cpp24
-rw-r--r--src/devices/bus/isa/isa_cards.cpp198
-rw-r--r--src/devices/bus/isa/isa_cards.h4
-rw-r--r--src/devices/bus/isa/mc1502_fdc.cpp7
-rw-r--r--src/devices/bus/isa/mufdc.cpp13
-rw-r--r--src/devices/bus/isa/myb3k_com.cpp7
-rw-r--r--src/devices/bus/isa/myb3k_fdc.cpp21
-rw-r--r--src/devices/bus/isa/omti8621.cpp13
-rw-r--r--src/devices/bus/isa/p1_fdc.cpp7
-rw-r--r--src/devices/bus/isa/p1_sound.cpp2
-rw-r--r--src/devices/bus/isa/sblaster.cpp12
-rw-r--r--src/devices/bus/isa/stereo_fx.cpp4
-rw-r--r--src/devices/bus/isa/xsu_cards.cpp94
-rw-r--r--src/devices/bus/isa/xsu_cards.h8
-rw-r--r--src/devices/bus/isbx/compis_fdc.cpp9
-rw-r--r--src/devices/bus/isbx/isbc_218a.cpp9
-rw-r--r--src/devices/bus/isbx/isbx.cpp9
-rw-r--r--src/devices/bus/isbx/isbx.h2
-rw-r--r--src/devices/bus/kc/d002.cpp5
-rw-r--r--src/devices/bus/kc/d004.cpp7
-rw-r--r--src/devices/bus/lpci/southbridge.cpp11
-rw-r--r--src/devices/bus/megadrive/ggenie.cpp15
-rw-r--r--src/devices/bus/megadrive/md_carts.cpp111
-rw-r--r--src/devices/bus/megadrive/md_carts.h2
-rw-r--r--src/devices/bus/megadrive/sk.cpp15
-rw-r--r--src/devices/bus/midi/midi.cpp14
-rw-r--r--src/devices/bus/midi/midi.h4
-rw-r--r--src/devices/bus/msx_cart/cartridge.cpp90
-rw-r--r--src/devices/bus/msx_cart/cartridge.h4
-rw-r--r--src/devices/bus/msx_cart/disk.cpp9
-rw-r--r--src/devices/bus/msx_cart/konami.cpp2
-rw-r--r--src/devices/bus/msx_cart/majutsushi.cpp2
-rw-r--r--src/devices/bus/msx_cart/msx_audio_kb.cpp9
-rw-r--r--src/devices/bus/msx_cart/msx_audio_kb.h2
-rw-r--r--src/devices/bus/nasbus/cards.cpp9
-rw-r--r--src/devices/bus/nasbus/cards.h2
-rw-r--r--src/devices/bus/nasbus/floppy.cpp9
-rw-r--r--src/devices/bus/neogeo/carts.cpp129
-rw-r--r--src/devices/bus/neogeo/carts.h2
-rw-r--r--src/devices/bus/neogeo_ctrl/ctrl.cpp44
-rw-r--r--src/devices/bus/neogeo_ctrl/ctrl.h8
-rw-r--r--src/devices/bus/nes/aladdin.cpp9
-rw-r--r--src/devices/bus/nes/datach.cpp9
-rw-r--r--src/devices/bus/nes/karastudio.cpp7
-rw-r--r--src/devices/bus/nes/nes_carts.cpp646
-rw-r--r--src/devices/bus/nes/nes_carts.h4
-rw-r--r--src/devices/bus/nes/sunsoft_dcs.cpp7
-rw-r--r--src/devices/bus/nes_ctrl/ctrl.cpp89
-rw-r--r--src/devices/bus/nes_ctrl/ctrl.h10
-rw-r--r--src/devices/bus/nes_ctrl/hori.cpp7
-rw-r--r--src/devices/bus/nes_ctrl/joypad.cpp7
-rw-r--r--src/devices/bus/newbrain/exp.cpp9
-rw-r--r--src/devices/bus/newbrain/exp.h2
-rw-r--r--src/devices/bus/newbrain/fdc.cpp7
-rw-r--r--src/devices/bus/nubus/bootbug.cpp9
-rw-r--r--src/devices/bus/nubus/quadralink.cpp9
-rw-r--r--src/devices/bus/odyssey2/slot.cpp15
-rw-r--r--src/devices/bus/odyssey2/slot.h2
-rw-r--r--src/devices/bus/oricext/jasmin.cpp7
-rw-r--r--src/devices/bus/oricext/microdisc.cpp7
-rw-r--r--src/devices/bus/oricext/oricext.cpp9
-rw-r--r--src/devices/bus/oricext/oricext.h2
-rw-r--r--src/devices/bus/pc1512/mouse.cpp7
-rw-r--r--src/devices/bus/pc1512/mouse.h2
-rw-r--r--src/devices/bus/pc_joy/pc_joy.cpp9
-rw-r--r--src/devices/bus/pc_joy/pc_joy.h2
-rw-r--r--src/devices/bus/pc_kbd/keyboards.cpp28
-rw-r--r--src/devices/bus/pc_kbd/keyboards.h4
-rw-r--r--src/devices/bus/pet/2joysnd.cpp2
-rw-r--r--src/devices/bus/pet/cass.cpp9
-rw-r--r--src/devices/bus/pet/cass.h2
-rw-r--r--src/devices/bus/pet/cb2snd.cpp2
-rw-r--r--src/devices/bus/pet/exp.cpp13
-rw-r--r--src/devices/bus/pet/exp.h2
-rw-r--r--src/devices/bus/pet/user.cpp13
-rw-r--r--src/devices/bus/pet/user.h2
-rw-r--r--src/devices/bus/plus4/c1551.cpp7
-rw-r--r--src/devices/bus/plus4/exp.cpp11
-rw-r--r--src/devices/bus/plus4/exp.h2
-rw-r--r--src/devices/bus/plus4/user.cpp9
-rw-r--r--src/devices/bus/plus4/user.h2
-rw-r--r--src/devices/bus/pofo/ccm.cpp9
-rw-r--r--src/devices/bus/pofo/ccm.h2
-rw-r--r--src/devices/bus/pofo/exp.cpp13
-rw-r--r--src/devices/bus/pofo/exp.h2
-rw-r--r--src/devices/bus/psi_kbd/psi_kbd.cpp9
-rw-r--r--src/devices/bus/psi_kbd/psi_kbd.h2
-rw-r--r--src/devices/bus/psx/ctlrport.cpp18
-rw-r--r--src/devices/bus/psx/ctlrport.h2
-rw-r--r--src/devices/bus/psx/gamebooster.cpp63
-rw-r--r--src/devices/bus/psx/multitap.h2
-rw-r--r--src/devices/bus/psx/parallel.cpp7
-rw-r--r--src/devices/bus/psx/parallel.h2
-rw-r--r--src/devices/bus/ql/exp.cpp41
-rw-r--r--src/devices/bus/ql/exp.h2
-rw-r--r--src/devices/bus/ql/rom.cpp9
-rw-r--r--src/devices/bus/ql/rom.h2
-rw-r--r--src/devices/bus/ql/sandy_superdisk.cpp7
-rw-r--r--src/devices/bus/ql/sandy_superqboard.cpp9
-rw-r--r--src/devices/bus/ql/trumpcard.cpp7
-rw-r--r--src/devices/bus/rs232/rs232.cpp23
-rw-r--r--src/devices/bus/rs232/rs232.h14
-rw-r--r--src/devices/bus/s100/dj2db.cpp7
-rw-r--r--src/devices/bus/s100/nsmdsa.cpp7
-rw-r--r--src/devices/bus/s100/nsmdsad.cpp7
-rw-r--r--src/devices/bus/s100/wunderbus.cpp2
-rw-r--r--src/devices/bus/sat_ctrl/ctrl.cpp36
-rw-r--r--src/devices/bus/sat_ctrl/ctrl.h4
-rw-r--r--src/devices/bus/sega8/ccatch.cpp7
-rw-r--r--src/devices/bus/sega8/sega8_slot.cpp104
-rw-r--r--src/devices/bus/sega8/sega8_slot.h8
-rw-r--r--src/devices/bus/sg1000_exp/sg1000exp.cpp9
-rw-r--r--src/devices/bus/sg1000_exp/sg1000exp.h2
-rw-r--r--src/devices/bus/sms_ctrl/smsctrl.cpp21
-rw-r--r--src/devices/bus/sms_ctrl/smsctrl.h2
-rw-r--r--src/devices/bus/sms_exp/smsexp.cpp7
-rw-r--r--src/devices/bus/sms_exp/smsexp.h2
-rw-r--r--src/devices/bus/snes/bsx.cpp7
-rw-r--r--src/devices/bus/snes/sgb.cpp9
-rw-r--r--src/devices/bus/snes/snes_carts.cpp83
-rw-r--r--src/devices/bus/snes/snes_carts.h2
-rw-r--r--src/devices/bus/snes/sufami.cpp7
-rw-r--r--src/devices/bus/snes_ctrl/ctrl.cpp21
-rw-r--r--src/devices/bus/snes_ctrl/ctrl.h2
-rw-r--r--src/devices/bus/snes_ctrl/multitap.cpp9
-rw-r--r--src/devices/bus/spc1000/fdd.cpp7
-rw-r--r--src/devices/bus/spectrum/exp.cpp51
-rw-r--r--src/devices/bus/spectrum/exp.h6
-rw-r--r--src/devices/bus/ss50/interface.cpp15
-rw-r--r--src/devices/bus/ss50/interface.h4
-rw-r--r--src/devices/bus/ss50/mpc.cpp2
-rw-r--r--src/devices/bus/ss50/mps.cpp2
-rw-r--r--src/devices/bus/sunkbd/sunkbd.cpp17
-rw-r--r--src/devices/bus/sunkbd/sunkbd.h2
-rw-r--r--src/devices/bus/svi3x8/expander/modules.cpp11
-rw-r--r--src/devices/bus/svi3x8/expander/modules.h2
-rw-r--r--src/devices/bus/svi3x8/slot/cards.cpp32
-rw-r--r--src/devices/bus/svi3x8/slot/cards.h4
-rw-r--r--src/devices/bus/svi3x8/slot/sv801.cpp7
-rw-r--r--src/devices/bus/ti8x/ti8x.cpp15
-rw-r--r--src/devices/bus/ti8x/ti8x.h2
-rw-r--r--src/devices/bus/ti99/colorbus/colorbus.cpp7
-rw-r--r--src/devices/bus/ti99/colorbus/colorbus.h2
-rw-r--r--src/devices/bus/ti99/gromport/gromport.cpp22
-rw-r--r--src/devices/bus/ti99/gromport/gromport.h4
-rw-r--r--src/devices/bus/ti99/internal/ioport.cpp14
-rw-r--r--src/devices/bus/ti99/internal/ioport.h4
-rw-r--r--src/devices/bus/ti99/joyport/joyport.cpp31
-rw-r--r--src/devices/bus/ti99/joyport/joyport.h6
-rw-r--r--src/devices/bus/ti99/peb/bwg.cpp11
-rw-r--r--src/devices/bus/ti99/peb/hfdc.cpp28
-rw-r--r--src/devices/bus/ti99/peb/peribox.cpp116
-rw-r--r--src/devices/bus/ti99/peb/ti_fdc.cpp7
-rw-r--r--src/devices/bus/tiki100/exp.cpp9
-rw-r--r--src/devices/bus/tiki100/exp.h2
-rw-r--r--src/devices/bus/tmc600/euro.cpp33
-rw-r--r--src/devices/bus/tmc600/euro.h2
-rw-r--r--src/devices/bus/tvc/hbf.cpp7
-rw-r--r--src/devices/bus/vcs_ctrl/ctrl.cpp17
-rw-r--r--src/devices/bus/vcs_ctrl/ctrl.h2
-rw-r--r--src/devices/bus/vic10/exp.cpp9
-rw-r--r--src/devices/bus/vic10/exp.h2
-rw-r--r--src/devices/bus/vic20/exp.cpp26
-rw-r--r--src/devices/bus/vic20/exp.h2
-rw-r--r--src/devices/bus/vic20/user.cpp9
-rw-r--r--src/devices/bus/vic20/user.h2
-rw-r--r--src/devices/bus/vidbrain/exp.cpp11
-rw-r--r--src/devices/bus/vidbrain/exp.h2
-rw-r--r--src/devices/bus/vip/byteio.cpp9
-rw-r--r--src/devices/bus/vip/byteio.h2
-rw-r--r--src/devices/bus/vip/exp.cpp25
-rw-r--r--src/devices/bus/vip/exp.h2
-rw-r--r--src/devices/bus/vme/vme.cpp20
-rw-r--r--src/devices/bus/vme/vme.h4
-rw-r--r--src/devices/bus/vme/vme_fcscsi.cpp7
-rw-r--r--src/devices/bus/vtech/ioexp/carts.cpp9
-rw-r--r--src/devices/bus/vtech/ioexp/carts.h2
-rw-r--r--src/devices/bus/vtech/memexp/carts.cpp21
-rw-r--r--src/devices/bus/vtech/memexp/carts.h2
-rw-r--r--src/devices/bus/vtech/memexp/floppy.cpp7
-rw-r--r--src/devices/bus/wangpc/wangpc.cpp21
-rw-r--r--src/devices/bus/wangpc/wangpc.h2
-rw-r--r--src/devices/cpu/e132xs/e132xs.cpp4
-rw-r--r--src/devices/cpu/e132xs/e132xs.h2
-rw-r--r--src/devices/cpu/mb86235/mb86235.cpp4
-rw-r--r--src/devices/cpu/mb86235/mb86235.h1
-rw-r--r--src/devices/cpu/powerpc/ppc.h2
-rw-r--r--src/devices/cpu/powerpc/ppccom.cpp4
-rw-r--r--src/devices/cpu/rsp/rsp.cpp4
-rw-r--r--src/devices/cpu/rsp/rsp.h1
-rw-r--r--src/devices/cpu/sh/sh2.cpp4
-rw-r--r--src/devices/cpu/sh/sh2.h13
-rw-r--r--src/devices/cpu/sharc/sharc.cpp4
-rw-r--r--src/devices/cpu/sharc/sharc.h1
-rw-r--r--src/devices/machine/ataintf.cpp9
-rw-r--r--src/devices/machine/ataintf.h2
-rw-r--r--src/devices/machine/fdc37c93x.cpp13
-rw-r--r--src/devices/machine/pdc.cpp20
-rw-r--r--src/devices/machine/roc10937.h10
-rw-r--r--src/devices/sound/ad1848.cpp4
-rw-r--r--src/devices/sound/pokey.cpp1
-rw-r--r--src/emu/devcb.h11
-rw-r--r--src/emu/devfind.h9
-rw-r--r--src/emu/device.h32
-rw-r--r--src/emu/device.ipp10
-rw-r--r--src/emu/dislot.cpp57
-rw-r--r--src/emu/dislot.h89
-rw-r--r--src/emu/disound.cpp9
-rw-r--r--src/emu/disound.h16
-rw-r--r--src/emu/mconfig.cpp40
-rw-r--r--src/emu/mconfig.h50
-rw-r--r--src/emu/speaker.h7
-rw-r--r--src/emu/validity.cpp3
-rw-r--r--src/frontend/mame/clifront.cpp6
-rw-r--r--src/frontend/mame/ui/devopt.cpp2
-rw-r--r--src/frontend/mame/ui/devopt.h4
-rw-r--r--src/frontend/mame/ui/slotopt.cpp10
-rw-r--r--src/frontend/mame/ui/slotopt.h2
-rw-r--r--src/mame/audio/alesis.cpp2
-rw-r--r--src/mame/audio/bwidow.cpp4
-rw-r--r--src/mame/audio/bzone.cpp2
-rw-r--r--src/mame/audio/csd.cpp2
-rw-r--r--src/mame/audio/gottlieb.cpp8
-rw-r--r--src/mame/audio/harddriv.cpp2
-rw-r--r--src/mame/audio/irem.cpp22
-rw-r--r--src/mame/audio/leland.cpp94
-rw-r--r--src/mame/audio/midway.cpp4
-rw-r--r--src/mame/audio/n8080.cpp6
-rw-r--r--src/mame/audio/nichisnd.cpp4
-rw-r--r--src/mame/audio/s11c_bg.cpp2
-rw-r--r--src/mame/audio/segag80r.cpp2
-rw-r--r--src/mame/audio/spacefb.cpp2
-rw-r--r--src/mame/audio/taito_en.cpp16
-rw-r--r--src/mame/audio/targ.cpp4
-rw-r--r--src/mame/audio/vboy.cpp3
-rw-r--r--src/mame/audio/vboy.h12
-rw-r--r--src/mame/audio/williams.cpp8
-rw-r--r--src/mame/audio/wpcsnd.cpp2
-rw-r--r--src/mame/audio/zaccaria.cpp14
-rw-r--r--src/mame/drivers/1942.cpp12
-rw-r--r--src/mame/drivers/20pacgal.cpp2
-rw-r--r--src/mame/drivers/4004clk.cpp2
-rw-r--r--src/mame/drivers/40love.cpp4
-rw-r--r--src/mame/drivers/4enlinea.cpp9
-rw-r--r--src/mame/drivers/8080bw.cpp2
-rw-r--r--src/mame/drivers/a2600.cpp55
-rw-r--r--src/mame/drivers/a5105.cpp7
-rw-r--r--src/mame/drivers/a7150.cpp2
-rw-r--r--src/mame/drivers/aa310.cpp25
-rw-r--r--src/mame/drivers/abc1600.cpp7
-rw-r--r--src/mame/drivers/adam.cpp2
-rw-r--r--src/mame/drivers/advision.cpp2
-rw-r--r--src/mame/drivers/agat.cpp15
-rw-r--r--src/mame/drivers/aim65.cpp10
-rw-r--r--src/mame/drivers/alpha68k.cpp12
-rw-r--r--src/mame/drivers/alphatpx.cpp21
-rw-r--r--src/mame/drivers/alphatro.cpp7
-rw-r--r--src/mame/drivers/altos486.cpp9
-rw-r--r--src/mame/drivers/altos5.cpp7
-rw-r--r--src/mame/drivers/altos8600.cpp7
-rw-r--r--src/mame/drivers/amiga.cpp7
-rw-r--r--src/mame/drivers/ampro.cpp7
-rw-r--r--src/mame/drivers/amstrad.cpp183
-rw-r--r--src/mame/drivers/amust.cpp7
-rw-r--r--src/mame/drivers/apc.cpp7
-rw-r--r--src/mame/drivers/apf.cpp18
-rw-r--r--src/mame/drivers/apple1.cpp9
-rw-r--r--src/mame/drivers/apple2.cpp106
-rw-r--r--src/mame/drivers/apple2e.cpp112
-rw-r--r--src/mame/drivers/apple2gs.cpp51
-rw-r--r--src/mame/drivers/apple3.cpp24
-rw-r--r--src/mame/drivers/applix.cpp11
-rw-r--r--src/mame/drivers/apricot.cpp9
-rw-r--r--src/mame/drivers/apricotf.cpp9
-rw-r--r--src/mame/drivers/apricotp.cpp7
-rw-r--r--src/mame/drivers/arcadia.cpp9
-rw-r--r--src/mame/drivers/aristmk5.cpp16
-rw-r--r--src/mame/drivers/armedf.cpp24
-rw-r--r--src/mame/drivers/asst128.cpp7
-rw-r--r--src/mame/drivers/astrohome.cpp30
-rw-r--r--src/mame/drivers/at.cpp7
-rw-r--r--src/mame/drivers/atari400.cpp2
-rw-r--r--src/mame/drivers/atari_s1.cpp2
-rw-r--r--src/mame/drivers/atari_s2.cpp4
-rw-r--r--src/mame/drivers/atarist.cpp7
-rw-r--r--src/mame/drivers/atlantis.cpp2
-rw-r--r--src/mame/drivers/atom.cpp7
-rw-r--r--src/mame/drivers/atpci.cpp20
-rw-r--r--src/mame/drivers/attache.cpp7
-rw-r--r--src/mame/drivers/aussiebyte.cpp7
-rw-r--r--src/mame/drivers/ax20.cpp7
-rw-r--r--src/mame/drivers/b2m.cpp7
-rw-r--r--src/mame/drivers/bbc.cpp24
-rw-r--r--src/mame/drivers/bebox.cpp16
-rw-r--r--src/mame/drivers/bigbord2.cpp7
-rw-r--r--src/mame/drivers/bigevglf.cpp2
-rw-r--r--src/mame/drivers/binbug.cpp2
-rw-r--r--src/mame/drivers/bitgraph.cpp2
-rw-r--r--src/mame/drivers/bking.cpp2
-rw-r--r--src/mame/drivers/bml3.cpp11
-rw-r--r--src/mame/drivers/btime.cpp12
-rw-r--r--src/mame/drivers/bullet.cpp31
-rw-r--r--src/mame/drivers/bw12.cpp16
-rw-r--r--src/mame/drivers/bw2.cpp7
-rw-r--r--src/mame/drivers/bwing.cpp2
-rw-r--r--src/mame/drivers/byvid.cpp2
-rw-r--r--src/mame/drivers/c128.cpp16
-rw-r--r--src/mame/drivers/c64.cpp7
-rw-r--r--src/mame/drivers/calchase.cpp8
-rw-r--r--src/mame/drivers/camplynx.cpp9
-rw-r--r--src/mame/drivers/capbowl.cpp2
-rw-r--r--src/mame/drivers/cc40.cpp2
-rw-r--r--src/mame/drivers/cchasm.cpp4
-rw-r--r--src/mame/drivers/ccs2810.cpp9
-rw-r--r--src/mame/drivers/ccs300.cpp2
-rw-r--r--src/mame/drivers/champbas.cpp8
-rw-r--r--src/mame/drivers/channelf.cpp17
-rw-r--r--src/mame/drivers/cheekyms.cpp16
-rw-r--r--src/mame/drivers/chihiro.cpp20
-rw-r--r--src/mame/drivers/chsuper.cpp2
-rw-r--r--src/mame/drivers/circusc.cpp8
-rw-r--r--src/mame/drivers/ckz80.cpp2
-rw-r--r--src/mame/drivers/cmi.cpp15
-rw-r--r--src/mame/drivers/cntsteer.cpp2
-rw-r--r--src/mame/drivers/coco12.cpp44
-rw-r--r--src/mame/drivers/coco3.cpp2
-rw-r--r--src/mame/drivers/cocoloco.cpp6
-rw-r--r--src/mame/drivers/concept.cpp11
-rw-r--r--src/mame/drivers/coolpool.cpp4
-rw-r--r--src/mame/drivers/cop01.cpp2
-rw-r--r--src/mame/drivers/cosmic.cpp8
-rw-r--r--src/mame/drivers/craft.cpp2
-rw-r--r--src/mame/drivers/crvision.cpp19
-rw-r--r--src/mame/drivers/cubeqst.cpp32
-rw-r--r--src/mame/drivers/cvs.cpp6
-rw-r--r--src/mame/drivers/cxgz80.cpp2
-rw-r--r--src/mame/drivers/cyberbal.cpp4
-rw-r--r--src/mame/drivers/cybiko.cpp6
-rw-r--r--src/mame/drivers/czk80.cpp7
-rw-r--r--src/mame/drivers/dectalk.cpp2
-rw-r--r--src/mame/drivers/dgn_beta.cpp7
-rw-r--r--src/mame/drivers/digel804.cpp4
-rw-r--r--src/mame/drivers/dim68k.cpp7
-rw-r--r--src/mame/drivers/dmax8000.cpp7
-rw-r--r--src/mame/drivers/dmv.cpp66
-rw-r--r--src/mame/drivers/dps1.cpp7
-rw-r--r--src/mame/drivers/dragon.cpp28
-rw-r--r--src/mame/drivers/duet16.cpp16
-rw-r--r--src/mame/drivers/einstein.cpp17
-rw-r--r--src/mame/drivers/elwro800.cpp7
-rw-r--r--src/mame/drivers/enmirage.cpp7
-rw-r--r--src/mame/drivers/equites.cpp4
-rw-r--r--src/mame/drivers/ertictac.cpp16
-rw-r--r--src/mame/drivers/esq1.cpp16
-rw-r--r--src/mame/drivers/esq5505.cpp39
-rw-r--r--src/mame/drivers/esqasr.cpp32
-rw-r--r--src/mame/drivers/esqkt.cpp32
-rw-r--r--src/mame/drivers/esripsys.cpp4
-rw-r--r--src/mame/drivers/et3400.cpp2
-rw-r--r--src/mame/drivers/eurocom2.cpp9
-rw-r--r--src/mame/drivers/excali64.cpp7
-rw-r--r--src/mame/drivers/exp85.cpp2
-rw-r--r--src/mame/drivers/exterm.cpp4
-rw-r--r--src/mame/drivers/fantland.cpp2
-rw-r--r--src/mame/drivers/fanucspmg.cpp7
-rw-r--r--src/mame/drivers/fccpu20.cpp49
-rw-r--r--src/mame/drivers/fccpu30.cpp9
-rw-r--r--src/mame/drivers/fidel6502.cpp18
-rw-r--r--src/mame/drivers/fidel68k.cpp6
-rw-r--r--src/mame/drivers/fidelmcs48.cpp2
-rw-r--r--src/mame/drivers/fidelz80.cpp6
-rw-r--r--src/mame/drivers/finalizr.cpp2
-rw-r--r--src/mame/drivers/firebeat.cpp11
-rw-r--r--src/mame/drivers/flstory.cpp8
-rw-r--r--src/mame/drivers/fm7.cpp7
-rw-r--r--src/mame/drivers/fmtowns.cpp7
-rw-r--r--src/mame/drivers/force68k.cpp9
-rw-r--r--src/mame/drivers/fruitpc.cpp11
-rw-r--r--src/mame/drivers/galaxian.cpp22
-rw-r--r--src/mame/drivers/galeb.cpp2
-rw-r--r--src/mame/drivers/galivan.cpp8
-rw-r--r--src/mame/drivers/gamecom.cpp6
-rw-r--r--src/mame/drivers/gb.cpp72
-rw-r--r--src/mame/drivers/gba.cpp43
-rw-r--r--src/mame/drivers/gei.cpp2
-rw-r--r--src/mame/drivers/gimix.cpp9
-rw-r--r--src/mame/drivers/gkigt.cpp2
-rw-r--r--src/mame/drivers/go2000.cpp2
-rw-r--r--src/mame/drivers/goupil.cpp7
-rw-r--r--src/mame/drivers/gp32.cpp4
-rw-r--r--src/mame/drivers/guab.cpp9
-rw-r--r--src/mame/drivers/gyruss.cpp30
-rw-r--r--src/mame/drivers/h89.cpp2
-rw-r--r--src/mame/drivers/hankin.cpp2
-rw-r--r--src/mame/drivers/harddriv.cpp4
-rw-r--r--src/mame/drivers/hec2hrp.cpp14
-rw-r--r--src/mame/drivers/hh_cop400.cpp4
-rw-r--r--src/mame/drivers/hk68v10.cpp5
-rw-r--r--src/mame/drivers/homedata.cpp6
-rw-r--r--src/mame/drivers/homelab.cpp6
-rw-r--r--src/mame/drivers/horizon.cpp23
-rw-r--r--src/mame/drivers/hp48.cpp2
-rw-r--r--src/mame/drivers/hp64k.cpp7
-rw-r--r--src/mame/drivers/hp80.cpp14
-rw-r--r--src/mame/drivers/hp9845.cpp16
-rw-r--r--src/mame/drivers/hp9k_3xx.cpp13
-rw-r--r--src/mame/drivers/hp_ipc.cpp7
-rw-r--r--src/mame/drivers/ht68k.cpp7
-rw-r--r--src/mame/drivers/hyhoo.cpp2
-rw-r--r--src/mame/drivers/hyperspt.cpp2
-rw-r--r--src/mame/drivers/ibm6580.cpp7
-rw-r--r--src/mame/drivers/ibmpcjr.cpp20
-rw-r--r--src/mame/drivers/imds2.cpp7
-rw-r--r--src/mame/drivers/indiana.cpp15
-rw-r--r--src/mame/drivers/indy_indigo2.cpp2
-rw-r--r--src/mame/drivers/instantm.cpp2
-rw-r--r--src/mame/drivers/intellec4.cpp4
-rw-r--r--src/mame/drivers/interpro.cpp36
-rw-r--r--src/mame/drivers/iq151.cpp29
-rw-r--r--src/mame/drivers/iris3130.cpp2
-rw-r--r--src/mame/drivers/ironhors.cpp8
-rw-r--r--src/mame/drivers/isbc.cpp6
-rw-r--r--src/mame/drivers/isbc8010.cpp2
-rw-r--r--src/mame/drivers/itt3030.cpp9
-rw-r--r--src/mame/drivers/jaguar.cpp15
-rw-r--r--src/mame/drivers/jankenmn.cpp2
-rw-r--r--src/mame/drivers/juicebox.cpp2
-rw-r--r--src/mame/drivers/junofrst.cpp2
-rw-r--r--src/mame/drivers/jupiter.cpp7
-rw-r--r--src/mame/drivers/kaypro.cpp11
-rw-r--r--src/mame/drivers/kc.cpp36
-rw-r--r--src/mame/drivers/kchamp.cpp2
-rw-r--r--src/mame/drivers/kdt6.cpp7
-rw-r--r--src/mame/drivers/kingobox.cpp4
-rw-r--r--src/mame/drivers/konamigx.cpp8
-rw-r--r--src/mame/drivers/ksayakyu.cpp2
-rw-r--r--src/mame/drivers/ksys573.cpp8
-rw-r--r--src/mame/drivers/ladyfrog.cpp2
-rw-r--r--src/mame/drivers/laserbas.cpp12
-rw-r--r--src/mame/drivers/lasso.cpp2
-rw-r--r--src/mame/drivers/lazercmd.cpp16
-rw-r--r--src/mame/drivers/lb186.cpp18
-rw-r--r--src/mame/drivers/leland.cpp4
-rw-r--r--src/mame/drivers/littlerb.cpp4
-rw-r--r--src/mame/drivers/looping.cpp2
-rw-r--r--src/mame/drivers/luckybal.cpp2
-rw-r--r--src/mame/drivers/m20.cpp14
-rw-r--r--src/mame/drivers/m5.cpp23
-rw-r--r--src/mame/drivers/m72.cpp2
-rw-r--r--src/mame/drivers/m90.cpp2
-rw-r--r--src/mame/drivers/mac.cpp72
-rw-r--r--src/mame/drivers/mac128.cpp2
-rw-r--r--src/mame/drivers/madalien.cpp6
-rw-r--r--src/mame/drivers/magicfly.cpp2
-rw-r--r--src/mame/drivers/magtouch.cpp11
-rw-r--r--src/mame/drivers/mappy.cpp2
-rw-r--r--src/mame/drivers/matmania.cpp4
-rw-r--r--src/mame/drivers/mbc200.cpp7
-rw-r--r--src/mame/drivers/mbc55x.cpp11
-rw-r--r--src/mame/drivers/mbee.cpp9
-rw-r--r--src/mame/drivers/mc10.cpp4
-rw-r--r--src/mame/drivers/meadows.cpp4
-rw-r--r--src/mame/drivers/megazone.cpp2
-rw-r--r--src/mame/drivers/mephistp.cpp2
-rw-r--r--src/mame/drivers/meyc8080.cpp2
-rw-r--r--src/mame/drivers/meyc8088.cpp2
-rw-r--r--src/mame/drivers/mfabfz.cpp2
-rw-r--r--src/mame/drivers/mice.cpp4
-rw-r--r--src/mame/drivers/microdec.cpp7
-rw-r--r--src/mame/drivers/microkit.cpp2
-rw-r--r--src/mame/drivers/microvsn.cpp2
-rw-r--r--src/mame/drivers/mikro80.cpp2
-rw-r--r--src/mame/drivers/mikromik.cpp7
-rw-r--r--src/mame/drivers/mini2440.cpp4
-rw-r--r--src/mame/drivers/miniforce.cpp13
-rw-r--r--src/mame/drivers/miniframe.cpp7
-rw-r--r--src/mame/drivers/mjsister.cpp2
-rw-r--r--src/mame/drivers/mk14.cpp4
-rw-r--r--src/mame/drivers/mogura.cpp4
-rw-r--r--src/mame/drivers/mpz80.cpp19
-rw-r--r--src/mame/drivers/mrgame.cpp6
-rw-r--r--src/mame/drivers/ms0515.cpp7
-rw-r--r--src/mame/drivers/msx.cpp15
-rw-r--r--src/mame/drivers/mtouchxl.cpp9
-rw-r--r--src/mame/drivers/murogem.cpp2
-rw-r--r--src/mame/drivers/murogmbl.cpp4
-rw-r--r--src/mame/drivers/mvme147.cpp7
-rw-r--r--src/mame/drivers/myb3k.cpp11
-rw-r--r--src/mame/drivers/mycom.cpp7
-rw-r--r--src/mame/drivers/mz2000.cpp7
-rw-r--r--src/mame/drivers/mz2500.cpp7
-rw-r--r--src/mame/drivers/mz3500.cpp7
-rw-r--r--src/mame/drivers/mz6500.cpp7
-rw-r--r--src/mame/drivers/mzr8105.cpp7
-rw-r--r--src/mame/drivers/namcos1.cpp4
-rw-r--r--src/mame/drivers/nanos.cpp7
-rw-r--r--src/mame/drivers/nbmj8688.cpp4
-rw-r--r--src/mame/drivers/nbmj8891.cpp2
-rw-r--r--src/mame/drivers/nbmj8900.cpp2
-rw-r--r--src/mame/drivers/nbmj8991.cpp6
-rw-r--r--src/mame/drivers/nbmj9195.cpp4
-rw-r--r--src/mame/drivers/nc.cpp7
-rw-r--r--src/mame/drivers/next.cpp20
-rw-r--r--src/mame/drivers/ngen.cpp14
-rw-r--r--src/mame/drivers/ngp.cpp4
-rw-r--r--src/mame/drivers/nightgal.cpp2
-rw-r--r--src/mame/drivers/notetaker.cpp9
-rw-r--r--src/mame/drivers/novagmcs48.cpp2
-rw-r--r--src/mame/drivers/nycaptor.cpp6
-rw-r--r--src/mame/drivers/nyny.cpp2
-rw-r--r--src/mame/drivers/octopus.cpp35
-rw-r--r--src/mame/drivers/olyboss.cpp21
-rw-r--r--src/mame/drivers/oric.cpp7
-rw-r--r--src/mame/drivers/orion.cpp7
-rw-r--r--src/mame/drivers/osbexec.cpp7
-rw-r--r--src/mame/drivers/osborne1.cpp31
-rw-r--r--src/mame/drivers/osi.cpp7
-rw-r--r--src/mame/drivers/othello.cpp2
-rw-r--r--src/mame/drivers/p8k.cpp7
-rw-r--r--src/mame/drivers/palm.cpp2
-rw-r--r--src/mame/drivers/pandoras.cpp2
-rw-r--r--src/mame/drivers/partner.cpp7
-rw-r--r--src/mame/drivers/pasopia7.cpp7
-rw-r--r--src/mame/drivers/pastelg.cpp4
-rw-r--r--src/mame/drivers/pc100.cpp7
-rw-r--r--src/mame/drivers/pc1512.cpp14
-rw-r--r--src/mame/drivers/pc8801.cpp7
-rw-r--r--src/mame/drivers/pc88va.cpp7
-rw-r--r--src/mame/drivers/pc9801.cpp37
-rw-r--r--src/mame/drivers/pcat_dyn.cpp18
-rw-r--r--src/mame/drivers/pcd.cpp9
-rw-r--r--src/mame/drivers/pce.cpp15
-rw-r--r--src/mame/drivers/pcw.cpp7
-rw-r--r--src/mame/drivers/pcw16.cpp14
-rw-r--r--src/mame/drivers/pcxt.cpp9
-rw-r--r--src/mame/drivers/peoplepc.cpp16
-rw-r--r--src/mame/drivers/pet.cpp7
-rw-r--r--src/mame/drivers/pg685.cpp14
-rw-r--r--src/mame/drivers/pimps.cpp2
-rw-r--r--src/mame/drivers/pipbug.cpp2
-rw-r--r--src/mame/drivers/pk8020.cpp7
-rw-r--r--src/mame/drivers/plus4.cpp9
-rw-r--r--src/mame/drivers/pockstat.cpp2
-rw-r--r--src/mame/drivers/polepos.cpp2
-rw-r--r--src/mame/drivers/pong.cpp6
-rw-r--r--src/mame/drivers/popeye.cpp6
-rw-r--r--src/mame/drivers/ppmast93.cpp2
-rw-r--r--src/mame/drivers/prof180x.cpp7
-rw-r--r--src/mame/drivers/prof80.cpp7
-rw-r--r--src/mame/drivers/proteus.cpp7
-rw-r--r--src/mame/drivers/pt68k4.cpp28
-rw-r--r--src/mame/drivers/pulsar.cpp9
-rw-r--r--src/mame/drivers/pwrview.cpp7
-rw-r--r--src/mame/drivers/pyl601.cpp7
-rw-r--r--src/mame/drivers/qtsbc.cpp2
-rw-r--r--src/mame/drivers/quantum.cpp4
-rw-r--r--src/mame/drivers/quasar.cpp2
-rw-r--r--src/mame/drivers/quizshow.cpp2
-rw-r--r--src/mame/drivers/qx10.cpp14
-rw-r--r--src/mame/drivers/rainbow.cpp13
-rw-r--r--src/mame/drivers/rastersp.cpp15
-rw-r--r--src/mame/drivers/rc702.cpp7
-rw-r--r--src/mame/drivers/rc759.cpp7
-rw-r--r--src/mame/drivers/replicator.cpp2
-rw-r--r--src/mame/drivers/risc2500.cpp2
-rw-r--r--src/mame/drivers/rltennis.cpp4
-rw-r--r--src/mame/drivers/rm380z.cpp7
-rw-r--r--src/mame/drivers/rmnimbus.cpp14
-rw-r--r--src/mame/drivers/route16.cpp2
-rw-r--r--src/mame/drivers/rowamet.cpp2
-rw-r--r--src/mame/drivers/royalmah.cpp2
-rw-r--r--src/mame/drivers/s11.cpp4
-rw-r--r--src/mame/drivers/s11a.cpp4
-rw-r--r--src/mame/drivers/s11b.cpp4
-rw-r--r--src/mame/drivers/s3.cpp2
-rw-r--r--src/mame/drivers/s4.cpp2
-rw-r--r--src/mame/drivers/s6.cpp2
-rw-r--r--src/mame/drivers/s6a.cpp2
-rw-r--r--src/mame/drivers/s7.cpp2
-rw-r--r--src/mame/drivers/s8.cpp2
-rw-r--r--src/mame/drivers/s8a.cpp2
-rw-r--r--src/mame/drivers/s9.cpp2
-rw-r--r--src/mame/drivers/sage2.cpp9
-rw-r--r--src/mame/drivers/samcoupe.cpp7
-rw-r--r--src/mame/drivers/sapi1.cpp2
-rw-r--r--src/mame/drivers/saturn.cpp19
-rw-r--r--src/mame/drivers/savquest.cpp7
-rw-r--r--src/mame/drivers/sbasketb.cpp2
-rw-r--r--src/mame/drivers/sbrain.cpp7
-rw-r--r--src/mame/drivers/sbrkout.cpp2
-rw-r--r--src/mame/drivers/scv.cpp19
-rw-r--r--src/mame/drivers/scyclone.cpp8
-rw-r--r--src/mame/drivers/sdk80.cpp2
-rw-r--r--src/mame/drivers/sdk86.cpp2
-rw-r--r--src/mame/drivers/seattlecmp.cpp2
-rw-r--r--src/mame/drivers/segapico.cpp22
-rw-r--r--src/mame/drivers/segas16a.cpp2
-rw-r--r--src/mame/drivers/segas24.cpp2
-rw-r--r--src/mame/drivers/seicross.cpp2
-rw-r--r--src/mame/drivers/senjyo.cpp2
-rw-r--r--src/mame/drivers/sg1000.cpp7
-rw-r--r--src/mame/drivers/shangkid.cpp2
-rw-r--r--src/mame/drivers/shisen.cpp2
-rw-r--r--src/mame/drivers/sitcom.cpp6
-rw-r--r--src/mame/drivers/slicer.cpp9
-rw-r--r--src/mame/drivers/smc777.cpp7
-rw-r--r--src/mame/drivers/snk6502.cpp2
-rw-r--r--src/mame/drivers/softbox.cpp2
-rw-r--r--src/mame/drivers/sorcerer.cpp2
-rw-r--r--src/mame/drivers/spc1000.cpp9
-rw-r--r--src/mame/drivers/special.cpp11
-rw-r--r--src/mame/drivers/specpls3.cpp7
-rw-r--r--src/mame/drivers/squale.cpp7
-rw-r--r--src/mame/drivers/ssozumo.cpp2
-rw-r--r--src/mame/drivers/sun3x.cpp7
-rw-r--r--src/mame/drivers/sun4.cpp22
-rw-r--r--src/mame/drivers/suna16.cpp24
-rw-r--r--src/mame/drivers/suna8.cpp8
-rw-r--r--src/mame/drivers/super6.cpp9
-rw-r--r--src/mame/drivers/super80.cpp7
-rw-r--r--src/mame/drivers/superslave.cpp2
-rw-r--r--src/mame/drivers/swtpc09.cpp19
-rw-r--r--src/mame/drivers/sys9002.cpp4
-rw-r--r--src/mame/drivers/tagteam.cpp2
-rw-r--r--src/mame/drivers/taito.cpp2
-rw-r--r--src/mame/drivers/taitogn.cpp13
-rw-r--r--src/mame/drivers/taitosj.cpp2
-rw-r--r--src/mame/drivers/tandy2k.cpp7
-rw-r--r--src/mame/drivers/tavernie.cpp7
-rw-r--r--src/mame/drivers/tceptor.cpp2
-rw-r--r--src/mame/drivers/tdv2324.cpp7
-rw-r--r--src/mame/drivers/terracre.cpp4
-rw-r--r--src/mame/drivers/testconsole.cpp8
-rw-r--r--src/mame/drivers/thomson.cpp17
-rw-r--r--src/mame/drivers/tiki100.cpp11
-rw-r--r--src/mame/drivers/tim011.cpp7
-rw-r--r--src/mame/drivers/tim100.cpp4
-rw-r--r--src/mame/drivers/tnzs.cpp2
-rw-r--r--src/mame/drivers/trackfld.cpp4
-rw-r--r--src/mame/drivers/tranz330.cpp10
-rw-r--r--src/mame/drivers/tricep.cpp2
-rw-r--r--src/mame/drivers/trs80.cpp7
-rw-r--r--src/mame/drivers/trs80m2.cpp9
-rw-r--r--src/mame/drivers/truco.cpp2
-rw-r--r--src/mame/drivers/trucocl.cpp2
-rw-r--r--src/mame/drivers/ts802.cpp7
-rw-r--r--src/mame/drivers/ts803.cpp7
-rw-r--r--src/mame/drivers/tsamurai.cpp10
-rw-r--r--src/mame/drivers/tsispch.cpp2
-rw-r--r--src/mame/drivers/turrett.cpp7
-rw-r--r--src/mame/drivers/tvc.cpp7
-rw-r--r--src/mame/drivers/unixpc.cpp7
-rw-r--r--src/mame/drivers/ut88.cpp2
-rw-r--r--src/mame/drivers/v1050.cpp9
-rw-r--r--src/mame/drivers/v6809.cpp7
-rw-r--r--src/mame/drivers/vboy.cpp11
-rw-r--r--src/mame/drivers/vc4000.cpp13
-rw-r--r--src/mame/drivers/vcombat.cpp4
-rw-r--r--src/mame/drivers/vector06.cpp7
-rw-r--r--src/mame/drivers/vectrex.cpp13
-rw-r--r--src/mame/drivers/vg5k.cpp2
-rw-r--r--src/mame/drivers/vidbrain.cpp2
-rw-r--r--src/mame/drivers/videopkr.cpp2
-rw-r--r--src/mame/drivers/vigilant.cpp6
-rw-r--r--src/mame/drivers/vis.cpp13
-rw-r--r--src/mame/drivers/vixen.cpp7
-rw-r--r--src/mame/drivers/wangpc.cpp7
-rw-r--r--src/mame/drivers/wheelfir.cpp4
-rw-r--r--src/mame/drivers/wicat.cpp7
-rw-r--r--src/mame/drivers/wildpkr.cpp2
-rw-r--r--src/mame/drivers/williams.cpp8
-rw-r--r--src/mame/drivers/wmg.cpp2
-rw-r--r--src/mame/drivers/wswan.cpp11
-rw-r--r--src/mame/drivers/wyvernf0.cpp2
-rw-r--r--src/mame/drivers/x1.cpp7
-rw-r--r--src/mame/drivers/x1twin.cpp7
-rw-r--r--src/mame/drivers/x68k.cpp25
-rw-r--r--src/mame/drivers/xbox.cpp18
-rw-r--r--src/mame/drivers/xerox820.cpp15
-rw-r--r--src/mame/drivers/xor100.cpp14
-rw-r--r--src/mame/drivers/xtheball.cpp2
-rw-r--r--src/mame/drivers/z100.cpp7
-rw-r--r--src/mame/drivers/z80ne.cpp7
-rw-r--r--src/mame/drivers/z88.cpp21
-rw-r--r--src/mame/drivers/zorba.cpp33
-rw-r--r--src/mame/includes/amstrad.h4
-rw-r--r--src/mame/includes/coco.h2
-rw-r--r--src/mame/machine/acs8600_ics.cpp2
-rw-r--r--src/mame/machine/apollo.cpp13
-rw-r--r--src/mame/machine/beta.cpp7
-rw-r--r--src/mame/machine/inder_sb.cpp16
-rw-r--r--src/mame/machine/isbc_208.cpp9
-rw-r--r--src/mame/machine/mega32x.cpp8
-rw-r--r--src/mame/machine/victor9k_fdc.cpp9
-rw-r--r--src/mame/video/k053246_k053247_k055673.cpp2
-rw-r--r--src/mame/video/k053246_k053247_k055673.h2
866 files changed, 5451 insertions, 4772 deletions
diff --git a/src/devices/bus/a2bus/a2diskiing.cpp b/src/devices/bus/a2bus/a2diskiing.cpp
index 0a9439bfc30..5459c4249ce 100644
--- a/src/devices/bus/a2bus/a2diskiing.cpp
+++ b/src/devices/bus/a2bus/a2diskiing.cpp
@@ -27,9 +27,10 @@ DEFINE_DEVICE_TYPE(A2BUS_DISKIING13, a2bus_diskiing13_device, "diskii13", "Apple
#define WOZFDC_TAG "wozfdc"
#define DISKII_ROM_REGION "diskii_rom"
-static SLOT_INTERFACE_START( a2_floppies )
- SLOT_INTERFACE( "525", FLOPPY_525_SD )
-SLOT_INTERFACE_END
+static void a2_floppies(device_slot_interface &device)
+{
+ device.option_add("525", FLOPPY_525_SD);
+}
ROM_START( diskiing )
ROM_REGION(0x100, DISKII_ROM_REGION, 0)
diff --git a/src/devices/bus/a2bus/a2dx1.cpp b/src/devices/bus/a2bus/a2dx1.cpp
index d2899aa8bda..d41cd92a89e 100644
--- a/src/devices/bus/a2bus/a2dx1.cpp
+++ b/src/devices/bus/a2bus/a2dx1.cpp
@@ -35,9 +35,9 @@ MACHINE_CONFIG_START(a2bus_dx1_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
MCFG_SOUND_ADD("dacvol", DAC_8BIT_R2R, 0) // unknown DAC
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dacvol", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE(0, "dacvol", 1.0, DAC_VREF_POS_INPUT)
MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/devices/bus/a2bus/a2hsscsi.cpp b/src/devices/bus/a2bus/a2hsscsi.cpp
index 9973ea9e600..82abf6fb342 100644
--- a/src/devices/bus/a2bus/a2hsscsi.cpp
+++ b/src/devices/bus/a2bus/a2hsscsi.cpp
@@ -65,11 +65,12 @@ void a2bus_hsscsi_device::ncr5380(device_t *device)
MCFG_NCR5380N_DRQ_HANDLER(DEVWRITELINE("^^", a2bus_hsscsi_device, drq_w))
}
-static SLOT_INTERFACE_START( hsscsi_devices )
- SLOT_INTERFACE("cdrom", NSCSI_CDROM)
- SLOT_INTERFACE("harddisk", NSCSI_HARDDISK)
- SLOT_INTERFACE_INTERNAL("ncr5380", NCR5380N)
-SLOT_INTERFACE_END
+static void hsscsi_devices(device_slot_interface &device)
+{
+ device.option_add("cdrom", NSCSI_CDROM);
+ device.option_add("harddisk", NSCSI_HARDDISK);
+ device.option_add_internal("ncr5380", NCR5380N);
+}
ROM_START( hsscsi )
ROM_REGION(0x8000, SCSI_ROM_REGION, 0)
@@ -94,7 +95,7 @@ MACHINE_CONFIG_START(a2bus_hsscsi_device::device_add_mconfig)
MCFG_NSCSI_ADD("scsibus:5", hsscsi_devices, nullptr, false)
MCFG_NSCSI_ADD("scsibus:6", hsscsi_devices, "harddisk", false)
MCFG_NSCSI_ADD("scsibus:7", hsscsi_devices, "ncr5380", true)
- MCFG_DEVICE_CARD_MACHINE_CONFIG("ncr5380", ncr5380)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr5380", ncr5380)
MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/devices/bus/a2bus/a2sam.cpp b/src/devices/bus/a2bus/a2sam.cpp
index 1a3758d2109..72b70433007 100644
--- a/src/devices/bus/a2bus/a2sam.cpp
+++ b/src/devices/bus/a2bus/a2sam.cpp
@@ -35,7 +35,7 @@ MACHINE_CONFIG_START(a2bus_sam_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/devices/bus/a2bus/a2scsi.cpp b/src/devices/bus/a2bus/a2scsi.cpp
index c7706066d5e..2cfd5c0f364 100644
--- a/src/devices/bus/a2bus/a2scsi.cpp
+++ b/src/devices/bus/a2bus/a2scsi.cpp
@@ -58,11 +58,12 @@ void a2bus_scsi_device::ncr5380(device_t *device)
MCFG_NCR5380N_DRQ_HANDLER(DEVWRITELINE("^^", a2bus_scsi_device, drq_w))
}
-static SLOT_INTERFACE_START( scsi_devices )
- SLOT_INTERFACE("cdrom", NSCSI_CDROM)
- SLOT_INTERFACE("harddisk", NSCSI_HARDDISK)
- SLOT_INTERFACE_INTERNAL("ncr5380", NCR5380N)
-SLOT_INTERFACE_END
+static void scsi_devices(device_slot_interface &device)
+{
+ device.option_add("cdrom", NSCSI_CDROM);
+ device.option_add("harddisk", NSCSI_HARDDISK);
+ device.option_add_internal("ncr5380", NCR5380N);
+}
ROM_START( scsi )
ROM_REGION(0x4000, SCSI_ROM_REGION, 0) // this is the Rev. C ROM
@@ -87,7 +88,7 @@ MACHINE_CONFIG_START(a2bus_scsi_device::device_add_mconfig)
MCFG_NSCSI_ADD("scsibus:5", scsi_devices, nullptr, false)
MCFG_NSCSI_ADD("scsibus:6", scsi_devices, "harddisk", false)
MCFG_NSCSI_ADD("scsibus:7", scsi_devices, "ncr5380", true)
- MCFG_DEVICE_CARD_MACHINE_CONFIG("ncr5380", ncr5380)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr5380", ncr5380)
MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/devices/bus/a2bus/corvfdc01.cpp b/src/devices/bus/a2bus/corvfdc01.cpp
index 6b4ff3ed08d..10657674e04 100644
--- a/src/devices/bus/a2bus/corvfdc01.cpp
+++ b/src/devices/bus/a2bus/corvfdc01.cpp
@@ -31,9 +31,10 @@ FLOPPY_FORMATS_MEMBER( a2bus_corvfdc01_device::corv_floppy_formats )
FLOPPY_IMD_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( corv_floppies )
- SLOT_INTERFACE( "8sssd", FLOPPY_8_SSSD )
-SLOT_INTERFACE_END
+static void corv_floppies(device_slot_interface &device)
+{
+ device.option_add("8sssd", FLOPPY_8_SSSD);
+}
ROM_START( fdc01 )
ROM_REGION(0x20, FDC01_ROM_REGION, 0)
diff --git a/src/devices/bus/a2bus/corvfdc02.cpp b/src/devices/bus/a2bus/corvfdc02.cpp
index e4eb116d220..3367d18384e 100644
--- a/src/devices/bus/a2bus/corvfdc02.cpp
+++ b/src/devices/bus/a2bus/corvfdc02.cpp
@@ -34,9 +34,10 @@ FLOPPY_FORMATS_MEMBER( a2bus_corvfdc02_device::corv_floppy_formats )
FLOPPY_IMD_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( corv_floppies )
- SLOT_INTERFACE( "525dsqd", FLOPPY_525_QD )
-SLOT_INTERFACE_END
+static void corv_floppies(device_slot_interface &device)
+{
+ device.option_add("525dsqd", FLOPPY_525_QD);
+}
ROM_START( fdc02 )
ROM_REGION(0x20, FDC02_ROM_REGION, 0)
diff --git a/src/devices/bus/a7800/a78_carts.h b/src/devices/bus/a7800/a78_carts.h
index dc9abffbbe2..0a87249f3c0 100644
--- a/src/devices/bus/a7800/a78_carts.h
+++ b/src/devices/bus/a7800/a78_carts.h
@@ -10,31 +10,32 @@
#include "hiscore.h"
#include "cpuwiz.h"
-static SLOT_INTERFACE_START(a7800_cart)
- SLOT_INTERFACE_INTERNAL("a78_rom", A78_ROM)
- SLOT_INTERFACE_INTERNAL("a78_pokey", A78_ROM_POKEY)
- SLOT_INTERFACE_INTERNAL("a78_sg", A78_ROM_SG)
- SLOT_INTERFACE_INTERNAL("a78_sg_pokey", A78_ROM_SG_POKEY)
- SLOT_INTERFACE_INTERNAL("a78_sg_ram", A78_ROM_SG_RAM)
- SLOT_INTERFACE_INTERNAL("a78_sg9", A78_ROM_SG9)
- SLOT_INTERFACE_INTERNAL("a78_mram", A78_ROM_MRAM)
- SLOT_INTERFACE_INTERNAL("a78_abs", A78_ROM_ABSOLUTE)
- SLOT_INTERFACE_INTERNAL("a78_act", A78_ROM_ACTIVISION)
- SLOT_INTERFACE_INTERNAL("a78_hsc", A78_HISCORE)
- SLOT_INTERFACE_INTERNAL("a78_xboard", A78_XBOARD) // the actual XBoarD expansion (as passthru)
- SLOT_INTERFACE_INTERNAL("a78_xm", A78_XM) // the actual XM expansion (as passthru)
- SLOT_INTERFACE_INTERNAL("a78_megacart", A78_ROM_MEGACART)
- SLOT_INTERFACE_INTERNAL("a78_versa", A78_ROM_VERSABOARD)
+static void a7800_cart(device_slot_interface &device)
+{
+ device.option_add_internal("a78_rom", A78_ROM);
+ device.option_add_internal("a78_pokey", A78_ROM_POKEY);
+ device.option_add_internal("a78_sg", A78_ROM_SG);
+ device.option_add_internal("a78_sg_pokey", A78_ROM_SG_POKEY);
+ device.option_add_internal("a78_sg_ram", A78_ROM_SG_RAM);
+ device.option_add_internal("a78_sg9", A78_ROM_SG9);
+ device.option_add_internal("a78_mram", A78_ROM_MRAM);
+ device.option_add_internal("a78_abs", A78_ROM_ABSOLUTE);
+ device.option_add_internal("a78_act", A78_ROM_ACTIVISION);
+ device.option_add_internal("a78_hsc", A78_HISCORE);
+ device.option_add_internal("a78_xboard", A78_XBOARD); // the actual XBoarD expansion (as passthru)
+ device.option_add_internal("a78_xm", A78_XM); // the actual XM expansion (as passthru)
+ device.option_add_internal("a78_megacart", A78_ROM_MEGACART);
+ device.option_add_internal("a78_versa", A78_ROM_VERSABOARD);
// cart variants with a POKEY at 0x0450 (typically a VersaBoard variant, or an homebrew pcb)
- SLOT_INTERFACE_INTERNAL("a78_p450_t0", A78_ROM_P450)
- SLOT_INTERFACE_INTERNAL("a78_p450_t1", A78_ROM_P450_POKEY)
- SLOT_INTERFACE_INTERNAL("a78_p450_t6", A78_ROM_P450_SG_RAM)
- SLOT_INTERFACE_INTERNAL("a78_p450_ta", A78_ROM_P450_SG9)
- SLOT_INTERFACE_INTERNAL("a78_p450_vb", A78_ROM_P450_VB)
-SLOT_INTERFACE_END
+ device.option_add_internal("a78_p450_t0", A78_ROM_P450);
+ device.option_add_internal("a78_p450_t1", A78_ROM_P450_POKEY);
+ device.option_add_internal("a78_p450_t6", A78_ROM_P450_SG_RAM);
+ device.option_add_internal("a78_p450_ta", A78_ROM_P450_SG9);
+ device.option_add_internal("a78_p450_vb", A78_ROM_P450_VB);
+}
// supported devices
-SLOT_INTERFACE_EXTERN(a78_cart);
+void a78_cart(device_slot_interface &device);
#endif // MAME_BUS_A7800_A78_CARTS_H
diff --git a/src/devices/bus/a800/a800_carts.h b/src/devices/bus/a800/a800_carts.h
index 6d6e68ad6c3..d4ce87f5b54 100644
--- a/src/devices/bus/a800/a800_carts.h
+++ b/src/devices/bus/a800/a800_carts.h
@@ -10,41 +10,45 @@
#include "oss.h"
#include "sparta.h"
-static SLOT_INTERFACE_START(a800_left)
- SLOT_INTERFACE_INTERNAL("a800_8k", A800_ROM)
- SLOT_INTERFACE_INTERNAL("a800_8k_right", A800_ROM)
- SLOT_INTERFACE_INTERNAL("a800_16k", A800_ROM)
- SLOT_INTERFACE_INTERNAL("a800_phoenix", A800_ROM) // not really emulated at this stage
- SLOT_INTERFACE_INTERNAL("a800_bbsb", A800_ROM_BBSB)
- SLOT_INTERFACE_INTERNAL("a800_oss8k", A800_ROM_OSS8K)
- SLOT_INTERFACE_INTERNAL("a800_oss034m", A800_ROM_OSS34)
- SLOT_INTERFACE_INTERNAL("a800_oss043m", A800_ROM_OSS43)
- SLOT_INTERFACE_INTERNAL("a800_ossm091", A800_ROM_OSS91)
- SLOT_INTERFACE_INTERNAL("a800_williams", A800_ROM_WILLIAMS)
- SLOT_INTERFACE_INTERNAL("a800_diamond", A800_ROM_EXPRESS)
- SLOT_INTERFACE_INTERNAL("a800_express", A800_ROM_EXPRESS)
- SLOT_INTERFACE_INTERNAL("a800_sparta", A800_ROM_SPARTADOS) // this is a passthru cart with unemulated (atm) subslot
- SLOT_INTERFACE_INTERNAL("a800_blizzard", A800_ROM)
- SLOT_INTERFACE_INTERNAL("a800_turbo64", A800_ROM_TURBO)
- SLOT_INTERFACE_INTERNAL("a800_turbo128", A800_ROM_TURBO)
- SLOT_INTERFACE_INTERNAL("a800_tlink2", A800_ROM_TELELINK2)
- SLOT_INTERFACE_INTERNAL("a800_sitsa", A800_ROM_MICROCALC)
- SLOT_INTERFACE_INTERNAL("a800_corina", A800_ROM) // NOT SUPPORTED YET!
- SLOT_INTERFACE_INTERNAL("xegs", XEGS_ROM)
-SLOT_INTERFACE_END
-
-static SLOT_INTERFACE_START(a800_right)
- SLOT_INTERFACE_INTERNAL("a800_8k_right", A800_ROM)
-SLOT_INTERFACE_END
-
-static SLOT_INTERFACE_START(xegs_carts)
- SLOT_INTERFACE_INTERNAL("xegs", XEGS_ROM)
-SLOT_INTERFACE_END
-
-static SLOT_INTERFACE_START(a5200_carts)
- SLOT_INTERFACE_INTERNAL("a5200", A800_ROM)
- SLOT_INTERFACE_INTERNAL("a5200_2chips", A5200_ROM_2CHIPS)
- SLOT_INTERFACE_INTERNAL("a5200_bbsb", A5200_ROM_BBSB)
-SLOT_INTERFACE_END
+static void a800_left(device_slot_interface &device)
+{
+ device.option_add_internal("a800_8k", A800_ROM);
+ device.option_add_internal("a800_8k_right", A800_ROM);
+ device.option_add_internal("a800_16k", A800_ROM);
+ device.option_add_internal("a800_phoenix", A800_ROM); // not really emulated at this stage
+ device.option_add_internal("a800_bbsb", A800_ROM_BBSB);
+ device.option_add_internal("a800_oss8k", A800_ROM_OSS8K);
+ device.option_add_internal("a800_oss034m", A800_ROM_OSS34);
+ device.option_add_internal("a800_oss043m", A800_ROM_OSS43);
+ device.option_add_internal("a800_ossm091", A800_ROM_OSS91);
+ device.option_add_internal("a800_williams", A800_ROM_WILLIAMS);
+ device.option_add_internal("a800_diamond", A800_ROM_EXPRESS);
+ device.option_add_internal("a800_express", A800_ROM_EXPRESS);
+ device.option_add_internal("a800_sparta", A800_ROM_SPARTADOS); // this is a passthru cart with unemulated (atm) subslot
+ device.option_add_internal("a800_blizzard", A800_ROM);
+ device.option_add_internal("a800_turbo64", A800_ROM_TURBO);
+ device.option_add_internal("a800_turbo128", A800_ROM_TURBO);
+ device.option_add_internal("a800_tlink2", A800_ROM_TELELINK2);
+ device.option_add_internal("a800_sitsa", A800_ROM_MICROCALC);
+ device.option_add_internal("a800_corina", A800_ROM); // NOT SUPPORTED YET!
+ device.option_add_internal("xegs", XEGS_ROM);
+}
+
+static void a800_right(device_slot_interface &device)
+{
+ device.option_add_internal("a800_8k_right", A800_ROM);
+}
+
+static void xegs_carts(device_slot_interface &device)
+{
+ device.option_add_internal("xegs", XEGS_ROM);
+}
+
+static void a5200_carts(device_slot_interface &device)
+{
+ device.option_add_internal("a5200", A800_ROM);
+ device.option_add_internal("a5200_2chips", A5200_ROM_2CHIPS);
+ device.option_add_internal("a5200_bbsb", A5200_ROM_BBSB);
+}
#endif // MAME_BUS_A800_A800_CARTS_H
diff --git a/src/devices/bus/a800/a8sio.cpp b/src/devices/bus/a800/a8sio.cpp
index 0d5d248c11e..c8c7d788e48 100644
--- a/src/devices/bus/a800/a8sio.cpp
+++ b/src/devices/bus/a800/a8sio.cpp
@@ -196,6 +196,7 @@ WRITE_LINE_MEMBER( device_a8sio_card_interface::motor_w )
}
-SLOT_INTERFACE_START(a8sio_cards)
- SLOT_INTERFACE("cassette", A8SIO_CASSETTE)
-SLOT_INTERFACE_END
+void a8sio_cards(device_slot_interface &device)
+{
+ device.option_add("cassette", A8SIO_CASSETTE);
+}
diff --git a/src/devices/bus/a800/a8sio.h b/src/devices/bus/a800/a8sio.h
index 2795295bdc7..448edf5602f 100644
--- a/src/devices/bus/a800/a8sio.h
+++ b/src/devices/bus/a800/a8sio.h
@@ -142,6 +142,6 @@ public:
};
-SLOT_INTERFACE_EXTERN(a8sio_cards);
+void a8sio_cards(device_slot_interface &device);
#endif // MAME_BUS_A800_A8SIO_H
diff --git a/src/devices/bus/abcbus/abc890.cpp b/src/devices/bus/abcbus/abc890.cpp
index d318bc4b19a..8b5eaa07c78 100644
--- a/src/devices/bus/abcbus/abc890.cpp
+++ b/src/devices/bus/abcbus/abc890.cpp
@@ -71,7 +71,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(abc850_device::device_add_mconfig)
MCFG_ABCBUS_SLOT_ADD("io1", abcbus_cards, "abc850fdd")
MCFG_ABCBUS_SLOT_ADD("io2", abcbus_cards, "xebec")
- MCFG_DEVICE_CARD_DEFAULT_BIOS("xebec", "ro202")
+ MCFG_SLOT_OPTION_DEFAULT_BIOS("xebec", "ro202")
MCFG_ABCBUS_SLOT_ADD("io3", abcbus_cards, nullptr)
MCFG_ABCBUS_SLOT_ADD("io4", abcbus_cards, nullptr)
MCFG_ABCBUS_SLOT_ADD("io5", abcbus_cards, nullptr)
@@ -87,7 +87,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(abc852_device::device_add_mconfig)
MCFG_ABCBUS_SLOT_ADD("io1", abcbus_cards, "abc850fdd")
MCFG_ABCBUS_SLOT_ADD("io2", abcbus_cards, "xebec")
- MCFG_DEVICE_CARD_DEFAULT_BIOS("xebec", "basf6185")
+ MCFG_SLOT_OPTION_DEFAULT_BIOS("xebec", "basf6185")
MCFG_ABCBUS_SLOT_ADD("io3", abcbus_cards, nullptr)
MCFG_ABCBUS_SLOT_ADD("io4", abcbus_cards, nullptr)
MCFG_ABCBUS_SLOT_ADD("io5", abcbus_cards, nullptr)
@@ -103,7 +103,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(abc856_device::device_add_mconfig)
MCFG_ABCBUS_SLOT_ADD("io1", abcbus_cards, "abc850fdd")
MCFG_ABCBUS_SLOT_ADD("io2", abcbus_cards, "xebec")
- MCFG_DEVICE_CARD_DEFAULT_BIOS("xebec", "micr1325")
+ MCFG_SLOT_OPTION_DEFAULT_BIOS("xebec", "micr1325")
MCFG_ABCBUS_SLOT_ADD("io3", abcbus_cards, nullptr)
MCFG_ABCBUS_SLOT_ADD("io4", abcbus_cards, nullptr)
MCFG_ABCBUS_SLOT_ADD("io5", abcbus_cards, nullptr)
diff --git a/src/devices/bus/abcbus/abcbus.cpp b/src/devices/bus/abcbus/abcbus.cpp
index 2129140167c..f1a06f343e1 100644
--- a/src/devices/bus/abcbus/abcbus.cpp
+++ b/src/devices/bus/abcbus/abcbus.cpp
@@ -101,51 +101,54 @@ void abcbus_slot_device::device_start()
// SLOT_INTERFACE( abc80_cards )
//-------------------------------------------------
-SLOT_INTERFACE_START( abc80_cards )
- SLOT_INTERFACE("fd2", ABC_FD2)
- SLOT_INTERFACE("memcard", ABC_MEMORY_CARD)
- SLOT_INTERFACE("abcexp", ABC_EXPANSION_UNIT)
- SLOT_INTERFACE("16k", ABC80_16KB_RAM_CARD)
- SLOT_INTERFACE("slow", LUXOR_55_10828)
- SLOT_INTERFACE("abc830", ABC830)
- SLOT_INTERFACE("db411223", DATABOARD_4112_23)
- SLOT_INTERFACE("unidisk", UNIDISK)
- SLOT_INTERFACE("cadabc", ABC_CADMOUSE)
-SLOT_INTERFACE_END
+void abc80_cards(device_slot_interface &device)
+{
+ device.option_add("fd2", ABC_FD2);
+ device.option_add("memcard", ABC_MEMORY_CARD);
+ device.option_add("abcexp", ABC_EXPANSION_UNIT);
+ device.option_add("16k", ABC80_16KB_RAM_CARD);
+ device.option_add("slow", LUXOR_55_10828);
+ device.option_add("abc830", ABC830);
+ device.option_add("db411223", DATABOARD_4112_23);
+ device.option_add("unidisk", UNIDISK);
+ device.option_add("cadabc", ABC_CADMOUSE);
+}
//-------------------------------------------------
// SLOT_INTERFACE( abcbus_cards )
//-------------------------------------------------
-SLOT_INTERFACE_START( abcbus_cards )
- SLOT_INTERFACE("abc830", ABC830)
- SLOT_INTERFACE("abc832", ABC832)
- SLOT_INTERFACE("abc834", ABC834)
- SLOT_INTERFACE("abc838", ABC838)
- SLOT_INTERFACE("abc850", ABC850)
- SLOT_INTERFACE_INTERNAL("abc850fdd", ABC850_FLOPPY)
- SLOT_INTERFACE("abc852", ABC852)
- SLOT_INTERFACE("abc856", ABC856)
- SLOT_INTERFACE("abc890", ABC890)
- SLOT_INTERFACE("abc894", ABC894)
- SLOT_INTERFACE("db411223", DATABOARD_4112_23)
- SLOT_INTERFACE("hdc", ABC_HDC)
- SLOT_INTERFACE("sio", ABC_SIO)
- SLOT_INTERFACE("slow", LUXOR_55_10828)
- SLOT_INTERFACE("uni800", ABC_UNI800)
- SLOT_INTERFACE("unidisk", UNIDISK)
- SLOT_INTERFACE("slutprov", ABC_SLUTPROV)
- SLOT_INTERFACE("xebec", LUXOR_55_21056)
-SLOT_INTERFACE_END
+void abcbus_cards(device_slot_interface &device)
+{
+ device.option_add("abc830", ABC830);
+ device.option_add("abc832", ABC832);
+ device.option_add("abc834", ABC834);
+ device.option_add("abc838", ABC838);
+ device.option_add("abc850", ABC850);
+ device.option_add_internal("abc850fdd", ABC850_FLOPPY);
+ device.option_add("abc852", ABC852);
+ device.option_add("abc856", ABC856);
+ device.option_add("abc890", ABC890);
+ device.option_add("abc894", ABC894);
+ device.option_add("db411223", DATABOARD_4112_23);
+ device.option_add("hdc", ABC_HDC);
+ device.option_add("sio", ABC_SIO);
+ device.option_add("slow", LUXOR_55_10828);
+ device.option_add("uni800", ABC_UNI800);
+ device.option_add("unidisk", UNIDISK);
+ device.option_add("slutprov", ABC_SLUTPROV);
+ device.option_add("xebec", LUXOR_55_21056);
+}
//-------------------------------------------------
// SLOT_INTERFACE( abc1600bus_cards )
//-------------------------------------------------
-SLOT_INTERFACE_START( abc1600bus_cards )
- SLOT_INTERFACE("4105", LUXOR_4105) // SASI interface
-// SLOT_INTERFACE("4077", LUXOR_4077) // Winchester controller
-// SLOT_INTERFACE("4004", LUXOR_4004) // ICOM I/O (Z80, Z80PIO, Z80SIO/2, Z80CTC, 2 Z80DMAs, 2 PROMs, 64KB RAM)
-SLOT_INTERFACE_END
+void abc1600bus_cards(device_slot_interface &device)
+{
+ device.option_add("4105", LUXOR_4105); // SASI interface
+// device.option_add("4077", LUXOR_4077); // Winchester controller
+// device.option_add("4004", LUXOR_4004); // ICOM I/O (Z80, Z80PIO, Z80SIO/2, Z80CTC, 2 Z80DMAs, 2 PROMs, 64KB RAM)
+}
diff --git a/src/devices/bus/abcbus/abcbus.h b/src/devices/bus/abcbus/abcbus.h
index aee0c75c2fc..4556bf8ba6c 100644
--- a/src/devices/bus/abcbus/abcbus.h
+++ b/src/devices/bus/abcbus/abcbus.h
@@ -307,9 +307,9 @@ protected:
DECLARE_DEVICE_TYPE(ABCBUS_SLOT, abcbus_slot_device)
-SLOT_INTERFACE_EXTERN( abc80_cards );
-SLOT_INTERFACE_EXTERN( abcbus_cards );
-SLOT_INTERFACE_EXTERN( abc1600bus_cards );
+void abc80_cards(device_slot_interface &device);
+void abcbus_cards(device_slot_interface &device);
+void abc1600bus_cards(device_slot_interface &device);
typedef device_type_iterator<abcbus_slot_device> abcbus_slot_device_iterator;
diff --git a/src/devices/bus/abcbus/fd2.cpp b/src/devices/bus/abcbus/fd2.cpp
index 35cfe35dc12..7783a69242a 100644
--- a/src/devices/bus/abcbus/fd2.cpp
+++ b/src/devices/bus/abcbus/fd2.cpp
@@ -223,9 +223,10 @@ static const z80_daisy_config daisy_chain[] =
// SLOT_INTERFACE( abc_fd2_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( abc_fd2_floppies )
- SLOT_INTERFACE( "525sssd", FLOPPY_525_SSSD )
-SLOT_INTERFACE_END
+static void abc_fd2_floppies(device_slot_interface &device)
+{
+ device.option_add("525sssd", FLOPPY_525_SSSD);
+}
FLOPPY_FORMATS_MEMBER( abc_fd2_device::floppy_formats )
FLOPPY_ABC_FD2_FORMAT
diff --git a/src/devices/bus/abcbus/lux10828.cpp b/src/devices/bus/abcbus/lux10828.cpp
index 6928460267e..c20305dfa3c 100644
--- a/src/devices/bus/abcbus/lux10828.cpp
+++ b/src/devices/bus/abcbus/lux10828.cpp
@@ -287,13 +287,14 @@ static const z80_daisy_config daisy_chain[] =
{ nullptr }
};
-static SLOT_INTERFACE_START( abc_floppies )
- SLOT_INTERFACE( "525sssd", FLOPPY_525_SSSD )
- SLOT_INTERFACE( "525sd", FLOPPY_525_SD )
- SLOT_INTERFACE( "525ssdd", FLOPPY_525_SSDD )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
- SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD )
-SLOT_INTERFACE_END
+static void abc_floppies(device_slot_interface &device)
+{
+ device.option_add("525sssd", FLOPPY_525_SSSD);
+ device.option_add("525sd", FLOPPY_525_SD);
+ device.option_add("525ssdd", FLOPPY_525_SSDD);
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("8dsdd", FLOPPY_8_DSDD);
+}
FLOPPY_FORMATS_MEMBER( luxor_55_10828_device::floppy_formats )
FLOPPY_ABC800_FORMAT
diff --git a/src/devices/bus/abcbus/lux21046.cpp b/src/devices/bus/abcbus/lux21046.cpp
index cecbf5a396e..8ae0cef2e4a 100644
--- a/src/devices/bus/abcbus/lux21046.cpp
+++ b/src/devices/bus/abcbus/lux21046.cpp
@@ -256,14 +256,15 @@ FLOPPY_FORMATS_MEMBER( luxor_55_21046_device::floppy_formats )
FLOPPY_ABC800_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( abc_floppies )
- SLOT_INTERFACE( "525sssd", FLOPPY_525_SSSD )
- SLOT_INTERFACE( "525sd", FLOPPY_525_SD )
- SLOT_INTERFACE( "525ssdd", FLOPPY_525_SSDD )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
- SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD )
-SLOT_INTERFACE_END
+static void abc_floppies(device_slot_interface &device)
+{
+ device.option_add("525sssd", FLOPPY_525_SSSD);
+ device.option_add("525sd", FLOPPY_525_SD);
+ device.option_add("525ssdd", FLOPPY_525_SSDD);
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("525qd", FLOPPY_525_QD);
+ device.option_add("8dsdd", FLOPPY_8_DSDD);
+}
WRITE_LINE_MEMBER( luxor_55_21046_device::fdc_intrq_w )
{
diff --git a/src/devices/bus/abckb/abckb.cpp b/src/devices/bus/abckb/abckb.cpp
index ef15661ae42..f851deeffb8 100644
--- a/src/devices/bus/abckb/abckb.cpp
+++ b/src/devices/bus/abckb/abckb.cpp
@@ -142,9 +142,10 @@ WRITE_LINE_MEMBER( abc_keyboard_port_device::keydown_w )
#include "abc77.h"
#include "abc99.h"
-SLOT_INTERFACE_START( abc_keyboard_devices )
- SLOT_INTERFACE("abc800", ABC800_KEYBOARD)
- SLOT_INTERFACE("abc55", ABC55)
- SLOT_INTERFACE("abc77", ABC77)
- SLOT_INTERFACE("abc99", ABC99)
-SLOT_INTERFACE_END
+void abc_keyboard_devices(device_slot_interface &device)
+{
+ device.option_add("abc800", ABC800_KEYBOARD);
+ device.option_add("abc55", ABC55);
+ device.option_add("abc77", ABC77);
+ device.option_add("abc99", ABC99);
+}
diff --git a/src/devices/bus/abckb/abckb.h b/src/devices/bus/abckb/abckb.h
index 73c62ac6a0e..2f1256299ba 100644
--- a/src/devices/bus/abckb/abckb.h
+++ b/src/devices/bus/abckb/abckb.h
@@ -89,6 +89,6 @@ DECLARE_DEVICE_TYPE(ABC_KEYBOARD_PORT, abc_keyboard_port_device)
// supported devices
-SLOT_INTERFACE_EXTERN( abc_keyboard_devices );
+void abc_keyboard_devices(device_slot_interface &device);
#endif // MAME_BUS_ABCKB_ABCKB_H
diff --git a/src/devices/bus/adam/exp.cpp b/src/devices/bus/adam/exp.cpp
index 5c4b24481d7..c9d529a68ab 100644
--- a/src/devices/bus/adam/exp.cpp
+++ b/src/devices/bus/adam/exp.cpp
@@ -156,24 +156,27 @@ void adam_expansion_slot_device::bd_w(address_space &space, offs_t offset, uint8
// SLOT_INTERFACE( adam_slot1_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( adam_slot1_devices )
- SLOT_INTERFACE("adamlink", ADAMLINK)
-SLOT_INTERFACE_END
+void adam_slot1_devices(device_slot_interface &device)
+{
+ device.option_add("adamlink", ADAMLINK);
+}
//-------------------------------------------------
// SLOT_INTERFACE( adam_slot2_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( adam_slot2_devices )
- SLOT_INTERFACE("ide", ADAM_IDE)
-SLOT_INTERFACE_END
+void adam_slot2_devices(device_slot_interface &device)
+{
+ device.option_add("ide", ADAM_IDE);
+}
//-------------------------------------------------
// SLOT_INTERFACE( adam_slot3_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( adam_slot3_devices )
- SLOT_INTERFACE("ram", ADAM_RAM)
-SLOT_INTERFACE_END
+void adam_slot3_devices(device_slot_interface &device)
+{
+ device.option_add("ram", ADAM_RAM);
+}
diff --git a/src/devices/bus/adam/exp.h b/src/devices/bus/adam/exp.h
index e59ea191ab4..9743577e7ec 100644
--- a/src/devices/bus/adam/exp.h
+++ b/src/devices/bus/adam/exp.h
@@ -116,8 +116,8 @@ protected:
DECLARE_DEVICE_TYPE(ADAM_EXPANSION_SLOT, adam_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( adam_slot1_devices );
-SLOT_INTERFACE_EXTERN( adam_slot2_devices );
-SLOT_INTERFACE_EXTERN( adam_slot3_devices );
+void adam_slot1_devices(device_slot_interface &device);
+void adam_slot2_devices(device_slot_interface &device);
+void adam_slot3_devices(device_slot_interface &device);
#endif // MAME_BUS_ADAM_EXP_H
diff --git a/src/devices/bus/adamnet/adamnet.cpp b/src/devices/bus/adamnet/adamnet.cpp
index 832ea2309c4..7e45a72adca 100644
--- a/src/devices/bus/adamnet/adamnet.cpp
+++ b/src/devices/bus/adamnet/adamnet.cpp
@@ -257,10 +257,11 @@ WRITE_LINE_MEMBER( adamnet_device::reset_w )
#include "printer.h"
#include "spi.h"
-SLOT_INTERFACE_START( adamnet_devices )
- SLOT_INTERFACE("ddp", ADAM_DDP)
- SLOT_INTERFACE("fdc", ADAM_FDC)
- SLOT_INTERFACE("kb", ADAM_KB)
- SLOT_INTERFACE("prn", ADAM_PRN)
- SLOT_INTERFACE("spi", ADAM_SPI)
-SLOT_INTERFACE_END
+void adamnet_devices(device_slot_interface &device)
+{
+ device.option_add("ddp", ADAM_DDP);
+ device.option_add("fdc", ADAM_FDC);
+ device.option_add("kb", ADAM_KB);
+ device.option_add("prn", ADAM_PRN);
+ device.option_add("spi", ADAM_SPI);
+}
diff --git a/src/devices/bus/adamnet/adamnet.h b/src/devices/bus/adamnet/adamnet.h
index 76e42742f1c..b95fca7585d 100644
--- a/src/devices/bus/adamnet/adamnet.h
+++ b/src/devices/bus/adamnet/adamnet.h
@@ -127,8 +127,6 @@ DECLARE_DEVICE_TYPE(ADAMNET, adamnet_device)
DECLARE_DEVICE_TYPE(ADAMNET_SLOT, adamnet_slot_device)
-SLOT_INTERFACE_EXTERN( adamnet_devices );
-
-
+void adamnet_devices(device_slot_interface &device);
#endif // MAME_BUS_ADAMNET_ADAMNET_H
diff --git a/src/devices/bus/adamnet/fdc.cpp b/src/devices/bus/adamnet/fdc.cpp
index 00b0d4c64de..68d6b377062 100644
--- a/src/devices/bus/adamnet/fdc.cpp
+++ b/src/devices/bus/adamnet/fdc.cpp
@@ -117,9 +117,10 @@ FLOPPY_FORMATS_MEMBER( adam_fdc_device::floppy_formats )
FLOPPY_ADAM_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( adam_fdc_floppies )
- SLOT_INTERFACE( "525ssdd", FLOPPY_525_SSDD )
-SLOT_INTERFACE_END
+static void adam_fdc_floppies(device_slot_interface &device)
+{
+ device.option_add("525ssdd", FLOPPY_525_SSDD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/amiga/keyboard/keyboard.cpp b/src/devices/bus/amiga/keyboard/keyboard.cpp
index 8d617350296..c3669743caa 100644
--- a/src/devices/bus/amiga/keyboard/keyboard.cpp
+++ b/src/devices/bus/amiga/keyboard/keyboard.cpp
@@ -104,16 +104,17 @@ device_amiga_keyboard_interface::~device_amiga_keyboard_interface()
// SLOT INTERFACE
//**************************************************************************
-SLOT_INTERFACE_START( amiga_keyboard_devices )
- SLOT_INTERFACE("a500_us", A500_KBD_US)
- SLOT_INTERFACE("a500_de", A500_KBD_DE)
- SLOT_INTERFACE("a500_fr", A500_KBD_FR)
- SLOT_INTERFACE("a500_it", A500_KBD_IT)
- SLOT_INTERFACE("a500_se", A500_KBD_SE)
- SLOT_INTERFACE("a500_es", A500_KBD_ES)
- SLOT_INTERFACE("a500_dk", A500_KBD_DK)
- SLOT_INTERFACE("a500_ch", A500_KBD_CH)
- SLOT_INTERFACE("a500_no", A500_KBD_NO)
- SLOT_INTERFACE("a500_gb", A500_KBD_GB)
- SLOT_INTERFACE("a1200_us", A1200_KBD)
-SLOT_INTERFACE_END
+void amiga_keyboard_devices(device_slot_interface &device)
+{
+ device.option_add("a500_us", A500_KBD_US);
+ device.option_add("a500_de", A500_KBD_DE);
+ device.option_add("a500_fr", A500_KBD_FR);
+ device.option_add("a500_it", A500_KBD_IT);
+ device.option_add("a500_se", A500_KBD_SE);
+ device.option_add("a500_es", A500_KBD_ES);
+ device.option_add("a500_dk", A500_KBD_DK);
+ device.option_add("a500_ch", A500_KBD_CH);
+ device.option_add("a500_no", A500_KBD_NO);
+ device.option_add("a500_gb", A500_KBD_GB);
+ device.option_add("a1200_us", A1200_KBD);
+}
diff --git a/src/devices/bus/amiga/keyboard/keyboard.h b/src/devices/bus/amiga/keyboard/keyboard.h
index d78d1bcc6cd..772a904f889 100644
--- a/src/devices/bus/amiga/keyboard/keyboard.h
+++ b/src/devices/bus/amiga/keyboard/keyboard.h
@@ -98,6 +98,6 @@ protected:
DECLARE_DEVICE_TYPE(AMIGA_KEYBOARD_INTERFACE, amiga_keyboard_bus_device)
// supported devices
-SLOT_INTERFACE_EXTERN( amiga_keyboard_devices );
+void amiga_keyboard_devices(device_slot_interface &device);
#endif // MAME_BUS_AMIGA_KEYBOARD_H
diff --git a/src/devices/bus/amiga/zorro/cards.cpp b/src/devices/bus/amiga/zorro/cards.cpp
index 572ee491d93..8d0c7939b01 100644
--- a/src/devices/bus/amiga/zorro/cards.cpp
+++ b/src/devices/bus/amiga/zorro/cards.cpp
@@ -16,32 +16,37 @@
#include "buddha.h"
-SLOT_INTERFACE_START( a1000_expansion_cards )
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( a500_expansion_cards )
- SLOT_INTERFACE("ar1", ACTION_REPLAY_MK1)
- SLOT_INTERFACE("ar2", ACTION_REPLAY_MK2)
- SLOT_INTERFACE("ar3", ACTION_REPLAY_MK3)
- SLOT_INTERFACE("a590", A590)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( a2000_expansion_cards )
- SLOT_INTERFACE("ar1", ACTION_REPLAY_MK1)
- SLOT_INTERFACE("ar2", ACTION_REPLAY_MK2)
- SLOT_INTERFACE("ar3", ACTION_REPLAY_MK3)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( zorro2_cards )
- SLOT_INTERFACE("a2052", A2052)
- SLOT_INTERFACE("a2091", A2091)
- SLOT_INTERFACE("a2232", A2232)
- SLOT_INTERFACE("buddha", BUDDHA)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( zorro3_cards )
- SLOT_INTERFACE("a2052", A2052)
- SLOT_INTERFACE("a2091", A2091)
- SLOT_INTERFACE("a2232", A2232)
- SLOT_INTERFACE("buddha", BUDDHA)
-SLOT_INTERFACE_END
+void a1000_expansion_cards(device_slot_interface &device)
+{
+}
+
+void a500_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("ar1", ACTION_REPLAY_MK1);
+ device.option_add("ar2", ACTION_REPLAY_MK2);
+ device.option_add("ar3", ACTION_REPLAY_MK3);
+ device.option_add("a590", A590);
+}
+
+void a2000_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("ar1", ACTION_REPLAY_MK1);
+ device.option_add("ar2", ACTION_REPLAY_MK2);
+ device.option_add("ar3", ACTION_REPLAY_MK3);
+}
+
+void zorro2_cards(device_slot_interface &device)
+{
+ device.option_add("a2052", A2052);
+ device.option_add("a2091", A2091);
+ device.option_add("a2232", A2232);
+ device.option_add("buddha", BUDDHA);
+}
+
+void zorro3_cards(device_slot_interface &device)
+{
+ device.option_add("a2052", A2052);
+ device.option_add("a2091", A2091);
+ device.option_add("a2232", A2232);
+ device.option_add("buddha", BUDDHA);
+}
diff --git a/src/devices/bus/amiga/zorro/cards.h b/src/devices/bus/amiga/zorro/cards.h
index 3d1e00935ca..6daa99bf265 100644
--- a/src/devices/bus/amiga/zorro/cards.h
+++ b/src/devices/bus/amiga/zorro/cards.h
@@ -27,11 +27,11 @@
#pragma once
-SLOT_INTERFACE_EXTERN( a1000_expansion_cards );
-SLOT_INTERFACE_EXTERN( a500_expansion_cards );
-SLOT_INTERFACE_EXTERN( a2000_expansion_cards );
+void a1000_expansion_cards(device_slot_interface &device);
+void a500_expansion_cards(device_slot_interface &device);
+void a2000_expansion_cards(device_slot_interface &device);
-SLOT_INTERFACE_EXTERN( zorro2_cards );
-SLOT_INTERFACE_EXTERN( zorro3_cards );
+void zorro2_cards(device_slot_interface &device);
+void zorro3_cards(device_slot_interface &device);
#endif // MAME_BUS_AMIGA_ZORRO_CARDS_H
diff --git a/src/devices/bus/apricot/expansion/cards.cpp b/src/devices/bus/apricot/expansion/cards.cpp
index eb5b71948c0..d2c35366e42 100644
--- a/src/devices/bus/apricot/expansion/cards.cpp
+++ b/src/devices/bus/apricot/expansion/cards.cpp
@@ -10,8 +10,9 @@
#include "cards.h"
#include "ram.h"
-SLOT_INTERFACE_START( apricot_expansion_cards )
- SLOT_INTERFACE("128k", APRICOT_128K_RAM)
- SLOT_INTERFACE("256k", APRICOT_256K_RAM)
- SLOT_INTERFACE("512k", APRICOT_512K_RAM)
-SLOT_INTERFACE_END
+void apricot_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("128k", APRICOT_128K_RAM);
+ device.option_add("256k", APRICOT_256K_RAM);
+ device.option_add("512k", APRICOT_512K_RAM);
+}
diff --git a/src/devices/bus/apricot/expansion/cards.h b/src/devices/bus/apricot/expansion/cards.h
index 36767f81e44..0a5d0242069 100644
--- a/src/devices/bus/apricot/expansion/cards.h
+++ b/src/devices/bus/apricot/expansion/cards.h
@@ -11,6 +11,6 @@
#pragma once
-SLOT_INTERFACE_EXTERN( apricot_expansion_cards );
+void apricot_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_APRICOT_EXPANSION_CARDS_H
diff --git a/src/devices/bus/apricot/keyboard/keyboard.cpp b/src/devices/bus/apricot/keyboard/keyboard.cpp
index 87c491b6693..6f502ae7c76 100644
--- a/src/devices/bus/apricot/keyboard/keyboard.cpp
+++ b/src/devices/bus/apricot/keyboard/keyboard.cpp
@@ -101,6 +101,7 @@ device_apricot_keyboard_interface::~device_apricot_keyboard_interface()
// SLOT INTERFACE
//**************************************************************************
-SLOT_INTERFACE_START( apricot_keyboard_devices )
- SLOT_INTERFACE("hle", APRICOT_KEYBOARD_HLE)
-SLOT_INTERFACE_END
+void apricot_keyboard_devices(device_slot_interface &device)
+{
+ device.option_add("hle", APRICOT_KEYBOARD_HLE);
+}
diff --git a/src/devices/bus/apricot/keyboard/keyboard.h b/src/devices/bus/apricot/keyboard/keyboard.h
index 97896e87a33..857a78b7d1c 100644
--- a/src/devices/bus/apricot/keyboard/keyboard.h
+++ b/src/devices/bus/apricot/keyboard/keyboard.h
@@ -102,7 +102,7 @@ protected:
DECLARE_DEVICE_TYPE(APRICOT_KEYBOARD_INTERFACE, apricot_keyboard_bus_device)
// supported devices
-SLOT_INTERFACE_EXTERN( apricot_keyboard_devices );
+void apricot_keyboard_devices(device_slot_interface &device);
#endif // MAME_BUS_APRICOT_KEYBOARD_KEYBOARD_H
diff --git a/src/devices/bus/bbc/1mhzbus/1mhzbus.cpp b/src/devices/bus/bbc/1mhzbus/1mhzbus.cpp
index 12b7fad79ae..6fa2407aae7 100644
--- a/src/devices/bus/bbc/1mhzbus/1mhzbus.cpp
+++ b/src/devices/bus/bbc/1mhzbus/1mhzbus.cpp
@@ -131,18 +131,19 @@ WRITE_LINE_MEMBER(bbc_1mhzbus_slot_device::rst_w)
#include "cfa3000opt.h"
-SLOT_INTERFACE_START(bbc_1mhzbus_devices)
-// SLOT_INTERFACE("teletext", BBC_TELETEXT) /* Acorn ANE01 Teletext Adapter */
-// SLOT_INTERFACE("ieee488", BBC_IEEE488) /* Acorn ANK01 IEEE488 Interface */
-// SLOT_INTERFACE("m500", BBC_M500) /* Acorn ANV02 Music 500 */
-// SLOT_INTERFACE("m2000", BBC_M2000) /* Hybrid Music 2000 MIDI Interface */
-// SLOT_INTERFACE("m3000", BBC_M3000) /* Hybrid Music 3000 Expander */
-// SLOT_INTERFACE("m5000", BBC_M5000) /* Hybrid Music 5000 Synthesiser */
-// SLOT_INTERFACE("multiform", BBC_MULTIFORM) /* Technomatic Multiform Z80 */
- SLOT_INTERFACE("opus3", BBC_OPUS3) /* Opus Challenger 3 */
-// SLOT_INTERFACE("ramdisc", BBC_RAMDISC) /* Morley Electronics RAM Disc */
-// SLOT_INTERFACE("graduate", BBC_GRADUATE) /* The Torch Graduate G400/G800 */
- SLOT_INTERFACE("beebsid", BBC_BEEBSID) /* BeebSID */
-// SLOT_INTERFACE("prisma3", BBC_PRISMA3) /* PRISMA-3 - Millipede 1989 */
- SLOT_INTERFACE("cfa3000opt", CFA3000_OPT) /* Henson CFA 3000 Option Board */
-SLOT_INTERFACE_END
+void bbc_1mhzbus_devices(device_slot_interface &device)
+{
+// device.option_add("teletext", BBC_TELETEXT); /* Acorn ANE01 Teletext Adapter */
+// device.option_add("ieee488", BBC_IEEE488); /* Acorn ANK01 IEEE488 Interface */
+// device.option_add("m500", BBC_M500); /* Acorn ANV02 Music 500 */
+// device.option_add("m2000", BBC_M2000); /* Hybrid Music 2000 MIDI Interface */
+// device.option_add("m3000", BBC_M3000); /* Hybrid Music 3000 Expander */
+// device.option_add("m5000", BBC_M5000); /* Hybrid Music 5000 Synthesiser */
+// device.option_add("multiform", BBC_MULTIFORM); /* Technomatic Multiform Z80 */
+ device.option_add("opus3", BBC_OPUS3); /* Opus Challenger 3 */
+// device.option_add("ramdisc", BBC_RAMDISC); /* Morley Electronics RAM Disc */
+// device.option_add("graduate", BBC_GRADUATE); /* The Torch Graduate G400/G800 */
+ device.option_add("beebsid", BBC_BEEBSID); /* BeebSID */
+// device.option_add("prisma3", BBC_PRISMA3); /* PRISMA-3 - Millipede 1989 */
+ device.option_add("cfa3000opt", CFA3000_OPT); /* Henson CFA 3000 Option Board */
+}
diff --git a/src/devices/bus/bbc/1mhzbus/1mhzbus.h b/src/devices/bus/bbc/1mhzbus/1mhzbus.h
index de83f89632c..f53d015b345 100644
--- a/src/devices/bus/bbc/1mhzbus/1mhzbus.h
+++ b/src/devices/bus/bbc/1mhzbus/1mhzbus.h
@@ -163,7 +163,7 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(BBC_1MHZBUS_SLOT, bbc_1mhzbus_slot_device)
-SLOT_INTERFACE_EXTERN( bbc_1mhzbus_devices );
+void bbc_1mhzbus_devices(device_slot_interface &device);
#endif // MAME_BUS_BBC_1MHZBUS_1MHZBUS_H
diff --git a/src/devices/bus/bbc/1mhzbus/opus3.cpp b/src/devices/bus/bbc/1mhzbus/opus3.cpp
index 6aedae49556..57e6893222b 100644
--- a/src/devices/bus/bbc/1mhzbus/opus3.cpp
+++ b/src/devices/bus/bbc/1mhzbus/opus3.cpp
@@ -60,9 +60,10 @@ FLOPPY_FORMATS_MEMBER(bbc_opus3_device::floppy_formats)
FLOPPY_OPUS_DDCPM_FORMAT
FLOPPY_FORMATS_END0
-SLOT_INTERFACE_START(bbc_floppies)
- SLOT_INTERFACE("525qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+void bbc_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD);
+}
ROM_START( opus3 )
diff --git a/src/devices/bus/bbc/analogue/analogue.cpp b/src/devices/bus/bbc/analogue/analogue.cpp
index fd004baab91..226bc69bf0f 100644
--- a/src/devices/bus/bbc/analogue/analogue.cpp
+++ b/src/devices/bus/bbc/analogue/analogue.cpp
@@ -111,9 +111,10 @@ void bbc_analogue_slot_device::device_reset()
#include "cfa3000a.h"
-SLOT_INTERFACE_START( bbc_analogue_devices )
- SLOT_INTERFACE("acornjoy", BBC_ACORNJOY) /* Acorn ANH01 Joysticks */
- SLOT_INTERFACE("voltmace3b", BBC_VOLTMACE3B) /* Voltmace Delta 3b "Twin" Joysticks */
-// SLOT_INTERFACE("quinkey", BBC_QUINKEY) /* Microwriter Quinkey */
- SLOT_INTERFACE("cfa3000a", CFA3000_ANLG) /* Hanson CFA 3000 Analogue */
-SLOT_INTERFACE_END
+void bbc_analogue_devices(device_slot_interface &device)
+{
+ device.option_add("acornjoy", BBC_ACORNJOY); /* Acorn ANH01 Joysticks */
+ device.option_add("voltmace3b", BBC_VOLTMACE3B); /* Voltmace Delta 3b "Twin" Joysticks */
+// device.option_add("quinkey", BBC_QUINKEY); /* Microwriter Quinkey */
+ device.option_add("cfa3000a", CFA3000_ANLG); /* Hanson CFA 3000 Analogue */
+}
diff --git a/src/devices/bus/bbc/analogue/analogue.h b/src/devices/bus/bbc/analogue/analogue.h
index ed606ff6ce7..6e9cc8a9eae 100644
--- a/src/devices/bus/bbc/analogue/analogue.h
+++ b/src/devices/bus/bbc/analogue/analogue.h
@@ -96,6 +96,6 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(BBC_ANALOGUE_SLOT, bbc_analogue_slot_device)
-SLOT_INTERFACE_EXTERN( bbc_analogue_devices );
+void bbc_analogue_devices(device_slot_interface &device);
#endif // MAME_BUS_BBC_ANALOGUE_ANALOGUE_H
diff --git a/src/devices/bus/bbc/fdc/acorn.cpp b/src/devices/bus/bbc/fdc/acorn.cpp
index 33ce43870e9..5c61ccc813a 100644
--- a/src/devices/bus/bbc/fdc/acorn.cpp
+++ b/src/devices/bus/bbc/fdc/acorn.cpp
@@ -29,13 +29,14 @@ FLOPPY_FORMATS_MEMBER( bbc_acorn8271_device::floppy_formats )
FLOPPY_FSD_FORMAT
FLOPPY_FORMATS_END0
-static SLOT_INTERFACE_START( bbc_floppies_525 )
- SLOT_INTERFACE("525sssd", FLOPPY_525_SSSD)
- SLOT_INTERFACE("525sd", FLOPPY_525_SD)
- SLOT_INTERFACE("525ssdd", FLOPPY_525_SSDD)
- SLOT_INTERFACE("525dd", FLOPPY_525_DD)
- SLOT_INTERFACE("525qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+static void bbc_floppies_525(device_slot_interface &device)
+{
+ device.option_add("525sssd", FLOPPY_525_SSSD);
+ device.option_add("525sd", FLOPPY_525_SD);
+ device.option_add("525ssdd", FLOPPY_525_SSDD);
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("525qd", FLOPPY_525_QD);
+}
ROM_START( acorn8271 )
ROM_REGION(0x4000, "dfs_rom", 0)
diff --git a/src/devices/bus/bbc/fdc/cumana.cpp b/src/devices/bus/bbc/fdc/cumana.cpp
index bfe97abd240..d36cc0b820e 100644
--- a/src/devices/bus/bbc/fdc/cumana.cpp
+++ b/src/devices/bus/bbc/fdc/cumana.cpp
@@ -31,13 +31,14 @@ FLOPPY_FORMATS_MEMBER( bbc_cumanafdc_device::floppy_formats )
FLOPPY_FSD_FORMAT
FLOPPY_FORMATS_END0
-static SLOT_INTERFACE_START( bbc_floppies_525 )
- SLOT_INTERFACE("525sssd", FLOPPY_525_SSSD)
- SLOT_INTERFACE("525sd", FLOPPY_525_SD)
- SLOT_INTERFACE("525ssdd", FLOPPY_525_SSDD)
- SLOT_INTERFACE("525dd", FLOPPY_525_DD)
- SLOT_INTERFACE("525qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+static void bbc_floppies_525(device_slot_interface &device)
+{
+ device.option_add("525sssd", FLOPPY_525_SSSD);
+ device.option_add("525sd", FLOPPY_525_SD);
+ device.option_add("525ssdd", FLOPPY_525_SSDD);
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("525qd", FLOPPY_525_QD);
+}
ROM_START( cumana1 )
ROM_REGION(0x4000, "dfs_rom", 0)
diff --git a/src/devices/bus/bbc/fdc/cv1797.cpp b/src/devices/bus/bbc/fdc/cv1797.cpp
index a8c3f683cb1..940595b9ff6 100644
--- a/src/devices/bus/bbc/fdc/cv1797.cpp
+++ b/src/devices/bus/bbc/fdc/cv1797.cpp
@@ -30,13 +30,14 @@ FLOPPY_FORMATS_MEMBER( bbc_cv1797_device::floppy_formats )
FLOPPY_FSD_FORMAT
FLOPPY_FORMATS_END0
-static SLOT_INTERFACE_START( bbc_floppies_525 )
- SLOT_INTERFACE("525sssd", FLOPPY_525_SSSD)
- SLOT_INTERFACE("525sd", FLOPPY_525_SD)
- SLOT_INTERFACE("525ssdd", FLOPPY_525_SSDD)
- SLOT_INTERFACE("525dd", FLOPPY_525_DD)
- SLOT_INTERFACE("525qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+static void bbc_floppies_525(device_slot_interface &device)
+{
+ device.option_add("525sssd", FLOPPY_525_SSSD);
+ device.option_add("525sd", FLOPPY_525_SD);
+ device.option_add("525ssdd", FLOPPY_525_SSDD);
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("525qd", FLOPPY_525_QD);
+}
ROM_START( cv1797 )
ROM_REGION(0x4000, "dfs_rom", 0)
diff --git a/src/devices/bus/bbc/fdc/fdc.cpp b/src/devices/bus/bbc/fdc/fdc.cpp
index 38be2f36997..5db09a3903e 100644
--- a/src/devices/bus/bbc/fdc/fdc.cpp
+++ b/src/devices/bus/bbc/fdc/fdc.cpp
@@ -119,21 +119,22 @@ void bbc_fdc_slot_device::device_reset()
//#include "zdfs.h"
-SLOT_INTERFACE_START( bbc_fdc_devices )
- SLOT_INTERFACE("acorn8271", BBC_ACORN8271)
- SLOT_INTERFACE("acorn1770", BBC_ACORN1770)
- SLOT_INTERFACE("cumana1", BBC_CUMANA1)
- SLOT_INTERFACE("cumana2", BBC_CUMANA2)
- SLOT_INTERFACE("cv1797", BBC_CV1797)
- //SLOT_INTERFACE("microware", BBC_MICROWARE)
- SLOT_INTERFACE("opus8272", BBC_OPUS8272)
- SLOT_INTERFACE("opus2791", BBC_OPUS2791)
- SLOT_INTERFACE("opus2793", BBC_OPUS2793)
- SLOT_INTERFACE("opus1770", BBC_OPUS1770)
- //SLOT_INTERFACE("stl8271", BBC_STL8271)
- //SLOT_INTERFACE("stl1770_1", BBC_STL1770_1)
- //SLOT_INTERFACE("stl1770_2", BBC_STL1770_2)
- SLOT_INTERFACE("weddb2", BBC_WEDDB2)
- SLOT_INTERFACE("weddb3", BBC_WEDDB3)
- //SLOT_INTERFACE("zdfs", BBC_ZDFS)
-SLOT_INTERFACE_END
+void bbc_fdc_devices(device_slot_interface &device)
+{
+ device.option_add("acorn8271", BBC_ACORN8271);
+ device.option_add("acorn1770", BBC_ACORN1770);
+ device.option_add("cumana1", BBC_CUMANA1);
+ device.option_add("cumana2", BBC_CUMANA2);
+ device.option_add("cv1797", BBC_CV1797);
+ //device.option_add("microware", BBC_MICROWARE);
+ device.option_add("opus8272", BBC_OPUS8272);
+ device.option_add("opus2791", BBC_OPUS2791);
+ device.option_add("opus2793", BBC_OPUS2793);
+ device.option_add("opus1770", BBC_OPUS1770);
+ //device.option_add("stl8271", BBC_STL8271);
+ //device.option_add("stl1770_1", BBC_STL1770_1);
+ //device.option_add("stl1770_2", BBC_STL1770_2);
+ device.option_add("weddb2", BBC_WEDDB2);
+ device.option_add("weddb3", BBC_WEDDB3);
+ //device.option_add("zdfs", BBC_ZDFS);
+}
diff --git a/src/devices/bus/bbc/fdc/fdc.h b/src/devices/bus/bbc/fdc/fdc.h
index 2472b5582be..4e2363560ba 100644
--- a/src/devices/bus/bbc/fdc/fdc.h
+++ b/src/devices/bus/bbc/fdc/fdc.h
@@ -82,7 +82,7 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(BBC_FDC_SLOT, bbc_fdc_slot_device)
-SLOT_INTERFACE_EXTERN( bbc_fdc_devices );
+void bbc_fdc_devices(device_slot_interface &device);
#endif // MAME_BUS_BBC_FDC_FDC_H
diff --git a/src/devices/bus/bbc/fdc/opus.cpp b/src/devices/bus/bbc/fdc/opus.cpp
index 246b3ad203f..8a81c86ce74 100644
--- a/src/devices/bus/bbc/fdc/opus.cpp
+++ b/src/devices/bus/bbc/fdc/opus.cpp
@@ -39,13 +39,14 @@ FLOPPY_FORMATS_MEMBER( bbc_opusfdc_device::floppy_formats )
FLOPPY_OPUS_DDCPM_FORMAT
FLOPPY_FORMATS_END0
-static SLOT_INTERFACE_START( bbc_floppies_525 )
- SLOT_INTERFACE("525sssd", FLOPPY_525_SSSD)
- SLOT_INTERFACE("525sd", FLOPPY_525_SD)
- SLOT_INTERFACE("525ssdd", FLOPPY_525_SSDD)
- SLOT_INTERFACE("525dd", FLOPPY_525_DD)
- SLOT_INTERFACE("525qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+static void bbc_floppies_525(device_slot_interface &device)
+{
+ device.option_add("525sssd", FLOPPY_525_SSSD);
+ device.option_add("525sd", FLOPPY_525_SD);
+ device.option_add("525ssdd", FLOPPY_525_SSDD);
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("525qd", FLOPPY_525_QD);
+}
ROM_START( opus8272 )
ROM_REGION(0x4000, "dfs_rom", 0)
diff --git a/src/devices/bus/bbc/fdc/watford.cpp b/src/devices/bus/bbc/fdc/watford.cpp
index fcc465c84f6..90dd63cad76 100644
--- a/src/devices/bus/bbc/fdc/watford.cpp
+++ b/src/devices/bus/bbc/fdc/watford.cpp
@@ -33,13 +33,14 @@ FLOPPY_FORMATS_MEMBER( bbc_watfordfdc_device::floppy_formats )
FLOPPY_FSD_FORMAT
FLOPPY_FORMATS_END0
-static SLOT_INTERFACE_START( bbc_floppies_525 )
- SLOT_INTERFACE("525sssd", FLOPPY_525_SSSD)
- SLOT_INTERFACE("525sd", FLOPPY_525_SD)
- SLOT_INTERFACE("525ssdd", FLOPPY_525_SSDD)
- SLOT_INTERFACE("525dd", FLOPPY_525_DD)
- SLOT_INTERFACE("525qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+static void bbc_floppies_525(device_slot_interface &device)
+{
+ device.option_add("525sssd", FLOPPY_525_SSSD);
+ device.option_add("525sd", FLOPPY_525_SD);
+ device.option_add("525ssdd", FLOPPY_525_SSDD);
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("525qd", FLOPPY_525_QD);
+}
ROM_START( weddb2 )
ROM_REGION(0x4000, "dfs_rom", 0)
diff --git a/src/devices/bus/bbc/joyport/joyport.cpp b/src/devices/bus/bbc/joyport/joyport.cpp
index 2a3d3d144b6..b45b804a76c 100644
--- a/src/devices/bus/bbc/joyport/joyport.cpp
+++ b/src/devices/bus/bbc/joyport/joyport.cpp
@@ -130,7 +130,8 @@ WRITE8_MEMBER(bbc_joyport_slot_device::pb_w)
//#include "mouse.h"
-SLOT_INTERFACE_START( bbc_joyport_devices )
- SLOT_INTERFACE("joystick", BBCMC_JOYSTICK)
- //SLOT_INTERFACE("mouse", BBCMC_MOUSE)
-SLOT_INTERFACE_END
+void bbc_joyport_devices(device_slot_interface &device)
+{
+ device.option_add("joystick", BBCMC_JOYSTICK);
+ //device.option_add("mouse", BBCMC_MOUSE);
+}
diff --git a/src/devices/bus/bbc/joyport/joyport.h b/src/devices/bus/bbc/joyport/joyport.h
index 9371ee248d8..bfc93f2d9e2 100644
--- a/src/devices/bus/bbc/joyport/joyport.h
+++ b/src/devices/bus/bbc/joyport/joyport.h
@@ -106,7 +106,7 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(BBC_JOYPORT_SLOT, bbc_joyport_slot_device)
-SLOT_INTERFACE_EXTERN( bbc_joyport_devices );
+void bbc_joyport_devices(device_slot_interface &device);
#endif // MAME_BUS_BBC_JOYPORT_JOYPORT_H
diff --git a/src/devices/bus/bbc/tube/tube.cpp b/src/devices/bus/bbc/tube/tube.cpp
index 173dd4cc2b7..f3824e872cf 100644
--- a/src/devices/bus/bbc/tube/tube.cpp
+++ b/src/devices/bus/bbc/tube/tube.cpp
@@ -146,37 +146,39 @@ WRITE8_MEMBER(bbc_tube_slot_device::host_w)
// SLOT_INTERFACE( bbc_extube_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( bbc_extube_devices )
- SLOT_INTERFACE("6502", BBC_TUBE_6502) /* Acorn ANC01 6502 2nd processor */
- SLOT_INTERFACE("z80", BBC_TUBE_Z80) /* Acorn ANC04 Z80 2nd processor */
-// SLOT_INTERFACE("32016", BBC_TUBE_32016) /* Acorn ANC05 32016 2nd processor */
-// SLOT_INTERFACE("camb", BBC_TUBE_CAMB) /* Acorn ANC06 Cambridge Co-Processor */
- SLOT_INTERFACE("arm", BBC_TUBE_ARM) /* Acorn ANC13 ARM Evaluation System */
- SLOT_INTERFACE("80286", BBC_TUBE_80286) /* Acorn 80286 2nd Processor */
-// SLOT_INTERFACE("a500", BBC_TUBE_A500) /* Acorn A500 2nd Processor */
- SLOT_INTERFACE("casper", BBC_TUBE_CASPER) /* Casper 68000 2nd Processor */
- SLOT_INTERFACE("zep100", BBC_TUBE_ZEP100) /* Torch Z80 Communicator (ZEP100) */
+void bbc_extube_devices(device_slot_interface &device)
+{
+ device.option_add("6502", BBC_TUBE_6502); /* Acorn ANC01 6502 2nd processor */
+ device.option_add("z80", BBC_TUBE_Z80); /* Acorn ANC04 Z80 2nd processor */
+// device.option_add("32016", BBC_TUBE_32016); /* Acorn ANC05 32016 2nd processor */
+// device.option_add("camb", BBC_TUBE_CAMB); /* Acorn ANC06 Cambridge Co-Processor */
+ device.option_add("arm", BBC_TUBE_ARM); /* Acorn ANC13 ARM Evaluation System */
+ device.option_add("80286", BBC_TUBE_80286); /* Acorn 80286 2nd Processor */
+// device.option_add("a500", BBC_TUBE_A500); /* Acorn A500 2nd Processor */
+ device.option_add("casper", BBC_TUBE_CASPER); /* Casper 68000 2nd Processor */
+ device.option_add("zep100", BBC_TUBE_ZEP100); /* Torch Z80 Communicator (ZEP100) */
/* Acorn ANC21 Universal 2nd Processor Unit */
- SLOT_INTERFACE("65c102", BBC_TUBE_65C102) /* Acorn ADC06 65C102 co-processor */
- SLOT_INTERFACE("80186", BBC_TUBE_80186) /* Acorn ADC08 80186 co-processor */
-SLOT_INTERFACE_END
+ device.option_add("65c102", BBC_TUBE_65C102); /* Acorn ADC06 65C102 co-processor */
+ device.option_add("80186", BBC_TUBE_80186); /* Acorn ADC08 80186 co-processor */
+}
//-------------------------------------------------
// SLOT_INTERFACE( bbc_intube_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( bbc_intube_devices )
- SLOT_INTERFACE("65c102", BBC_TUBE_65C102) /* Acorn ADC06 65C102 co-processor */
- SLOT_INTERFACE("80186", BBC_TUBE_80186) /* Acorn ADC08 80186 co-processor */
-// SLOT_INTERFACE("arm7", BBC_TUBE_ARM7) /* Sprow ARM7 co-processor */
-SLOT_INTERFACE_END
+void bbc_intube_devices(device_slot_interface &device)
+{
+ device.option_add("65c102", BBC_TUBE_65C102); /* Acorn ADC06 65C102 co-processor */
+ device.option_add("80186", BBC_TUBE_80186); /* Acorn ADC08 80186 co-processor */
+// device.option_add("arm7", BBC_TUBE_ARM7); /* Sprow ARM7 co-processor */
+}
//-------------------------------------------------
// SLOT_INTERFACE( bbc_x25tube_devices )
//-------------------------------------------------
-//SLOT_INTERFACE_START( bbc_x25tube_devices )
-// SLOT_INTERFACE("x25", BBC_TUBE_X25) /* Econet X25 Gateway */
-//SLOT_INTERFACE_END
+//void bbc_x25tube_devices(device_slot_interface &device)
+// device.option_add("x25", BBC_TUBE_X25); /* Econet X25 Gateway */
+//}
diff --git a/src/devices/bus/bbc/tube/tube.h b/src/devices/bus/bbc/tube/tube.h
index 7a7d4351e1c..b60d349df47 100644
--- a/src/devices/bus/bbc/tube/tube.h
+++ b/src/devices/bus/bbc/tube/tube.h
@@ -116,9 +116,9 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(BBC_TUBE_SLOT, bbc_tube_slot_device)
-SLOT_INTERFACE_EXTERN( bbc_extube_devices );
-SLOT_INTERFACE_EXTERN( bbc_intube_devices );
-//SLOT_INTERFACE_EXTERN( bbc_x25tube_devices );
+void bbc_extube_devices(device_slot_interface &device);
+void bbc_intube_devices(device_slot_interface &device);
+//void bbc_x25tube_devices(device_slot_interface &device);
#endif // MAME_BUS_BBC_TUBE_TUBE_H
diff --git a/src/devices/bus/bbc/userport/userport.cpp b/src/devices/bus/bbc/userport/userport.cpp
index 7df5c0e7f66..6152d893cec 100644
--- a/src/devices/bus/bbc/userport/userport.cpp
+++ b/src/devices/bus/bbc/userport/userport.cpp
@@ -119,10 +119,11 @@ WRITE8_MEMBER(bbc_userport_slot_device::pb_w)
#include "cfa3000kbd.h"
-SLOT_INTERFACE_START( bbc_userport_devices )
-// SLOT_INTERFACE("amxmouse", BBC_AMXMOUSE) /* AMX Mouse */
-// SLOT_INTERFACE("m512mouse", BBC_M512MOUSE) /* Acorn Mouse (provided with Master 512) */
-// SLOT_INTERFACE("tracker", BBC_TRACKER) /* Marconi RB2 Tracker Ball / Acorn Tracker Ball */
-// SLOT_INTERFACE("music4000", BBC_MUSIC4000) /* Hybrid Music 4000 Keyboard */
- SLOT_INTERFACE("cfa3000kbd", CFA3000_KBD) /* Henson CFA 3000 Keyboard */
-SLOT_INTERFACE_END
+void bbc_userport_devices(device_slot_interface &device)
+{
+// device.option_add("amxmouse", BBC_AMXMOUSE); /* AMX Mouse */
+// device.option_add("m512mouse", BBC_M512MOUSE); /* Acorn Mouse (provided with Master 512) */
+// device.option_add("tracker", BBC_TRACKER); /* Marconi RB2 Tracker Ball / Acorn Tracker Ball */
+// device.option_add("music4000", BBC_MUSIC4000); /* Hybrid Music 4000 Keyboard */
+ device.option_add("cfa3000kbd", CFA3000_KBD); /* Henson CFA 3000 Keyboard */
+}
diff --git a/src/devices/bus/bbc/userport/userport.h b/src/devices/bus/bbc/userport/userport.h
index de2f8c4c8ff..f19911a4631 100644
--- a/src/devices/bus/bbc/userport/userport.h
+++ b/src/devices/bus/bbc/userport/userport.h
@@ -106,7 +106,7 @@ protected:
DECLARE_DEVICE_TYPE(BBC_USERPORT_SLOT, bbc_userport_slot_device)
-SLOT_INTERFACE_EXTERN( bbc_userport_devices );
+void bbc_userport_devices(device_slot_interface &device);
#endif // MAME_BUS_BBC_USERPORT_USERPORT_H
diff --git a/src/devices/bus/bml3/bml3mp1802.cpp b/src/devices/bus/bml3/bml3mp1802.cpp
index dd27a9c53ec..a6c7e4a1d2c 100644
--- a/src/devices/bus/bml3/bml3mp1802.cpp
+++ b/src/devices/bus/bml3/bml3mp1802.cpp
@@ -23,9 +23,10 @@
DEFINE_DEVICE_TYPE(BML3BUS_MP1802, bml3bus_mp1802_device, "bml3mp1802", "Hitachi MP-1802 Floppy Controller Card")
-static SLOT_INTERFACE_START( mp1802_floppies )
- SLOT_INTERFACE("dd", FLOPPY_525_DD)
-SLOT_INTERFACE_END
+static void mp1802_floppies(device_slot_interface &device)
+{
+ device.option_add("dd", FLOPPY_525_DD);
+}
WRITE_LINE_MEMBER( bml3bus_mp1802_device::bml3_wd17xx_intrq_w )
{
diff --git a/src/devices/bus/bw2/exp.cpp b/src/devices/bus/bw2/exp.cpp
index 94e7a616460..ae02f1f10fa 100644
--- a/src/devices/bus/bw2/exp.cpp
+++ b/src/devices/bus/bw2/exp.cpp
@@ -187,6 +187,7 @@ WRITE8_MEMBER( bw2_expansion_slot_device::modsel_w )
// slot devices
#include "ramcard.h"
-SLOT_INTERFACE_START( bw2_expansion_cards )
- SLOT_INTERFACE("ramcard", BW2_RAMCARD)
-SLOT_INTERFACE_END
+void bw2_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("ramcard", BW2_RAMCARD);
+}
diff --git a/src/devices/bus/bw2/exp.h b/src/devices/bus/bw2/exp.h
index fe4e51298a2..5bd353c5d35 100644
--- a/src/devices/bus/bw2/exp.h
+++ b/src/devices/bus/bw2/exp.h
@@ -124,7 +124,6 @@ protected:
DECLARE_DEVICE_TYPE(BW2_EXPANSION_SLOT, bw2_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( bw2_expansion_cards );
-
+void bw2_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_BW2_EXP_H
diff --git a/src/devices/bus/c64/exp.cpp b/src/devices/bus/c64/exp.cpp
index e5e0c6b039c..7b11051da9b 100644
--- a/src/devices/bus/c64/exp.cpp
+++ b/src/devices/bus/c64/exp.cpp
@@ -368,75 +368,76 @@ int c64_expansion_slot_device::exrom_r(offs_t offset, int sphi2, int ba, int rw,
#include "xl80.h"
#include "zaxxon.h"
-SLOT_INTERFACE_START( c64_expansion_cards )
- SLOT_INTERFACE("16k", C64_16KB)
- SLOT_INTERFACE("cpm", C64_CPM)
- SLOT_INTERFACE("dqbb", C64_DQBB)
- SLOT_INTERFACE("easyflash", C64_EASYFLASH)
- SLOT_INTERFACE("georam", C64_GEORAM)
- SLOT_INTERFACE("ide64", C64_IDE64)
- SLOT_INTERFACE("midimap", C64_MIDI_MAPLIN)
- SLOT_INTERFACE("midins", C64_MIDI_NAMESOFT)
- SLOT_INTERFACE("midipp", C64_MIDI_PASSPORT)
- SLOT_INTERFACE("midisci", C64_MIDI_SCI)
- SLOT_INTERFACE("midisiel", C64_MIDI_SIEL)
- SLOT_INTERFACE("music64", C64_MUSIC64)
- SLOT_INTERFACE("neoram", C64_NEORAM)
- SLOT_INTERFACE("reu1700", C64_REU1700)
- SLOT_INTERFACE("reu1750", C64_REU1750)
- SLOT_INTERFACE("reu1764", C64_REU1764)
- SLOT_INTERFACE("sfxse", C64_SFX_SOUND_EXPANDER)
- SLOT_INTERFACE("speakez", C64_SPEAKEASY)
- SLOT_INTERFACE("supercpu", C64_SUPERCPU)
- SLOT_INTERFACE("swiftlink", C64_SWIFTLINK)
- SLOT_INTERFACE("turbo232", C64_TURBO232)
+void c64_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("16k", C64_16KB);
+ device.option_add("cpm", C64_CPM);
+ device.option_add("dqbb", C64_DQBB);
+ device.option_add("easyflash", C64_EASYFLASH);
+ device.option_add("georam", C64_GEORAM);
+ device.option_add("ide64", C64_IDE64);
+ device.option_add("midimap", C64_MIDI_MAPLIN);
+ device.option_add("midins", C64_MIDI_NAMESOFT);
+ device.option_add("midipp", C64_MIDI_PASSPORT);
+ device.option_add("midisci", C64_MIDI_SCI);
+ device.option_add("midisiel", C64_MIDI_SIEL);
+ device.option_add("music64", C64_MUSIC64);
+ device.option_add("neoram", C64_NEORAM);
+ device.option_add("reu1700", C64_REU1700);
+ device.option_add("reu1750", C64_REU1750);
+ device.option_add("reu1764", C64_REU1764);
+ device.option_add("sfxse", C64_SFX_SOUND_EXPANDER);
+ device.option_add("speakez", C64_SPEAKEASY);
+ device.option_add("supercpu", C64_SUPERCPU);
+ device.option_add("swiftlink", C64_SWIFTLINK);
+ device.option_add("turbo232", C64_TURBO232);
// the following need ROMs from the software list
- SLOT_INTERFACE_INTERNAL("standard", C64_STD)
- SLOT_INTERFACE_INTERNAL("comal80", C64_COMAL80)
- SLOT_INTERFACE_INTERNAL("c128_comal80", C128_COMAL80)
- SLOT_INTERFACE_INTERNAL("cs64", C64_CURRAH_SPEECH)
- SLOT_INTERFACE_INTERNAL("dela_ep256", C64_DELA_EP256)
- SLOT_INTERFACE_INTERNAL("ep64", C64_DELA_EP64)
- SLOT_INTERFACE_INTERNAL("ep7x8", C64_DELA_EP7X8)
- SLOT_INTERFACE_INTERNAL("dinamic", C64_DINAMIC)
- SLOT_INTERFACE_INTERNAL("easycalcres", C64_EASY_CALC_RESULT)
- SLOT_INTERFACE_INTERNAL("epyxfastload", C64_EPYX_FAST_LOAD)
- SLOT_INTERFACE_INTERNAL("exos", C64_EXOS)
- SLOT_INTERFACE_INTERNAL("fcc", C64_FCC)
- SLOT_INTERFACE_INTERNAL("final", C64_FINAL)
- SLOT_INTERFACE_INTERNAL("final3", C64_FINAL3)
- SLOT_INTERFACE_INTERNAL("fun_play", C64_FUN_PLAY)
- SLOT_INTERFACE_INTERNAL("ieee488", C64_IEEE488)
- SLOT_INTERFACE_INTERNAL("kingsoft", C64_KINGSOFT)
- SLOT_INTERFACE_INTERNAL("mach5", C64_MACH5)
- SLOT_INTERFACE_INTERNAL("magic_desk", C64_MAGIC_DESK)
- SLOT_INTERFACE_INTERNAL("magic_formel", C64_MAGIC_FORMEL)
- SLOT_INTERFACE_INTERNAL("magic_voice", C64_MAGIC_VOICE)
- SLOT_INTERFACE_INTERNAL("mikroasm", C64_MIKRO_ASSEMBLER)
- SLOT_INTERFACE_INTERNAL("multiscreen", C64_MULTISCREEN)
- SLOT_INTERFACE_INTERNAL("ocean", C64_OCEAN)
- SLOT_INTERFACE_INTERNAL("pagefox", C64_PAGEFOX)
- SLOT_INTERFACE_INTERNAL("partner", C64_PARTNER)
- SLOT_INTERFACE_INTERNAL("partner128", C128_PARTNER)
- SLOT_INTERFACE_INTERNAL("prophet64", C64_PROPHET64)
- SLOT_INTERFACE_INTERNAL("ps64", C64_PS64)
- SLOT_INTERFACE_INTERNAL("rex", C64_REX)
- SLOT_INTERFACE_INTERNAL("rex_ep256", C64_REX_EP256)
- SLOT_INTERFACE_INTERNAL("ross", C64_ROSS)
- SLOT_INTERFACE_INTERNAL("silverrock", C64_SILVERROCK)
- SLOT_INTERFACE_INTERNAL("simons_basic", C64_SIMONS_BASIC)
- SLOT_INTERFACE_INTERNAL("stardos", C64_STARDOS)
- SLOT_INTERFACE_INTERNAL("struct_basic", C64_STRUCTURED_BASIC)
- SLOT_INTERFACE_INTERNAL("super_explode", C64_SUPER_EXPLODE)
- SLOT_INTERFACE_INTERNAL("super_games", C64_SUPER_GAMES)
- SLOT_INTERFACE_INTERNAL("sw8k", C64_SW8K)
- SLOT_INTERFACE_INTERNAL("system3", C64_SYSTEM3)
- SLOT_INTERFACE_INTERNAL("tdos", C64_TDOS)
- SLOT_INTERFACE_INTERNAL("vizastar", C64_VIZASTAR)
- SLOT_INTERFACE_INTERNAL("vizawrite", C64_VW64)
- SLOT_INTERFACE_INTERNAL("warp_speed", C64_WARP_SPEED)
- SLOT_INTERFACE_INTERNAL("westermann", C64_WESTERMANN)
- SLOT_INTERFACE_INTERNAL("zaxxon", C64_ZAXXON)
- SLOT_INTERFACE_INTERNAL("xl80", C64_XL80)
-SLOT_INTERFACE_END
+ device.option_add_internal("standard", C64_STD);
+ device.option_add_internal("comal80", C64_COMAL80);
+ device.option_add_internal("c128_comal80", C128_COMAL80);
+ device.option_add_internal("cs64", C64_CURRAH_SPEECH);
+ device.option_add_internal("dela_ep256", C64_DELA_EP256);
+ device.option_add_internal("ep64", C64_DELA_EP64);
+ device.option_add_internal("ep7x8", C64_DELA_EP7X8);
+ device.option_add_internal("dinamic", C64_DINAMIC);
+ device.option_add_internal("easycalcres", C64_EASY_CALC_RESULT);
+ device.option_add_internal("epyxfastload", C64_EPYX_FAST_LOAD);
+ device.option_add_internal("exos", C64_EXOS);
+ device.option_add_internal("fcc", C64_FCC);
+ device.option_add_internal("final", C64_FINAL);
+ device.option_add_internal("final3", C64_FINAL3);
+ device.option_add_internal("fun_play", C64_FUN_PLAY);
+ device.option_add_internal("ieee488", C64_IEEE488);
+ device.option_add_internal("kingsoft", C64_KINGSOFT);
+ device.option_add_internal("mach5", C64_MACH5);
+ device.option_add_internal("magic_desk", C64_MAGIC_DESK);
+ device.option_add_internal("magic_formel", C64_MAGIC_FORMEL);
+ device.option_add_internal("magic_voice", C64_MAGIC_VOICE);
+ device.option_add_internal("mikroasm", C64_MIKRO_ASSEMBLER);
+ device.option_add_internal("multiscreen", C64_MULTISCREEN);
+ device.option_add_internal("ocean", C64_OCEAN);
+ device.option_add_internal("pagefox", C64_PAGEFOX);
+ device.option_add_internal("partner", C64_PARTNER);
+ device.option_add_internal("partner128", C128_PARTNER);
+ device.option_add_internal("prophet64", C64_PROPHET64);
+ device.option_add_internal("ps64", C64_PS64);
+ device.option_add_internal("rex", C64_REX);
+ device.option_add_internal("rex_ep256", C64_REX_EP256);
+ device.option_add_internal("ross", C64_ROSS);
+ device.option_add_internal("silverrock", C64_SILVERROCK);
+ device.option_add_internal("simons_basic", C64_SIMONS_BASIC);
+ device.option_add_internal("stardos", C64_STARDOS);
+ device.option_add_internal("struct_basic", C64_STRUCTURED_BASIC);
+ device.option_add_internal("super_explode", C64_SUPER_EXPLODE);
+ device.option_add_internal("super_games", C64_SUPER_GAMES);
+ device.option_add_internal("sw8k", C64_SW8K);
+ device.option_add_internal("system3", C64_SYSTEM3);
+ device.option_add_internal("tdos", C64_TDOS);
+ device.option_add_internal("vizastar", C64_VIZASTAR);
+ device.option_add_internal("vizawrite", C64_VW64);
+ device.option_add_internal("warp_speed", C64_WARP_SPEED);
+ device.option_add_internal("westermann", C64_WESTERMANN);
+ device.option_add_internal("zaxxon", C64_ZAXXON);
+ device.option_add_internal("xl80", C64_XL80);
+}
diff --git a/src/devices/bus/c64/exp.h b/src/devices/bus/c64/exp.h
index 46c4101aabf..0824ecf67ba 100644
--- a/src/devices/bus/c64/exp.h
+++ b/src/devices/bus/c64/exp.h
@@ -195,8 +195,6 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(C64_EXPANSION_SLOT, c64_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( c64_expansion_cards );
-
-
+void c64_expansion_cards(device_slot_interface &device);
#endif
diff --git a/src/devices/bus/c64/user.cpp b/src/devices/bus/c64/user.cpp
index 543ee8bb13e..1a5975ebbf8 100644
--- a/src/devices/bus/c64/user.cpp
+++ b/src/devices/bus/c64/user.cpp
@@ -22,12 +22,13 @@
#include "geocable.h"
#include "bus/vic20/vic1011.h"
-SLOT_INTERFACE_START( c64_user_port_cards )
- SLOT_INTERFACE("4cga", C64_4CGA)
- SLOT_INTERFACE("4dxh", C64_4DXH)
- SLOT_INTERFACE("4ksa", C64_4KSA)
- SLOT_INTERFACE("4tba", C64_4TBA)
- SLOT_INTERFACE("bn1541", C64_BN1541)
- SLOT_INTERFACE("geocable", C64_GEOCABLE)
- SLOT_INTERFACE("rs232", VIC1011)
-SLOT_INTERFACE_END
+void c64_user_port_cards(device_slot_interface &device)
+{
+ device.option_add("4cga", C64_4CGA);
+ device.option_add("4dxh", C64_4DXH);
+ device.option_add("4ksa", C64_4KSA);
+ device.option_add("4tba", C64_4TBA);
+ device.option_add("bn1541", C64_BN1541);
+ device.option_add("geocable", C64_GEOCABLE);
+ device.option_add("rs232", VIC1011);
+}
diff --git a/src/devices/bus/c64/user.h b/src/devices/bus/c64/user.h
index 8e9ecf347b2..68159c099de 100644
--- a/src/devices/bus/c64/user.h
+++ b/src/devices/bus/c64/user.h
@@ -28,6 +28,6 @@
#include "bus/pet/user.h"
-SLOT_INTERFACE_EXTERN( c64_user_port_cards );
+void c64_user_port_cards(device_slot_interface &device);
#endif // MAME_BUS_C64_USER_H
diff --git a/src/devices/bus/cbm2/exp.cpp b/src/devices/bus/cbm2/exp.cpp
index 0659fbc93ed..e4246026a54 100644
--- a/src/devices/bus/cbm2/exp.cpp
+++ b/src/devices/bus/cbm2/exp.cpp
@@ -188,9 +188,10 @@ void cbm2_expansion_slot_device::write(address_space &space, offs_t offset, uint
#include "hrg.h"
#include "std.h"
-SLOT_INTERFACE_START( cbm2_expansion_cards )
- SLOT_INTERFACE("24k", CBM2_24K)
- SLOT_INTERFACE("hrga", CBM2_HRG_A)
- SLOT_INTERFACE("hrgb", CBM2_HRG_B)
- SLOT_INTERFACE_INTERNAL("standard", CBM2_STD)
-SLOT_INTERFACE_END
+void cbm2_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("24k", CBM2_24K);
+ device.option_add("hrga", CBM2_HRG_A);
+ device.option_add("hrgb", CBM2_HRG_B);
+ device.option_add_internal("standard", CBM2_STD);
+}
diff --git a/src/devices/bus/cbm2/exp.h b/src/devices/bus/cbm2/exp.h
index 0b6ca30a087..6eff16c5260 100644
--- a/src/devices/bus/cbm2/exp.h
+++ b/src/devices/bus/cbm2/exp.h
@@ -128,7 +128,6 @@ protected:
DECLARE_DEVICE_TYPE(CBM2_EXPANSION_SLOT, cbm2_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( cbm2_expansion_cards );
-
+void cbm2_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_CBM2_EXP_H
diff --git a/src/devices/bus/cbm2/user.cpp b/src/devices/bus/cbm2/user.cpp
index 0c54e409901..eefb9c4d591 100644
--- a/src/devices/bus/cbm2/user.cpp
+++ b/src/devices/bus/cbm2/user.cpp
@@ -74,5 +74,6 @@ void cbm2_user_port_device::device_start()
// SLOT_INTERFACE( cbm2_user_port_cards )
//-------------------------------------------------
-SLOT_INTERFACE_START( cbm2_user_port_cards )
-SLOT_INTERFACE_END
+void cbm2_user_port_cards(device_slot_interface &device)
+{
+}
diff --git a/src/devices/bus/cbm2/user.h b/src/devices/bus/cbm2/user.h
index 3802879e822..7ebe6ddbf34 100644
--- a/src/devices/bus/cbm2/user.h
+++ b/src/devices/bus/cbm2/user.h
@@ -147,7 +147,6 @@ DECLARE_DEVICE_TYPE(CBM2_USER_PORT, cbm2_user_port_device)
// slot devices
-SLOT_INTERFACE_EXTERN( cbm2_user_port_cards );
-
+void cbm2_user_port_cards(device_slot_interface &device);
#endif // MAME_BUS_CBM2_USER_H
diff --git a/src/devices/bus/cbmiec/c1541.cpp b/src/devices/bus/cbmiec/c1541.cpp
index 4070cecebec..bbadac3b80f 100644
--- a/src/devices/bus/cbmiec/c1541.cpp
+++ b/src/devices/bus/cbmiec/c1541.cpp
@@ -754,9 +754,10 @@ WRITE_LINE_MEMBER( c1541_device_base::byte_w )
// SLOT_INTERFACE( c1540_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( c1540_floppies )
- SLOT_INTERFACE( "525ssqd", ALPS_3255190X )
-SLOT_INTERFACE_END
+static void c1540_floppies(device_slot_interface &device)
+{
+ device.option_add("525ssqd", ALPS_3255190X);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/cbmiec/c1571.cpp b/src/devices/bus/cbmiec/c1571.cpp
index 097dbc77cf8..2cbe03c58c2 100644
--- a/src/devices/bus/cbmiec/c1571.cpp
+++ b/src/devices/bus/cbmiec/c1571.cpp
@@ -564,9 +564,10 @@ WRITE_LINE_MEMBER( c1571_device::byte_w )
// SLOT_INTERFACE( c1571_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( c1571_floppies )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
-SLOT_INTERFACE_END
+static void c1571_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD);
+}
//-------------------------------------------------
@@ -594,9 +595,10 @@ FLOPPY_FORMATS_END
// isa8bus_interface isabus_intf
//-------------------------------------------------
-static SLOT_INTERFACE_START( mini_chief_isa8_cards )
- SLOT_INTERFACE("wd1002a_wx1", ISA8_WD1002A_WX1)
-SLOT_INTERFACE_END
+static void mini_chief_isa8_cards(device_slot_interface &device)
+{
+ device.option_add("wd1002a_wx1", ISA8_WD1002A_WX1);
+}
//-------------------------------------------------
// device_add_mconfig - add device configuration
diff --git a/src/devices/bus/cbmiec/c1581.cpp b/src/devices/bus/cbmiec/c1581.cpp
index d16ca955bc0..8e9f0ec9555 100644
--- a/src/devices/bus/cbmiec/c1581.cpp
+++ b/src/devices/bus/cbmiec/c1581.cpp
@@ -248,9 +248,10 @@ WRITE8_MEMBER( c1581_device::cia_pb_w )
// SLOT_INTERFACE( c1581_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( c1581_floppies )
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD ) // Chinon F-354-E
-SLOT_INTERFACE_END
+static void c1581_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD); // Chinon F-354-E
+}
//-------------------------------------------------
diff --git a/src/devices/bus/cbmiec/cbmiec.cpp b/src/devices/bus/cbmiec/cbmiec.cpp
index 4384dbcd1cc..c91a9d54773 100644
--- a/src/devices/bus/cbmiec/cbmiec.cpp
+++ b/src/devices/bus/cbmiec/cbmiec.cpp
@@ -497,30 +497,31 @@ int cbm_iec_device::get_signal(int signal)
#include "vic1520.h"
#include "c1526.h"
-SLOT_INTERFACE_START( cbm_iec_devices )
- SLOT_INTERFACE("c1540", C1540)
- SLOT_INTERFACE("c1541", C1541)
- SLOT_INTERFACE("c1541c", C1541C)
- SLOT_INTERFACE("c1541ii", C1541II)
- SLOT_INTERFACE("fsd1", FSD1)
- SLOT_INTERFACE("fsd2", FSD2)
- SLOT_INTERFACE("csd1", CSD1)
- SLOT_INTERFACE("c1541dd", C1541_DOLPHIN_DOS)
- SLOT_INTERFACE("c1541pd", C1541_PROFESSIONAL_DOS_V1)
- SLOT_INTERFACE("c1541pdc", C1541_PROLOGIC_DOS_CLASSIC)
- SLOT_INTERFACE("c1570", C1570)
- SLOT_INTERFACE("c1571", C1571)
- SLOT_INTERFACE("c1581", C1581)
- SLOT_INTERFACE("indusgt", INDUS_GT)
- SLOT_INTERFACE("cmdhd", CMD_HD)
- SLOT_INTERFACE("fd2000", FD2000)
- SLOT_INTERFACE("fd4000", FD4000)
- SLOT_INTERFACE("interpod", INTERPOD)
- SLOT_INTERFACE("minichief", MINI_CHIEF)
- SLOT_INTERFACE("serialbox", SERIAL_BOX)
- SLOT_INTERFACE("diag264", DIAG264_SERIAL_LOOPBACK)
- SLOT_INTERFACE("nl10", C64_NL10_INTERFACE)
- SLOT_INTERFACE("vic1515", VIC1515)
- SLOT_INTERFACE("vic1520", VIC1520)
- SLOT_INTERFACE("c1526", C1526)
-SLOT_INTERFACE_END
+void cbm_iec_devices(device_slot_interface &device)
+{
+ device.option_add("c1540", C1540);
+ device.option_add("c1541", C1541);
+ device.option_add("c1541c", C1541C);
+ device.option_add("c1541ii", C1541II);
+ device.option_add("fsd1", FSD1);
+ device.option_add("fsd2", FSD2);
+ device.option_add("csd1", CSD1);
+ device.option_add("c1541dd", C1541_DOLPHIN_DOS);
+ device.option_add("c1541pd", C1541_PROFESSIONAL_DOS_V1);
+ device.option_add("c1541pdc", C1541_PROLOGIC_DOS_CLASSIC);
+ device.option_add("c1570", C1570);
+ device.option_add("c1571", C1571);
+ device.option_add("c1581", C1581);
+ device.option_add("indusgt", INDUS_GT);
+ device.option_add("cmdhd", CMD_HD);
+ device.option_add("fd2000", FD2000);
+ device.option_add("fd4000", FD4000);
+ device.option_add("interpod", INTERPOD);
+ device.option_add("minichief", MINI_CHIEF);
+ device.option_add("serialbox", SERIAL_BOX);
+ device.option_add("diag264", DIAG264_SERIAL_LOOPBACK);
+ device.option_add("nl10", C64_NL10_INTERFACE);
+ device.option_add("vic1515", VIC1515);
+ device.option_add("vic1520", VIC1520);
+ device.option_add("c1526", C1526);
+}
diff --git a/src/devices/bus/cbmiec/cbmiec.h b/src/devices/bus/cbmiec/cbmiec.h
index 6c7d60f471b..f7d9f5d73ff 100644
--- a/src/devices/bus/cbmiec/cbmiec.h
+++ b/src/devices/bus/cbmiec/cbmiec.h
@@ -204,7 +204,6 @@ DECLARE_DEVICE_TYPE(CBM_IEC, cbm_iec_device)
DECLARE_DEVICE_TYPE(CBM_IEC_SLOT, cbm_iec_slot_device)
-SLOT_INTERFACE_EXTERN( cbm_iec_devices );
-
+void cbm_iec_devices(device_slot_interface &device);
#endif // MAME_BUS_CBMIEC_CBMIEC_H
diff --git a/src/devices/bus/cbmiec/fd2000.cpp b/src/devices/bus/cbmiec/fd2000.cpp
index 46dd1151a34..a14f69d17a6 100644
--- a/src/devices/bus/cbmiec/fd2000.cpp
+++ b/src/devices/bus/cbmiec/fd2000.cpp
@@ -194,13 +194,15 @@ WRITE8_MEMBER( fd2000_device::via_pb_w )
*/
}
-static SLOT_INTERFACE_START( fd2000_floppies )
- SLOT_INTERFACE( "35hd", FLOPPY_35_HD ) // TEAC FD-235HF
-SLOT_INTERFACE_END
+static void fd2000_floppies(device_slot_interface &device)
+{
+ device.option_add("35hd", FLOPPY_35_HD); // TEAC FD-235HF
+}
-static SLOT_INTERFACE_START( fd4000_floppies )
- SLOT_INTERFACE( "35ed", FLOPPY_35_ED ) // TEAC FD-235J
-SLOT_INTERFACE_END
+static void fd4000_floppies(device_slot_interface &device)
+{
+ device.option_add("35ed", FLOPPY_35_ED); // TEAC FD-235J
+}
/*
FLOPPY_FORMATS_MEMBER( fd2000_device::floppy_formats )
FLOPPY_D81_FORMAT
diff --git a/src/devices/bus/cbus/pc9801_86.cpp b/src/devices/bus/cbus/pc9801_86.cpp
index 4eaf1b60092..c280702414d 100644
--- a/src/devices/bus/cbus/pc9801_86.cpp
+++ b/src/devices/bus/cbus/pc9801_86.cpp
@@ -66,8 +66,8 @@ MACHINE_CONFIG_START(pc9801_86_device::device_add_mconfig)
MCFG_SOUND_ADD("ldac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // burr brown pcm61p
MCFG_SOUND_ADD("rdac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // burr brown pcm61p
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
- MCFG_SOUND_ROUTE_EX(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
// RAM
diff --git a/src/devices/bus/centronics/covox.cpp b/src/devices/bus/centronics/covox.cpp
index eb5259c1913..80e355b82a9 100644
--- a/src/devices/bus/centronics/covox.cpp
+++ b/src/devices/bus/centronics/covox.cpp
@@ -43,7 +43,7 @@ MACHINE_CONFIG_START(centronics_covox_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
void centronics_covox_device::device_start()
@@ -93,8 +93,8 @@ MACHINE_CONFIG_START(centronics_covox_stereo_device::device_add_mconfig)
MCFG_SOUND_ADD("ldac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) // unknown DAC
MCFG_SOUND_ADD("rdac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
- MCFG_SOUND_ROUTE_EX(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
void centronics_covox_stereo_device::device_start()
diff --git a/src/devices/bus/centronics/ctronics.cpp b/src/devices/bus/centronics/ctronics.cpp
index 6c99dcf0786..2a63723ec9a 100644
--- a/src/devices/bus/centronics/ctronics.cpp
+++ b/src/devices/bus/centronics/ctronics.cpp
@@ -122,14 +122,15 @@ device_centronics_peripheral_interface::~device_centronics_peripheral_interface(
#include "printer.h"
#include "covox.h"
-SLOT_INTERFACE_START(centronics_devices)
- SLOT_INTERFACE("pl80", COMX_PL80)
- SLOT_INTERFACE("ex800", EPSON_EX800)
- SLOT_INTERFACE("lx800", EPSON_LX800)
- SLOT_INTERFACE("lx810l", EPSON_LX810L)
- SLOT_INTERFACE("ap2000", EPSON_AP2000)
- SLOT_INTERFACE("p72", NEC_P72)
- SLOT_INTERFACE("printer", CENTRONICS_PRINTER)
- SLOT_INTERFACE("covox", CENTRONICS_COVOX)
- SLOT_INTERFACE("covox_stereo", CENTRONICS_COVOX_STEREO)
-SLOT_INTERFACE_END
+void centronics_devices(device_slot_interface &device)
+{
+ device.option_add("pl80", COMX_PL80);
+ device.option_add("ex800", EPSON_EX800);
+ device.option_add("lx800", EPSON_LX800);
+ device.option_add("lx810l", EPSON_LX810L);
+ device.option_add("ap2000", EPSON_AP2000);
+ device.option_add("p72", NEC_P72);
+ device.option_add("printer", CENTRONICS_PRINTER);
+ device.option_add("covox", CENTRONICS_COVOX);
+ device.option_add("covox_stereo", CENTRONICS_COVOX_STEREO);
+}
diff --git a/src/devices/bus/centronics/ctronics.h b/src/devices/bus/centronics/ctronics.h
index 1c92f34fe39..c274b3d7832 100644
--- a/src/devices/bus/centronics/ctronics.h
+++ b/src/devices/bus/centronics/ctronics.h
@@ -216,6 +216,6 @@ protected:
};
-SLOT_INTERFACE_EXTERN( centronics_devices );
+void centronics_devices(device_slot_interface &device);
#endif // MAME_BUS_CENTRONICS_CTRONICS_H
diff --git a/src/devices/bus/centronics/digiblst.cpp b/src/devices/bus/centronics/digiblst.cpp
index f99cdecb589..27bb97be119 100644
--- a/src/devices/bus/centronics/digiblst.cpp
+++ b/src/devices/bus/centronics/digiblst.cpp
@@ -43,7 +43,7 @@ MACHINE_CONFIG_START(centronics_digiblaster_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
void centronics_digiblaster_device::device_start()
diff --git a/src/devices/bus/centronics/epson_lx810l.cpp b/src/devices/bus/centronics/epson_lx810l.cpp
index 45ba99fa6db..466e1351357 100644
--- a/src/devices/bus/centronics/epson_lx810l.cpp
+++ b/src/devices/bus/centronics/epson_lx810l.cpp
@@ -144,7 +144,7 @@ MACHINE_CONFIG_START(epson_lx810l_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
/* gate array */
MCFG_DEVICE_ADD("e05a30", E05A30, 0)
diff --git a/src/devices/bus/cgenie/expansion/carts.cpp b/src/devices/bus/cgenie/expansion/carts.cpp
index 48779691821..c15113d34b0 100644
--- a/src/devices/bus/cgenie/expansion/carts.cpp
+++ b/src/devices/bus/cgenie/expansion/carts.cpp
@@ -11,6 +11,7 @@
#include "floppy.h"
-SLOT_INTERFACE_START( cg_exp_slot_carts )
- SLOT_INTERFACE("floppy", CGENIE_FDC)
-SLOT_INTERFACE_END
+void cg_exp_slot_carts(device_slot_interface &device)
+{
+ device.option_add("floppy", CGENIE_FDC);
+}
diff --git a/src/devices/bus/cgenie/expansion/carts.h b/src/devices/bus/cgenie/expansion/carts.h
index 6f3503bdabf..fe903089972 100644
--- a/src/devices/bus/cgenie/expansion/carts.h
+++ b/src/devices/bus/cgenie/expansion/carts.h
@@ -12,6 +12,6 @@
#pragma once
-SLOT_INTERFACE_EXTERN( cg_exp_slot_carts );
+void cg_exp_slot_carts(device_slot_interface &device);
#endif // MAME_BUS_CGENIE_EXPANSION_CARTS_H
diff --git a/src/devices/bus/cgenie/expansion/floppy.cpp b/src/devices/bus/cgenie/expansion/floppy.cpp
index 8bad4c4bad6..0a2680023df 100644
--- a/src/devices/bus/cgenie/expansion/floppy.cpp
+++ b/src/devices/bus/cgenie/expansion/floppy.cpp
@@ -43,14 +43,15 @@ FLOPPY_FORMATS_MEMBER( cgenie_fdc_device::floppy_formats )
FLOPPY_CGENIE_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( cgenie_floppies )
- SLOT_INTERFACE("sssd", FLOPPY_525_SSSD)
- SLOT_INTERFACE("sd", FLOPPY_525_SD)
- SLOT_INTERFACE("ssdd", FLOPPY_525_SSDD)
- SLOT_INTERFACE("dd", FLOPPY_525_DD)
- SLOT_INTERFACE("ssqd", FLOPPY_525_SSQD)
- SLOT_INTERFACE("qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+static void cgenie_floppies(device_slot_interface &device)
+{
+ device.option_add("sssd", FLOPPY_525_SSSD);
+ device.option_add("sd", FLOPPY_525_SD);
+ device.option_add("ssdd", FLOPPY_525_SSDD);
+ device.option_add("dd", FLOPPY_525_DD);
+ device.option_add("ssqd", FLOPPY_525_SSQD);
+ device.option_add("qd", FLOPPY_525_QD);
+}
//-------------------------------------------------
// rom_region - device-specific ROM region
diff --git a/src/devices/bus/cgenie/parallel/carts.cpp b/src/devices/bus/cgenie/parallel/carts.cpp
index 627d969bd2f..174f97e32ce 100644
--- a/src/devices/bus/cgenie/parallel/carts.cpp
+++ b/src/devices/bus/cgenie/parallel/carts.cpp
@@ -12,7 +12,8 @@
#include "printer.h"
-SLOT_INTERFACE_START( cg_parallel_slot_carts )
- SLOT_INTERFACE("joystick", CGENIE_JOYSTICK)
- SLOT_INTERFACE("printer", CGENIE_PRINTER)
-SLOT_INTERFACE_END
+void cg_parallel_slot_carts(device_slot_interface &device)
+{
+ device.option_add("joystick", CGENIE_JOYSTICK);
+ device.option_add("printer", CGENIE_PRINTER);
+}
diff --git a/src/devices/bus/cgenie/parallel/carts.h b/src/devices/bus/cgenie/parallel/carts.h
index 0c893368899..bc433c6dce0 100644
--- a/src/devices/bus/cgenie/parallel/carts.h
+++ b/src/devices/bus/cgenie/parallel/carts.h
@@ -12,6 +12,6 @@
#pragma once
-SLOT_INTERFACE_EXTERN( cg_parallel_slot_carts );
+void cg_parallel_slot_carts(device_slot_interface &device);
#endif // MAME_BUS_CGENIE_PARALLEL_CARTS_H
diff --git a/src/devices/bus/coco/coco_fdc.cpp b/src/devices/bus/coco/coco_fdc.cpp
index 1e3beeeb648..0f0fbc59e46 100644
--- a/src/devices/bus/coco/coco_fdc.cpp
+++ b/src/devices/bus/coco/coco_fdc.cpp
@@ -121,9 +121,10 @@ FLOPPY_FORMATS_MEMBER( coco_family_fdc_device_base::floppy_formats )
FLOPPY_SDF_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( coco_fdc_floppies )
- SLOT_INTERFACE("qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+static void coco_fdc_floppies(device_slot_interface &device)
+{
+ device.option_add("qd", FLOPPY_525_QD);
+}
MACHINE_CONFIG_START(coco_fdc_device_base::device_add_mconfig)
MCFG_WD1773_ADD(WD_TAG, XTAL(8'000'000))
diff --git a/src/devices/bus/coco/coco_multi.cpp b/src/devices/bus/coco/coco_multi.cpp
index 350897cfd3a..afe7e4c6a57 100644
--- a/src/devices/bus/coco/coco_multi.cpp
+++ b/src/devices/bus/coco/coco_multi.cpp
@@ -156,27 +156,29 @@ namespace
IMPLEMENTATION
***************************************************************************/
-static SLOT_INTERFACE_START(coco_cart_slot1_3)
- SLOT_INTERFACE("rs232", COCO_RS232)
- SLOT_INTERFACE("dcmodem", COCO_DCMODEM)
- SLOT_INTERFACE("orch90", COCO_ORCH90)
- SLOT_INTERFACE("ssc", COCO_SSC) MCFG_SLOT_OPTION_CLOCK("ssc", DERIVED_CLOCK(1, 1))
- SLOT_INTERFACE("games_master", COCO_PAK_GMC)
- SLOT_INTERFACE("banked_16k", COCO_PAK_BANKED)
- SLOT_INTERFACE("pak", COCO_PAK)
-SLOT_INTERFACE_END
-static SLOT_INTERFACE_START(coco_cart_slot4)
- SLOT_INTERFACE("cc2hdb1", COCO2_HDB1)
- SLOT_INTERFACE("cc3hdb1", COCO3_HDB1)
- SLOT_INTERFACE("fdcv11", COCO_FDC_V11)
- SLOT_INTERFACE("rs232", COCO_RS232)
- SLOT_INTERFACE("dcmodem", COCO_DCMODEM)
- SLOT_INTERFACE("orch90", COCO_ORCH90)
- SLOT_INTERFACE("ssc", COCO_SSC) MCFG_SLOT_OPTION_CLOCK("ssc", DERIVED_CLOCK(1, 1))
- SLOT_INTERFACE("games_master", COCO_PAK_GMC)
- SLOT_INTERFACE("banked_16k", COCO_PAK_BANKED)
- SLOT_INTERFACE("pak", COCO_PAK)
-SLOT_INTERFACE_END
+static void coco_cart_slot1_3(device_slot_interface &device)
+{
+ device.option_add("rs232", COCO_RS232);
+ device.option_add("dcmodem", COCO_DCMODEM);
+ device.option_add("orch90", COCO_ORCH90);
+ device.option_add("ssc", COCO_SSC).clock(DERIVED_CLOCK(1, 1));
+ device.option_add("games_master", COCO_PAK_GMC);
+ device.option_add("banked_16k", COCO_PAK_BANKED);
+ device.option_add("pak", COCO_PAK);
+}
+static void coco_cart_slot4(device_slot_interface &device)
+{
+ device.option_add("cc2hdb1", COCO2_HDB1);
+ device.option_add("cc3hdb1", COCO3_HDB1);
+ device.option_add("fdcv11", COCO_FDC_V11);
+ device.option_add("rs232", COCO_RS232);
+ device.option_add("dcmodem", COCO_DCMODEM);
+ device.option_add("orch90", COCO_ORCH90);
+ device.option_add("ssc", COCO_SSC).clock(DERIVED_CLOCK(1, 1));
+ device.option_add("games_master", COCO_PAK_GMC);
+ device.option_add("banked_16k", COCO_PAK_BANKED);
+ device.option_add("pak", COCO_PAK);
+}
MACHINE_CONFIG_START(coco_multipak_device::device_add_mconfig)
diff --git a/src/devices/bus/coco/coco_orch90.cpp b/src/devices/bus/coco/coco_orch90.cpp
index e008aa2ecbf..cc5aa959636 100644
--- a/src/devices/bus/coco/coco_orch90.cpp
+++ b/src/devices/bus/coco/coco_orch90.cpp
@@ -112,8 +112,8 @@ MACHINE_CONFIG_START(coco_orch90_device::device_add_mconfig)
MCFG_SOUND_ADD("ldac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) // ls374.ic5 + r7 (8x20k) + r9 (8x10k)
MCFG_SOUND_ADD("rdac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // ls374.ic4 + r6 (8x20k) + r8 (8x10k)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
- MCFG_SOUND_ROUTE_EX(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
diff --git a/src/devices/bus/coco/dragon_fdc.cpp b/src/devices/bus/coco/dragon_fdc.cpp
index 8ecff41087c..d1473a8c0b6 100644
--- a/src/devices/bus/coco/dragon_fdc.cpp
+++ b/src/devices/bus/coco/dragon_fdc.cpp
@@ -143,9 +143,10 @@ namespace
LOCAL VARIABLES
***************************************************************************/
-static SLOT_INTERFACE_START(dragon_fdc_device_base)
- SLOT_INTERFACE("qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+static void dragon_fdc_drives(device_slot_interface &device)
+{
+ device.option_add("qd", FLOPPY_525_QD);
+}
MACHINE_CONFIG_START(dragon_fdc_device_base::device_add_mconfig)
@@ -154,13 +155,13 @@ MACHINE_CONFIG_START(dragon_fdc_device_base::device_add_mconfig)
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(dragon_fdc_device_base, fdc_drq_w))
MCFG_WD_FDC_FORCE_READY
- MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":0", dragon_fdc_device_base, "qd", dragon_fdc_device_base::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":0", dragon_fdc_drives, "qd", dragon_fdc_device_base::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":1", dragon_fdc_device_base, "qd", dragon_fdc_device_base::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":1", dragon_fdc_drives, "qd", dragon_fdc_device_base::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":2", dragon_fdc_device_base, "", dragon_fdc_device_base::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":2", dragon_fdc_drives, "", dragon_fdc_device_base::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":3", dragon_fdc_device_base, "", dragon_fdc_device_base::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":3", dragon_fdc_drives, "", dragon_fdc_device_base::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(true)
MACHINE_CONFIG_END
@@ -169,13 +170,13 @@ MACHINE_CONFIG_START(premier_fdc_device_base::device_add_mconfig)
MCFG_WD2791_ADD(WD2791_TAG, XTAL(2'000'000) / 2)
MCFG_WD_FDC_FORCE_READY
- MCFG_FLOPPY_DRIVE_ADD(WD2791_TAG ":0", dragon_fdc_device_base, "qd", dragon_fdc_device_base::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD2791_TAG ":0", dragon_fdc_drives, "qd", dragon_fdc_device_base::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD(WD2791_TAG ":1", dragon_fdc_device_base, "qd", dragon_fdc_device_base::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD2791_TAG ":1", dragon_fdc_drives, "qd", dragon_fdc_device_base::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD(WD2791_TAG ":2", dragon_fdc_device_base, "", dragon_fdc_device_base::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD2791_TAG ":2", dragon_fdc_drives, "", dragon_fdc_device_base::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD(WD2791_TAG ":3", dragon_fdc_device_base, "", dragon_fdc_device_base::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD2791_TAG ":3", dragon_fdc_drives, "", dragon_fdc_device_base::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(true)
MACHINE_CONFIG_END
diff --git a/src/devices/bus/coleco/ctrl.cpp b/src/devices/bus/coleco/ctrl.cpp
index 630553998de..330c7c71551 100644
--- a/src/devices/bus/coleco/ctrl.cpp
+++ b/src/devices/bus/coleco/ctrl.cpp
@@ -73,7 +73,8 @@ void colecovision_control_port_device::device_start()
#include "hand.h"
#include "sac.h"
-SLOT_INTERFACE_START( colecovision_control_port_devices )
- SLOT_INTERFACE("hand", COLECO_HAND_CONTROLLER)
- SLOT_INTERFACE("sac", COLECO_SUPER_ACTION_CONTROLLER)
-SLOT_INTERFACE_END
+void colecovision_control_port_devices(device_slot_interface &device)
+{
+ device.option_add("hand", COLECO_HAND_CONTROLLER);
+ device.option_add("sac", COLECO_SUPER_ACTION_CONTROLLER);
+}
diff --git a/src/devices/bus/coleco/ctrl.h b/src/devices/bus/coleco/ctrl.h
index 75d1610e698..9d605415cb4 100644
--- a/src/devices/bus/coleco/ctrl.h
+++ b/src/devices/bus/coleco/ctrl.h
@@ -95,7 +95,7 @@ private:
// device type definition
DECLARE_DEVICE_TYPE(COLECOVISION_CONTROL_PORT, colecovision_control_port_device)
-SLOT_INTERFACE_EXTERN( colecovision_control_port_devices );
+void colecovision_control_port_devices(device_slot_interface &device);
#endif // MAME_BUS_COLECO_CTRL_H
diff --git a/src/devices/bus/coleco/exp.cpp b/src/devices/bus/coleco/exp.cpp
index b092fd5a49b..c2878c4523a 100644
--- a/src/devices/bus/coleco/exp.cpp
+++ b/src/devices/bus/coleco/exp.cpp
@@ -136,8 +136,9 @@ uint8_t colecovision_cartridge_slot_device::bd_r(address_space &space, offs_t of
#include "std.h"
#include "xin1.h"
-SLOT_INTERFACE_START( colecovision_cartridges )
+void colecovision_cartridges(device_slot_interface &device)
+{
// the following need ROMs from the software list
- SLOT_INTERFACE_INTERNAL("standard", COLECOVISION_STANDARD)
- SLOT_INTERFACE_INTERNAL("xin1", COLECOVISION_XIN1)
-SLOT_INTERFACE_END
+ device.option_add_internal("standard", COLECOVISION_STANDARD);
+ device.option_add_internal("xin1", COLECOVISION_XIN1);
+}
diff --git a/src/devices/bus/coleco/exp.h b/src/devices/bus/coleco/exp.h
index 4c4f8db8fa8..e722dfc1234 100644
--- a/src/devices/bus/coleco/exp.h
+++ b/src/devices/bus/coleco/exp.h
@@ -120,7 +120,7 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(COLECOVISION_CARTRIDGE_SLOT, colecovision_cartridge_slot_device)
-SLOT_INTERFACE_EXTERN( colecovision_cartridges );
+void colecovision_cartridges(device_slot_interface &device);
#endif // MAME_BUS_COLECO_EXP_H
diff --git a/src/devices/bus/compis/graphics.cpp b/src/devices/bus/compis/graphics.cpp
index cf66c311632..ec8db616003 100644
--- a/src/devices/bus/compis/graphics.cpp
+++ b/src/devices/bus/compis/graphics.cpp
@@ -67,7 +67,8 @@ void compis_graphics_slot_device::device_start()
// slot devices
#include "hrg.h"
-SLOT_INTERFACE_START( compis_graphics_cards )
- SLOT_INTERFACE("hrg", COMPIS_HRG)
- SLOT_INTERFACE("uhrg", COMPIS_UHRG)
-SLOT_INTERFACE_END
+void compis_graphics_cards(device_slot_interface &device)
+{
+ device.option_add("hrg", COMPIS_HRG);
+ device.option_add("uhrg", COMPIS_UHRG);
+}
diff --git a/src/devices/bus/compis/graphics.h b/src/devices/bus/compis/graphics.h
index f42bb2bdd30..063a7d886b0 100644
--- a/src/devices/bus/compis/graphics.h
+++ b/src/devices/bus/compis/graphics.h
@@ -101,7 +101,7 @@ protected:
DECLARE_DEVICE_TYPE(COMPIS_GRAPHICS_SLOT, compis_graphics_slot_device)
-SLOT_INTERFACE_EXTERN( compis_graphics_cards );
+void compis_graphics_cards(device_slot_interface &device);
#endif // MAME_BUS_COMPIS_GRAPHICS_H
diff --git a/src/devices/bus/compucolor/floppy.cpp b/src/devices/bus/compucolor/floppy.cpp
index af789ea7e43..f454a4f092a 100644
--- a/src/devices/bus/compucolor/floppy.cpp
+++ b/src/devices/bus/compucolor/floppy.cpp
@@ -23,9 +23,10 @@ DEFINE_DEVICE_TYPE(COMPUCOLOR_FLOPPY, compucolor_floppy_device, "compc
// SLOT_INTERFACE( compucolor_floppy_port_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( compucolor_floppy_port_devices )
- SLOT_INTERFACE("floppy", COMPUCOLOR_FLOPPY)
-SLOT_INTERFACE_END
+void compucolor_floppy_port_devices(device_slot_interface &device)
+{
+ device.option_add("floppy", COMPUCOLOR_FLOPPY);
+}
//-------------------------------------------------
@@ -41,9 +42,10 @@ FLOPPY_FORMATS_END
// SLOT_INTERFACE( compucolor_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( compucolor_floppies )
- SLOT_INTERFACE_INTERNAL( "525sssd", FLOPPY_525_SSSD )
-SLOT_INTERFACE_END
+static void compucolor_floppies(device_slot_interface &device)
+{
+ device.option_add_internal("525sssd", FLOPPY_525_SSSD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/compucolor/floppy.h b/src/devices/bus/compucolor/floppy.h
index 0a5c064acf1..e879517a30b 100644
--- a/src/devices/bus/compucolor/floppy.h
+++ b/src/devices/bus/compucolor/floppy.h
@@ -116,6 +116,6 @@ DECLARE_DEVICE_TYPE(COMPUCOLOR_FLOPPY, compucolor_floppy_device)
// slot devices
-SLOT_INTERFACE_EXTERN( compucolor_floppy_port_devices );
+void compucolor_floppy_port_devices(device_slot_interface &device);
#endif // MAME_BUS_COMPUCOLOR_FLOPPY_H
diff --git a/src/devices/bus/comx35/exp.cpp b/src/devices/bus/comx35/exp.cpp
index 8c160829bdc..1780c0fab8b 100644
--- a/src/devices/bus/comx35/exp.cpp
+++ b/src/devices/bus/comx35/exp.cpp
@@ -176,13 +176,14 @@ READ_LINE_MEMBER( comx_expansion_slot_device::ef4_r )
#include "ram.h"
#include "thermal.h"
-SLOT_INTERFACE_START( comx_expansion_cards )
- SLOT_INTERFACE("eb", COMX_EB)
- SLOT_INTERFACE("fd", COMX_FD)
- SLOT_INTERFACE("clm", COMX_CLM)
- SLOT_INTERFACE("ram", COMX_RAM)
- SLOT_INTERFACE("joy", COMX_JOY)
- SLOT_INTERFACE("prn", COMX_PRN)
- SLOT_INTERFACE("thm", COMX_THM)
- SLOT_INTERFACE("epr", COMX_EPR)
-SLOT_INTERFACE_END
+void comx_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("eb", COMX_EB);
+ device.option_add("fd", COMX_FD);
+ device.option_add("clm", COMX_CLM);
+ device.option_add("ram", COMX_RAM);
+ device.option_add("joy", COMX_JOY);
+ device.option_add("prn", COMX_PRN);
+ device.option_add("thm", COMX_THM);
+ device.option_add("epr", COMX_EPR);
+}
diff --git a/src/devices/bus/comx35/exp.h b/src/devices/bus/comx35/exp.h
index fb5831e31fe..6ffa7e9b67c 100644
--- a/src/devices/bus/comx35/exp.h
+++ b/src/devices/bus/comx35/exp.h
@@ -135,7 +135,7 @@ protected:
DECLARE_DEVICE_TYPE(COMX_EXPANSION_SLOT, comx_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( comx_expansion_cards );
+void comx_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_COMX35_EXP_H
diff --git a/src/devices/bus/comx35/fdc.cpp b/src/devices/bus/comx35/fdc.cpp
index 49ea672b1ee..962ff78c6af 100644
--- a/src/devices/bus/comx35/fdc.cpp
+++ b/src/devices/bus/comx35/fdc.cpp
@@ -85,10 +85,11 @@ FLOPPY_FORMATS_MEMBER( comx_fd_device::floppy_formats )
FLOPPY_COMX35_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( comx_fd_floppies )
- SLOT_INTERFACE( "525sd35t", FLOPPY_525_SD_35T )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
-SLOT_INTERFACE_END
+static void comx_fd_floppies(device_slot_interface &device)
+{
+ device.option_add("525sd35t", FLOPPY_525_SD_35T);
+ device.option_add("525qd", FLOPPY_525_QD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/cpc/amdrum.cpp b/src/devices/bus/cpc/amdrum.cpp
index bf11fb5e095..df9b0a7ff5f 100644
--- a/src/devices/bus/cpc/amdrum.cpp
+++ b/src/devices/bus/cpc/amdrum.cpp
@@ -24,7 +24,7 @@ MACHINE_CONFIG_START(cpc_amdrum_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
// no pass-through
MACHINE_CONFIG_END
diff --git a/src/devices/bus/cpc/cpc_rom.cpp b/src/devices/bus/cpc/cpc_rom.cpp
index cb71e375db8..af5150862e9 100644
--- a/src/devices/bus/cpc/cpc_rom.cpp
+++ b/src/devices/bus/cpc/cpc_rom.cpp
@@ -11,7 +11,7 @@
DEFINE_DEVICE_TYPE(CPC_ROM, cpc_rom_device, "cpc_rom", "CPC ROM Box")
-SLOT_INTERFACE_EXTERN(cpc_exp_cards);
+void cpc_exp_cards(device_slot_interface &device);
//**************************************************************************
// DEVICE CONFIG INTERFACE
diff --git a/src/devices/bus/cpc/cpc_rs232.cpp b/src/devices/bus/cpc/cpc_rs232.cpp
index c0914b93b68..688b1b4e2ab 100644
--- a/src/devices/bus/cpc/cpc_rs232.cpp
+++ b/src/devices/bus/cpc/cpc_rs232.cpp
@@ -9,7 +9,7 @@
#include "emu.h"
#include "cpc_rs232.h"
-SLOT_INTERFACE_EXTERN(cpc_exp_cards);
+void cpc_exp_cards(device_slot_interface &device);
//**************************************************************************
// DEVICE DEFINITIONS
diff --git a/src/devices/bus/cpc/cpc_ssa1.cpp b/src/devices/bus/cpc/cpc_ssa1.cpp
index 59369e577df..47759ac3307 100644
--- a/src/devices/bus/cpc/cpc_ssa1.cpp
+++ b/src/devices/bus/cpc/cpc_ssa1.cpp
@@ -13,7 +13,7 @@
#include "speaker.h"
-SLOT_INTERFACE_EXTERN(cpc_exp_cards);
+void cpc_exp_cards(device_slot_interface &device);
//**************************************************************************
// DEVICE DEFINITIONS
diff --git a/src/devices/bus/cpc/ddi1.cpp b/src/devices/bus/cpc/ddi1.cpp
index 7364e899efb..13bb7950077 100644
--- a/src/devices/bus/cpc/ddi1.cpp
+++ b/src/devices/bus/cpc/ddi1.cpp
@@ -8,7 +8,7 @@
#include "ddi1.h"
#include "softlist.h"
-SLOT_INTERFACE_EXTERN(cpc_exp_cards);
+void cpc_exp_cards(device_slot_interface &device);
//**************************************************************************
// DEVICE DEFINITIONS
@@ -16,9 +16,10 @@ SLOT_INTERFACE_EXTERN(cpc_exp_cards);
DEFINE_DEVICE_TYPE(CPC_DDI1, cpc_ddi1_device, "cpc_ddi1", "Amstrad DDI-1")
-static SLOT_INTERFACE_START( ddi1_floppies )
- SLOT_INTERFACE( "3ssdd", FLOPPY_3_SSDD )
-SLOT_INTERFACE_END
+static void ddi1_floppies(device_slot_interface &device)
+{
+ device.option_add("3ssdd", FLOPPY_3_SSDD);
+}
//-------------------------------------------------
// Device ROM definition
diff --git a/src/devices/bus/cpc/magicsound.cpp b/src/devices/bus/cpc/magicsound.cpp
index ef3b9cb52e0..fef6582ae11 100644
--- a/src/devices/bus/cpc/magicsound.cpp
+++ b/src/devices/bus/cpc/magicsound.cpp
@@ -59,7 +59,7 @@ MACHINE_CONFIG_START(al_magicsound_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
// no pass-through(?)
MACHINE_CONFIG_END
diff --git a/src/devices/bus/cpc/mface2.cpp b/src/devices/bus/cpc/mface2.cpp
index 49cb59f54cc..98c2ded0ce8 100644
--- a/src/devices/bus/cpc/mface2.cpp
+++ b/src/devices/bus/cpc/mface2.cpp
@@ -9,7 +9,7 @@
#include "emu.h"
#include "mface2.h"
-SLOT_INTERFACE_EXTERN(cpc_exp_cards);
+void cpc_exp_cards(device_slot_interface &device);
//**************************************************************************
// DEVICE DEFINITIONS
diff --git a/src/devices/bus/cpc/playcity.cpp b/src/devices/bus/cpc/playcity.cpp
index 9ec331ffd54..66c1bd715a5 100644
--- a/src/devices/bus/cpc/playcity.cpp
+++ b/src/devices/bus/cpc/playcity.cpp
@@ -15,7 +15,7 @@
#include "speaker.h"
-SLOT_INTERFACE_EXTERN(cpc_exp_cards);
+void cpc_exp_cards(device_slot_interface &device);
//**************************************************************************
// DEVICE DEFINITIONS
diff --git a/src/devices/bus/ecbbus/ecbbus.cpp b/src/devices/bus/ecbbus/ecbbus.cpp
index 625f2e46086..c5499f1fb6c 100644
--- a/src/devices/bus/ecbbus/ecbbus.cpp
+++ b/src/devices/bus/ecbbus/ecbbus.cpp
@@ -190,11 +190,12 @@ WRITE8_MEMBER( ecbbus_device::io_w )
// slot devices
#include "grip.h"
-SLOT_INTERFACE_START( ecbbus_cards )
- SLOT_INTERFACE("grip21", ECB_GRIP21)
-/* SLOT_INTERFACE("grip25", ECB_GRIP25)
- SLOT_INTERFACE("grip26", ECB_GRIP26)
- SLOT_INTERFACE("grip31", ECB_GRIP31)
- SLOT_INTERFACE("grip562", ECB_GRIP562)
- SLOT_INTERFACE("grips115", ECB_GRIPS115)*/
-SLOT_INTERFACE_END
+void ecbbus_cards(device_slot_interface &device)
+{
+ device.option_add("grip21", ECB_GRIP21);
+/* device.option_add("grip25", ECB_GRIP25);
+ device.option_add("grip26", ECB_GRIP26);
+ device.option_add("grip31", ECB_GRIP31);
+ device.option_add("grip562", ECB_GRIP562);
+ device.option_add("grips115", ECB_GRIPS115);*/
+}
diff --git a/src/devices/bus/ecbbus/ecbbus.h b/src/devices/bus/ecbbus/ecbbus.h
index 442486c052c..b446b6ee0ae 100644
--- a/src/devices/bus/ecbbus/ecbbus.h
+++ b/src/devices/bus/ecbbus/ecbbus.h
@@ -177,7 +177,7 @@ protected:
};
-SLOT_INTERFACE_EXTERN( ecbbus_cards );
+void ecbbus_cards(device_slot_interface &device);
diff --git a/src/devices/bus/econet/e01.cpp b/src/devices/bus/econet/e01.cpp
index dd0e10b86a0..ec668e3954e 100644
--- a/src/devices/bus/econet/e01.cpp
+++ b/src/devices/bus/econet/e01.cpp
@@ -173,9 +173,10 @@ FLOPPY_FORMATS_MEMBER( econet_e01_device::floppy_formats_afs )
FLOPPY_AFS_FORMAT
FLOPPY_FORMATS_END0
-static SLOT_INTERFACE_START( e01_floppies )
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD ) // NEC FD1036 A
-SLOT_INTERFACE_END
+static void e01_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD); // NEC FD1036 A
+}
WRITE_LINE_MEMBER( econet_e01_device::fdc_irq_w )
{
diff --git a/src/devices/bus/econet/econet.cpp b/src/devices/bus/econet/econet.cpp
index 2b9b961af88..3cc15bc224b 100644
--- a/src/devices/bus/econet/econet.cpp
+++ b/src/devices/bus/econet/econet.cpp
@@ -298,7 +298,8 @@ void econet_device::data_w(device_t *device, int state)
// slot devices
#include "e01.h"
-SLOT_INTERFACE_START( econet_devices )
- SLOT_INTERFACE("e01", ECONET_E01)
- SLOT_INTERFACE("e01s", ECONET_E01S)
-SLOT_INTERFACE_END
+void econet_devices(device_slot_interface &device)
+{
+ device.option_add("e01", ECONET_E01);
+ device.option_add("e01s", ECONET_E01S);
+}
diff --git a/src/devices/bus/econet/econet.h b/src/devices/bus/econet/econet.h
index 9bed6727da0..9b731d27b67 100644
--- a/src/devices/bus/econet/econet.h
+++ b/src/devices/bus/econet/econet.h
@@ -160,8 +160,6 @@ DECLARE_DEVICE_TYPE(ECONET, econet_device)
DECLARE_DEVICE_TYPE(ECONET_SLOT, econet_slot_device)
-SLOT_INTERFACE_EXTERN( econet_devices );
-
-
+void econet_devices(device_slot_interface &device);
#endif // MAME_BUS_ECONET_ECONET_H
diff --git a/src/devices/bus/einstein/pipe/pipe.cpp b/src/devices/bus/einstein/pipe/pipe.cpp
index 51169544ba7..b40038e650b 100644
--- a/src/devices/bus/einstein/pipe/pipe.cpp
+++ b/src/devices/bus/einstein/pipe/pipe.cpp
@@ -129,8 +129,9 @@ device_tatung_pipe_interface::~device_tatung_pipe_interface()
// SLOT INTERFACE
//**************************************************************************
-SLOT_INTERFACE_START( tatung_pipe_cards )
- SLOT_INTERFACE("silicon_disc", EINSTEIN_SILICON_DISC)
- SLOT_INTERFACE("speculator", EINSTEIN_SPECULATOR)
- SLOT_INTERFACE("tk02", TK02_80COL)
-SLOT_INTERFACE_END
+void tatung_pipe_cards(device_slot_interface &device)
+{
+ device.option_add("silicon_disc", EINSTEIN_SILICON_DISC);
+ device.option_add("speculator", EINSTEIN_SPECULATOR);
+ device.option_add("tk02", TK02_80COL);
+}
diff --git a/src/devices/bus/einstein/pipe/pipe.h b/src/devices/bus/einstein/pipe/pipe.h
index 222ebe18e0c..078a88fe004 100644
--- a/src/devices/bus/einstein/pipe/pipe.h
+++ b/src/devices/bus/einstein/pipe/pipe.h
@@ -131,6 +131,6 @@ protected:
DECLARE_DEVICE_TYPE(TATUNG_PIPE, tatung_pipe_device)
// supported devices
-SLOT_INTERFACE_EXTERN(tatung_pipe_cards);
+void tatung_pipe_cards(device_slot_interface &device);
#endif // MAME_BUS_EINSTEIN_PIPE_PIPE_H
diff --git a/src/devices/bus/einstein/userport/userport.cpp b/src/devices/bus/einstein/userport/userport.cpp
index d38dba12af9..419c24d94d4 100644
--- a/src/devices/bus/einstein/userport/userport.cpp
+++ b/src/devices/bus/einstein/userport/userport.cpp
@@ -118,7 +118,8 @@ device_einstein_userport_interface::~device_einstein_userport_interface()
// SLOT INTERFACE
//**************************************************************************
-SLOT_INTERFACE_START( einstein_userport_cards )
- SLOT_INTERFACE("mouse", EINSTEIN_MOUSE)
- SLOT_INTERFACE("speech", EINSTEIN_SPEECH)
-SLOT_INTERFACE_END
+void einstein_userport_cards(device_slot_interface &device)
+{
+ device.option_add("mouse", EINSTEIN_MOUSE);
+ device.option_add("speech", EINSTEIN_SPEECH);
+}
diff --git a/src/devices/bus/einstein/userport/userport.h b/src/devices/bus/einstein/userport/userport.h
index ea00d229b08..a0c650b2193 100644
--- a/src/devices/bus/einstein/userport/userport.h
+++ b/src/devices/bus/einstein/userport/userport.h
@@ -90,6 +90,6 @@ protected:
DECLARE_DEVICE_TYPE(EINSTEIN_USERPORT, einstein_userport_device)
// supported devices
-SLOT_INTERFACE_EXTERN(einstein_userport_cards);
+void einstein_userport_cards(device_slot_interface &device);
#endif // MAME_BUS_EINSTEIN_USERPORT_USERPORT_H
diff --git a/src/devices/bus/electron/cart/ap34.cpp b/src/devices/bus/electron/cart/ap34.cpp
index d22fd885c04..053017c3c62 100644
--- a/src/devices/bus/electron/cart/ap34.cpp
+++ b/src/devices/bus/electron/cart/ap34.cpp
@@ -34,10 +34,11 @@ FLOPPY_FORMATS_MEMBER(electron_ap34_device::floppy_formats)
FLOPPY_ACORN_ADFS_OLD_FORMAT
FLOPPY_FORMATS_END0
-SLOT_INTERFACE_START(ap34_floppies)
- SLOT_INTERFACE("35dd", FLOPPY_35_DD)
- SLOT_INTERFACE("525qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+void ap34_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD);
+ device.option_add("525qd", FLOPPY_525_QD);
+}
//-------------------------------------------------
// device_add_mconfig - add device configuration
diff --git a/src/devices/bus/electron/cart/cumana.cpp b/src/devices/bus/electron/cart/cumana.cpp
index ef184695f9f..94024d66053 100644
--- a/src/devices/bus/electron/cart/cumana.cpp
+++ b/src/devices/bus/electron/cart/cumana.cpp
@@ -35,10 +35,11 @@ FLOPPY_FORMATS_MEMBER(electron_cumana_device::floppy_formats)
FLOPPY_ACORN_ADFS_OLD_FORMAT
FLOPPY_FORMATS_END0
-SLOT_INTERFACE_START(cumana_floppies)
- SLOT_INTERFACE("35dd", FLOPPY_35_DD)
- SLOT_INTERFACE("525qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+void cumana_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD);
+ device.option_add("525qd", FLOPPY_525_QD);
+}
//-------------------------------------------------
// device_add_mconfig - add device configuration
diff --git a/src/devices/bus/electron/cart/peg400.cpp b/src/devices/bus/electron/cart/peg400.cpp
index 1bf8442421f..9e8df57c310 100644
--- a/src/devices/bus/electron/cart/peg400.cpp
+++ b/src/devices/bus/electron/cart/peg400.cpp
@@ -31,10 +31,11 @@ FLOPPY_FORMATS_MEMBER(electron_peg400_device::floppy_formats)
FLOPPY_ACORN_ADFS_OLD_FORMAT
FLOPPY_FORMATS_END0
-SLOT_INTERFACE_START(peg400_floppies)
- SLOT_INTERFACE("35dd", FLOPPY_35_DD)
- SLOT_INTERFACE("525qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+void peg400_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD);
+ device.option_add("525qd", FLOPPY_525_QD);
+}
//-------------------------------------------------
// device_add_mconfig - add device configuration
diff --git a/src/devices/bus/electron/cart/slot.cpp b/src/devices/bus/electron/cart/slot.cpp
index 8a13e2a4664..aae2f65594d 100644
--- a/src/devices/bus/electron/cart/slot.cpp
+++ b/src/devices/bus/electron/cart/slot.cpp
@@ -280,17 +280,18 @@ void electron_cartslot_device::write(address_space &space, offs_t offset, uint8_
#include "std.h"
-SLOT_INTERFACE_START(electron_cart)
- SLOT_INTERFACE_INTERNAL("std", ELECTRON_STDCART)
- SLOT_INTERFACE_INTERNAL("abr", ELECTRON_ABR)
- SLOT_INTERFACE_INTERNAL("ap34", ELECTRON_AP34)
- SLOT_INTERFACE_INTERNAL("aqr", ELECTRON_AQR)
- SLOT_INTERFACE_INTERNAL("click", ELECTRON_CLICK)
- SLOT_INTERFACE_INTERNAL("cumana", ELECTRON_CUMANA)
- SLOT_INTERFACE_INTERNAL("mgc", ELECTRON_MGC)
- SLOT_INTERFACE_INTERNAL("peg400", ELECTRON_PEG400)
- SLOT_INTERFACE_INTERNAL("sndexp", ELECTRON_SNDEXP)
- SLOT_INTERFACE_INTERNAL("sndexp3", ELECTRON_SNDEXP3)
- SLOT_INTERFACE_INTERNAL("sp64", ELECTRON_SP64)
- SLOT_INTERFACE_INTERNAL("stlefs", ELECTRON_STLEFS)
-SLOT_INTERFACE_END
+void electron_cart(device_slot_interface &device)
+{
+ device.option_add_internal("std", ELECTRON_STDCART);
+ device.option_add_internal("abr", ELECTRON_ABR);
+ device.option_add_internal("ap34", ELECTRON_AP34);
+ device.option_add_internal("aqr", ELECTRON_AQR);
+ device.option_add_internal("click", ELECTRON_CLICK);
+ device.option_add_internal("cumana", ELECTRON_CUMANA);
+ device.option_add_internal("mgc", ELECTRON_MGC);
+ device.option_add_internal("peg400", ELECTRON_PEG400);
+ device.option_add_internal("sndexp", ELECTRON_SNDEXP);
+ device.option_add_internal("sndexp3", ELECTRON_SNDEXP3);
+ device.option_add_internal("sp64", ELECTRON_SP64);
+ device.option_add_internal("stlefs", ELECTRON_STLEFS);
+}
diff --git a/src/devices/bus/electron/cart/slot.h b/src/devices/bus/electron/cart/slot.h
index 533c4bb4555..3b7b934ff1e 100644
--- a/src/devices/bus/electron/cart/slot.h
+++ b/src/devices/bus/electron/cart/slot.h
@@ -212,7 +212,7 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(ELECTRON_CARTSLOT, electron_cartslot_device)
-SLOT_INTERFACE_EXTERN(electron_cart);
+void electron_cart(device_slot_interface &device);
#endif // MAME_BUS_ELECTRON_CARTSLOT_H
diff --git a/src/devices/bus/electron/cart/stlefs.cpp b/src/devices/bus/electron/cart/stlefs.cpp
index 29cfdf471e1..a47dca06e67 100644
--- a/src/devices/bus/electron/cart/stlefs.cpp
+++ b/src/devices/bus/electron/cart/stlefs.cpp
@@ -34,10 +34,11 @@ FLOPPY_FORMATS_MEMBER(electron_stlefs_device::floppy_formats)
FLOPPY_ACORN_ADFS_OLD_FORMAT
FLOPPY_FORMATS_END
-SLOT_INTERFACE_START(stlefs_floppies)
- SLOT_INTERFACE("35dd", FLOPPY_35_DD)
- SLOT_INTERFACE("525qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+void stlefs_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD);
+ device.option_add("525qd", FLOPPY_525_QD);
+}
//-------------------------------------------------
// device_add_mconfig - add device configuration
diff --git a/src/devices/bus/electron/exp.cpp b/src/devices/bus/electron/exp.cpp
index 476eba184ca..9d78af460a9 100644
--- a/src/devices/bus/electron/exp.cpp
+++ b/src/devices/bus/electron/exp.cpp
@@ -134,15 +134,16 @@ void electron_expansion_slot_device::expbus_w(address_space &space, offs_t offse
//#include "voxbox.h"
-SLOT_INTERFACE_START( electron_expansion_devices )
- SLOT_INTERFACE("fbjoy", ELECTRON_FBJOY)
- //SLOT_INTERFACE("fbprint", ELECTRON_FBPRINT)
- //SLOT_INTERFACE("jafamode7", ELECTRON_JAFAMODE7)
- SLOT_INTERFACE("plus1", ELECTRON_PLUS1)
- SLOT_INTERFACE("plus3", ELECTRON_PLUS3)
- SLOT_INTERFACE("pwrjoy", ELECTRON_PWRJOY)
- SLOT_INTERFACE("rombox", ELECTRON_ROMBOX)
- SLOT_INTERFACE("romboxp", ELECTRON_ROMBOXP)
- SLOT_INTERFACE("m2105", ELECTRON_M2105)
- //SLOT_INTERFACE("voxbox", ELECTRON_VOXBOX)
-SLOT_INTERFACE_END
+void electron_expansion_devices(device_slot_interface &device)
+{
+ device.option_add("fbjoy", ELECTRON_FBJOY);
+ //device.option_add("fbprint", ELECTRON_FBPRINT);
+ //device.option_add("jafamode7", ELECTRON_JAFAMODE7);
+ device.option_add("plus1", ELECTRON_PLUS1);
+ device.option_add("plus3", ELECTRON_PLUS3);
+ device.option_add("pwrjoy", ELECTRON_PWRJOY);
+ device.option_add("rombox", ELECTRON_ROMBOX);
+ device.option_add("romboxp", ELECTRON_ROMBOXP);
+ device.option_add("m2105", ELECTRON_M2105);
+ //device.option_add("voxbox", ELECTRON_VOXBOX);
+}
diff --git a/src/devices/bus/electron/exp.h b/src/devices/bus/electron/exp.h
index db6d7c46248..25657cc3a06 100644
--- a/src/devices/bus/electron/exp.h
+++ b/src/devices/bus/electron/exp.h
@@ -176,7 +176,7 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(ELECTRON_EXPANSION_SLOT, electron_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( electron_expansion_devices );
+void electron_expansion_devices(device_slot_interface &device);
#endif // MAME_BUS_ELECTRON_EXP_H
diff --git a/src/devices/bus/electron/plus3.cpp b/src/devices/bus/electron/plus3.cpp
index 62c30b1ad1f..5eb2f88ccb3 100644
--- a/src/devices/bus/electron/plus3.cpp
+++ b/src/devices/bus/electron/plus3.cpp
@@ -36,10 +36,11 @@ FLOPPY_FORMATS_MEMBER(electron_plus3_device::floppy_formats)
FLOPPY_ACORN_ADFS_OLD_FORMAT
FLOPPY_FORMATS_END0
-SLOT_INTERFACE_START(electron_floppies)
- SLOT_INTERFACE("35dd", FLOPPY_35_DD)
- SLOT_INTERFACE("525qd", FLOPPY_525_QD)
-SLOT_INTERFACE_END
+void electron_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD);
+ device.option_add("525qd", FLOPPY_525_QD);
+}
ROM_START( plus3 )
diff --git a/src/devices/bus/ep64/exdos.cpp b/src/devices/bus/ep64/exdos.cpp
index eb5b61229c9..1518130681f 100644
--- a/src/devices/bus/ep64/exdos.cpp
+++ b/src/devices/bus/ep64/exdos.cpp
@@ -93,9 +93,10 @@ FLOPPY_FORMATS_MEMBER( ep64_exdos_device::floppy_formats )
FLOPPY_EP64_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( ep64_exdos_floppies )
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
-SLOT_INTERFACE_END
+static void ep64_exdos_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/ep64/exp.cpp b/src/devices/bus/ep64/exp.cpp
index 29623ce5993..32ef220519d 100644
--- a/src/devices/bus/ep64/exp.cpp
+++ b/src/devices/bus/ep64/exp.cpp
@@ -101,6 +101,7 @@ void ep64_expansion_bus_slot_device::device_reset()
// slot devices
#include "exdos.h"
-SLOT_INTERFACE_START( ep64_expansion_bus_cards )
- SLOT_INTERFACE("exdos", EP64_EXDOS)
-SLOT_INTERFACE_END
+void ep64_expansion_bus_cards(device_slot_interface &device)
+{
+ device.option_add("exdos", EP64_EXDOS);
+}
diff --git a/src/devices/bus/ep64/exp.h b/src/devices/bus/ep64/exp.h
index 223be36d7e8..b101fa29f70 100644
--- a/src/devices/bus/ep64/exp.h
+++ b/src/devices/bus/ep64/exp.h
@@ -143,7 +143,7 @@ protected:
DECLARE_DEVICE_TYPE(EP64_EXPANSION_BUS_SLOT, ep64_expansion_bus_slot_device)
-SLOT_INTERFACE_EXTERN( ep64_expansion_bus_cards );
+void ep64_expansion_bus_cards(device_slot_interface &device);
#endif // MAME_BUS_EP64_EXP_H
diff --git a/src/devices/bus/epson_sio/epson_sio.cpp b/src/devices/bus/epson_sio/epson_sio.cpp
index 74e9294d456..32a572bb45d 100644
--- a/src/devices/bus/epson_sio/epson_sio.cpp
+++ b/src/devices/bus/epson_sio/epson_sio.cpp
@@ -111,7 +111,8 @@ WRITE_LINE_MEMBER( epson_sio_device::pout_w )
// SLOT INTERFACE
//**************************************************************************
-SLOT_INTERFACE_START( epson_sio_devices )
- SLOT_INTERFACE("pf10", EPSON_PF10)
- SLOT_INTERFACE("tf20", EPSON_TF20)
-SLOT_INTERFACE_END
+void epson_sio_devices(device_slot_interface &device)
+{
+ device.option_add("pf10", EPSON_PF10);
+ device.option_add("tf20", EPSON_TF20);
+}
diff --git a/src/devices/bus/epson_sio/epson_sio.h b/src/devices/bus/epson_sio/epson_sio.h
index 814dbf6d5fd..8da0a4b3e44 100644
--- a/src/devices/bus/epson_sio/epson_sio.h
+++ b/src/devices/bus/epson_sio/epson_sio.h
@@ -90,7 +90,7 @@ DECLARE_DEVICE_TYPE(EPSON_SIO, epson_sio_device)
// supported devices
-SLOT_INTERFACE_EXTERN( epson_sio_devices );
+void epson_sio_devices(device_slot_interface &device);
#endif // MAME_BUS_EPSON_SIO_EPSON_SIO_H
diff --git a/src/devices/bus/epson_sio/pf10.cpp b/src/devices/bus/epson_sio/pf10.cpp
index 296dea50d4c..aa358832041 100644
--- a/src/devices/bus/epson_sio/pf10.cpp
+++ b/src/devices/bus/epson_sio/pf10.cpp
@@ -61,9 +61,10 @@ const tiny_rom_entry *epson_pf10_device::device_rom_region() const
// device_add_mconfig - add device configuration
//-------------------------------------------------
-static SLOT_INTERFACE_START( pf10_floppies )
- SLOT_INTERFACE( "smd165", EPSON_SMD_165 )
-SLOT_INTERFACE_END
+static void pf10_floppies(device_slot_interface &device)
+{
+ device.option_add("smd165", EPSON_SMD_165);
+}
MACHINE_CONFIG_START(epson_pf10_device::device_add_mconfig)
MCFG_CPU_ADD("maincpu", HD6303Y, XTAL(4'915'200)) // HD63A03XF
diff --git a/src/devices/bus/epson_sio/tf20.cpp b/src/devices/bus/epson_sio/tf20.cpp
index 572baf96621..b59592d6f5b 100644
--- a/src/devices/bus/epson_sio/tf20.cpp
+++ b/src/devices/bus/epson_sio/tf20.cpp
@@ -81,9 +81,10 @@ ioport_constructor epson_tf20_device::device_input_ports() const
// device_add_mconfig - add device configuration
//-------------------------------------------------
-static SLOT_INTERFACE_START( tf20_floppies )
- SLOT_INTERFACE( "sd320", EPSON_SD_320 )
-SLOT_INTERFACE_END
+static void tf20_floppies(device_slot_interface &device)
+{
+ device.option_add("sd320", EPSON_SD_320);
+}
MACHINE_CONFIG_START(epson_tf20_device::device_add_mconfig)
MCFG_CPU_ADD("19b", Z80, XTAL_CR1 / 2) /* uPD780C */
diff --git a/src/devices/bus/gamate/rom.cpp b/src/devices/bus/gamate/rom.cpp
index 18499332bff..cda37716b5f 100644
--- a/src/devices/bus/gamate/rom.cpp
+++ b/src/devices/bus/gamate/rom.cpp
@@ -177,8 +177,9 @@ MACHINE_CONFIG_END
slot interface
-------------------------------------------------*/
-SLOT_INTERFACE_START(gamate_cart)
- SLOT_INTERFACE_INTERNAL("plain", GAMATE_ROM_PLAIN)
- SLOT_INTERFACE_INTERNAL("banked", GAMATE_ROM_BANKED)
- SLOT_INTERFACE_INTERNAL("4in1", GAMATE_ROM_4IN1)
-SLOT_INTERFACE_END
+void gamate_cart(device_slot_interface &device)
+{
+ device.option_add_internal("plain", GAMATE_ROM_PLAIN);
+ device.option_add_internal("banked", GAMATE_ROM_BANKED);
+ device.option_add_internal("4in1", GAMATE_ROM_4IN1);
+}
diff --git a/src/devices/bus/gamate/slot.h b/src/devices/bus/gamate/slot.h
index 802fdb360e3..0f48c490478 100644
--- a/src/devices/bus/gamate/slot.h
+++ b/src/devices/bus/gamate/slot.h
@@ -99,6 +99,6 @@ DECLARE_DEVICE_TYPE(GAMATE_CART_SLOT, gamate_cart_slot_device)
MCFG_DEVICE_ADD(_tag, GAMATE_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-SLOT_INTERFACE_EXTERN( gamate_cart );
+void gamate_cart(device_slot_interface &device);
#endif // MAME_BUS_GAMATE_SLOT_H
diff --git a/src/devices/bus/gamegear/ggext.cpp b/src/devices/bus/gamegear/ggext.cpp
index 4cdd0d59afc..86a8d1911a0 100644
--- a/src/devices/bus/gamegear/ggext.cpp
+++ b/src/devices/bus/gamegear/ggext.cpp
@@ -117,6 +117,7 @@ uint32_t gg_ext_port_device::pixel_r()
// SLOT_INTERFACE( gg_ext_port_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( gg_ext_port_devices )
- SLOT_INTERFACE("smsctrladp", SMS_CTRL_ADAPTOR)
-SLOT_INTERFACE_END
+void gg_ext_port_devices(device_slot_interface &device)
+{
+ device.option_add("smsctrladp", SMS_CTRL_ADAPTOR);
+}
diff --git a/src/devices/bus/gamegear/ggext.h b/src/devices/bus/gamegear/ggext.h
index ca3447d1e96..d4dae3eb277 100644
--- a/src/devices/bus/gamegear/ggext.h
+++ b/src/devices/bus/gamegear/ggext.h
@@ -115,7 +115,7 @@ protected:
DECLARE_DEVICE_TYPE(GG_EXT_PORT, gg_ext_port_device)
-SLOT_INTERFACE_EXTERN(gg_ext_port_devices);
+void gg_ext_port_devices(device_slot_interface &device);
#endif // MAME_BUS_GAMEGEAR_GGEXT_H
diff --git a/src/devices/bus/generic/carts.cpp b/src/devices/bus/generic/carts.cpp
index 032899823f8..e6b1a617eff 100644
--- a/src/devices/bus/generic/carts.cpp
+++ b/src/devices/bus/generic/carts.cpp
@@ -13,14 +13,17 @@
#include "ram.h"
-SLOT_INTERFACE_START(generic_plain_slot)
- SLOT_INTERFACE_INTERNAL("rom", GENERIC_ROM_PLAIN)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START(generic_linear_slot)
- SLOT_INTERFACE_INTERNAL("rom", GENERIC_ROM_LINEAR)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START(generic_romram_plain_slot)
- SLOT_INTERFACE_INTERNAL("rom", GENERIC_ROMRAM_PLAIN)
-SLOT_INTERFACE_END
+void generic_plain_slot(device_slot_interface &device)
+{
+ device.option_add_internal("rom", GENERIC_ROM_PLAIN);
+}
+
+void generic_linear_slot(device_slot_interface &device)
+{
+ device.option_add_internal("rom", GENERIC_ROM_LINEAR);
+}
+
+void generic_romram_plain_slot(device_slot_interface &device)
+{
+ device.option_add_internal("rom", GENERIC_ROMRAM_PLAIN);
+}
diff --git a/src/devices/bus/generic/carts.h b/src/devices/bus/generic/carts.h
index a5b4660b4dc..a859bfca0c0 100644
--- a/src/devices/bus/generic/carts.h
+++ b/src/devices/bus/generic/carts.h
@@ -12,8 +12,8 @@
#pragma once
-SLOT_INTERFACE_EXTERN( generic_plain_slot );
-SLOT_INTERFACE_EXTERN( generic_linear_slot );
-SLOT_INTERFACE_EXTERN( generic_romram_plain_slot );
+void generic_plain_slot(device_slot_interface &device);
+void generic_linear_slot(device_slot_interface &device);
+void generic_romram_plain_slot(device_slot_interface &device);
#endif // MAME_BUS_GENERIC_CARTS_H
diff --git a/src/devices/bus/hexbus/hexbus.cpp b/src/devices/bus/hexbus/hexbus.cpp
index 257a82b5054..4b1e390363a 100644
--- a/src/devices/bus/hexbus/hexbus.cpp
+++ b/src/devices/bus/hexbus/hexbus.cpp
@@ -342,7 +342,8 @@ uint8_t hexbus_chained_device::to_line_state(uint8_t data, bool bav, bool hsk)
} } // end namespace bus::hexbus
-SLOT_INTERFACE_START( hexbus_conn )
- SLOT_INTERFACE("hx5102", HX5102)
-SLOT_INTERFACE_END
+void hexbus_conn(device_slot_interface &device)
+{
+ device.option_add("hx5102", HX5102);
+}
diff --git a/src/devices/bus/hexbus/hexbus.h b/src/devices/bus/hexbus/hexbus.h
index d94a91c47a5..e6e56ea4b38 100644
--- a/src/devices/bus/hexbus/hexbus.h
+++ b/src/devices/bus/hexbus/hexbus.h
@@ -134,7 +134,7 @@ private:
} } // end namespace bus::hexbus
-SLOT_INTERFACE_EXTERN( hexbus_conn );
+void hexbus_conn(device_slot_interface &device);
DECLARE_DEVICE_TYPE_NS(HEXBUS, bus::hexbus, hexbus_device)
diff --git a/src/devices/bus/hexbus/hx5102.cpp b/src/devices/bus/hexbus/hx5102.cpp
index 2d92b86c874..d4bbbc953e3 100644
--- a/src/devices/bus/hexbus/hx5102.cpp
+++ b/src/devices/bus/hexbus/hx5102.cpp
@@ -614,9 +614,10 @@ FLOPPY_FORMATS_END
Only one fixed floppy drive in the device.
External connectors are available, though.
*/
-static SLOT_INTERFACE_START( hx5102_drive )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
-SLOT_INTERFACE_END
+static void hx5102_drive(device_slot_interface &device)
+{
+ device.option_add("525dd", FLOPPY_525_DD);
+}
/*
HX5102 configuration
diff --git a/src/devices/bus/hp80_io/hp80_io.cpp b/src/devices/bus/hp80_io/hp80_io.cpp
index e9ab08bb43c..8004ce06bd4 100644
--- a/src/devices/bus/hp80_io/hp80_io.cpp
+++ b/src/devices/bus/hp80_io/hp80_io.cpp
@@ -145,6 +145,7 @@ WRITE_LINE_MEMBER(hp80_io_card_device::halt_w)
#include "82937.h"
-SLOT_INTERFACE_START(hp80_io_slot_devices)
-SLOT_INTERFACE("82937_hpib" , HP82937_IO_CARD)
-SLOT_INTERFACE_END
+void hp80_io_slot_devices(device_slot_interface &device)
+{
+ device.option_add("82937_hpib" , HP82937_IO_CARD);
+}
diff --git a/src/devices/bus/hp80_io/hp80_io.h b/src/devices/bus/hp80_io/hp80_io.h
index 96cc40f562e..a1bd90f47ed 100644
--- a/src/devices/bus/hp80_io/hp80_io.h
+++ b/src/devices/bus/hp80_io/hp80_io.h
@@ -102,6 +102,6 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(HP80_IO_SLOT, hp80_io_slot_device)
-SLOT_INTERFACE_EXTERN(hp80_io_slot_devices);
+void hp80_io_slot_devices(device_slot_interface &device);
#endif // MAME_BUS_HP80_IO_HP80_IO_H
diff --git a/src/devices/bus/hp80_optroms/hp80_optrom.cpp b/src/devices/bus/hp80_optroms/hp80_optrom.cpp
index 2797e37b69d..1816f0c0244 100644
--- a/src/devices/bus/hp80_optroms/hp80_optrom.cpp
+++ b/src/devices/bus/hp80_optroms/hp80_optrom.cpp
@@ -111,6 +111,7 @@ std::string hp80_optrom_slot_device::get_default_card_software(get_default_card_
return software_get_default_slot("rom");
}
-SLOT_INTERFACE_START(hp80_optrom_slot_device)
- SLOT_INTERFACE_INTERNAL("rom", HP80_OPTROM_CART)
-SLOT_INTERFACE_END
+void hp80_optrom_slot_devices(device_slot_interface &device)
+{
+ device.option_add_internal("rom", HP80_OPTROM_CART);
+}
diff --git a/src/devices/bus/hp80_optroms/hp80_optrom.h b/src/devices/bus/hp80_optroms/hp80_optrom.h
index 2fd43456264..cb8dbd4903b 100644
--- a/src/devices/bus/hp80_optroms/hp80_optrom.h
+++ b/src/devices/bus/hp80_optroms/hp80_optrom.h
@@ -72,6 +72,6 @@ protected:
DECLARE_DEVICE_TYPE(HP80_OPTROM_SLOT, hp80_optrom_slot_device)
DECLARE_DEVICE_TYPE(HP80_OPTROM_CART, hp80_optrom_cart_device)
-SLOT_INTERFACE_EXTERN(hp80_optrom_slot_device);
+void hp80_optrom_slot_devices(device_slot_interface &device);
#endif // MAME_BUS_HP80_OPTROMS_HP80_OPTROM_H
diff --git a/src/devices/bus/hp9845_io/hp9845_io.cpp b/src/devices/bus/hp9845_io/hp9845_io.cpp
index d270ac89e4b..61e4a90d721 100644
--- a/src/devices/bus/hp9845_io/hp9845_io.cpp
+++ b/src/devices/bus/hp9845_io/hp9845_io.cpp
@@ -126,7 +126,8 @@ void hp9845_io_card_device::flg_w(int state)
#include "98035.h"
#include "98034.h"
-SLOT_INTERFACE_START(hp9845_io_slot_devices)
-SLOT_INTERFACE("98034_hpib" , HP98034_IO_CARD)
-SLOT_INTERFACE("98035_rtc" , HP98035_IO_CARD)
-SLOT_INTERFACE_END
+void hp9845_io_slot_devices(device_slot_interface &device)
+{
+ device.option_add("98034_hpib" , HP98034_IO_CARD);
+ device.option_add("98035_rtc" , HP98035_IO_CARD);
+}
diff --git a/src/devices/bus/hp9845_io/hp9845_io.h b/src/devices/bus/hp9845_io/hp9845_io.h
index d2ee55b6d39..8b4065ce9e3 100644
--- a/src/devices/bus/hp9845_io/hp9845_io.h
+++ b/src/devices/bus/hp9845_io/hp9845_io.h
@@ -109,6 +109,6 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(HP9845_IO_SLOT, hp9845_io_slot_device)
-SLOT_INTERFACE_EXTERN(hp9845_io_slot_devices);
+void hp9845_io_slot_devices(device_slot_interface &device);
#endif // MAME_BUS_HP9845_IO_HP9845_IO_H
diff --git a/src/devices/bus/hp_hil/hil_devices.cpp b/src/devices/bus/hp_hil/hil_devices.cpp
index c4a6988a6ae..4ef253de26c 100644
--- a/src/devices/bus/hp_hil/hil_devices.cpp
+++ b/src/devices/bus/hp_hil/hil_devices.cpp
@@ -6,6 +6,7 @@
#include "hlekbd.h"
-SLOT_INTERFACE_START(hp_hil_devices)
- SLOT_INTERFACE(STR_KBD_HP_INTEGRAL, HP_IPC_HLE_KEYBOARD)
-SLOT_INTERFACE_END
+void hp_hil_devices(device_slot_interface &device)
+{
+ device.option_add(STR_KBD_HP_INTEGRAL, HP_IPC_HLE_KEYBOARD);
+}
diff --git a/src/devices/bus/hp_hil/hil_devices.h b/src/devices/bus/hp_hil/hil_devices.h
index 01b74af07a4..523366e9393 100644
--- a/src/devices/bus/hp_hil/hil_devices.h
+++ b/src/devices/bus/hp_hil/hil_devices.h
@@ -19,7 +19,7 @@
#define STR_MOUSE_HP_46060B "hp_46060b" // 3-button mouse
-SLOT_INTERFACE_EXTERN(hp_hil_devices);
+void hp_hil_devices(device_slot_interface &device);
#endif // MAME_BUS_HP_HIL_HIL_DEVICES_H
diff --git a/src/devices/bus/hp_optroms/hp_optrom.cpp b/src/devices/bus/hp_optroms/hp_optrom.cpp
index 389293e7fea..58b4f556cfc 100644
--- a/src/devices/bus/hp_optroms/hp_optrom.cpp
+++ b/src/devices/bus/hp_optroms/hp_optrom.cpp
@@ -126,6 +126,7 @@ std::string hp_optrom_slot_device::get_default_card_software(get_default_card_so
return software_get_default_slot("rom");
}
-SLOT_INTERFACE_START(hp_optrom_slot_device)
- SLOT_INTERFACE_INTERNAL("rom", HP_OPTROM_CART)
-SLOT_INTERFACE_END
+void hp_optrom_slot_devices(device_slot_interface &device)
+{
+ device.option_add_internal("rom", HP_OPTROM_CART);
+}
diff --git a/src/devices/bus/hp_optroms/hp_optrom.h b/src/devices/bus/hp_optroms/hp_optrom.h
index dfc43021035..f2677884849 100644
--- a/src/devices/bus/hp_optroms/hp_optrom.h
+++ b/src/devices/bus/hp_optroms/hp_optrom.h
@@ -70,6 +70,6 @@ protected:
DECLARE_DEVICE_TYPE(HP_OPTROM_SLOT, hp_optrom_slot_device)
DECLARE_DEVICE_TYPE(HP_OPTROM_CART, hp_optrom_cart_device)
-SLOT_INTERFACE_EXTERN(hp_optrom_slot_device);
+void hp_optrom_slot_devices(device_slot_interface &device);
#endif // MAME_BUS_HP_OPTROMS_HP_OPTROM_H
diff --git a/src/devices/bus/ieee488/c2031.cpp b/src/devices/bus/ieee488/c2031.cpp
index f18f8dee9cf..5a04cef0254 100644
--- a/src/devices/bus/ieee488/c2031.cpp
+++ b/src/devices/bus/ieee488/c2031.cpp
@@ -284,9 +284,10 @@ WRITE_LINE_MEMBER( c2031_device::byte_w )
// SLOT_INTERFACE( c2031_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( c2031_floppies )
- SLOT_INTERFACE( "525ssqd", FLOPPY_525_SSQD )
-SLOT_INTERFACE_END
+static void c2031_floppies(device_slot_interface &device)
+{
+ device.option_add("525ssqd", FLOPPY_525_SSQD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/ieee488/c2040.cpp b/src/devices/bus/ieee488/c2040.cpp
index 1e4adf7f19e..b6dde567971 100644
--- a/src/devices/bus/ieee488/c2040.cpp
+++ b/src/devices/bus/ieee488/c2040.cpp
@@ -410,9 +410,10 @@ WRITE8_MEMBER( c2040_device::via_pb_w )
// SLOT_INTERFACE( c2040_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( c2040_floppies )
- SLOT_INTERFACE( "525ssqd", FLOPPY_525_SSQD )
-SLOT_INTERFACE_END
+static void c2040_floppies(device_slot_interface &device)
+{
+ device.option_add("525ssqd", FLOPPY_525_SSQD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/ieee488/c8050.cpp b/src/devices/bus/ieee488/c8050.cpp
index cb18f562f26..f97ccc61f0d 100644
--- a/src/devices/bus/ieee488/c8050.cpp
+++ b/src/devices/bus/ieee488/c8050.cpp
@@ -462,9 +462,10 @@ WRITE8_MEMBER( c8050_device::via_pb_w )
// SLOT_INTERFACE( c8050_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( c8050_floppies )
- SLOT_INTERFACE( "525ssqd", FLOPPY_525_SSQD )
-SLOT_INTERFACE_END
+static void c8050_floppies(device_slot_interface &device)
+{
+ device.option_add("525ssqd", FLOPPY_525_SSQD);
+}
//-------------------------------------------------
@@ -480,18 +481,20 @@ FLOPPY_FORMATS_END
// SLOT_INTERFACE( c8250_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( c8250_floppies )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
-SLOT_INTERFACE_END
+static void c8250_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD);
+}
//-------------------------------------------------
// SLOT_INTERFACE( sfd1001_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( sfd1001_floppies )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) // Matsushita JU-570 / JU-570-2
-SLOT_INTERFACE_END
+static void sfd1001_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD); // Matsushita JU-570 / JU-570-2
+}
//-------------------------------------------------
diff --git a/src/devices/bus/ieee488/c8280.cpp b/src/devices/bus/ieee488/c8280.cpp
index 4339075a24c..d032491c812 100644
--- a/src/devices/bus/ieee488/c8280.cpp
+++ b/src/devices/bus/ieee488/c8280.cpp
@@ -278,9 +278,10 @@ WRITE8_MEMBER( c8280_device::riot1_pb_w )
machine().output().set_led_value(LED_ERR, BIT(data, 5));
}
-static SLOT_INTERFACE_START( c8280_floppies )
- SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD )
-SLOT_INTERFACE_END
+static void c8280_floppies(device_slot_interface &device)
+{
+ device.option_add("8dsdd", FLOPPY_8_DSDD);
+}
FLOPPY_FORMATS_MEMBER( c8280_device::floppy_formats )
FLOPPY_C8280_FORMAT
diff --git a/src/devices/bus/ieee488/hp9895.cpp b/src/devices/bus/ieee488/hp9895.cpp
index c35f820d6fd..565fc3ee924 100644
--- a/src/devices/bus/ieee488/hp9895.cpp
+++ b/src/devices/bus/ieee488/hp9895.cpp
@@ -869,9 +869,10 @@ void hp9895_device::z80_io_map(address_map &map)
map(0x67, 0x67).r(this, FUNC(hp9895_device::switches2_r));
}
-static SLOT_INTERFACE_START(hp9895_floppies)
- SLOT_INTERFACE("8dsdd" , FLOPPY_8_DSDD)
-SLOT_INTERFACE_END
+static void hp9895_floppies(device_slot_interface &device)
+{
+ device.option_add("8dsdd" , FLOPPY_8_DSDD);
+}
static const floppy_format_type hp9895_floppy_formats[] = {
FLOPPY_MFI_FORMAT,
diff --git a/src/devices/bus/ieee488/ieee488.cpp b/src/devices/bus/ieee488/ieee488.cpp
index 7903be8fe49..fac55803e9d 100644
--- a/src/devices/bus/ieee488/ieee488.cpp
+++ b/src/devices/bus/ieee488/ieee488.cpp
@@ -400,22 +400,23 @@ uint8_t ieee488_device::get_data()
#include "shark.h"
#include "softbox.h"
-SLOT_INTERFACE_START( cbm_ieee488_devices )
- SLOT_INTERFACE("c2040", C2040)
- SLOT_INTERFACE("c3040", C3040)
- SLOT_INTERFACE("c4040", C4040)
- SLOT_INTERFACE("c8050", C8050)
- SLOT_INTERFACE("c8250", C8250)
- SLOT_INTERFACE("sfd1001", SFD1001)
- SLOT_INTERFACE("c2031", C2031)
- SLOT_INTERFACE("c8280", C8280)
- SLOT_INTERFACE("d9060", D9060)
- SLOT_INTERFACE("d9090", D9090)
- SLOT_INTERFACE("softbox", SOFTBOX)
- SLOT_INTERFACE("hardbox", HARDBOX)
- SLOT_INTERFACE("shark", MSHARK)
- SLOT_INTERFACE("c4023", C4023)
-SLOT_INTERFACE_END
+void cbm_ieee488_devices(device_slot_interface &device)
+{
+ device.option_add("c2040", C2040);
+ device.option_add("c3040", C3040);
+ device.option_add("c4040", C4040);
+ device.option_add("c8050", C8050);
+ device.option_add("c8250", C8250);
+ device.option_add("sfd1001", SFD1001);
+ device.option_add("c2031", C2031);
+ device.option_add("c8280", C8280);
+ device.option_add("d9060", D9060);
+ device.option_add("d9090", D9090);
+ device.option_add("softbox", SOFTBOX);
+ device.option_add("hardbox", HARDBOX);
+ device.option_add("shark", MSHARK);
+ device.option_add("c4023", C4023);
+}
//-------------------------------------------------
// SLOT_INTERFACE( hp_ieee488_devices )
@@ -424,9 +425,10 @@ SLOT_INTERFACE_END
// slot devices
#include "hp9895.h"
-SLOT_INTERFACE_START(hp_ieee488_devices)
- SLOT_INTERFACE("hp9895", HP9895)
-SLOT_INTERFACE_END
+void hp_ieee488_devices(device_slot_interface &device)
+{
+ device.option_add("hp9895", HP9895);
+}
//-------------------------------------------------
// SLOT_INTERFACE( remote488_devices )
@@ -435,6 +437,7 @@ SLOT_INTERFACE_END
// slot devices
#include "remote488.h"
-SLOT_INTERFACE_START(remote488_devices)
- SLOT_INTERFACE("remote488", REMOTE488)
-SLOT_INTERFACE_END
+void remote488_devices(device_slot_interface &device)
+{
+ device.option_add("remote488", REMOTE488);
+}
diff --git a/src/devices/bus/ieee488/ieee488.h b/src/devices/bus/ieee488/ieee488.h
index 94a4fbcaa21..68ec0080476 100644
--- a/src/devices/bus/ieee488/ieee488.h
+++ b/src/devices/bus/ieee488/ieee488.h
@@ -258,9 +258,9 @@ DECLARE_DEVICE_TYPE(IEEE488, ieee488_device)
DECLARE_DEVICE_TYPE(IEEE488_SLOT, ieee488_slot_device)
-SLOT_INTERFACE_EXTERN( cbm_ieee488_devices );
-SLOT_INTERFACE_EXTERN( hp_ieee488_devices );
-SLOT_INTERFACE_EXTERN( remote488_devices );
+void cbm_ieee488_devices(device_slot_interface &device);
+void hp_ieee488_devices(device_slot_interface &device);
+void remote488_devices(device_slot_interface &device);
#endif // MAME_BUS_IEEE488_IEEE488_H
diff --git a/src/devices/bus/ieee488/softbox.cpp b/src/devices/bus/ieee488/softbox.cpp
index eb002f372d8..caad857c087 100644
--- a/src/devices/bus/ieee488/softbox.cpp
+++ b/src/devices/bus/ieee488/softbox.cpp
@@ -249,7 +249,7 @@ MACHINE_CONFIG_START(softbox_device::device_add_mconfig)
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rxd))
MCFG_RS232_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
- MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal)
+ MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal)
MCFG_DEVICE_ADD(I8255_0_TAG, I8255A, 0)
MCFG_I8255_IN_PORTA_CB(READ8(softbox_device, ppi0_pa_r))
diff --git a/src/devices/bus/imi7000/imi7000.cpp b/src/devices/bus/imi7000/imi7000.cpp
index 95f693a571e..f96e32d3da5 100644
--- a/src/devices/bus/imi7000/imi7000.cpp
+++ b/src/devices/bus/imi7000/imi7000.cpp
@@ -98,6 +98,7 @@ void imi7000_bus_device::device_start()
#include "imi5000h.h"
-SLOT_INTERFACE_START( imi7000_devices )
- SLOT_INTERFACE("imi5000h", IMI5000H)
-SLOT_INTERFACE_END
+void imi7000_devices(device_slot_interface &device)
+{
+ device.option_add("imi5000h", IMI5000H);
+}
diff --git a/src/devices/bus/imi7000/imi7000.h b/src/devices/bus/imi7000/imi7000.h
index 90b195a2667..0559a565285 100644
--- a/src/devices/bus/imi7000/imi7000.h
+++ b/src/devices/bus/imi7000/imi7000.h
@@ -120,6 +120,6 @@ DECLARE_DEVICE_TYPE(IMI7000_SLOT, imi7000_slot_device)
// slot interface
-SLOT_INTERFACE_EXTERN( imi7000_devices );
+void imi7000_devices(device_slot_interface &device);
#endif // MAME_BUS_IMI7000_IMI7000_H
diff --git a/src/devices/bus/intellec4/intellec4.cpp b/src/devices/bus/intellec4/intellec4.cpp
index 17b2df413e0..b74256d795f 100644
--- a/src/devices/bus/intellec4/intellec4.cpp
+++ b/src/devices/bus/intellec4/intellec4.cpp
@@ -290,8 +290,9 @@ void device_univ_card_interface::set_bus(univ_bus_device &bus)
#include "prommemory.h"
#include "tapereader.h"
-SLOT_INTERFACE_START(intellec4_univ_cards)
- SLOT_INTERFACE("imm4_22", INTELLEC4_INST_DATA_STORAGE)
- SLOT_INTERFACE("imm6_26", INTELLEC4_PROM_MEMORY)
- SLOT_INTERFACE("imm4_90", INTELLEC4_TAPE_READER)
-SLOT_INTERFACE_END
+void intellec4_univ_cards(device_slot_interface &device)
+{
+ device.option_add("imm4_22", INTELLEC4_INST_DATA_STORAGE);
+ device.option_add("imm6_26", INTELLEC4_PROM_MEMORY);
+ device.option_add("imm4_90", INTELLEC4_TAPE_READER);
+}
diff --git a/src/devices/bus/intellec4/intellec4.h b/src/devices/bus/intellec4/intellec4.h
index c878d00e8c3..40b77370bb6 100644
--- a/src/devices/bus/intellec4/intellec4.h
+++ b/src/devices/bus/intellec4/intellec4.h
@@ -286,6 +286,6 @@ private:
DECLARE_DEVICE_TYPE_NS(INTELLEC4_UNIV_SLOT, bus::intellec4, univ_slot_device)
DECLARE_DEVICE_TYPE_NS(INTELLEC4_UNIV_BUS, bus::intellec4, univ_bus_device)
-SLOT_INTERFACE_EXTERN( intellec4_univ_cards );
+void intellec4_univ_cards(device_slot_interface &device);
#endif // MAME_BUS_INTELLEC4_INTELLEC4_H
diff --git a/src/devices/bus/interpro/keyboard/keyboard.cpp b/src/devices/bus/interpro/keyboard/keyboard.cpp
index e2758d135f6..518ae7176f3 100644
--- a/src/devices/bus/interpro/keyboard/keyboard.cpp
+++ b/src/devices/bus/interpro/keyboard/keyboard.cpp
@@ -57,7 +57,8 @@ device_interpro_keyboard_port_interface::~device_interpro_keyboard_port_interfac
#include "hle.h"
#include "lle.h"
-SLOT_INTERFACE_START(interpro_keyboard_devices)
- SLOT_INTERFACE("hle_en_us", INTERPRO_HLE_EN_US_KEYBOARD)
- SLOT_INTERFACE("lle_en_us", INTERPRO_LLE_EN_US_KEYBOARD)
-SLOT_INTERFACE_END
+void interpro_keyboard_devices(device_slot_interface &device)
+{
+ device.option_add("hle_en_us", INTERPRO_HLE_EN_US_KEYBOARD);
+ device.option_add("lle_en_us", INTERPRO_LLE_EN_US_KEYBOARD);
+}
diff --git a/src/devices/bus/interpro/keyboard/keyboard.h b/src/devices/bus/interpro/keyboard/keyboard.h
index 73389de6fea..f4bfc7cc0cb 100644
--- a/src/devices/bus/interpro/keyboard/keyboard.h
+++ b/src/devices/bus/interpro/keyboard/keyboard.h
@@ -60,6 +60,6 @@ protected:
DECLARE_DEVICE_TYPE(INTERPRO_KEYBOARD_PORT, interpro_keyboard_port_device)
-SLOT_INTERFACE_EXTERN(interpro_keyboard_devices);
+void interpro_keyboard_devices(device_slot_interface &device);
#endif // MAME_BUS_INTERPRO_KEYBOARD_KEYBOARD_H
diff --git a/src/devices/bus/interpro/sr/sr_cards.cpp b/src/devices/bus/interpro/sr/sr_cards.cpp
index ce15e772492..73a94821ad8 100644
--- a/src/devices/bus/interpro/sr/sr_cards.cpp
+++ b/src/devices/bus/interpro/sr/sr_cards.cpp
@@ -18,10 +18,11 @@
// other
-SLOT_INTERFACE_START(sr_cards)
- SLOT_INTERFACE("mpcb963", MPCB963)
- SLOT_INTERFACE("mpcba79", MPCBA79)
- SLOT_INTERFACE("mpcb070", MPCB070)
- SLOT_INTERFACE("mpcb071", MPCB071)
- SLOT_INTERFACE("mpcb081", MPCB081)
-SLOT_INTERFACE_END
+void sr_cards(device_slot_interface &device)
+{
+ device.option_add("mpcb963", MPCB963);
+ device.option_add("mpcba79", MPCBA79);
+ device.option_add("mpcb070", MPCB070);
+ device.option_add("mpcb071", MPCB071);
+ device.option_add("mpcb081", MPCB081);
+}
diff --git a/src/devices/bus/interpro/sr/sr_cards.h b/src/devices/bus/interpro/sr/sr_cards.h
index b7f552173d4..f06c1d4e307 100644
--- a/src/devices/bus/interpro/sr/sr_cards.h
+++ b/src/devices/bus/interpro/sr/sr_cards.h
@@ -7,6 +7,6 @@
#pragma once
// supported devices
-SLOT_INTERFACE_EXTERN(sr_cards);
+void sr_cards(device_slot_interface &device);
#endif // MAME_BUS_INTERPRO_SR_SR_CARDS_H
diff --git a/src/devices/bus/intv/slot.cpp b/src/devices/bus/intv/slot.cpp
index d86c8fe91c4..0161c90b258 100644
--- a/src/devices/bus/intv/slot.cpp
+++ b/src/devices/bus/intv/slot.cpp
@@ -535,12 +535,13 @@ WRITE16_MEMBER(intv_cart_slot_device::write_speech)
//#include "bus/intv/keycomp.h"
#include "bus/intv/voice.h"
-SLOT_INTERFACE_START(intv_cart)
- SLOT_INTERFACE_INTERNAL("intv_rom", INTV_ROM_STD)
- SLOT_INTERFACE_INTERNAL("intv_ram", INTV_ROM_RAM)
- SLOT_INTERFACE_INTERNAL("intv_gfact", INTV_ROM_GFACT)
- SLOT_INTERFACE_INTERNAL("intv_wsmlb", INTV_ROM_WSMLB)
- SLOT_INTERFACE_INTERNAL("intv_voice", INTV_ROM_VOICE)
- SLOT_INTERFACE_INTERNAL("intv_ecs", INTV_ROM_ECS)
-// SLOT_INTERFACE_INTERNAL("intv_keycomp", INTV_ROM_KEYCOMP)
-SLOT_INTERFACE_END
+void intv_cart(device_slot_interface &device)
+{
+ device.option_add_internal("intv_rom", INTV_ROM_STD);
+ device.option_add_internal("intv_ram", INTV_ROM_RAM);
+ device.option_add_internal("intv_gfact", INTV_ROM_GFACT);
+ device.option_add_internal("intv_wsmlb", INTV_ROM_WSMLB);
+ device.option_add_internal("intv_voice", INTV_ROM_VOICE);
+ device.option_add_internal("intv_ecs", INTV_ROM_ECS);
+// device.option_add_internal("intv_keycomp", INTV_ROM_KEYCOMP);
+}
diff --git a/src/devices/bus/intv/slot.h b/src/devices/bus/intv/slot.h
index 9442160625a..bdec54dab76 100644
--- a/src/devices/bus/intv/slot.h
+++ b/src/devices/bus/intv/slot.h
@@ -183,6 +183,6 @@ DECLARE_DEVICE_TYPE(INTV_CART_SLOT, intv_cart_slot_device)
MCFG_DEVICE_ADD(_tag, INTV_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-SLOT_INTERFACE_EXTERN(intv_cart);
+void intv_cart(device_slot_interface &device);
#endif // MAME_BUS_INTV_SLOT_H
diff --git a/src/devices/bus/intv_ctrl/ctrl.cpp b/src/devices/bus/intv_ctrl/ctrl.cpp
index 01b64ba6aef..122c98cf2ed 100644
--- a/src/devices/bus/intv_ctrl/ctrl.cpp
+++ b/src/devices/bus/intv_ctrl/ctrl.cpp
@@ -91,6 +91,7 @@ uint8_t intv_control_port_device::read_ctrl()
// SLOT_INTERFACE( intv_control_port_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( intv_control_port_devices )
- SLOT_INTERFACE("handctrl", INTV_HANDCTRL)
-SLOT_INTERFACE_END
+void intv_control_port_devices(device_slot_interface &device)
+{
+ device.option_add("handctrl", INTV_HANDCTRL);
+}
diff --git a/src/devices/bus/intv_ctrl/ctrl.h b/src/devices/bus/intv_ctrl/ctrl.h
index a46011845f2..4a3ce67a688 100644
--- a/src/devices/bus/intv_ctrl/ctrl.h
+++ b/src/devices/bus/intv_ctrl/ctrl.h
@@ -69,7 +69,7 @@ DECLARE_DEVICE_TYPE(INTV_CONTROL_PORT, intv_control_port_device)
-SLOT_INTERFACE_EXTERN( intv_control_port_devices );
+void intv_control_port_devices(device_slot_interface &device);
#endif // MAME_BUS_INTV_CTRL_CTRL_H
diff --git a/src/devices/bus/intv_ctrl/ecs_ctrl.cpp b/src/devices/bus/intv_ctrl/ecs_ctrl.cpp
index ea3118619f9..e90292de645 100644
--- a/src/devices/bus/intv_ctrl/ecs_ctrl.cpp
+++ b/src/devices/bus/intv_ctrl/ecs_ctrl.cpp
@@ -118,11 +118,12 @@ void intvecs_control_port_device::write_portA(uint8_t data)
// SLOT_INTERFACE( intvecs_control_port_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( intvecs_control_port_devices )
- SLOT_INTERFACE("ctrls", ECS_CTRLS)
- SLOT_INTERFACE("keybd", ECS_KEYBD)
- SLOT_INTERFACE("synth", ECS_SYNTH)
-SLOT_INTERFACE_END
+void intvecs_control_port_devices(device_slot_interface &device)
+{
+ device.option_add("ctrls", ECS_CTRLS);
+ device.option_add("keybd", ECS_KEYBD);
+ device.option_add("synth", ECS_SYNTH);
+}
@@ -139,9 +140,10 @@ SLOT_INTERFACE_END
DEFINE_DEVICE_TYPE(ECS_CTRLS, intvecs_ctrls_device, "intvecs_ctrls", "Mattel Intellivision ECS Hand Controller x2 (HACK)")
-static SLOT_INTERFACE_START( intvecs_controller )
- SLOT_INTERFACE("handctrl", INTV_HANDCTRL)
-SLOT_INTERFACE_END
+static void intvecs_controller(device_slot_interface &device)
+{
+ device.option_add("handctrl", INTV_HANDCTRL);
+}
MACHINE_CONFIG_START(intvecs_ctrls_device::device_add_mconfig)
MCFG_INTV_CONTROL_PORT_ADD("port1", intvecs_controller, "handctrl")
diff --git a/src/devices/bus/intv_ctrl/ecs_ctrl.h b/src/devices/bus/intv_ctrl/ecs_ctrl.h
index f7132c8e28b..923b5785358 100644
--- a/src/devices/bus/intv_ctrl/ecs_ctrl.h
+++ b/src/devices/bus/intv_ctrl/ecs_ctrl.h
@@ -78,7 +78,7 @@ DECLARE_DEVICE_TYPE(INTVECS_CONTROL_PORT, intvecs_control_port_device)
-SLOT_INTERFACE_EXTERN( intvecs_control_port_devices );
+void intvecs_control_port_devices(device_slot_interface &device);
//**************************************************************************
diff --git a/src/devices/bus/iq151/disc2.cpp b/src/devices/bus/iq151/disc2.cpp
index 32a21069831..d48ea10e9c2 100644
--- a/src/devices/bus/iq151/disc2.cpp
+++ b/src/devices/bus/iq151/disc2.cpp
@@ -19,9 +19,10 @@ FLOPPY_FORMATS_MEMBER( iq151_disc2_device::floppy_formats )
FLOPPY_IQ151_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( iq151_disc2_floppies )
- SLOT_INTERFACE( "8sssd", FLOPPY_8_SSSD )
-SLOT_INTERFACE_END
+static void iq151_disc2_floppies(device_slot_interface &device)
+{
+ device.option_add("8sssd", FLOPPY_8_SSSD);
+}
ROM_START( iq151_disc2 )
ROM_REGION(0x0800, "disc2", 0)
diff --git a/src/devices/bus/isa/com.cpp b/src/devices/bus/isa/com.cpp
index 3fa3a9b3ffb..d034ed600fe 100644
--- a/src/devices/bus/isa/com.cpp
+++ b/src/devices/bus/isa/com.cpp
@@ -14,12 +14,13 @@
#include "bus/rs232/null_modem.h"
#include "machine/ins8250.h"
-static SLOT_INTERFACE_START(isa_com)
- SLOT_INTERFACE("microsoft_mouse", MSFT_SERIAL_MOUSE)
- SLOT_INTERFACE("msystems_mouse", MSYSTEM_SERIAL_MOUSE)
- SLOT_INTERFACE("terminal", SERIAL_TERMINAL)
- SLOT_INTERFACE("null_modem", NULL_MODEM)
-SLOT_INTERFACE_END
+static void isa_com(device_slot_interface &device)
+{
+ device.option_add("microsoft_mouse", MSFT_SERIAL_MOUSE);
+ device.option_add("msystems_mouse", MSYSTEM_SERIAL_MOUSE);
+ device.option_add("terminal", SERIAL_TERMINAL);
+ device.option_add("null_modem", NULL_MODEM);
+}
//**************************************************************************
diff --git a/src/devices/bus/isa/dectalk.cpp b/src/devices/bus/isa/dectalk.cpp
index 0ca61665e33..4bba74af8a2 100644
--- a/src/devices/bus/isa/dectalk.cpp
+++ b/src/devices/bus/isa/dectalk.cpp
@@ -171,7 +171,7 @@ MACHINE_CONFIG_START(dectalk_isa_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_12BIT_R2R, 0) MCFG_SOUND_ROUTE(0, "speaker", 1.0) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
WRITE8_MEMBER(dectalk_isa_device::write)
diff --git a/src/devices/bus/isa/fdc.cpp b/src/devices/bus/isa/fdc.cpp
index bafe4f953e6..8d5f5cc16e5 100644
--- a/src/devices/bus/isa/fdc.cpp
+++ b/src/devices/bus/isa/fdc.cpp
@@ -19,17 +19,19 @@ FLOPPY_FORMATS_MEMBER( isa8_fdc_device::floppy_formats )
FLOPPY_NASLITE_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( pc_dd_floppies )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
-SLOT_INTERFACE_END
-
-static SLOT_INTERFACE_START( pc_hd_floppies )
- SLOT_INTERFACE( "525hd", FLOPPY_525_HD )
- SLOT_INTERFACE( "35hd", FLOPPY_35_HD )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
-SLOT_INTERFACE_END
+static void pc_dd_floppies(device_slot_interface &device)
+{
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("35dd", FLOPPY_35_DD);
+}
+
+static void pc_hd_floppies(device_slot_interface &device)
+{
+ device.option_add("525hd", FLOPPY_525_HD);
+ device.option_add("35hd", FLOPPY_35_HD);
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("35dd", FLOPPY_35_DD);
+}
isa8_fdc_device::isa8_fdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
diff --git a/src/devices/bus/isa/isa_cards.cpp b/src/devices/bus/isa/isa_cards.cpp
index 002b7fdcc29..bd9a61dfe83 100644
--- a/src/devices/bus/isa/isa_cards.cpp
+++ b/src/devices/bus/isa/isa_cards.cpp
@@ -64,104 +64,106 @@
#include "finalchs.h"
-SLOT_INTERFACE_START( pc_isa8_cards )
- SLOT_INTERFACE("mda", ISA8_MDA)
- SLOT_INTERFACE("cga", ISA8_CGA)
- SLOT_INTERFACE("cga_ec1841", ISA8_EC1841_0002)
- SLOT_INTERFACE("cga_poisk2", ISA8_CGA_POISK2)
- SLOT_INTERFACE("cga_mc1502", ISA8_CGA_MC1502)
- SLOT_INTERFACE("cga_m24", ISA8_CGA_M24)
- SLOT_INTERFACE("cga_cportiii", ISA8_CGA_CPORTIII)
- SLOT_INTERFACE("aga", ISA8_AGA)
- SLOT_INTERFACE("aga_pc200", ISA8_AGA_PC200)
- SLOT_INTERFACE("ega", ISA8_EGA)
- SLOT_INTERFACE("pgc", ISA8_PGC)
- SLOT_INTERFACE("vga", ISA8_VGA)
- SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
- SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
- SLOT_INTERFACE("com", ISA8_COM)
- SLOT_INTERFACE("fdc", ISA8_FDC_SUPERIO)
- SLOT_INTERFACE("fdc_xt", ISA8_FDC_XT)
- SLOT_INTERFACE("fdc_at", ISA8_FDC_AT)
- SLOT_INTERFACE("fdc_smc", ISA8_FDC_SMC)
- SLOT_INTERFACE("fdc_ps2", ISA8_FDC_PS2)
- SLOT_INTERFACE("fdc344", ISA8_FDC344)
- SLOT_INTERFACE("fdcmag", ISA8_FDCMAG)
- SLOT_INTERFACE("wdxt_gen", ISA8_WDXT_GEN)
- SLOT_INTERFACE("finalchs", ISA8_FINALCHS)
- SLOT_INTERFACE("xtide", ISA8_XTIDE)
- SLOT_INTERFACE("side116", ISA8_SIDE116)
- SLOT_INTERFACE("hdc", ISA8_HDC)
- SLOT_INTERFACE("adlib", ISA8_ADLIB)
- SLOT_INTERFACE("hercules", ISA8_HERCULES)
- SLOT_INTERFACE("gblaster", ISA8_GAME_BLASTER)
- SLOT_INTERFACE("sblaster1_0", ISA8_SOUND_BLASTER_1_0)
- SLOT_INTERFACE("sblaster1_5", ISA8_SOUND_BLASTER_1_5)
- SLOT_INTERFACE("stereo_fx", ISA8_STEREO_FX)
- SLOT_INTERFACE("ssi2001", ISA8_SSI2001)
- SLOT_INTERFACE("mpu401", ISA8_MPU401)
- SLOT_INTERFACE("ne1000", NE1000)
- SLOT_INTERFACE("3c503", EL2_3C503)
- SLOT_INTERFACE("lpt", ISA8_LPT)
- SLOT_INTERFACE("ibm_mfc", ISA8_IBM_MFC)
- SLOT_INTERFACE("wd1002a_wx1", ISA8_WD1002A_WX1)
- SLOT_INTERFACE("dectalk", ISA8_DECTALK)
- SLOT_INTERFACE("pds", ISA8_PDS)
- SLOT_INTERFACE("lba_enhancer", ISA8_LBA_ENHANCER)
-SLOT_INTERFACE_END
+void pc_isa8_cards(device_slot_interface &device)
+{
+ device.option_add("mda", ISA8_MDA);
+ device.option_add("cga", ISA8_CGA);
+ device.option_add("cga_ec1841", ISA8_EC1841_0002);
+ device.option_add("cga_poisk2", ISA8_CGA_POISK2);
+ device.option_add("cga_mc1502", ISA8_CGA_MC1502);
+ device.option_add("cga_m24", ISA8_CGA_M24);
+ device.option_add("cga_cportiii", ISA8_CGA_CPORTIII);
+ device.option_add("aga", ISA8_AGA);
+ device.option_add("aga_pc200", ISA8_AGA_PC200);
+ device.option_add("ega", ISA8_EGA);
+ device.option_add("pgc", ISA8_PGC);
+ device.option_add("vga", ISA8_VGA);
+ device.option_add("svga_et4k", ISA8_SVGA_ET4K);
+ device.option_add("num9rev",ISA8_NUM_9_REV);
+ device.option_add("com", ISA8_COM);
+ device.option_add("fdc", ISA8_FDC_SUPERIO);
+ device.option_add("fdc_xt", ISA8_FDC_XT);
+ device.option_add("fdc_at", ISA8_FDC_AT);
+ device.option_add("fdc_smc", ISA8_FDC_SMC);
+ device.option_add("fdc_ps2", ISA8_FDC_PS2);
+ device.option_add("fdc344", ISA8_FDC344);
+ device.option_add("fdcmag", ISA8_FDCMAG);
+ device.option_add("wdxt_gen", ISA8_WDXT_GEN);
+ device.option_add("finalchs", ISA8_FINALCHS);
+ device.option_add("xtide", ISA8_XTIDE);
+ device.option_add("side116", ISA8_SIDE116);
+ device.option_add("hdc", ISA8_HDC);
+ device.option_add("adlib", ISA8_ADLIB);
+ device.option_add("hercules", ISA8_HERCULES);
+ device.option_add("gblaster", ISA8_GAME_BLASTER);
+ device.option_add("sblaster1_0", ISA8_SOUND_BLASTER_1_0);
+ device.option_add("sblaster1_5", ISA8_SOUND_BLASTER_1_5);
+ device.option_add("stereo_fx", ISA8_STEREO_FX);
+ device.option_add("ssi2001", ISA8_SSI2001);
+ device.option_add("mpu401", ISA8_MPU401);
+ device.option_add("ne1000", NE1000);
+ device.option_add("3c503", EL2_3C503);
+ device.option_add("lpt", ISA8_LPT);
+ device.option_add("ibm_mfc", ISA8_IBM_MFC);
+ device.option_add("wd1002a_wx1", ISA8_WD1002A_WX1);
+ device.option_add("dectalk", ISA8_DECTALK);
+ device.option_add("pds", ISA8_PDS);
+ device.option_add("lba_enhancer", ISA8_LBA_ENHANCER);
+}
-SLOT_INTERFACE_START( pc_isa16_cards )
+void pc_isa16_cards(device_slot_interface &device)
+{
// 8-bit
- SLOT_INTERFACE("mda", ISA8_MDA)
- SLOT_INTERFACE("cga", ISA8_CGA)
- SLOT_INTERFACE("cga_cportiii", ISA8_CGA_CPORTIII)
- SLOT_INTERFACE("wyse700", ISA8_WYSE700)
- SLOT_INTERFACE("ega", ISA8_EGA)
- SLOT_INTERFACE("pgc", ISA8_PGC)
- SLOT_INTERFACE("vga", ISA8_VGA)
- SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
- SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
- SLOT_INTERFACE("com", ISA8_COM)
- SLOT_INTERFACE("comat", ISA8_COM_AT)
- SLOT_INTERFACE("fdc", ISA8_FDC_AT)
- SLOT_INTERFACE("fdc344", ISA8_FDC344)
- SLOT_INTERFACE("fdcmag", ISA8_FDCMAG)
- SLOT_INTERFACE("hdc", ISA8_HDC)
- SLOT_INTERFACE("side116", ISA8_SIDE116)
- SLOT_INTERFACE("adlib", ISA8_ADLIB)
- SLOT_INTERFACE("hercules", ISA8_HERCULES)
- SLOT_INTERFACE("gblaster", ISA8_GAME_BLASTER)
- SLOT_INTERFACE("sblaster1_0", ISA8_SOUND_BLASTER_1_0)
- SLOT_INTERFACE("sblaster1_5", ISA8_SOUND_BLASTER_1_5)
- SLOT_INTERFACE("stereo_fx", ISA8_STEREO_FX)
- SLOT_INTERFACE("ssi2001", ISA8_SSI2001)
- SLOT_INTERFACE("ne1000", NE1000)
- SLOT_INTERFACE("3c503", EL2_3C503)
- SLOT_INTERFACE("mpu401", ISA8_MPU401)
- SLOT_INTERFACE("lpt", ISA8_LPT)
- SLOT_INTERFACE("ibm_mfc", ISA8_IBM_MFC)
- SLOT_INTERFACE("fdcsmc", ISA8_FDC_SMC)
- SLOT_INTERFACE("dectalk", ISA8_DECTALK)
- SLOT_INTERFACE("pds", ISA8_PDS)
- SLOT_INTERFACE("lba_enhancer", ISA8_LBA_ENHANCER)
+ device.option_add("mda", ISA8_MDA);
+ device.option_add("cga", ISA8_CGA);
+ device.option_add("cga_cportiii", ISA8_CGA_CPORTIII);
+ device.option_add("wyse700", ISA8_WYSE700);
+ device.option_add("ega", ISA8_EGA);
+ device.option_add("pgc", ISA8_PGC);
+ device.option_add("vga", ISA8_VGA);
+ device.option_add("svga_et4k", ISA8_SVGA_ET4K);
+ device.option_add("num9rev",ISA8_NUM_9_REV);
+ device.option_add("com", ISA8_COM);
+ device.option_add("comat", ISA8_COM_AT);
+ device.option_add("fdc", ISA8_FDC_AT);
+ device.option_add("fdc344", ISA8_FDC344);
+ device.option_add("fdcmag", ISA8_FDCMAG);
+ device.option_add("hdc", ISA8_HDC);
+ device.option_add("side116", ISA8_SIDE116);
+ device.option_add("adlib", ISA8_ADLIB);
+ device.option_add("hercules", ISA8_HERCULES);
+ device.option_add("gblaster", ISA8_GAME_BLASTER);
+ device.option_add("sblaster1_0", ISA8_SOUND_BLASTER_1_0);
+ device.option_add("sblaster1_5", ISA8_SOUND_BLASTER_1_5);
+ device.option_add("stereo_fx", ISA8_STEREO_FX);
+ device.option_add("ssi2001", ISA8_SSI2001);
+ device.option_add("ne1000", NE1000);
+ device.option_add("3c503", EL2_3C503);
+ device.option_add("mpu401", ISA8_MPU401);
+ device.option_add("lpt", ISA8_LPT);
+ device.option_add("ibm_mfc", ISA8_IBM_MFC);
+ device.option_add("fdcsmc", ISA8_FDC_SMC);
+ device.option_add("dectalk", ISA8_DECTALK);
+ device.option_add("pds", ISA8_PDS);
+ device.option_add("lba_enhancer", ISA8_LBA_ENHANCER);
// 16-bit
- SLOT_INTERFACE("ide", ISA16_IDE)
- SLOT_INTERFACE("ne2000", NE2000)
- SLOT_INTERFACE("aha1542", AHA1542)
- SLOT_INTERFACE("gus",ISA16_GUS)
- SLOT_INTERFACE("sblaster_16", ISA16_SOUND_BLASTER_16)
- SLOT_INTERFACE("svga_s3", ISA16_SVGA_S3)
- SLOT_INTERFACE("s3virge", ISA16_S3VIRGE)
- SLOT_INTERFACE("s3virgedx", ISA16_S3VIRGEDX)
- SLOT_INTERFACE("dms3d2kp", ISA16_DMS3D2KPRO)
- SLOT_INTERFACE("svga_dm",ISA16_SVGA_CIRRUS)
- SLOT_INTERFACE("clgd542x",ISA16_SVGA_CIRRUS_GD542X)
- SLOT_INTERFACE("gfxultra", ISA16_VGA_GFXULTRA)
- SLOT_INTERFACE("gfxultrap", ISA16_SVGA_GFXULTRAPRO)
- SLOT_INTERFACE("tgui9680",ISA16_SVGA_TGUI9680)
- SLOT_INTERFACE("3c505", ISA16_3C505)
- SLOT_INTERFACE("mach64", ISA16_SVGA_MACH64)
- SLOT_INTERFACE("sb16_lle", ISA16_SB16)
- SLOT_INTERFACE("mcd", ISA16_MCD)
- SLOT_INTERFACE("sad8852", ISA16_SAD8852)
-SLOT_INTERFACE_END
+ device.option_add("ide", ISA16_IDE);
+ device.option_add("ne2000", NE2000);
+ device.option_add("aha1542", AHA1542);
+ device.option_add("gus",ISA16_GUS);
+ device.option_add("sblaster_16", ISA16_SOUND_BLASTER_16);
+ device.option_add("svga_s3", ISA16_SVGA_S3);
+ device.option_add("s3virge", ISA16_S3VIRGE);
+ device.option_add("s3virgedx", ISA16_S3VIRGEDX);
+ device.option_add("dms3d2kp", ISA16_DMS3D2KPRO);
+ device.option_add("svga_dm",ISA16_SVGA_CIRRUS);
+ device.option_add("clgd542x",ISA16_SVGA_CIRRUS_GD542X);
+ device.option_add("gfxultra", ISA16_VGA_GFXULTRA);
+ device.option_add("gfxultrap", ISA16_SVGA_GFXULTRAPRO);
+ device.option_add("tgui9680",ISA16_SVGA_TGUI9680);
+ device.option_add("3c505", ISA16_3C505);
+ device.option_add("mach64", ISA16_SVGA_MACH64);
+ device.option_add("sb16_lle", ISA16_SB16);
+ device.option_add("mcd", ISA16_MCD);
+ device.option_add("sad8852", ISA16_SAD8852);
+}
diff --git a/src/devices/bus/isa/isa_cards.h b/src/devices/bus/isa/isa_cards.h
index da83f77c5e1..344ed501d51 100644
--- a/src/devices/bus/isa/isa_cards.h
+++ b/src/devices/bus/isa/isa_cards.h
@@ -13,7 +13,7 @@
// supported devices
-SLOT_INTERFACE_EXTERN( pc_isa8_cards );
-SLOT_INTERFACE_EXTERN( pc_isa16_cards );
+void pc_isa8_cards(device_slot_interface &device);
+void pc_isa16_cards(device_slot_interface &device);
#endif // MAME_BUS_ISA_ISA_CARDS_H
diff --git a/src/devices/bus/isa/mc1502_fdc.cpp b/src/devices/bus/isa/mc1502_fdc.cpp
index d97985550f7..1f019bbd2b7 100644
--- a/src/devices/bus/isa/mc1502_fdc.cpp
+++ b/src/devices/bus/isa/mc1502_fdc.cpp
@@ -35,9 +35,10 @@ FLOPPY_FORMATS_MEMBER( mc1502_fdc_device::floppy_formats )
FLOPPY_PC_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( mc1502_floppies )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
-SLOT_INTERFACE_END
+static void mc1502_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD);
+}
//-------------------------------------------------
// ROM( mc1502_fdc )
diff --git a/src/devices/bus/isa/mufdc.cpp b/src/devices/bus/isa/mufdc.cpp
index ee8e691c46d..197a242ce15 100644
--- a/src/devices/bus/isa/mufdc.cpp
+++ b/src/devices/bus/isa/mufdc.cpp
@@ -33,12 +33,13 @@ FLOPPY_FORMATS_MEMBER( mufdc_device::floppy_formats )
FLOPPY_NASLITE_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( drives )
- SLOT_INTERFACE("525hd", FLOPPY_525_HD)
- SLOT_INTERFACE("35hd", FLOPPY_35_HD)
- SLOT_INTERFACE("525dd", FLOPPY_525_DD)
- SLOT_INTERFACE("35dd", FLOPPY_35_DD)
-SLOT_INTERFACE_END
+static void drives(device_slot_interface &device)
+{
+ device.option_add("525hd", FLOPPY_525_HD);
+ device.option_add("35hd", FLOPPY_35_HD);
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("35dd", FLOPPY_35_DD);
+}
//-------------------------------------------------
// device_add_mconfig - add device configuration
diff --git a/src/devices/bus/isa/myb3k_com.cpp b/src/devices/bus/isa/myb3k_com.cpp
index 61a79abe6f2..a5daafbe7b9 100644
--- a/src/devices/bus/isa/myb3k_com.cpp
+++ b/src/devices/bus/isa/myb3k_com.cpp
@@ -16,9 +16,10 @@ TODO:
#include "machine/i8251.h"
#include "machine/pit8253.h"
-static SLOT_INTERFACE_START(isa8_myb3k_com)
- SLOT_INTERFACE("null_modem", NULL_MODEM)
-SLOT_INTERFACE_END
+static void isa8_myb3k_com(device_slot_interface &device)
+{
+ device.option_add("null_modem", NULL_MODEM);
+}
//**************************************************************************
diff --git a/src/devices/bus/isa/myb3k_fdc.cpp b/src/devices/bus/isa/myb3k_fdc.cpp
index 6396667ae23..4d6349e6c77 100644
--- a/src/devices/bus/isa/myb3k_fdc.cpp
+++ b/src/devices/bus/isa/myb3k_fdc.cpp
@@ -76,18 +76,21 @@ FLOPPY_FORMATS_MEMBER( isa8_myb3k_fdc4711_device::myb3k_floppy_formats )
FLOPPY_IMD_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( myb3k_sd_floppies )
- SLOT_INTERFACE( "525sd", FLOPPY_525_SD )
-SLOT_INTERFACE_END
+static void myb3k_sd_floppies(device_slot_interface &device)
+{
+ device.option_add("525sd", FLOPPY_525_SD);
+}
-static SLOT_INTERFACE_START( myb3k_qd_floppies )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
-SLOT_INTERFACE_END
+static void myb3k_qd_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD);
+}
#if 0
-static SLOT_INTERFACE_START( myb3k_8inch_floppies )
- SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD )
-SLOT_INTERFACE_END
+static void myb3k_8inch_floppies(device_slot_interface &device)
+{
+ device.option_add("8dsdd", FLOPPY_8_DSDD);
+}
#endif
//-------------------------------------------------
diff --git a/src/devices/bus/isa/omti8621.cpp b/src/devices/bus/isa/omti8621.cpp
index fdb4e668580..32ab9c6a56f 100644
--- a/src/devices/bus/isa/omti8621.cpp
+++ b/src/devices/bus/isa/omti8621.cpp
@@ -195,12 +195,13 @@ std::string omti8621_device::cpu_context() const
return string_format("%d.%03d %s", s, ms, machine().describe_context());
}
-static SLOT_INTERFACE_START( pc_hd_floppies )
- SLOT_INTERFACE( "525hd", FLOPPY_525_HD )
- SLOT_INTERFACE( "35hd", FLOPPY_35_HD )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
-SLOT_INTERFACE_END
+static void pc_hd_floppies(device_slot_interface &device)
+{
+ device.option_add("525hd", FLOPPY_525_HD);
+ device.option_add("35hd", FLOPPY_35_HD);
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("35dd", FLOPPY_35_DD);
+}
FLOPPY_FORMATS_MEMBER( omti8621_device::floppy_formats )
FLOPPY_APOLLO_FORMAT,
diff --git a/src/devices/bus/isa/p1_fdc.cpp b/src/devices/bus/isa/p1_fdc.cpp
index 5d47a021d94..9718fc00497 100644
--- a/src/devices/bus/isa/p1_fdc.cpp
+++ b/src/devices/bus/isa/p1_fdc.cpp
@@ -35,9 +35,10 @@ FLOPPY_FORMATS_MEMBER( p1_fdc_device::floppy_formats )
FLOPPY_PC_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( poisk1_floppies )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
-SLOT_INTERFACE_END
+static void poisk1_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD);
+}
//-------------------------------------------------
// ROM( p1_fdc )
diff --git a/src/devices/bus/isa/p1_sound.cpp b/src/devices/bus/isa/p1_sound.cpp
index 9fa6ea3852e..73ce5f735af 100644
--- a/src/devices/bus/isa/p1_sound.cpp
+++ b/src/devices/bus/isa/p1_sound.cpp
@@ -69,7 +69,7 @@ MACHINE_CONFIG_START(p1_sound_device::device_add_mconfig)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
diff --git a/src/devices/bus/isa/sblaster.cpp b/src/devices/bus/isa/sblaster.cpp
index 9e1260fa25b..c073424fd8d 100644
--- a/src/devices/bus/isa/sblaster.cpp
+++ b/src/devices/bus/isa/sblaster.cpp
@@ -1155,8 +1155,8 @@ MACHINE_CONFIG_START(isa8_sblaster1_0_device::device_add_mconfig)
MCFG_SOUND_ADD("ldac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) // unknown DAC
MCFG_SOUND_ADD("rdac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
- MCFG_SOUND_ROUTE_EX(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
MCFG_PC_JOY_ADD("pc_joy")
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
@@ -1175,8 +1175,8 @@ MACHINE_CONFIG_START(isa8_sblaster1_5_device::device_add_mconfig)
MCFG_SOUND_ADD("ldac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) // unknown DAC
MCFG_SOUND_ADD("rdac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
- MCFG_SOUND_ROUTE_EX(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
MCFG_PC_JOY_ADD("pc_joy")
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
@@ -1196,8 +1196,8 @@ MACHINE_CONFIG_START(isa16_sblaster16_device::device_add_mconfig)
MCFG_SOUND_ADD("ldac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) // unknown DAC
MCFG_SOUND_ADD("rdac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
- MCFG_SOUND_ROUTE_EX(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
MCFG_PC_JOY_ADD("pc_joy")
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
diff --git a/src/devices/bus/isa/stereo_fx.cpp b/src/devices/bus/isa/stereo_fx.cpp
index 01e369944be..6f49baba5f0 100644
--- a/src/devices/bus/isa/stereo_fx.cpp
+++ b/src/devices/bus/isa/stereo_fx.cpp
@@ -132,8 +132,8 @@ MACHINE_CONFIG_START(stereo_fx_device::device_add_mconfig)
MCFG_SOUND_ADD("ldac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) // unknown DAC
MCFG_SOUND_ADD("rdac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
- MCFG_SOUND_ROUTE_EX(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
MCFG_PC_JOY_ADD("pc_joy")
MACHINE_CONFIG_END
diff --git a/src/devices/bus/isa/xsu_cards.cpp b/src/devices/bus/isa/xsu_cards.cpp
index d8839ebd4d9..1e8856e70ac 100644
--- a/src/devices/bus/isa/xsu_cards.cpp
+++ b/src/devices/bus/isa/xsu_cards.cpp
@@ -30,59 +30,63 @@
#include "xtide.h"
-SLOT_INTERFACE_START( p1_isa8_cards )
- SLOT_INTERFACE("rom", P1_ROM) // B003
- SLOT_INTERFACE("fdc", P1_FDC) // B504
- SLOT_INTERFACE("hdc", P1_HDC) // B942
- SLOT_INTERFACE("p1sound", P1_SOUND) // B623
+void p1_isa8_cards(device_slot_interface &device)
+{
+ device.option_add("rom", P1_ROM); // B003
+ device.option_add("fdc", P1_FDC); // B504
+ device.option_add("hdc", P1_HDC); // B942
+ device.option_add("p1sound", P1_SOUND); // B623
/*
- SLOT_INTERFACE("comlpt", P1_COMLPT) // B620
- SLOT_INTERFACE("joy", P1_JOY) // B621
- SLOT_INTERFACE("mouse", P1_MOUSE) // B943
- SLOT_INTERFACE("lan", P1_LAN) // B944
+ device.option_add("comlpt", P1_COMLPT); // B620
+ device.option_add("joy", P1_JOY); // B621
+ device.option_add("mouse", P1_MOUSE); // B943
+ device.option_add("lan", P1_LAN); // B944
*/
- SLOT_INTERFACE("pccom", ISA8_COM)
- SLOT_INTERFACE("pclpt", ISA8_LPT)
- SLOT_INTERFACE("xtide", ISA8_XTIDE)
-SLOT_INTERFACE_END
+ device.option_add("pccom", ISA8_COM);
+ device.option_add("pclpt", ISA8_LPT);
+ device.option_add("xtide", ISA8_XTIDE);
+}
-SLOT_INTERFACE_START( mc1502_isa8_cards )
- SLOT_INTERFACE("cga_mc1502", ISA8_CGA_MC1502)
+void mc1502_isa8_cards(device_slot_interface &device)
+{
+ device.option_add("cga_mc1502", ISA8_CGA_MC1502);
- SLOT_INTERFACE("rom", MC1502_ROM)
- SLOT_INTERFACE("fdc", MC1502_FDC)
+ device.option_add("rom", MC1502_ROM);
+ device.option_add("fdc", MC1502_FDC);
/*
- SLOT_INTERFACE("hdc", MC1502_HDC)
+ device.option_add("hdc", MC1502_HDC);
*/
- SLOT_INTERFACE("pccom", ISA8_COM)
- SLOT_INTERFACE("pclpt", ISA8_LPT)
- SLOT_INTERFACE("xtide", ISA8_XTIDE)
-SLOT_INTERFACE_END
+ device.option_add("pccom", ISA8_COM);
+ device.option_add("pclpt", ISA8_LPT);
+ device.option_add("xtide", ISA8_XTIDE);
+}
-SLOT_INTERFACE_START( ec184x_isa8_cards )
- SLOT_INTERFACE("ec1840.0002", ISA8_EC1840_0002) // MDA with downloadable font
- SLOT_INTERFACE("ec1841.0002", ISA8_EC1841_0002) // CGA with downloadable font
- SLOT_INTERFACE("ec1841.0003", ISA8_FDC_XT)
+void ec184x_isa8_cards(device_slot_interface &device)
+{
+ device.option_add("ec1840.0002", ISA8_EC1840_0002); // MDA with downloadable font
+ device.option_add("ec1841.0002", ISA8_EC1841_0002); // CGA with downloadable font
+ device.option_add("ec1841.0003", ISA8_FDC_XT);
/*
- SLOT_INTERFACE("ec1841.0010", ISA8_EC1841_0010) // 8089-based HDC
- SLOT_INTERFACE("ec1841.0003", ISA8_EC1841_0003) // FDC + mouse port
- SLOT_INTERFACE("ec1841.0004", ISA8_EC1841_0004) // BSC-like serial ports + parallel port
+ device.option_add("ec1841.0010", ISA8_EC1841_0010); // 8089-based HDC
+ device.option_add("ec1841.0003", ISA8_EC1841_0003); // FDC + mouse port
+ device.option_add("ec1841.0004", ISA8_EC1841_0004); // BSC-like serial ports + parallel port
*/
- SLOT_INTERFACE("mda", ISA8_MDA)
- SLOT_INTERFACE("hdc", ISA8_HDC_EC1841)
- SLOT_INTERFACE("pccom", ISA8_COM)
- SLOT_INTERFACE("pclpt", ISA8_LPT)
- SLOT_INTERFACE("xtide", ISA8_XTIDE)
-SLOT_INTERFACE_END
+ device.option_add("mda", ISA8_MDA);
+ device.option_add("hdc", ISA8_HDC_EC1841);
+ device.option_add("pccom", ISA8_COM);
+ device.option_add("pclpt", ISA8_LPT);
+ device.option_add("xtide", ISA8_XTIDE);
+}
-SLOT_INTERFACE_START( iskr103x_isa8_cards )
- SLOT_INTERFACE("cga_iskr1030m", ISA8_CGA_ISKR1030M)
- SLOT_INTERFACE("cga_iskr1031", ISA8_CGA_ISKR1031)
+void iskr103x_isa8_cards(device_slot_interface &device)
+{
+ device.option_add("cga_iskr1030m", ISA8_CGA_ISKR1030M);
+ device.option_add("cga_iskr1031", ISA8_CGA_ISKR1031);
/**/
- SLOT_INTERFACE("fdc_xt", ISA8_FDC_XT)
- SLOT_INTERFACE("mda", ISA8_MDA)
- SLOT_INTERFACE("hdc", ISA8_HDC)
- SLOT_INTERFACE("pccom", ISA8_COM)
- SLOT_INTERFACE("pclpt", ISA8_LPT)
- SLOT_INTERFACE("xtide", ISA8_XTIDE)
-SLOT_INTERFACE_END
+ device.option_add("fdc_xt", ISA8_FDC_XT);
+ device.option_add("mda", ISA8_MDA);
+ device.option_add("hdc", ISA8_HDC);
+ device.option_add("pccom", ISA8_COM);
+ device.option_add("pclpt", ISA8_LPT);
+ device.option_add("xtide", ISA8_XTIDE);
+}
diff --git a/src/devices/bus/isa/xsu_cards.h b/src/devices/bus/isa/xsu_cards.h
index d8b98be154c..1fc1d93571b 100644
--- a/src/devices/bus/isa/xsu_cards.h
+++ b/src/devices/bus/isa/xsu_cards.h
@@ -13,9 +13,9 @@
// supported devices
-SLOT_INTERFACE_EXTERN( p1_isa8_cards );
-SLOT_INTERFACE_EXTERN( mc1502_isa8_cards );
-SLOT_INTERFACE_EXTERN( ec184x_isa8_cards );
-SLOT_INTERFACE_EXTERN( iskr103x_isa8_cards );
+void p1_isa8_cards(device_slot_interface &device);
+void mc1502_isa8_cards(device_slot_interface &device);
+void ec184x_isa8_cards(device_slot_interface &device);
+void iskr103x_isa8_cards(device_slot_interface &device);
#endif // MAME_BUS_ISA_XSU_CARDS_H
diff --git a/src/devices/bus/isbx/compis_fdc.cpp b/src/devices/bus/isbx/compis_fdc.cpp
index 4632038ec87..df2e76069e6 100644
--- a/src/devices/bus/isbx/compis_fdc.cpp
+++ b/src/devices/bus/isbx/compis_fdc.cpp
@@ -43,10 +43,11 @@ FLOPPY_FORMATS_MEMBER( compis_fdc_device::floppy_formats )
FLOPPY_CPIS_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( compis_floppies )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
- SLOT_INTERFACE( "525hd", FLOPPY_525_HD )
-SLOT_INTERFACE_END
+static void compis_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD);
+ device.option_add("525hd", FLOPPY_525_HD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/isbx/isbc_218a.cpp b/src/devices/bus/isbx/isbc_218a.cpp
index 868462b505d..95f23955890 100644
--- a/src/devices/bus/isbx/isbc_218a.cpp
+++ b/src/devices/bus/isbx/isbc_218a.cpp
@@ -43,10 +43,11 @@ FLOPPY_FORMATS_MEMBER( isbc_218a_device::floppy_formats )
FLOPPY_PC_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( isbc_218a_floppies )
- SLOT_INTERFACE( "8dd", FLOPPY_8_DSDD )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
-SLOT_INTERFACE_END
+static void isbc_218a_floppies(device_slot_interface &device)
+{
+ device.option_add("8dd", FLOPPY_8_DSDD);
+ device.option_add("525dd", FLOPPY_525_DD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/isbx/isbx.cpp b/src/devices/bus/isbx/isbx.cpp
index ce658e6b1d3..ae3754e6d62 100644
--- a/src/devices/bus/isbx/isbx.cpp
+++ b/src/devices/bus/isbx/isbx.cpp
@@ -73,7 +73,8 @@ void isbx_slot_device::device_start()
#include "compis_fdc.h"
#include "isbc_218a.h"
-SLOT_INTERFACE_START( isbx_cards )
- SLOT_INTERFACE("fdc", COMPIS_FDC)
- SLOT_INTERFACE("fdc_218a", ISBC_218A)
-SLOT_INTERFACE_END
+void isbx_cards(device_slot_interface &device)
+{
+ device.option_add("fdc", COMPIS_FDC);
+ device.option_add("fdc_218a", ISBC_218A);
+}
diff --git a/src/devices/bus/isbx/isbx.h b/src/devices/bus/isbx/isbx.h
index 3cd74178228..1219a5fc61c 100644
--- a/src/devices/bus/isbx/isbx.h
+++ b/src/devices/bus/isbx/isbx.h
@@ -147,7 +147,7 @@ protected:
DECLARE_DEVICE_TYPE(ISBX_SLOT, isbx_slot_device)
-SLOT_INTERFACE_EXTERN( isbx_cards );
+void isbx_cards(device_slot_interface &device);
#endif // MAME_BUS_ISBX_ISBX_SLOT_H
diff --git a/src/devices/bus/kc/d002.cpp b/src/devices/bus/kc/d002.cpp
index 90b5bf7b3ce..ebc24b06f8b 100644
--- a/src/devices/bus/kc/d002.cpp
+++ b/src/devices/bus/kc/d002.cpp
@@ -46,8 +46,9 @@ static INPUT_PORTS_START( kc_d002 )
INPUT_PORTS_END
// defined in drivers/kc.c
-SLOT_INTERFACE_EXTERN(kc85_cart);
-SLOT_INTERFACE_EXTERN(kc85_exp);
+// FIXME: if src/devices depends on src/mame, you're doing it wrong!
+void kc85_cart(device_slot_interface &device);
+void kc85_exp(device_slot_interface &device);
WRITE_LINE_MEMBER(kc_d002_device::out_irq_w)
{
diff --git a/src/devices/bus/kc/d004.cpp b/src/devices/bus/kc/d004.cpp
index 9034b34b054..3831c9f2eb5 100644
--- a/src/devices/bus/kc/d004.cpp
+++ b/src/devices/bus/kc/d004.cpp
@@ -56,9 +56,10 @@ FLOPPY_FORMATS_MEMBER( kc_d004_device::floppy_formats )
FLOPPY_KC85_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( kc_d004_floppies )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
-SLOT_INTERFACE_END
+static void kc_d004_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD);
+}
static const z80_daisy_config kc_d004_daisy_chain[] =
{
diff --git a/src/devices/bus/lpci/southbridge.cpp b/src/devices/bus/lpci/southbridge.cpp
index df23c3fd9e9..965fc3fe58b 100644
--- a/src/devices/bus/lpci/southbridge.cpp
+++ b/src/devices/bus/lpci/southbridge.cpp
@@ -496,11 +496,12 @@ WRITE8_MEMBER( southbridge_device::at_dma8237_2_w )
Extended Southbridge Device
***************************************************************************/
-static SLOT_INTERFACE_START(pc_isa_onboard)
- SLOT_INTERFACE("comat", ISA8_COM_AT)
- SLOT_INTERFACE("lpt", ISA8_LPT)
- SLOT_INTERFACE("fdcsmc", ISA8_FDC_SMC)
-SLOT_INTERFACE_END
+static void pc_isa_onboard(device_slot_interface &device)
+{
+ device.option_add("comat", ISA8_COM_AT);
+ device.option_add("lpt", ISA8_LPT);
+ device.option_add("fdcsmc", ISA8_FDC_SMC);
+}
//-------------------------------------------------
// device_add_mconfig - add device configuration
diff --git a/src/devices/bus/megadrive/ggenie.cpp b/src/devices/bus/megadrive/ggenie.cpp
index 3bbcba0206c..a6001971529 100644
--- a/src/devices/bus/megadrive/ggenie.cpp
+++ b/src/devices/bus/megadrive/ggenie.cpp
@@ -158,13 +158,14 @@ WRITE16_MEMBER(md_rom_ggenie_device::write)
}
-static SLOT_INTERFACE_START(ggenie_sub_cart)
- SLOT_INTERFACE_INTERNAL("rom", MD_STD_ROM)
- SLOT_INTERFACE_INTERNAL("rom_svp", MD_STD_ROM)
- SLOT_INTERFACE_INTERNAL("rom_sram", MD_ROM_SRAM)
- SLOT_INTERFACE_INTERNAL("rom_sramsafe", MD_ROM_SRAM)
- SLOT_INTERFACE_INTERNAL("rom_fram", MD_ROM_FRAM)
-SLOT_INTERFACE_END
+static void ggenie_sub_cart(device_slot_interface &device)
+{
+ device.option_add_internal("rom", MD_STD_ROM);
+ device.option_add_internal("rom_svp", MD_STD_ROM);
+ device.option_add_internal("rom_sram", MD_ROM_SRAM);
+ device.option_add_internal("rom_sramsafe", MD_ROM_SRAM);
+ device.option_add_internal("rom_fram", MD_ROM_FRAM);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/megadrive/md_carts.cpp b/src/devices/bus/megadrive/md_carts.cpp
index 30fff82a81e..7b2e8fa333d 100644
--- a/src/devices/bus/megadrive/md_carts.cpp
+++ b/src/devices/bus/megadrive/md_carts.cpp
@@ -18,69 +18,70 @@
#include "stm95.h"
-SLOT_INTERFACE_START(md_cart)
- SLOT_INTERFACE_INTERNAL("rom", MD_STD_ROM)
- SLOT_INTERFACE_INTERNAL("rom_svp", MD_ROM_SVP)
- SLOT_INTERFACE_INTERNAL("rom_sk", MD_ROM_SK)
+void md_cart(device_slot_interface &device)
+{
+ device.option_add_internal("rom", MD_STD_ROM);
+ device.option_add_internal("rom_svp", MD_ROM_SVP);
+ device.option_add_internal("rom_sk", MD_ROM_SK);
// NVRAM handling
- SLOT_INTERFACE_INTERNAL("rom_sram", MD_ROM_SRAM)
- SLOT_INTERFACE_INTERNAL("rom_sramsafe", MD_ROM_SRAM)
- SLOT_INTERFACE_INTERNAL("rom_fram", MD_ROM_FRAM)
- SLOT_INTERFACE_INTERNAL("rom_hardbl95", MD_ROM_SRAM)
- SLOT_INTERFACE_INTERNAL("rom_xinqig", MD_ROM_SRAM)
- SLOT_INTERFACE_INTERNAL("rom_sf001", MD_ROM_BEGGARP)
- SLOT_INTERFACE_INTERNAL("rom_sf002", MD_ROM_WUKONG)
- SLOT_INTERFACE_INTERNAL("rom_sf004", MD_ROM_STARODYS)
+ device.option_add_internal("rom_sram", MD_ROM_SRAM);
+ device.option_add_internal("rom_sramsafe", MD_ROM_SRAM);
+ device.option_add_internal("rom_fram", MD_ROM_FRAM);
+ device.option_add_internal("rom_hardbl95", MD_ROM_SRAM);
+ device.option_add_internal("rom_xinqig", MD_ROM_SRAM);
+ device.option_add_internal("rom_sf001", MD_ROM_BEGGARP);
+ device.option_add_internal("rom_sf002", MD_ROM_WUKONG);
+ device.option_add_internal("rom_sf004", MD_ROM_STARODYS);
// EEPROM handling (not supported fully yet)
- SLOT_INTERFACE_INTERNAL("rom_eeprom", MD_STD_EEPROM)
- SLOT_INTERFACE_INTERNAL("rom_nbajam", MD_EEPROM_NBAJAM)
- SLOT_INTERFACE_INTERNAL("rom_nbajamte", MD_EEPROM_NBAJAMTE)
- SLOT_INTERFACE_INTERNAL("rom_nflqb96", MD_EEPROM_NFLQB)
- SLOT_INTERFACE_INTERNAL("rom_cslam", MD_EEPROM_CSLAM)
- SLOT_INTERFACE_INTERNAL("rom_nhlpa", MD_EEPROM_NHLPA)
- SLOT_INTERFACE_INTERNAL("rom_blara", MD_EEPROM_BLARA)
+ device.option_add_internal("rom_eeprom", MD_STD_EEPROM);
+ device.option_add_internal("rom_nbajam", MD_EEPROM_NBAJAM);
+ device.option_add_internal("rom_nbajamte", MD_EEPROM_NBAJAMTE);
+ device.option_add_internal("rom_nflqb96", MD_EEPROM_NFLQB);
+ device.option_add_internal("rom_cslam", MD_EEPROM_CSLAM);
+ device.option_add_internal("rom_nhlpa", MD_EEPROM_NHLPA);
+ device.option_add_internal("rom_blara", MD_EEPROM_BLARA);
// J-Cart controller (Sampras Tennis)
- SLOT_INTERFACE_INTERNAL("rom_jcart", MD_JCART)
+ device.option_add_internal("rom_jcart", MD_JCART);
// J-Cart controller + EEPROM handling (not supported fully yet)
- SLOT_INTERFACE_INTERNAL("rom_codemast", MD_SEPROM_CODEMAST)
- SLOT_INTERFACE_INTERNAL("rom_mm96", MD_SEPROM_MM96)
+ device.option_add_internal("rom_codemast", MD_SEPROM_CODEMAST);
+ device.option_add_internal("rom_mm96", MD_SEPROM_MM96);
// STM95 EEPROM
- SLOT_INTERFACE_INTERNAL("rom_stm95", MD_EEPROM_STM95)
+ device.option_add_internal("rom_stm95", MD_EEPROM_STM95);
// CodeMasters 2-in-1 (reset based)
- SLOT_INTERFACE_INTERNAL("rom_cm2in1", MD_ROM_CM2IN1)
+ device.option_add_internal("rom_cm2in1", MD_ROM_CM2IN1);
// Game Genie
- SLOT_INTERFACE_INTERNAL("rom_ggenie", MD_ROM_GAMEGENIE)
+ device.option_add_internal("rom_ggenie", MD_ROM_GAMEGENIE);
// unique bankswitch
- SLOT_INTERFACE_INTERNAL("rom_ssf2", MD_ROM_SSF2)
- SLOT_INTERFACE_INTERNAL("rom_radica", MD_ROM_RADICA)
+ device.option_add_internal("rom_ssf2", MD_ROM_SSF2);
+ device.option_add_internal("rom_radica", MD_ROM_RADICA);
// pirate mappers (protection and/or bankswitch)
- SLOT_INTERFACE_INTERNAL("rom_16mj2", MD_ROM_16MJ2)
- SLOT_INTERFACE_INTERNAL("rom_bugs", MD_ROM_BUGSLIFE)
- SLOT_INTERFACE_INTERNAL("rom_chinf3", MD_ROM_CHINF3)
- SLOT_INTERFACE_INTERNAL("rom_elfwor", MD_ROM_ELFWOR)
- SLOT_INTERFACE_INTERNAL("rom_yasech", MD_ROM_YASECH)
- SLOT_INTERFACE_INTERNAL("rom_kof98", MD_ROM_KOF98)
- SLOT_INTERFACE_INTERNAL("rom_kof99", MD_ROM_KOF99)
- SLOT_INTERFACE_INTERNAL("rom_lion2", MD_ROM_LION2)
- SLOT_INTERFACE_INTERNAL("rom_lion3", MD_ROM_LION3)
- SLOT_INTERFACE_INTERNAL("rom_mcpir", MD_ROM_MCPIR)
- SLOT_INTERFACE_INTERNAL("rom_mjlov", MD_ROM_MJLOV)
- SLOT_INTERFACE_INTERNAL("rom_cjmjclub", MD_ROM_CJMJCLUB)
- SLOT_INTERFACE_INTERNAL("rom_pokea", MD_ROM_POKEA)
- SLOT_INTERFACE_INTERNAL("rom_pokestad", MD_ROM_POKESTAD)
- SLOT_INTERFACE_INTERNAL("rom_realtec", MD_ROM_REALTEC)
- SLOT_INTERFACE_INTERNAL("rom_redcl", MD_ROM_REDCL)
- SLOT_INTERFACE_INTERNAL("rom_rx3", MD_ROM_RX3)
- SLOT_INTERFACE_INTERNAL("rom_sbubl", MD_ROM_SBUBL)
- SLOT_INTERFACE_INTERNAL("rom_smb", MD_ROM_SMB)
- SLOT_INTERFACE_INTERNAL("rom_smb2", MD_ROM_SMB2)
- SLOT_INTERFACE_INTERNAL("rom_smw64", MD_ROM_SMW64)
- SLOT_INTERFACE_INTERNAL("rom_smouse", MD_ROM_SMOUSE)
- SLOT_INTERFACE_INTERNAL("rom_soulb", MD_ROM_SOULB)
- SLOT_INTERFACE_INTERNAL("rom_squir", MD_ROM_SQUIR)
- SLOT_INTERFACE_INTERNAL("rom_tekkensp", MD_ROM_TEKKENSP)
- SLOT_INTERFACE_INTERNAL("rom_topf", MD_ROM_TOPF)
+ device.option_add_internal("rom_16mj2", MD_ROM_16MJ2);
+ device.option_add_internal("rom_bugs", MD_ROM_BUGSLIFE);
+ device.option_add_internal("rom_chinf3", MD_ROM_CHINF3);
+ device.option_add_internal("rom_elfwor", MD_ROM_ELFWOR);
+ device.option_add_internal("rom_yasech", MD_ROM_YASECH);
+ device.option_add_internal("rom_kof98", MD_ROM_KOF98);
+ device.option_add_internal("rom_kof99", MD_ROM_KOF99);
+ device.option_add_internal("rom_lion2", MD_ROM_LION2);
+ device.option_add_internal("rom_lion3", MD_ROM_LION3);
+ device.option_add_internal("rom_mcpir", MD_ROM_MCPIR);
+ device.option_add_internal("rom_mjlov", MD_ROM_MJLOV);
+ device.option_add_internal("rom_cjmjclub", MD_ROM_CJMJCLUB);
+ device.option_add_internal("rom_pokea", MD_ROM_POKEA);
+ device.option_add_internal("rom_pokestad", MD_ROM_POKESTAD);
+ device.option_add_internal("rom_realtec", MD_ROM_REALTEC);
+ device.option_add_internal("rom_redcl", MD_ROM_REDCL);
+ device.option_add_internal("rom_rx3", MD_ROM_RX3);
+ device.option_add_internal("rom_sbubl", MD_ROM_SBUBL);
+ device.option_add_internal("rom_smb", MD_ROM_SMB);
+ device.option_add_internal("rom_smb2", MD_ROM_SMB2);
+ device.option_add_internal("rom_smw64", MD_ROM_SMW64);
+ device.option_add_internal("rom_smouse", MD_ROM_SMOUSE);
+ device.option_add_internal("rom_soulb", MD_ROM_SOULB);
+ device.option_add_internal("rom_squir", MD_ROM_SQUIR);
+ device.option_add_internal("rom_tekkensp", MD_ROM_TEKKENSP);
+ device.option_add_internal("rom_topf", MD_ROM_TOPF);
-SLOT_INTERFACE_INTERNAL("rom_nbajam_alt", MD_EEPROM_NBAJAM_ALT)
-SLOT_INTERFACE_END
+ device.option_add_internal("rom_nbajam_alt", MD_EEPROM_NBAJAM_ALT);
+}
diff --git a/src/devices/bus/megadrive/md_carts.h b/src/devices/bus/megadrive/md_carts.h
index 7547a015657..03401ee2952 100644
--- a/src/devices/bus/megadrive/md_carts.h
+++ b/src/devices/bus/megadrive/md_carts.h
@@ -13,6 +13,6 @@
// supported devices
-SLOT_INTERFACE_EXTERN(md_cart);
+void md_cart(device_slot_interface &device);
#endif // MAME_BUS_MEGADRIVE_MD_CARTS_H
diff --git a/src/devices/bus/megadrive/sk.cpp b/src/devices/bus/megadrive/sk.cpp
index 311de07b58e..b48163e9b94 100644
--- a/src/devices/bus/megadrive/sk.cpp
+++ b/src/devices/bus/megadrive/sk.cpp
@@ -64,14 +64,15 @@ WRITE16_MEMBER(md_rom_sk_device::write)
}
-static SLOT_INTERFACE_START(sk_sub_cart)
- SLOT_INTERFACE_INTERNAL("rom", MD_STD_ROM)
- SLOT_INTERFACE_INTERNAL("rom_svp", MD_STD_ROM)
- SLOT_INTERFACE_INTERNAL("rom_sram", MD_ROM_SRAM)
- SLOT_INTERFACE_INTERNAL("rom_sramsafe", MD_ROM_SRAM)
- SLOT_INTERFACE_INTERNAL("rom_fram", MD_ROM_FRAM)
+static void sk_sub_cart(device_slot_interface &device)
+{
+ device.option_add_internal("rom", MD_STD_ROM);
+ device.option_add_internal("rom_svp", MD_STD_ROM);
+ device.option_add_internal("rom_sram", MD_ROM_SRAM);
+ device.option_add_internal("rom_sramsafe", MD_ROM_SRAM);
+ device.option_add_internal("rom_fram", MD_ROM_FRAM);
// add all types??
-SLOT_INTERFACE_END
+}
//-------------------------------------------------
diff --git a/src/devices/bus/midi/midi.cpp b/src/devices/bus/midi/midi.cpp
index baf8cf91a8e..be55f0d71a1 100644
--- a/src/devices/bus/midi/midi.cpp
+++ b/src/devices/bus/midi/midi.cpp
@@ -46,12 +46,14 @@ device_midi_port_interface::~device_midi_port_interface()
#include "bus/midi/midiinport.h"
-SLOT_INTERFACE_START(midiin_slot)
- SLOT_INTERFACE("midiin", MIDIIN_PORT)
-SLOT_INTERFACE_END
+void midiin_slot(device_slot_interface &device)
+{
+ device.option_add("midiin", MIDIIN_PORT);
+}
#include "bus/midi/midioutport.h"
-SLOT_INTERFACE_START(midiout_slot)
- SLOT_INTERFACE("midiout", MIDIOUT_PORT)
-SLOT_INTERFACE_END
+void midiout_slot(device_slot_interface &device)
+{
+ device.option_add("midiout", MIDIOUT_PORT);
+}
diff --git a/src/devices/bus/midi/midi.h b/src/devices/bus/midi/midi.h
index 52c889efbd7..114c6bf948b 100644
--- a/src/devices/bus/midi/midi.h
+++ b/src/devices/bus/midi/midi.h
@@ -61,7 +61,7 @@ protected:
DECLARE_DEVICE_TYPE(MIDI_PORT, midi_port_device)
-SLOT_INTERFACE_EXTERN(midiin_slot);
-SLOT_INTERFACE_EXTERN(midiout_slot);
+void midiin_slot(device_slot_interface &device);
+void midiout_slot(device_slot_interface &device);
#endif // MAME_BUS_MIDI_MIDI_H
diff --git a/src/devices/bus/msx_cart/cartridge.cpp b/src/devices/bus/msx_cart/cartridge.cpp
index 9f1e27c44c8..9c722e74872 100644
--- a/src/devices/bus/msx_cart/cartridge.cpp
+++ b/src/devices/bus/msx_cart/cartridge.cpp
@@ -27,46 +27,47 @@
#include "yamaha.h"
-SLOT_INTERFACE_START(msx_cart)
- SLOT_INTERFACE_INTERNAL("nomapper", MSX_CART_NOMAPPER)
- SLOT_INTERFACE_INTERNAL("msxdos2", MSX_CART_MSXDOS2)
- SLOT_INTERFACE_INTERNAL("konami_scc", MSX_CART_KONAMI_SCC)
- SLOT_INTERFACE_INTERNAL("konami", MSX_CART_KONAMI)
- SLOT_INTERFACE_INTERNAL("ascii8", MSX_CART_ASCII8)
- SLOT_INTERFACE_INTERNAL("ascii16", MSX_CART_ASCII16)
- SLOT_INTERFACE_INTERNAL("gamemaster2", MSX_CART_GAMEMASTER2)
- SLOT_INTERFACE_INTERNAL("ascii8_sram", MSX_CART_ASCII8_SRAM)
- SLOT_INTERFACE_INTERNAL("ascii16_sram", MSX_CART_ASCII16_SRAM)
- SLOT_INTERFACE_INTERNAL("rtype", MSX_CART_RTYPE)
- SLOT_INTERFACE_INTERNAL("majutsushi", MSX_CART_MAJUTSUSHI)
- SLOT_INTERFACE_INTERNAL("fmpac", MSX_CART_FMPAC)
- SLOT_INTERFACE_INTERNAL("fs_sr022", MSX_CART_FS_SR022)
- SLOT_INTERFACE_INTERNAL("superloderunner", MSX_CART_SUPERLODERUNNER)
- SLOT_INTERFACE_INTERNAL("synthesizer", MSX_CART_SYNTHESIZER)
- SLOT_INTERFACE_INTERNAL("cross_blaim", MSX_CART_CROSSBLAIM)
- SLOT_INTERFACE_INTERNAL("korean_80in1", MSX_CART_KOREAN_80IN1)
- SLOT_INTERFACE_INTERNAL("korean_90in1", MSX_CART_KOREAN_90IN1)
- SLOT_INTERFACE_INTERNAL("korean_126in1", MSX_CART_KOREAN_126IN1)
- SLOT_INTERFACE_INTERNAL("msxwrite", MSX_CART_MSXWRITE)
- SLOT_INTERFACE_INTERNAL("sound_snatcher", MSX_CART_SOUND_SNATCHER)
- SLOT_INTERFACE_INTERNAL("sound_sdsnatch", MSX_CART_SOUND_SDSNATCHER)
- SLOT_INTERFACE_INTERNAL("msxaud_hxmu900", MSX_CART_MSX_AUDIO_HXMU900)
- SLOT_INTERFACE_INTERNAL("msxaud_fsca1", MSX_CART_MSX_AUDIO_FSCA1)
- SLOT_INTERFACE_INTERNAL("msxaud_nms1205", MSX_CART_MSX_AUDIO_NMS1205)
- SLOT_INTERFACE_INTERNAL("super_swangi", MSX_CART_SUPER_SWANGI)
- SLOT_INTERFACE_INTERNAL("hfox", MSX_CART_HFOX)
- SLOT_INTERFACE_INTERNAL("keyboard_master", MSX_CART_KEYBOARD_MASTER)
- SLOT_INTERFACE_INTERNAL("holy_quran", MSX_CART_HOLY_QURAN)
- SLOT_INTERFACE_INTERNAL("dooly", MSX_CART_DOOLY)
- SLOT_INTERFACE_INTERNAL("halnote", MSX_CART_HALNOTE)
- SLOT_INTERFACE_INTERNAL("arc", MSX_CART_ARC)
- SLOT_INTERFACE_INTERNAL("disk_vy0010", MSX_CART_VY0010)
- SLOT_INTERFACE_INTERNAL("disk_fsfd1", MSX_CART_FSFD1)
- SLOT_INTERFACE_INTERNAL("disk_fsfd1a", MSX_CART_FSFD1A)
- SLOT_INTERFACE_INTERNAL("disk_fscf351", MSX_CART_FSCF351)
- SLOT_INTERFACE("bm_012", MSX_CART_BM_012)
- SLOT_INTERFACE("moonsound", MSX_CART_MOONSOUND)
-SLOT_INTERFACE_END
+void msx_cart(device_slot_interface &device)
+{
+ device.option_add_internal("nomapper", MSX_CART_NOMAPPER);
+ device.option_add_internal("msxdos2", MSX_CART_MSXDOS2);
+ device.option_add_internal("konami_scc", MSX_CART_KONAMI_SCC);
+ device.option_add_internal("konami", MSX_CART_KONAMI);
+ device.option_add_internal("ascii8", MSX_CART_ASCII8);
+ device.option_add_internal("ascii16", MSX_CART_ASCII16);
+ device.option_add_internal("gamemaster2", MSX_CART_GAMEMASTER2);
+ device.option_add_internal("ascii8_sram", MSX_CART_ASCII8_SRAM);
+ device.option_add_internal("ascii16_sram", MSX_CART_ASCII16_SRAM);
+ device.option_add_internal("rtype", MSX_CART_RTYPE);
+ device.option_add_internal("majutsushi", MSX_CART_MAJUTSUSHI);
+ device.option_add_internal("fmpac", MSX_CART_FMPAC);
+ device.option_add_internal("fs_sr022", MSX_CART_FS_SR022);
+ device.option_add_internal("superloderunner", MSX_CART_SUPERLODERUNNER);
+ device.option_add_internal("synthesizer", MSX_CART_SYNTHESIZER);
+ device.option_add_internal("cross_blaim", MSX_CART_CROSSBLAIM);
+ device.option_add_internal("korean_80in1", MSX_CART_KOREAN_80IN1);
+ device.option_add_internal("korean_90in1", MSX_CART_KOREAN_90IN1);
+ device.option_add_internal("korean_126in1", MSX_CART_KOREAN_126IN1);
+ device.option_add_internal("msxwrite", MSX_CART_MSXWRITE);
+ device.option_add_internal("sound_snatcher", MSX_CART_SOUND_SNATCHER);
+ device.option_add_internal("sound_sdsnatch", MSX_CART_SOUND_SDSNATCHER);
+ device.option_add_internal("msxaud_hxmu900", MSX_CART_MSX_AUDIO_HXMU900);
+ device.option_add_internal("msxaud_fsca1", MSX_CART_MSX_AUDIO_FSCA1);
+ device.option_add_internal("msxaud_nms1205", MSX_CART_MSX_AUDIO_NMS1205);
+ device.option_add_internal("super_swangi", MSX_CART_SUPER_SWANGI);
+ device.option_add_internal("hfox", MSX_CART_HFOX);
+ device.option_add_internal("keyboard_master", MSX_CART_KEYBOARD_MASTER);
+ device.option_add_internal("holy_quran", MSX_CART_HOLY_QURAN);
+ device.option_add_internal("dooly", MSX_CART_DOOLY);
+ device.option_add_internal("halnote", MSX_CART_HALNOTE);
+ device.option_add_internal("arc", MSX_CART_ARC);
+ device.option_add_internal("disk_vy0010", MSX_CART_VY0010);
+ device.option_add_internal("disk_fsfd1", MSX_CART_FSFD1);
+ device.option_add_internal("disk_fsfd1a", MSX_CART_FSFD1A);
+ device.option_add_internal("disk_fscf351", MSX_CART_FSCF351);
+ device.option_add("bm_012", MSX_CART_BM_012);
+ device.option_add("moonsound", MSX_CART_MOONSOUND);
+}
msx_cart_interface::msx_cart_interface(const machine_config &mconfig, device_t &device)
@@ -103,7 +104,8 @@ void msx_cart_interface::sram_alloc(uint32_t size)
// Several yamaha machines had 60 pin expansion slots. The pinouts of these slots was
// exactly the same as the regular 50 pin cartridge slots. The lowest 10 pins are simply
// not connected.
-SLOT_INTERFACE_START(msx_yamaha_60pin)
- SLOT_INTERFACE("sfg01", MSX_CART_SFG01)
- SLOT_INTERFACE("sfg05", MSX_CART_SFG05)
-SLOT_INTERFACE_END
+void msx_yamaha_60pin(device_slot_interface &device)
+{
+ device.option_add("sfg01", MSX_CART_SFG01);
+ device.option_add("sfg05", MSX_CART_SFG05);
+}
diff --git a/src/devices/bus/msx_cart/cartridge.h b/src/devices/bus/msx_cart/cartridge.h
index c80f2949732..381ec09e566 100644
--- a/src/devices/bus/msx_cart/cartridge.h
+++ b/src/devices/bus/msx_cart/cartridge.h
@@ -6,8 +6,8 @@
#pragma once
-SLOT_INTERFACE_EXTERN(msx_cart);
-SLOT_INTERFACE_EXTERN(msx_yamaha_60pin); // 60 pin expansion slots as found in yamaha machines
+void msx_cart(device_slot_interface &device);
+void msx_yamaha_60pin(device_slot_interface &device); // 60 pin expansion slots as found in yamaha machines
class msx_cart_interface : public device_slot_card_interface
diff --git a/src/devices/bus/msx_cart/disk.cpp b/src/devices/bus/msx_cart/disk.cpp
index 30ff4361e7c..24dca42fd93 100644
--- a/src/devices/bus/msx_cart/disk.cpp
+++ b/src/devices/bus/msx_cart/disk.cpp
@@ -116,10 +116,11 @@ FLOPPY_FORMATS_MEMBER( msx_cart_disk_device::floppy_formats )
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( msx_floppies )
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
- SLOT_INTERFACE( "35ssdd", FLOPPY_35_SSDD )
-SLOT_INTERFACE_END
+static void msx_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD);
+ device.option_add("35ssdd", FLOPPY_35_SSDD);
+}
msx_cart_disk_device::msx_cart_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
diff --git a/src/devices/bus/msx_cart/konami.cpp b/src/devices/bus/msx_cart/konami.cpp
index 7bdde846cf8..05449ab7d42 100644
--- a/src/devices/bus/msx_cart/konami.cpp
+++ b/src/devices/bus/msx_cart/konami.cpp
@@ -477,7 +477,7 @@ MACHINE_CONFIG_START(msx_cart_synthesizer_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
diff --git a/src/devices/bus/msx_cart/majutsushi.cpp b/src/devices/bus/msx_cart/majutsushi.cpp
index 77baf81636a..e6d601473f2 100644
--- a/src/devices/bus/msx_cart/majutsushi.cpp
+++ b/src/devices/bus/msx_cart/majutsushi.cpp
@@ -31,7 +31,7 @@ MACHINE_CONFIG_START(msx_cart_majutsushi_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.05) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
diff --git a/src/devices/bus/msx_cart/msx_audio_kb.cpp b/src/devices/bus/msx_cart/msx_audio_kb.cpp
index 2bfa98758e9..9bbae0aab93 100644
--- a/src/devices/bus/msx_cart/msx_audio_kb.cpp
+++ b/src/devices/bus/msx_cart/msx_audio_kb.cpp
@@ -308,7 +308,8 @@ DEFINE_DEVICE_TYPE(MSX_AUDIO_KB_HXMU901, msx_hxmu901_device, "hxmu901", "Toshiba
DEFINE_DEVICE_TYPE(MSX_AUDIO_KB_NMS1160, msx_nms1160_device, "nms1160", "Philips NMS-1160")
-SLOT_INTERFACE_START( msx_audio_keyboards )
- SLOT_INTERFACE("hxmu901", MSX_AUDIO_KB_HXMU901)
- SLOT_INTERFACE("nms1160", MSX_AUDIO_KB_NMS1160)
-SLOT_INTERFACE_END
+void msx_audio_keyboards(device_slot_interface &device)
+{
+ device.option_add("hxmu901", MSX_AUDIO_KB_HXMU901);
+ device.option_add("nms1160", MSX_AUDIO_KB_NMS1160);
+}
diff --git a/src/devices/bus/msx_cart/msx_audio_kb.h b/src/devices/bus/msx_cart/msx_audio_kb.h
index 139d78f486b..0746a803b40 100644
--- a/src/devices/bus/msx_cart/msx_audio_kb.h
+++ b/src/devices/bus/msx_cart/msx_audio_kb.h
@@ -46,7 +46,7 @@ protected:
};
-SLOT_INTERFACE_EXTERN( msx_audio_keyboards );
+void msx_audio_keyboards(device_slot_interface &device);
#endif // MAME_BUS_MSX_CART_MSX_AUDIO_KB_H
diff --git a/src/devices/bus/nasbus/cards.cpp b/src/devices/bus/nasbus/cards.cpp
index db6606dad50..5c48a13fb22 100644
--- a/src/devices/bus/nasbus/cards.cpp
+++ b/src/devices/bus/nasbus/cards.cpp
@@ -13,7 +13,8 @@
#include "floppy.h"
-SLOT_INTERFACE_START( nasbus_slot_cards )
- SLOT_INTERFACE("avc", NASCOM_AVC)
- SLOT_INTERFACE("floppy", NASCOM_FDC)
-SLOT_INTERFACE_END
+void nasbus_slot_cards(device_slot_interface &device)
+{
+ device.option_add("avc", NASCOM_AVC);
+ device.option_add("floppy", NASCOM_FDC);
+}
diff --git a/src/devices/bus/nasbus/cards.h b/src/devices/bus/nasbus/cards.h
index 89179c4a16f..747fa8ff984 100644
--- a/src/devices/bus/nasbus/cards.h
+++ b/src/devices/bus/nasbus/cards.h
@@ -12,6 +12,6 @@
#pragma once
-SLOT_INTERFACE_EXTERN( nasbus_slot_cards );
+void nasbus_slot_cards(device_slot_interface &device);
#endif // MAME_BUS_NASBUS_CARDS_H
diff --git a/src/devices/bus/nasbus/floppy.cpp b/src/devices/bus/nasbus/floppy.cpp
index ffa1be5fce8..55ad5c0d128 100644
--- a/src/devices/bus/nasbus/floppy.cpp
+++ b/src/devices/bus/nasbus/floppy.cpp
@@ -28,10 +28,11 @@ FLOPPY_FORMATS_MEMBER( nascom_fdc_device::floppy_formats )
FLOPPY_NASCOM_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( nascom_floppies )
- SLOT_INTERFACE("55e", TEAC_FD_55E)
- SLOT_INTERFACE("55f", TEAC_FD_55F)
-SLOT_INTERFACE_END
+static void nascom_floppies(device_slot_interface &device)
+{
+ device.option_add("55e", TEAC_FD_55E);
+ device.option_add("55f", TEAC_FD_55F);
+}
//-------------------------------------------------
// device_add_mconfig - add device configuration
diff --git a/src/devices/bus/neogeo/carts.cpp b/src/devices/bus/neogeo/carts.cpp
index ad732e966b7..356ddf60340 100644
--- a/src/devices/bus/neogeo/carts.cpp
+++ b/src/devices/bus/neogeo/carts.cpp
@@ -24,91 +24,92 @@
#include "bus/neogeo/sbp.h"
-SLOT_INTERFACE_START(neogeo_cart)
- SLOT_INTERFACE_INTERNAL("rom", NEOGEO_ROM) // Standard cart with banking
+void neogeo_cart(device_slot_interface &device)
+{
+ device.option_add_internal("rom", NEOGEO_ROM); // Standard cart with banking
- SLOT_INTERFACE_INTERNAL("rom_vliner", NEOGEO_VLINER_CART) // Standard cart + RAM
- SLOT_INTERFACE_INTERNAL("rom_fatfur2", NEOGEO_FATFURY2_CART) // Custom Fatal Fury 2 protection
- SLOT_INTERFACE_INTERNAL("rom_kof98", NEOGEO_KOF98_CART) // Custom King of Fighters 98 protection
- SLOT_INTERFACE_INTERNAL("rom_mslugx", NEOGEO_MSLUGX_CART) // Custom Metal Slug X protection
+ device.option_add_internal("rom_vliner", NEOGEO_VLINER_CART); // Standard cart + RAM
+ device.option_add_internal("rom_fatfur2", NEOGEO_FATFURY2_CART); // Custom Fatal Fury 2 protection
+ device.option_add_internal("rom_kof98", NEOGEO_KOF98_CART); // Custom King of Fighters 98 protection
+ device.option_add_internal("rom_mslugx", NEOGEO_MSLUGX_CART); // Custom Metal Slug X protection
// only CMC42 for gfx
- SLOT_INTERFACE_INTERNAL("cmc42_zupapa", NEOGEO_CMC_ZUPAPA_CART)
- SLOT_INTERFACE_INTERNAL("cmc42_mslug3h", NEOGEO_CMC_MSLUG3H_CART)
- SLOT_INTERFACE_INTERNAL("cmc42_ganryu", NEOGEO_CMC_GANRYU_CART)
- SLOT_INTERFACE_INTERNAL("cmc42_s1945p", NEOGEO_CMC_S1945P_CART)
- SLOT_INTERFACE_INTERNAL("cmc42_preisle2", NEOGEO_CMC_PREISLE2_CART)
- SLOT_INTERFACE_INTERNAL("cmc42_bangbead", NEOGEO_CMC_BANGBEAD_CART)
- SLOT_INTERFACE_INTERNAL("cmc42_nitd", NEOGEO_CMC_NITD_CART)
- SLOT_INTERFACE_INTERNAL("cmc42_sengoku3", NEOGEO_CMC_SENGOKU3_CART)
- SLOT_INTERFACE_INTERNAL("cmc42_kof99k", NEOGEO_CMC_KOF99K_CART)
+ device.option_add_internal("cmc42_zupapa", NEOGEO_CMC_ZUPAPA_CART);
+ device.option_add_internal("cmc42_mslug3h", NEOGEO_CMC_MSLUG3H_CART);
+ device.option_add_internal("cmc42_ganryu", NEOGEO_CMC_GANRYU_CART);
+ device.option_add_internal("cmc42_s1945p", NEOGEO_CMC_S1945P_CART);
+ device.option_add_internal("cmc42_preisle2", NEOGEO_CMC_PREISLE2_CART);
+ device.option_add_internal("cmc42_bangbead", NEOGEO_CMC_BANGBEAD_CART);
+ device.option_add_internal("cmc42_nitd", NEOGEO_CMC_NITD_CART);
+ device.option_add_internal("cmc42_sengoku3", NEOGEO_CMC_SENGOKU3_CART);
+ device.option_add_internal("cmc42_kof99k", NEOGEO_CMC_KOF99K_CART);
// only CMC50 for gfx + audiocpu
- SLOT_INTERFACE_INTERNAL("cmc50_kof2001", NEOGEO_CMC_KOF2001_CART)
- SLOT_INTERFACE_INTERNAL("cmc50_kof2000n", NEOGEO_CMC_KOF2000N_CART)
- SLOT_INTERFACE_INTERNAL("cmc50_jockeygp", NEOGEO_CMC_JOCKEYGP_CART) // CMC50 + RAM
+ device.option_add_internal("cmc50_kof2001", NEOGEO_CMC_KOF2001_CART);
+ device.option_add_internal("cmc50_kof2000n", NEOGEO_CMC_KOF2000N_CART);
+ device.option_add_internal("cmc50_jockeygp", NEOGEO_CMC_JOCKEYGP_CART); // CMC50 + RAM
// These use SMA for prg & CMC42 for gfx
- SLOT_INTERFACE_INTERNAL("sma_kof99", NEOGEO_SMA_KOF99_CART)
- SLOT_INTERFACE_INTERNAL("sma_garou", NEOGEO_SMA_GAROU_CART)
- SLOT_INTERFACE_INTERNAL("sma_garouh", NEOGEO_SMA_GAROUH_CART)
- SLOT_INTERFACE_INTERNAL("sma_mslug3", NEOGEO_SMA_MSLUG3_CART)
+ device.option_add_internal("sma_kof99", NEOGEO_SMA_KOF99_CART);
+ device.option_add_internal("sma_garou", NEOGEO_SMA_GAROU_CART);
+ device.option_add_internal("sma_garouh", NEOGEO_SMA_GAROUH_CART);
+ device.option_add_internal("sma_mslug3", NEOGEO_SMA_MSLUG3_CART);
// These use SMA for prg & CMC50 for gfx + audiocpu
- SLOT_INTERFACE_INTERNAL("sma_kof2k", NEOGEO_SMA_KOF2000_CART)
+ device.option_add_internal("sma_kof2k", NEOGEO_SMA_KOF2000_CART);
// CMC50 for gfx + audiocpu & NEOPCM2 for YM scramble
- SLOT_INTERFACE_INTERNAL("pcm2_mslug4", NEOGEO_PCM2_MSLUG4_CART)
- SLOT_INTERFACE_INTERNAL("pcm2_rotd", NEOGEO_PCM2_ROTD_CART)
- SLOT_INTERFACE_INTERNAL("pcm2_pnyaa", NEOGEO_PCM2_PNYAA_CART)
- SLOT_INTERFACE_INTERNAL("pcm2_ms4p", NEOGEO_PCM2_MS4PLUS_CART) // regular encryption but external S1 rom = no audiocpu encryption from CMC
+ device.option_add_internal("pcm2_mslug4", NEOGEO_PCM2_MSLUG4_CART);
+ device.option_add_internal("pcm2_rotd", NEOGEO_PCM2_ROTD_CART);
+ device.option_add_internal("pcm2_pnyaa", NEOGEO_PCM2_PNYAA_CART);
+ device.option_add_internal("pcm2_ms4p", NEOGEO_PCM2_MS4PLUS_CART); // regular encryption but external S1 rom = no audiocpu encryption from CMC
// CMC50 for gfx + audiocpu & NEOPCM2 for YM scramble & additonal prg scramble
- SLOT_INTERFACE_INTERNAL("k2k2_kof2k2", NEOGEO_K2K2_KOF2002_CART)
- SLOT_INTERFACE_INTERNAL("k2k2_matrim", NEOGEO_K2K2_MATRIM_CART)
- SLOT_INTERFACE_INTERNAL("k2k2_samsh5", NEOGEO_K2K2_SAMSHO5_CART)
- SLOT_INTERFACE_INTERNAL("k2k2_sams5s", NEOGEO_K2K2_SAMSHO5SP_CART)
- SLOT_INTERFACE_INTERNAL("k2k2_kf2k2p", NEOGEO_K2K2_KF2K2PLS_CART) // regular encryption but external S1 rom = no audiocpu encryption from CMC
+ device.option_add_internal("k2k2_kof2k2", NEOGEO_K2K2_KOF2002_CART);
+ device.option_add_internal("k2k2_matrim", NEOGEO_K2K2_MATRIM_CART);
+ device.option_add_internal("k2k2_samsh5", NEOGEO_K2K2_SAMSHO5_CART);
+ device.option_add_internal("k2k2_sams5s", NEOGEO_K2K2_SAMSHO5SP_CART);
+ device.option_add_internal("k2k2_kf2k2p", NEOGEO_K2K2_KF2K2PLS_CART); // regular encryption but external S1 rom = no audiocpu encryption from CMC
// CMC50 for gfx + audiocpu & NEOPCM2 for YM scramble & PVC protection/encryption
- SLOT_INTERFACE_INTERNAL("pvc_mslug5", NEOGEO_PVC_MSLUG5_CART)
- SLOT_INTERFACE_INTERNAL("pvc_svc", NEOGEO_PVC_SVC_CART)
- SLOT_INTERFACE_INTERNAL("pvc_kf2k3", NEOGEO_PVC_KOF2003_CART)
- SLOT_INTERFACE_INTERNAL("pvc_kf2k3h", NEOGEO_PVC_KOF2003H_CART)
+ device.option_add_internal("pvc_mslug5", NEOGEO_PVC_MSLUG5_CART);
+ device.option_add_internal("pvc_svc", NEOGEO_PVC_SVC_CART);
+ device.option_add_internal("pvc_kf2k3", NEOGEO_PVC_KOF2003_CART);
+ device.option_add_internal("pvc_kf2k3h", NEOGEO_PVC_KOF2003H_CART);
// Bootleg logic for CTHD2K3 and clones
- SLOT_INTERFACE_INTERNAL("boot_cthd2k3", NEOGEO_CTHD2K3_CART)
- SLOT_INTERFACE_INTERNAL("boot_ct2k3sp", NEOGEO_CT2K3SP_CART)
- SLOT_INTERFACE_INTERNAL("boot_ct2k3sa", NEOGEO_CT2K3SA_CART)
- SLOT_INTERFACE_INTERNAL("boot_matrimbl", NEOGEO_MATRIMBL_CART) // this also uses a CMC for SFIX & additional prg scramble from kof2002
+ device.option_add_internal("boot_cthd2k3", NEOGEO_CTHD2K3_CART);
+ device.option_add_internal("boot_ct2k3sp", NEOGEO_CT2K3SP_CART);
+ device.option_add_internal("boot_ct2k3sa", NEOGEO_CT2K3SA_CART);
+ device.option_add_internal("boot_matrimbl", NEOGEO_MATRIMBL_CART); // this also uses a CMC for SFIX & additional prg scramble from kof2002
// Bootleg logic for SVC clones
- SLOT_INTERFACE_INTERNAL("boot_svcboot", NEOGEO_SVCBOOT_CART) // this also uses a PVC protection/encryption
- SLOT_INTERFACE_INTERNAL("boot_svcplus", NEOGEO_SVCPLUS_CART)
- SLOT_INTERFACE_INTERNAL("boot_svcplusa", NEOGEO_SVCPLUSA_CART)
- SLOT_INTERFACE_INTERNAL("boot_svcsplus", NEOGEO_SVCSPLUS_CART) // this also uses a PVC protection/encryption
+ device.option_add_internal("boot_svcboot", NEOGEO_SVCBOOT_CART); // this also uses a PVC protection/encryption
+ device.option_add_internal("boot_svcplus", NEOGEO_SVCPLUS_CART);
+ device.option_add_internal("boot_svcplusa", NEOGEO_SVCPLUSA_CART);
+ device.option_add_internal("boot_svcsplus", NEOGEO_SVCSPLUS_CART); // this also uses a PVC protection/encryption
// Bootleg logic for KOF2002 clones
- SLOT_INTERFACE_INTERNAL("boot_kf2k2b", NEOGEO_KOF2002B_CART)
- SLOT_INTERFACE_INTERNAL("boot_kf2k2mp", NEOGEO_KF2K2MP_CART)
- SLOT_INTERFACE_INTERNAL("boot_kf2k2mp2", NEOGEO_KF2K2MP2_CART)
+ device.option_add_internal("boot_kf2k2b", NEOGEO_KOF2002B_CART);
+ device.option_add_internal("boot_kf2k2mp", NEOGEO_KF2K2MP_CART);
+ device.option_add_internal("boot_kf2k2mp2", NEOGEO_KF2K2MP2_CART);
// Bootleg logic for KOF2003 clones
- SLOT_INTERFACE_INTERNAL("boot_kf2k3bl", NEOGEO_KF2K3BL_CART)
- SLOT_INTERFACE_INTERNAL("boot_kf2k3pl", NEOGEO_KF2K3PL_CART)
- SLOT_INTERFACE_INTERNAL("boot_kf2k3upl", NEOGEO_KF2K3UPL_CART)
+ device.option_add_internal("boot_kf2k3bl", NEOGEO_KF2K3BL_CART);
+ device.option_add_internal("boot_kf2k3pl", NEOGEO_KF2K3PL_CART);
+ device.option_add_internal("boot_kf2k3upl", NEOGEO_KF2K3UPL_CART);
// Misc carts with bootleg logic
- SLOT_INTERFACE_INTERNAL("boot_garoubl", NEOGEO_GAROUBL_CART)
- SLOT_INTERFACE_INTERNAL("boot_kof97oro", NEOGEO_KOF97ORO_CART)
- SLOT_INTERFACE_INTERNAL("boot_kf10thep", NEOGEO_KF10THEP_CART)
- SLOT_INTERFACE_INTERNAL("boot_kf2k5uni", NEOGEO_KF2K5UNI_CART)
- SLOT_INTERFACE_INTERNAL("boot_kf2k4se", NEOGEO_KF2K4SE_CART)
- SLOT_INTERFACE_INTERNAL("boot_lans2004", NEOGEO_LANS2004_CART)
- SLOT_INTERFACE_INTERNAL("boot_samsho5b", NEOGEO_SAMSHO5B_CART)
- SLOT_INTERFACE_INTERNAL("boot_mslug3b6", NEOGEO_MSLUG3B6_CART) // this also uses a CMC42 for gfx
- SLOT_INTERFACE_INTERNAL("boot_ms5plus", NEOGEO_MS5PLUS_CART) // this also uses a CMC50 for gfx + audiocpu & NEOPCM2 for YM scramble
- SLOT_INTERFACE_INTERNAL("boot_kog", NEOGEO_KOG_CART)
-
- SLOT_INTERFACE_INTERNAL("boot_kf10th", NEOGEO_KOF10TH_CART)
- SLOT_INTERFACE_INTERNAL("boot_sbp", NEOGEO_SBP_CART)
-SLOT_INTERFACE_END
+ device.option_add_internal("boot_garoubl", NEOGEO_GAROUBL_CART);
+ device.option_add_internal("boot_kof97oro", NEOGEO_KOF97ORO_CART);
+ device.option_add_internal("boot_kf10thep", NEOGEO_KF10THEP_CART);
+ device.option_add_internal("boot_kf2k5uni", NEOGEO_KF2K5UNI_CART);
+ device.option_add_internal("boot_kf2k4se", NEOGEO_KF2K4SE_CART);
+ device.option_add_internal("boot_lans2004", NEOGEO_LANS2004_CART);
+ device.option_add_internal("boot_samsho5b", NEOGEO_SAMSHO5B_CART);
+ device.option_add_internal("boot_mslug3b6", NEOGEO_MSLUG3B6_CART); // this also uses a CMC42 for gfx
+ device.option_add_internal("boot_ms5plus", NEOGEO_MS5PLUS_CART); // this also uses a CMC50 for gfx + audiocpu & NEOPCM2 for YM scramble
+ device.option_add_internal("boot_kog", NEOGEO_KOG_CART);
+
+ device.option_add_internal("boot_kf10th", NEOGEO_KOF10TH_CART);
+ device.option_add_internal("boot_sbp", NEOGEO_SBP_CART);
+}
diff --git a/src/devices/bus/neogeo/carts.h b/src/devices/bus/neogeo/carts.h
index f66b881a9b7..fd5b3704081 100644
--- a/src/devices/bus/neogeo/carts.h
+++ b/src/devices/bus/neogeo/carts.h
@@ -11,6 +11,6 @@
// supported devices
-SLOT_INTERFACE_EXTERN(neogeo_cart);
+void neogeo_cart(device_slot_interface &device);
#endif // MAME_BUS_NEOGEO_CARTS_H
diff --git a/src/devices/bus/neogeo_ctrl/ctrl.cpp b/src/devices/bus/neogeo_ctrl/ctrl.cpp
index 2a936c1fa53..023d28adaf8 100644
--- a/src/devices/bus/neogeo_ctrl/ctrl.cpp
+++ b/src/devices/bus/neogeo_ctrl/ctrl.cpp
@@ -189,23 +189,27 @@ void neogeo_ctrl_edge_port_device::write_ctrlsel(uint8_t data)
// SLOT_INTERFACE( neogeo_control_port_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( neogeo_controls )
- SLOT_INTERFACE("joy", NEOGEO_JOY)
- SLOT_INTERFACE("mahjong", NEOGEO_MJCTRL)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( neogeo_arc_edge )
- SLOT_INTERFACE("joy", NEOGEO_JOY_AC)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( neogeo_arc_edge_fixed )
- SLOT_INTERFACE("joy", NEOGEO_JOY_AC)
- SLOT_INTERFACE("dial", NEOGEO_DIAL)
- SLOT_INTERFACE("irrmaze", NEOGEO_IRRMAZE)
- SLOT_INTERFACE("kiz4p", NEOGEO_KIZ4P)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( neogeo_arc_pin15 )
- SLOT_INTERFACE("mahjong", NEOGEO_MJCTRL_AC)
- SLOT_INTERFACE("joy", NEOGEO_JOY)
-SLOT_INTERFACE_END
+void neogeo_controls(device_slot_interface &device)
+{
+ device.option_add("joy", NEOGEO_JOY);
+ device.option_add("mahjong", NEOGEO_MJCTRL);
+}
+
+void neogeo_arc_edge(device_slot_interface &device)
+{
+ device.option_add("joy", NEOGEO_JOY_AC);
+}
+
+void neogeo_arc_edge_fixed(device_slot_interface &device)
+{
+ device.option_add("joy", NEOGEO_JOY_AC);
+ device.option_add("dial", NEOGEO_DIAL);
+ device.option_add("irrmaze", NEOGEO_IRRMAZE);
+ device.option_add("kiz4p", NEOGEO_KIZ4P);
+}
+
+void neogeo_arc_pin15(device_slot_interface &device)
+{
+ device.option_add("mahjong", NEOGEO_MJCTRL_AC);
+ device.option_add("joy", NEOGEO_JOY);
+}
diff --git a/src/devices/bus/neogeo_ctrl/ctrl.h b/src/devices/bus/neogeo_ctrl/ctrl.h
index ea133f30b79..aee534d61ad 100644
--- a/src/devices/bus/neogeo_ctrl/ctrl.h
+++ b/src/devices/bus/neogeo_ctrl/ctrl.h
@@ -118,10 +118,10 @@ DECLARE_DEVICE_TYPE(NEOGEO_CTRL_EDGE_CONNECTOR, neogeo_ctrl_edge_port_device)
-SLOT_INTERFACE_EXTERN( neogeo_controls );
-SLOT_INTERFACE_EXTERN( neogeo_arc_edge );
-SLOT_INTERFACE_EXTERN( neogeo_arc_edge_fixed );
-SLOT_INTERFACE_EXTERN( neogeo_arc_pin15 );
+void neogeo_controls(device_slot_interface &device);
+void neogeo_arc_edge(device_slot_interface &device);
+void neogeo_arc_edge_fixed(device_slot_interface &device);
+void neogeo_arc_pin15(device_slot_interface &device);
#endif // MAME_BUS_NEOGEO_CTRL_CTRL_H
diff --git a/src/devices/bus/nes/aladdin.cpp b/src/devices/bus/nes/aladdin.cpp
index 3ebab2fc90b..e9d81555a72 100644
--- a/src/devices/bus/nes/aladdin.cpp
+++ b/src/devices/bus/nes/aladdin.cpp
@@ -318,10 +318,11 @@ WRITE8_MEMBER(nes_aladdin_device::write_h)
// CART SLOT
//-------------------------------------------------
-static SLOT_INTERFACE_START(ade_cart)
- SLOT_INTERFACE_INTERNAL("algn", NES_ALGN_ROM)
- SLOT_INTERFACE_INTERNAL("algq", NES_ALGQ_ROM)
-SLOT_INTERFACE_END
+static void ade_cart(device_slot_interface &device)
+{
+ device.option_add_internal("algn", NES_ALGN_ROM);
+ device.option_add_internal("algq", NES_ALGQ_ROM);
+}
MACHINE_CONFIG_START(nes_aladdin_device::device_add_mconfig)
diff --git a/src/devices/bus/nes/datach.cpp b/src/devices/bus/nes/datach.cpp
index 7cb58980960..34d615c4504 100644
--- a/src/devices/bus/nes/datach.cpp
+++ b/src/devices/bus/nes/datach.cpp
@@ -362,10 +362,11 @@ WRITE8_MEMBER(nes_datach_device::write_h)
// BARCODE READER + CART SLOT + X24C02
//-------------------------------------------------
-static SLOT_INTERFACE_START(datach_cart)
- SLOT_INTERFACE_INTERNAL("datach_rom", NES_DATACH_ROM)
- SLOT_INTERFACE_INTERNAL("datach_ep1", NES_DATACH_24C01)
-SLOT_INTERFACE_END
+static void datach_cart(device_slot_interface &device)
+{
+ device.option_add_internal("datach_rom", NES_DATACH_ROM);
+ device.option_add_internal("datach_ep1", NES_DATACH_24C01);
+}
MACHINE_CONFIG_START(nes_datach_device::device_add_mconfig)
diff --git a/src/devices/bus/nes/karastudio.cpp b/src/devices/bus/nes/karastudio.cpp
index eefd7c5d17d..1b828001078 100644
--- a/src/devices/bus/nes/karastudio.cpp
+++ b/src/devices/bus/nes/karastudio.cpp
@@ -290,9 +290,10 @@ ioport_constructor nes_karaokestudio_device::device_input_ports() const
// CART SLOT
//-------------------------------------------------
-static SLOT_INTERFACE_START(karaoke_studio_cart)
- SLOT_INTERFACE_INTERNAL("ks_exp", NES_KSEXPANSION_ROM)
-SLOT_INTERFACE_END
+static void karaoke_studio_cart(device_slot_interface &device)
+{
+ device.option_add_internal("ks_exp", NES_KSEXPANSION_ROM);
+}
MACHINE_CONFIG_START(nes_karaokestudio_device::device_add_mconfig)
diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp
index a2434621b4c..a4a3950b98d 100644
--- a/src/devices/bus/nes/nes_carts.cpp
+++ b/src/devices/bus/nes/nes_carts.cpp
@@ -64,370 +64,372 @@
#include "mmc3_clones.h"
-SLOT_INTERFACE_START(nes_cart)
+void nes_cart(device_slot_interface &device)
+{
// HROM, NROM, RROM, SROM & STROM
- SLOT_INTERFACE_INTERNAL("nrom", NES_NROM)
+ device.option_add_internal("nrom", NES_NROM);
// Nintendo Family BASIC pcb (NROM + 2K or 4K WRAM)
- SLOT_INTERFACE_INTERNAL("hvc_basic", NES_FCBASIC)
+ device.option_add_internal("hvc_basic", NES_FCBASIC);
// Extended NROM-368 board (NROM with 46K PRG)
- SLOT_INTERFACE_INTERNAL("nrom368", NES_NROM368)
+ device.option_add_internal("nrom368", NES_NROM368);
// Game Genie
- SLOT_INTERFACE_INTERNAL("nrom_gg", NES_GGENIE)
+ device.option_add_internal("nrom_gg", NES_GGENIE);
// UNROM/UOROM
- SLOT_INTERFACE_INTERNAL("uxrom", NES_UXROM)
- SLOT_INTERFACE_INTERNAL("unrom_cc", NES_UXROM_CC)
+ device.option_add_internal("uxrom", NES_UXROM);
+ device.option_add_internal("unrom_cc", NES_UXROM_CC);
// CNROM
- SLOT_INTERFACE_INTERNAL("cnrom", NES_CNROM)
+ device.option_add_internal("cnrom", NES_CNROM);
// Bandai PT-554 (CNROM boards + special audio chip, used by Aerobics Studio)
- SLOT_INTERFACE_INTERNAL("bandai_pt554", NES_BANDAI_PT554)
+ device.option_add_internal("bandai_pt554", NES_BANDAI_PT554);
// CPROM
- SLOT_INTERFACE_INTERNAL("cprom", NES_CPROM)
+ device.option_add_internal("cprom", NES_CPROM);
// AMROM, ANROM, AOROM
- SLOT_INTERFACE_INTERNAL("axrom", NES_AXROM)
+ device.option_add_internal("axrom", NES_AXROM);
// PxROM
- SLOT_INTERFACE_INTERNAL("pxrom", NES_PXROM)
+ device.option_add_internal("pxrom", NES_PXROM);
// FxROM
- SLOT_INTERFACE_INTERNAL("fxrom", NES_FXROM)
+ device.option_add_internal("fxrom", NES_FXROM);
// BNROM
- SLOT_INTERFACE_INTERNAL("bnrom", NES_BXROM)
+ device.option_add_internal("bnrom", NES_BXROM);
// GNROM & MHROM
- SLOT_INTERFACE_INTERNAL("gxrom", NES_GXROM)
+ device.option_add_internal("gxrom", NES_GXROM);
// UN1ROM
- SLOT_INTERFACE_INTERNAL("un1rom", NES_UN1ROM)
+ device.option_add_internal("un1rom", NES_UN1ROM);
// SxROM
- SLOT_INTERFACE_INTERNAL("sxrom", NES_SXROM)
- SLOT_INTERFACE_INTERNAL("sorom", NES_SOROM)
- SLOT_INTERFACE_INTERNAL("sxrom_a", NES_SXROM_A) // in MMC1-A PRG RAM is always enabled
- SLOT_INTERFACE_INTERNAL("sorom_a", NES_SOROM_A) // in MMC1-A PRG RAM is always enabled
+ device.option_add_internal("sxrom", NES_SXROM);
+ device.option_add_internal("sorom", NES_SOROM);
+ device.option_add_internal("sxrom_a", NES_SXROM_A); // in MMC1-A PRG RAM is always enabled
+ device.option_add_internal("sorom_a", NES_SOROM_A); // in MMC1-A PRG RAM is always enabled
// TxROM
- SLOT_INTERFACE_INTERNAL("txrom", NES_TXROM)
+ device.option_add_internal("txrom", NES_TXROM);
// HKROM
- SLOT_INTERFACE_INTERNAL("hkrom", NES_HKROM)
+ device.option_add_internal("hkrom", NES_HKROM);
// TQROM
- SLOT_INTERFACE_INTERNAL("tqrom", NES_TQROM)
+ device.option_add_internal("tqrom", NES_TQROM);
// TxSROM
- SLOT_INTERFACE_INTERNAL("txsrom", NES_TXSROM)
+ device.option_add_internal("txsrom", NES_TXSROM);
// ExROM
- SLOT_INTERFACE_INTERNAL("exrom", NES_EXROM)
+ device.option_add_internal("exrom", NES_EXROM);
// RAM expansion + Disk System add-on
- SLOT_INTERFACE_INTERNAL("disksys", NES_DISKSYS)
+ device.option_add_internal("disksys", NES_DISKSYS);
// Nintendo Custom boards
- SLOT_INTERFACE_INTERNAL("pal_zz", NES_ZZ_PCB)
- SLOT_INTERFACE_INTERNAL("nes_qj", NES_QJ_PCB)
- SLOT_INTERFACE_INTERNAL("nes_event", NES_EVENT)
+ device.option_add_internal("pal_zz", NES_ZZ_PCB);
+ device.option_add_internal("nes_qj", NES_QJ_PCB);
+ device.option_add_internal("nes_event", NES_EVENT);
// Discrete Components boards
// IC_74x139x74
- SLOT_INTERFACE_INTERNAL("discrete_74x139", NES_74X139X74)
+ device.option_add_internal("discrete_74x139", NES_74X139X74);
// IC_74x377
- SLOT_INTERFACE_INTERNAL("discrete_74x377", NES_74X377)
+ device.option_add_internal("discrete_74x377", NES_74X377);
// Discrete board IC_74x161x161x32
- SLOT_INTERFACE_INTERNAL("discrete_74x161", NES_74X161X161X32)
+ device.option_add_internal("discrete_74x161", NES_74X161X161X32);
// Discrete board IC_74x161x138
- SLOT_INTERFACE_INTERNAL("bitcorp_dis", NES_74X161X138)
+ device.option_add_internal("bitcorp_dis", NES_74X161X138);
// Bandai boards
- SLOT_INTERFACE_INTERNAL("lz93d50", NES_LZ93D50)
- SLOT_INTERFACE_INTERNAL("lz93d50_ep1", NES_LZ93D50_24C01)
- SLOT_INTERFACE_INTERNAL("lz93d50_ep2", NES_LZ93D50_24C02)
- SLOT_INTERFACE_INTERNAL("fcg", NES_FCG)
- SLOT_INTERFACE_INTERNAL("fjump2", NES_FJUMP2)
- SLOT_INTERFACE_INTERNAL("datach", NES_DATACH)
- SLOT_INTERFACE_INTERNAL("karastudio", NES_KARAOKESTUDIO)
- SLOT_INTERFACE_INTERNAL("oekakids", NES_OEKAKIDS)
+ device.option_add_internal("lz93d50", NES_LZ93D50);
+ device.option_add_internal("lz93d50_ep1", NES_LZ93D50_24C01);
+ device.option_add_internal("lz93d50_ep2", NES_LZ93D50_24C02);
+ device.option_add_internal("fcg", NES_FCG);
+ device.option_add_internal("fjump2", NES_FJUMP2);
+ device.option_add_internal("datach", NES_DATACH);
+ device.option_add_internal("karastudio", NES_KARAOKESTUDIO);
+ device.option_add_internal("oekakids", NES_OEKAKIDS);
// Irem boards
- SLOT_INTERFACE_INTERNAL("g101", NES_G101)
- SLOT_INTERFACE_INTERNAL("lrog017", NES_LROG017)
- SLOT_INTERFACE_INTERNAL("h3001", NES_H3001)
- SLOT_INTERFACE_INTERNAL("holydivr", NES_HOLYDIVR)
- SLOT_INTERFACE_INTERNAL("tam_s1", NES_TAM_S1)
+ device.option_add_internal("g101", NES_G101);
+ device.option_add_internal("lrog017", NES_LROG017);
+ device.option_add_internal("h3001", NES_H3001);
+ device.option_add_internal("holydivr", NES_HOLYDIVR);
+ device.option_add_internal("tam_s1", NES_TAM_S1);
// Jaleco boards
- SLOT_INTERFACE_INTERNAL("jf11", NES_JF11)
- SLOT_INTERFACE_INTERNAL("jf13", NES_JF13)
- SLOT_INTERFACE_INTERNAL("jf16", NES_JF16)
- SLOT_INTERFACE_INTERNAL("jf17", NES_JF17)
- SLOT_INTERFACE_INTERNAL("jf17pcm", NES_JF17_ADPCM)
- SLOT_INTERFACE_INTERNAL("jf19", NES_JF19)
- SLOT_INTERFACE_INTERNAL("jf19pcm", NES_JF19_ADPCM)
- SLOT_INTERFACE_INTERNAL("ss88006", NES_SS88006)
- SLOT_INTERFACE_INTERNAL("jf23", NES_JF23)
- SLOT_INTERFACE_INTERNAL("jf24", NES_JF24)
- SLOT_INTERFACE_INTERNAL("jf29", NES_JF29)
- SLOT_INTERFACE_INTERNAL("jf33", NES_JF33)
+ device.option_add_internal("jf11", NES_JF11);
+ device.option_add_internal("jf13", NES_JF13);
+ device.option_add_internal("jf16", NES_JF16);
+ device.option_add_internal("jf17", NES_JF17);
+ device.option_add_internal("jf17pcm", NES_JF17_ADPCM);
+ device.option_add_internal("jf19", NES_JF19);
+ device.option_add_internal("jf19pcm", NES_JF19_ADPCM);
+ device.option_add_internal("ss88006", NES_SS88006);
+ device.option_add_internal("jf23", NES_JF23);
+ device.option_add_internal("jf24", NES_JF24);
+ device.option_add_internal("jf29", NES_JF29);
+ device.option_add_internal("jf33", NES_JF33);
// Konami boards
- SLOT_INTERFACE_INTERNAL("vrc1", NES_VRC1)
- SLOT_INTERFACE_INTERNAL("vrc2", NES_VRC2)
- SLOT_INTERFACE_INTERNAL("vrc3", NES_VRC3)
- SLOT_INTERFACE_INTERNAL("vrc4", NES_VRC4)
- SLOT_INTERFACE_INTERNAL("vrc6", NES_VRC6)
- SLOT_INTERFACE_INTERNAL("vrc7", NES_VRC7)
+ device.option_add_internal("vrc1", NES_VRC1);
+ device.option_add_internal("vrc2", NES_VRC2);
+ device.option_add_internal("vrc3", NES_VRC3);
+ device.option_add_internal("vrc4", NES_VRC4);
+ device.option_add_internal("vrc6", NES_VRC6);
+ device.option_add_internal("vrc7", NES_VRC7);
// Namcot boards
- SLOT_INTERFACE_INTERNAL("namcot_163", NES_NAMCOT163)
- SLOT_INTERFACE_INTERNAL("namcot_175", NES_NAMCOT175)
- SLOT_INTERFACE_INTERNAL("namcot_340", NES_NAMCOT340)
- SLOT_INTERFACE_INTERNAL("namcot_3433", NES_NAMCOT3433) // DxROM is a Nintendo board for US versions of the 3433/3443 games
- SLOT_INTERFACE_INTERNAL("namcot_3425", NES_NAMCOT3425)
- SLOT_INTERFACE_INTERNAL("namcot_3446", NES_NAMCOT3446)
+ device.option_add_internal("namcot_163", NES_NAMCOT163);
+ device.option_add_internal("namcot_175", NES_NAMCOT175);
+ device.option_add_internal("namcot_340", NES_NAMCOT340);
+ device.option_add_internal("namcot_3433", NES_NAMCOT3433); // DxROM is a Nintendo board for US versions of the 3433/3443 games
+ device.option_add_internal("namcot_3425", NES_NAMCOT3425);
+ device.option_add_internal("namcot_3446", NES_NAMCOT3446);
// Sunsoft boards
- SLOT_INTERFACE_INTERNAL("sunsoft1", NES_SUNSOFT_1)
- SLOT_INTERFACE_INTERNAL("sunsoft2", NES_SUNSOFT_2)
- SLOT_INTERFACE_INTERNAL("sunsoft3", NES_SUNSOFT_3)
- SLOT_INTERFACE_INTERNAL("sunsoft4", NES_SUNSOFT_4)
- SLOT_INTERFACE_INTERNAL("sunsoft_dcs", NES_SUNSOFT_DCS)
- SLOT_INTERFACE_INTERNAL("sunsoft_fme7", NES_SUNSOFT_FME7) // JxROM is a Nintendo board for US versions of the Sunsoft FME7 games
- SLOT_INTERFACE_INTERNAL("sunsoft5a", NES_SUNSOFT_5)
- SLOT_INTERFACE_INTERNAL("sunsoft5b", NES_SUNSOFT_5)
+ device.option_add_internal("sunsoft1", NES_SUNSOFT_1);
+ device.option_add_internal("sunsoft2", NES_SUNSOFT_2);
+ device.option_add_internal("sunsoft3", NES_SUNSOFT_3);
+ device.option_add_internal("sunsoft4", NES_SUNSOFT_4);
+ device.option_add_internal("sunsoft_dcs", NES_SUNSOFT_DCS);
+ device.option_add_internal("sunsoft_fme7", NES_SUNSOFT_FME7); // JxROM is a Nintendo board for US versions of the Sunsoft FME7 games
+ device.option_add_internal("sunsoft5a", NES_SUNSOFT_5);
+ device.option_add_internal("sunsoft5b", NES_SUNSOFT_5);
// Taito boards
- SLOT_INTERFACE_INTERNAL("tc0190fmc", NES_TC0190FMC)
- SLOT_INTERFACE_INTERNAL("tc0190fmcp", NES_TC0190FMC_PAL16R4)
- SLOT_INTERFACE_INTERNAL("tc0350fmr", NES_TC0190FMC)
- SLOT_INTERFACE_INTERNAL("x1_005", NES_X1_005) // two variants exist, depending on pin17 & pin31 connections
- SLOT_INTERFACE_INTERNAL("x1_017", NES_X1_017)
+ device.option_add_internal("tc0190fmc", NES_TC0190FMC);
+ device.option_add_internal("tc0190fmcp", NES_TC0190FMC_PAL16R4);
+ device.option_add_internal("tc0350fmr", NES_TC0190FMC);
+ device.option_add_internal("x1_005", NES_X1_005); // two variants exist, depending on pin17 & pin31 connections
+ device.option_add_internal("x1_017", NES_X1_017);
// Misc pirate boards (by AVE, Camerica, C&E, Nanjing, NTDEC, JY Company, Sachen, Tengen, TXC, Waixing, Henggendianzi, etc.)
- SLOT_INTERFACE_INTERNAL("nina001", NES_NINA001)
- SLOT_INTERFACE_INTERNAL("nina006", NES_NINA006)
- SLOT_INTERFACE_INTERNAL("bf9093", NES_BF9093)
- SLOT_INTERFACE_INTERNAL("bf9096", NES_BF9096)
- SLOT_INTERFACE_INTERNAL("goldenfive", NES_GOLDEN5)
- SLOT_INTERFACE_INTERNAL("ade", NES_ALADDIN)
- SLOT_INTERFACE_INTERNAL("cne_decathl", NES_CNE_DECATHL)
- SLOT_INTERFACE_INTERNAL("cne_fsb", NES_CNE_FSB)
- SLOT_INTERFACE_INTERNAL("cne_shlz", NES_CNE_SHLZ)
- SLOT_INTERFACE_INTERNAL("nanjing", NES_NANJING) // mapper 163
- SLOT_INTERFACE_INTERNAL("ntdec_asder", NES_NTDEC_ASDER) // mapper 112
- SLOT_INTERFACE_INTERNAL("ntdec_fh", NES_NTDEC_FH) // mapper 193
- SLOT_INTERFACE_INTERNAL("jyc_a", NES_JY_TYPEA) // mapper 90
- SLOT_INTERFACE_INTERNAL("jyc_b", NES_JY_TYPEB) // mapper 211
- SLOT_INTERFACE_INTERNAL("jyc_c", NES_JY_TYPEC) // mapper 209
- SLOT_INTERFACE_INTERNAL("sa009", NES_SACHEN_SA009)
- SLOT_INTERFACE_INTERNAL("sa0036", NES_SACHEN_SA0036)
- SLOT_INTERFACE_INTERNAL("sa0037", NES_SACHEN_SA0037)
- SLOT_INTERFACE_INTERNAL("sa72007", NES_SACHEN_SA72007)
- SLOT_INTERFACE_INTERNAL("sa72008", NES_SACHEN_SA72008)
- SLOT_INTERFACE_INTERNAL("tca01", NES_SACHEN_TCA01)
- SLOT_INTERFACE_INTERNAL("s8259a", NES_SACHEN_8259A)
- SLOT_INTERFACE_INTERNAL("s8259b", NES_SACHEN_8259B)
- SLOT_INTERFACE_INTERNAL("s8259c", NES_SACHEN_8259C)
- SLOT_INTERFACE_INTERNAL("s8259d", NES_SACHEN_8259D)
- SLOT_INTERFACE_INTERNAL("s74x374", NES_SACHEN_74X374)
- SLOT_INTERFACE_INTERNAL("s74x374a", NES_SACHEN_74X374_ALT) /* FIXME: Made up boards some different handling */
- SLOT_INTERFACE_INTERNAL("tcu01", NES_SACHEN_TCU01)
- SLOT_INTERFACE_INTERNAL("tcu02", NES_SACHEN_TCU02)
- SLOT_INTERFACE_INTERNAL("tengen_800008", NES_TENGEN_800008) /* FIXME: Is this the same as CNROM? */
- SLOT_INTERFACE_INTERNAL("tengen_800032", NES_TENGEN_800032)
- SLOT_INTERFACE_INTERNAL("tengen_800037", NES_TENGEN_800037)
- SLOT_INTERFACE_INTERNAL("txc_22211", NES_TXC_22211)
- SLOT_INTERFACE_INTERNAL("txc_dumarc", NES_TXC_DUMARACING)
- SLOT_INTERFACE_INTERNAL("txc_mjblock", NES_TXC_MJBLOCK)
- SLOT_INTERFACE_INTERNAL("txc_strikew", NES_TXC_STRIKEW)
- SLOT_INTERFACE_INTERNAL("txc_commandos", NES_TXC_COMMANDOS)
- SLOT_INTERFACE_INTERNAL("waixing_a", NES_WAIXING_A)
- SLOT_INTERFACE_INTERNAL("waixing_a1", NES_WAIXING_A1) /* FIXME: Made up boards the different CHRRAM banks (see Ji Jia Zhan Shi) */
- SLOT_INTERFACE_INTERNAL("waixing_b", NES_WAIXING_B)
- SLOT_INTERFACE_INTERNAL("waixing_c", NES_WAIXING_C)
- SLOT_INTERFACE_INTERNAL("waixing_d", NES_WAIXING_D)
- SLOT_INTERFACE_INTERNAL("waixing_e", NES_WAIXING_E)
- SLOT_INTERFACE_INTERNAL("waixing_f", NES_WAIXING_F)
- SLOT_INTERFACE_INTERNAL("waixing_g", NES_WAIXING_G)
- SLOT_INTERFACE_INTERNAL("waixing_h", NES_WAIXING_H)
- SLOT_INTERFACE_INTERNAL("waixing_h1", NES_WAIXING_H1) /* FIXME: Made up boards the different WRAM protect banks (see Shen Mi Jin San Jiao) */
- SLOT_INTERFACE_INTERNAL("waixing_i", NES_WAIXING_I)
- SLOT_INTERFACE_INTERNAL("waixing_j", NES_WAIXING_J)
- SLOT_INTERFACE_INTERNAL("waixing_sgz", NES_WAIXING_SGZ)
- SLOT_INTERFACE_INTERNAL("waixing_sgzlz", NES_WAIXING_SGZLZ)
- SLOT_INTERFACE_INTERNAL("waixing_sec", NES_WAIXING_SEC)
- SLOT_INTERFACE_INTERNAL("waixing_ffv", NES_WAIXING_FFV)
- SLOT_INTERFACE_INTERNAL("waixing_wxzs", NES_WAIXING_WXZS)
- SLOT_INTERFACE_INTERNAL("waixing_wxzs2", NES_WAIXING_WXZS2)
- SLOT_INTERFACE_INTERNAL("waixing_dq8", NES_WAIXING_DQ8)
- SLOT_INTERFACE_INTERNAL("waixing_sh2", NES_WAIXING_SH2)
- SLOT_INTERFACE_INTERNAL("fs304", NES_WAIXING_FS304) // used in Zelda 3 by Waixing
- SLOT_INTERFACE_INTERNAL("cony", NES_CONY)
- SLOT_INTERFACE_INTERNAL("yoko", NES_YOKO)
- SLOT_INTERFACE_INTERNAL("hengg_srich", NES_HENGG_SRICH)
- SLOT_INTERFACE_INTERNAL("hengg_xhzs", NES_HENGG_XHZS)
- SLOT_INTERFACE_INTERNAL("hengg_shjy3", NES_HENGG_SHJY3) // mapper 253
- SLOT_INTERFACE_INTERNAL("hes", NES_HES)
- SLOT_INTERFACE_INTERNAL("hosenkan", NES_HOSENKAN)
- SLOT_INTERFACE_INTERNAL("ks7058", NES_KS7058)
- SLOT_INTERFACE_INTERNAL("ks202", NES_KS202) // mapper 56
- SLOT_INTERFACE_INTERNAL("ks7022", NES_KS7022)// mapper 175
- SLOT_INTERFACE_INTERNAL("ks7017", NES_KS7017)
- SLOT_INTERFACE_INTERNAL("ks7032", NES_KS7032) // mapper 142
- SLOT_INTERFACE_INTERNAL("ks7012", NES_KS7012) // used in Zanac (FDS Conversion)
- SLOT_INTERFACE_INTERNAL("ks7013b", NES_KS7013B) // used in Highway Star (FDS Conversion)
- SLOT_INTERFACE_INTERNAL("ks7031", NES_KS7031) // used in Dracula II (FDS Conversion)
- SLOT_INTERFACE_INTERNAL("ks7016", NES_KS7016) // used in Exciting Basket (FDS Conversion)
- SLOT_INTERFACE_INTERNAL("ks7037", NES_KS7037) // used in Metroid (FDS Conversion)
- SLOT_INTERFACE_INTERNAL("gs2015", NES_GS2015)
- SLOT_INTERFACE_INTERNAL("gs2004", NES_GS2004)
- SLOT_INTERFACE_INTERNAL("gs2013", NES_GS2013)
- SLOT_INTERFACE_INTERNAL("tf9in1", NES_TF9IN1)
- SLOT_INTERFACE_INTERNAL("3dblock", NES_3DBLOCK) // NROM + IRQ?
- SLOT_INTERFACE_INTERNAL("racermate", NES_RACERMATE) // mapper 168
- SLOT_INTERFACE_INTERNAL("agci_50282", NES_AGCI_50282)
- SLOT_INTERFACE_INTERNAL("dreamtech01", NES_DREAMTECH01)
- SLOT_INTERFACE_INTERNAL("fukutake", NES_FUKUTAKE)
- SLOT_INTERFACE_INTERNAL("futuremedia", NES_FUTUREMEDIA)
- SLOT_INTERFACE_INTERNAL("magicseries", NES_MAGSERIES)
- SLOT_INTERFACE_INTERNAL("daou_306", NES_DAOU306)
- SLOT_INTERFACE_INTERNAL("subor0", NES_SUBOR0)
- SLOT_INTERFACE_INTERNAL("subor1", NES_SUBOR1)
- SLOT_INTERFACE_INTERNAL("subor2", NES_SUBOR2)
- SLOT_INTERFACE_INTERNAL("cc21", NES_CC21)
- SLOT_INTERFACE_INTERNAL("xiaozy", NES_XIAOZY)
- SLOT_INTERFACE_INTERNAL("edu2k", NES_EDU2K)
- SLOT_INTERFACE_INTERNAL("t230", NES_T230)
- SLOT_INTERFACE_INTERNAL("mk2", NES_MK2)
- SLOT_INTERFACE_INTERNAL("unl_whero", NES_WHERO) // mapper 27
- SLOT_INTERFACE_INTERNAL("unl_43272", NES_43272) // used in Gaau Hok Gwong Cheung
- SLOT_INTERFACE_INTERNAL("tf1201", NES_TF1201)
- SLOT_INTERFACE_INTERNAL("unl_cfight", NES_CITYFIGHT) // used by City Fighter IV
- SLOT_INTERFACE_INTERNAL("zemina", NES_ZEMINA) // mapper 190 - Magic Kid GooGoo
+ device.option_add_internal("nina001", NES_NINA001);
+ device.option_add_internal("nina006", NES_NINA006);
+ device.option_add_internal("bf9093", NES_BF9093);
+ device.option_add_internal("bf9096", NES_BF9096);
+ device.option_add_internal("goldenfive", NES_GOLDEN5);
+ device.option_add_internal("ade", NES_ALADDIN);
+ device.option_add_internal("cne_decathl", NES_CNE_DECATHL);
+ device.option_add_internal("cne_fsb", NES_CNE_FSB);
+ device.option_add_internal("cne_shlz", NES_CNE_SHLZ);
+ device.option_add_internal("nanjing", NES_NANJING); // mapper 163
+ device.option_add_internal("ntdec_asder", NES_NTDEC_ASDER); // mapper 112
+ device.option_add_internal("ntdec_fh", NES_NTDEC_FH); // mapper 193
+ device.option_add_internal("jyc_a", NES_JY_TYPEA); // mapper 90
+ device.option_add_internal("jyc_b", NES_JY_TYPEB); // mapper 211
+ device.option_add_internal("jyc_c", NES_JY_TYPEC); // mapper 209
+ device.option_add_internal("sa009", NES_SACHEN_SA009);
+ device.option_add_internal("sa0036", NES_SACHEN_SA0036);
+ device.option_add_internal("sa0037", NES_SACHEN_SA0037);
+ device.option_add_internal("sa72007", NES_SACHEN_SA72007);
+ device.option_add_internal("sa72008", NES_SACHEN_SA72008);
+ device.option_add_internal("tca01", NES_SACHEN_TCA01);
+ device.option_add_internal("s8259a", NES_SACHEN_8259A);
+ device.option_add_internal("s8259b", NES_SACHEN_8259B);
+ device.option_add_internal("s8259c", NES_SACHEN_8259C);
+ device.option_add_internal("s8259d", NES_SACHEN_8259D);
+ device.option_add_internal("s74x374", NES_SACHEN_74X374);
+ device.option_add_internal("s74x374a", NES_SACHEN_74X374_ALT); // FIXME: Made up boards some different handling
+ device.option_add_internal("tcu01", NES_SACHEN_TCU01);
+ device.option_add_internal("tcu02", NES_SACHEN_TCU02);
+ device.option_add_internal("tengen_800008", NES_TENGEN_800008); // FIXME: Is this the same as CNROM?
+ device.option_add_internal("tengen_800032", NES_TENGEN_800032);
+ device.option_add_internal("tengen_800037", NES_TENGEN_800037);
+ device.option_add_internal("txc_22211", NES_TXC_22211);
+ device.option_add_internal("txc_dumarc", NES_TXC_DUMARACING);
+ device.option_add_internal("txc_mjblock", NES_TXC_MJBLOCK);
+ device.option_add_internal("txc_strikew", NES_TXC_STRIKEW);
+ device.option_add_internal("txc_commandos", NES_TXC_COMMANDOS);
+ device.option_add_internal("waixing_a", NES_WAIXING_A);
+ device.option_add_internal("waixing_a1", NES_WAIXING_A1); // FIXME: Made up boards the different CHRRAM banks (see Ji Jia Zhan Shi)
+ device.option_add_internal("waixing_b", NES_WAIXING_B);
+ device.option_add_internal("waixing_c", NES_WAIXING_C);
+ device.option_add_internal("waixing_d", NES_WAIXING_D);
+ device.option_add_internal("waixing_e", NES_WAIXING_E);
+ device.option_add_internal("waixing_f", NES_WAIXING_F);
+ device.option_add_internal("waixing_g", NES_WAIXING_G);
+ device.option_add_internal("waixing_h", NES_WAIXING_H);
+ device.option_add_internal("waixing_h1", NES_WAIXING_H1); // FIXME: Made up boards the different WRAM protect banks (see Shen Mi Jin San Jiao)
+ device.option_add_internal("waixing_i", NES_WAIXING_I);
+ device.option_add_internal("waixing_j", NES_WAIXING_J);
+ device.option_add_internal("waixing_sgz", NES_WAIXING_SGZ);
+ device.option_add_internal("waixing_sgzlz", NES_WAIXING_SGZLZ);
+ device.option_add_internal("waixing_sec", NES_WAIXING_SEC);
+ device.option_add_internal("waixing_ffv", NES_WAIXING_FFV);
+ device.option_add_internal("waixing_wxzs", NES_WAIXING_WXZS);
+ device.option_add_internal("waixing_wxzs2", NES_WAIXING_WXZS2);
+ device.option_add_internal("waixing_dq8", NES_WAIXING_DQ8);
+ device.option_add_internal("waixing_sh2", NES_WAIXING_SH2);
+ device.option_add_internal("fs304", NES_WAIXING_FS304); // used in Zelda 3 by Waixing
+ device.option_add_internal("cony", NES_CONY);
+ device.option_add_internal("yoko", NES_YOKO);
+ device.option_add_internal("hengg_srich", NES_HENGG_SRICH);
+ device.option_add_internal("hengg_xhzs", NES_HENGG_XHZS);
+ device.option_add_internal("hengg_shjy3", NES_HENGG_SHJY3); // mapper 253
+ device.option_add_internal("hes", NES_HES);
+ device.option_add_internal("hosenkan", NES_HOSENKAN);
+ device.option_add_internal("ks7058", NES_KS7058);
+ device.option_add_internal("ks202", NES_KS202); // mapper 56
+ device.option_add_internal("ks7022", NES_KS7022); // mapper 175
+ device.option_add_internal("ks7017", NES_KS7017);
+ device.option_add_internal("ks7032", NES_KS7032); // mapper 142
+ device.option_add_internal("ks7012", NES_KS7012); // used in Zanac (FDS Conversion);
+ device.option_add_internal("ks7013b", NES_KS7013B); // used in Highway Star (FDS Conversion);
+ device.option_add_internal("ks7031", NES_KS7031); // used in Dracula II (FDS Conversion);
+ device.option_add_internal("ks7016", NES_KS7016); // used in Exciting Basket (FDS Conversion);
+ device.option_add_internal("ks7037", NES_KS7037); // used in Metroid (FDS Conversion);
+ device.option_add_internal("gs2015", NES_GS2015);
+ device.option_add_internal("gs2004", NES_GS2004);
+ device.option_add_internal("gs2013", NES_GS2013);
+ device.option_add_internal("tf9in1", NES_TF9IN1);
+ device.option_add_internal("3dblock", NES_3DBLOCK); // NROM + IRQ?
+ device.option_add_internal("racermate", NES_RACERMATE); // mapper 168
+ device.option_add_internal("agci_50282", NES_AGCI_50282);
+ device.option_add_internal("dreamtech01", NES_DREAMTECH01);
+ device.option_add_internal("fukutake", NES_FUKUTAKE);
+ device.option_add_internal("futuremedia", NES_FUTUREMEDIA);
+ device.option_add_internal("magicseries", NES_MAGSERIES);
+ device.option_add_internal("daou_306", NES_DAOU306);
+ device.option_add_internal("subor0", NES_SUBOR0);
+ device.option_add_internal("subor1", NES_SUBOR1);
+ device.option_add_internal("subor2", NES_SUBOR2);
+ device.option_add_internal("cc21", NES_CC21);
+ device.option_add_internal("xiaozy", NES_XIAOZY);
+ device.option_add_internal("edu2k", NES_EDU2K);
+ device.option_add_internal("t230", NES_T230);
+ device.option_add_internal("mk2", NES_MK2);
+ device.option_add_internal("unl_whero", NES_WHERO); // mapper 27
+ device.option_add_internal("unl_43272", NES_43272); // used in Gaau Hok Gwong Cheung
+ device.option_add_internal("tf1201", NES_TF1201);
+ device.option_add_internal("unl_cfight", NES_CITYFIGHT); // used by City Fighter IV
+ device.option_add_internal("zemina", NES_ZEMINA); // mapper 190 - Magic Kid GooGoo
// misc bootleg boards
- SLOT_INTERFACE_INTERNAL("ax5705", NES_AX5705)
- SLOT_INTERFACE_INTERNAL("sc127", NES_SC127)
- SLOT_INTERFACE_INTERNAL("mariobaby", NES_MARIOBABY)
- SLOT_INTERFACE_INTERNAL("asnicol", NES_ASN)
- SLOT_INTERFACE_INTERNAL("smb3pirate", NES_SMB3PIRATE)
- SLOT_INTERFACE_INTERNAL("btl_dninja", NES_BTL_DNINJA)
- SLOT_INTERFACE_INTERNAL("whirl2706", NES_WHIRLWIND_2706)
- SLOT_INTERFACE_INTERNAL("smb2j", NES_SMB2J)
- SLOT_INTERFACE_INTERNAL("smb2ja", NES_SMB2JA)
- SLOT_INTERFACE_INTERNAL("smb2jb", NES_SMB2JB)
- SLOT_INTERFACE_INTERNAL("09034a", NES_09034A)
- SLOT_INTERFACE_INTERNAL("tobidase", NES_TOBIDASE) // mapper 120
- SLOT_INTERFACE_INTERNAL("mmalee2", NES_MMALEE) // mapper 55?
- SLOT_INTERFACE_INTERNAL("unl_2708", NES_2708) // mapper 103
- SLOT_INTERFACE_INTERNAL("unl_lh32", NES_LH32) // used by Monty no Doki Doki Daidassou FDS conversion
- SLOT_INTERFACE_INTERNAL("unl_lh10", NES_LH10) // used in Fuuun Shaolin Kyo (FDS Conversion)
- SLOT_INTERFACE_INTERNAL("unl_lh53", NES_LH53) // used in Nazo no Murasamejou (FDS Conversion)
- SLOT_INTERFACE_INTERNAL("unl_ac08", NES_AC08) // used by Green Beret FDS conversion
- SLOT_INTERFACE_INTERNAL("unl_bb", NES_UNL_BB) // used by a few FDS conversions
- SLOT_INTERFACE_INTERNAL("sgpipe", NES_SHUIGUAN) // mapper 183
- SLOT_INTERFACE_INTERNAL("rt01", NES_RT01)
+ device.option_add_internal("ax5705", NES_AX5705);
+ device.option_add_internal("sc127", NES_SC127);
+ device.option_add_internal("mariobaby", NES_MARIOBABY);
+ device.option_add_internal("asnicol", NES_ASN);
+ device.option_add_internal("smb3pirate", NES_SMB3PIRATE);
+ device.option_add_internal("btl_dninja", NES_BTL_DNINJA);
+ device.option_add_internal("whirl2706", NES_WHIRLWIND_2706);
+ device.option_add_internal("smb2j", NES_SMB2J);
+ device.option_add_internal("smb2ja", NES_SMB2JA);
+ device.option_add_internal("smb2jb", NES_SMB2JB);
+ device.option_add_internal("09034a", NES_09034A);
+ device.option_add_internal("tobidase", NES_TOBIDASE); // mapper 120
+ device.option_add_internal("mmalee2", NES_MMALEE); // mapper 55?
+ device.option_add_internal("unl_2708", NES_2708); // mapper 103
+ device.option_add_internal("unl_lh32", NES_LH32); // used by Monty no Doki Doki Daidassou FDS conversion
+ device.option_add_internal("unl_lh10", NES_LH10); // used in Fuuun Shaolin Kyo (FDS Conversion);
+ device.option_add_internal("unl_lh53", NES_LH53); // used in Nazo no Murasamejou (FDS Conversion);
+ device.option_add_internal("unl_ac08", NES_AC08); // used by Green Beret FDS conversion
+ device.option_add_internal("unl_bb", NES_UNL_BB); // used by a few FDS conversions
+ device.option_add_internal("sgpipe", NES_SHUIGUAN); // mapper 183
+ device.option_add_internal("rt01", NES_RT01);
// misc MMC3 clone boards
- SLOT_INTERFACE_INTERNAL("dbz5", NES_REX_DBZ5)
- SLOT_INTERFACE_INTERNAL("sl1632", NES_REX_SL1632)
- SLOT_INTERFACE_INTERNAL("somari", NES_SOMARI) // mapper 116
- SLOT_INTERFACE_INTERNAL("nitra", NES_NITRA)
- SLOT_INTERFACE_INTERNAL("ks7057", NES_KS7057) // mapper 196 alt (for Street Fighter VI / Fight Street VI)
- SLOT_INTERFACE_INTERNAL("sbros11", NES_SBROS11)
- SLOT_INTERFACE_INTERNAL("unl_malisb", NES_MALISB) // used by Super Mali Splash Bomb
- SLOT_INTERFACE_INTERNAL("family4646", NES_FAMILY4646)
- SLOT_INTERFACE_INTERNAL("pikay2k", NES_PIKAY2K) // mapper 254
- SLOT_INTERFACE_INTERNAL("8237", NES_8237)
- SLOT_INTERFACE_INTERNAL("8237a", NES_NROM) // UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("sg_lionk", NES_SG_LIONK)
- SLOT_INTERFACE_INTERNAL("sg_boog", NES_SG_BOOG)
- SLOT_INTERFACE_INTERNAL("kasing", NES_KASING)
- SLOT_INTERFACE_INTERNAL("kay", NES_KAY)
- SLOT_INTERFACE_INTERNAL("h2288", NES_H2288)
- SLOT_INTERFACE_INTERNAL("unl_6035052", NES_6035052) // mapper 238?
- SLOT_INTERFACE_INTERNAL("txc_tw", NES_TXC_TW)
- SLOT_INTERFACE_INTERNAL("kof97", NES_KOF97)
- SLOT_INTERFACE_INTERNAL("kof96", NES_KOF96)
- SLOT_INTERFACE_INTERNAL("sfight3", NES_SF3)
- SLOT_INTERFACE_INTERNAL("gouder", NES_GOUDER)
- SLOT_INTERFACE_INTERNAL("sa9602b", NES_SA9602B)
- SLOT_INTERFACE_INTERNAL("unl_shero", NES_SACHEN_SHERO)
+ device.option_add_internal("dbz5", NES_REX_DBZ5);
+ device.option_add_internal("sl1632", NES_REX_SL1632);
+ device.option_add_internal("somari", NES_SOMARI); // mapper 116
+ device.option_add_internal("nitra", NES_NITRA);
+ device.option_add_internal("ks7057", NES_KS7057); // mapper 196 alt (for Street Fighter VI / Fight Street VI);
+ device.option_add_internal("sbros11", NES_SBROS11);
+ device.option_add_internal("unl_malisb", NES_MALISB); // used by Super Mali Splash Bomb
+ device.option_add_internal("family4646", NES_FAMILY4646);
+ device.option_add_internal("pikay2k", NES_PIKAY2K); // mapper 254
+ device.option_add_internal("8237", NES_8237);
+ device.option_add_internal("8237a", NES_NROM); // UNSUPPORTED
+ device.option_add_internal("sg_lionk", NES_SG_LIONK);
+ device.option_add_internal("sg_boog", NES_SG_BOOG);
+ device.option_add_internal("kasing", NES_KASING);
+ device.option_add_internal("kay", NES_KAY);
+ device.option_add_internal("h2288", NES_H2288);
+ device.option_add_internal("unl_6035052", NES_6035052); // mapper 238?
+ device.option_add_internal("txc_tw", NES_TXC_TW);
+ device.option_add_internal("kof97", NES_KOF97);
+ device.option_add_internal("kof96", NES_KOF96);
+ device.option_add_internal("sfight3", NES_SF3);
+ device.option_add_internal("gouder", NES_GOUDER);
+ device.option_add_internal("sa9602b", NES_SA9602B);
+ device.option_add_internal("unl_shero", NES_SACHEN_SHERO);
// misc multigame cart boards
- SLOT_INTERFACE_INTERNAL("benshieng", NES_BENSHIENG)
- SLOT_INTERFACE_INTERNAL("action52", NES_ACTION52)
- SLOT_INTERFACE_INTERNAL("caltron6in1", NES_CALTRON6IN1)
- SLOT_INTERFACE_INTERNAL("maxi15", NES_MAXI15) // mapper 234
- SLOT_INTERFACE_INTERNAL("rumblestation", NES_RUMBLESTATION) // mapper 46
- SLOT_INTERFACE_INTERNAL("svision16", NES_SVISION16) // mapper 53
- SLOT_INTERFACE_INTERNAL("n625092", NES_N625092)
- SLOT_INTERFACE_INTERNAL("a65as", NES_A65AS)
- SLOT_INTERFACE_INTERNAL("t262", NES_T262)
- SLOT_INTERFACE_INTERNAL("novel1", NES_NOVEL1)
- SLOT_INTERFACE_INTERNAL("novel2", NES_NOVEL2) // mapper 213... same as BMC-NOVELDIAMOND9999999IN1 board?
- SLOT_INTERFACE_INTERNAL("studyngame", NES_STUDYNGAME) // mapper 39
- SLOT_INTERFACE_INTERNAL("sgun20in1", NES_SUPERGUN20IN1)
- SLOT_INTERFACE_INTERNAL("bmc_vt5201", NES_VT5201) // mapper 60 otherwise
- SLOT_INTERFACE_INTERNAL("bmc_d1038", NES_VT5201) // mapper 60?
- SLOT_INTERFACE_INTERNAL("810544c", NES_810544C)
- SLOT_INTERFACE_INTERNAL("ntd03", NES_NTD03)
- SLOT_INTERFACE_INTERNAL("bmc_gb63", NES_BMC_GB63)
- SLOT_INTERFACE_INTERNAL("bmc_gka", NES_BMC_GKA)
- SLOT_INTERFACE_INTERNAL("bmc_gkb", NES_BMC_GKB)
- SLOT_INTERFACE_INTERNAL("bmc_ws", NES_BMC_WS)
- SLOT_INTERFACE_INTERNAL("bmc_g146", NES_BMC_G146)
- SLOT_INTERFACE_INTERNAL("bmc_11160", NES_BMC_11160)
- SLOT_INTERFACE_INTERNAL("bmc_8157", NES_BMC_8157)
- SLOT_INTERFACE_INTERNAL("bmc_hik300", NES_BMC_HIK300)
- SLOT_INTERFACE_INTERNAL("bmc_s700", NES_BMC_S700)
- SLOT_INTERFACE_INTERNAL("bmc_ball11", NES_BMC_BALL11)
- SLOT_INTERFACE_INTERNAL("bmc_22games", NES_BMC_22GAMES)
- SLOT_INTERFACE_INTERNAL("bmc_64y2k", NES_BMC_64Y2K)
- SLOT_INTERFACE_INTERNAL("bmc_12in1", NES_BMC_12IN1)
- SLOT_INTERFACE_INTERNAL("bmc_20in1", NES_BMC_20IN1)
- SLOT_INTERFACE_INTERNAL("bmc_21in1", NES_BMC_21IN1)
- SLOT_INTERFACE_INTERNAL("bmc_31in1", NES_BMC_31IN1)
- SLOT_INTERFACE_INTERNAL("bmc_35in1", NES_BMC_35IN1)
- SLOT_INTERFACE_INTERNAL("bmc_36in1", NES_BMC_36IN1)
- SLOT_INTERFACE_INTERNAL("bmc_64in1", NES_BMC_64IN1)
- SLOT_INTERFACE_INTERNAL("bmc_70in1", NES_BMC_70IN1) // mapper 236?
- SLOT_INTERFACE_INTERNAL("bmc_72in1", NES_BMC_72IN1)
- SLOT_INTERFACE_INTERNAL("bmc_76in1", NES_BMC_76IN1)
- SLOT_INTERFACE_INTERNAL("bmc_s42in1", NES_BMC_76IN1)
- SLOT_INTERFACE_INTERNAL("bmc_110in1", NES_BMC_110IN1)
- SLOT_INTERFACE_INTERNAL("bmc_150in1", NES_BMC_150IN1)
- SLOT_INTERFACE_INTERNAL("bmc_190in1", NES_BMC_190IN1)
- SLOT_INTERFACE_INTERNAL("bmc_800in1", NES_BMC_800IN1) // mapper 236?
- SLOT_INTERFACE_INTERNAL("bmc_1200in1", NES_BMC_1200IN1)
- SLOT_INTERFACE_INTERNAL("bmc_gold150", NES_BMC_GOLD150) // mapper 235 with 2M PRG
- SLOT_INTERFACE_INTERNAL("bmc_gold260", NES_BMC_GOLD260) // mapper 235 with 4M PRG
- SLOT_INTERFACE_INTERNAL("bmc_power255", NES_BMC_CH001) // mapper 63?
- SLOT_INTERFACE_INTERNAL("bmc_s22games", NES_BMC_SUPER22) // mapper 233
- SLOT_INTERFACE_INTERNAL("bmc_reset4", NES_BMC_4IN1RESET) // mapper 60 with 64k prg and 32k chr
- SLOT_INTERFACE_INTERNAL("bmc_reset42", NES_BMC_42IN1RESET) // mapper 60? or 226? or 233?
+ device.option_add_internal("benshieng", NES_BENSHIENG);
+ device.option_add_internal("action52", NES_ACTION52);
+ device.option_add_internal("caltron6in1", NES_CALTRON6IN1);
+ device.option_add_internal("maxi15", NES_MAXI15); // mapper 234
+ device.option_add_internal("rumblestation", NES_RUMBLESTATION); // mapper 46
+ device.option_add_internal("svision16", NES_SVISION16); // mapper 53
+ device.option_add_internal("n625092", NES_N625092);
+ device.option_add_internal("a65as", NES_A65AS);
+ device.option_add_internal("t262", NES_T262);
+ device.option_add_internal("novel1", NES_NOVEL1);
+ device.option_add_internal("novel2", NES_NOVEL2); // mapper 213... same as BMC-NOVELDIAMOND9999999IN1 board?
+ device.option_add_internal("studyngame", NES_STUDYNGAME); // mapper 39
+ device.option_add_internal("sgun20in1", NES_SUPERGUN20IN1);
+ device.option_add_internal("bmc_vt5201", NES_VT5201); // mapper 60 otherwise
+ device.option_add_internal("bmc_d1038", NES_VT5201); // mapper 60?
+ device.option_add_internal("810544c", NES_810544C);
+ device.option_add_internal("ntd03", NES_NTD03);
+ device.option_add_internal("bmc_gb63", NES_BMC_GB63);
+ device.option_add_internal("bmc_gka", NES_BMC_GKA);
+ device.option_add_internal("bmc_gkb", NES_BMC_GKB);
+ device.option_add_internal("bmc_ws", NES_BMC_WS);
+ device.option_add_internal("bmc_g146", NES_BMC_G146);
+ device.option_add_internal("bmc_11160", NES_BMC_11160);
+ device.option_add_internal("bmc_8157", NES_BMC_8157);
+ device.option_add_internal("bmc_hik300", NES_BMC_HIK300);
+ device.option_add_internal("bmc_s700", NES_BMC_S700);
+ device.option_add_internal("bmc_ball11", NES_BMC_BALL11);
+ device.option_add_internal("bmc_22games", NES_BMC_22GAMES);
+ device.option_add_internal("bmc_64y2k", NES_BMC_64Y2K);
+ device.option_add_internal("bmc_12in1", NES_BMC_12IN1);
+ device.option_add_internal("bmc_20in1", NES_BMC_20IN1);
+ device.option_add_internal("bmc_21in1", NES_BMC_21IN1);
+ device.option_add_internal("bmc_31in1", NES_BMC_31IN1);
+ device.option_add_internal("bmc_35in1", NES_BMC_35IN1);
+ device.option_add_internal("bmc_36in1", NES_BMC_36IN1);
+ device.option_add_internal("bmc_64in1", NES_BMC_64IN1);
+ device.option_add_internal("bmc_70in1", NES_BMC_70IN1); // mapper 236?
+ device.option_add_internal("bmc_72in1", NES_BMC_72IN1);
+ device.option_add_internal("bmc_76in1", NES_BMC_76IN1);
+ device.option_add_internal("bmc_s42in1", NES_BMC_76IN1);
+ device.option_add_internal("bmc_110in1", NES_BMC_110IN1);
+ device.option_add_internal("bmc_150in1", NES_BMC_150IN1);
+ device.option_add_internal("bmc_190in1", NES_BMC_190IN1);
+ device.option_add_internal("bmc_800in1", NES_BMC_800IN1); // mapper 236?
+ device.option_add_internal("bmc_1200in1", NES_BMC_1200IN1);
+ device.option_add_internal("bmc_gold150", NES_BMC_GOLD150); // mapper 235 with 2M PRG
+ device.option_add_internal("bmc_gold260", NES_BMC_GOLD260); // mapper 235 with 4M PRG
+ device.option_add_internal("bmc_power255", NES_BMC_CH001); // mapper 63?
+ device.option_add_internal("bmc_s22games", NES_BMC_SUPER22); // mapper 233
+ device.option_add_internal("bmc_reset4", NES_BMC_4IN1RESET); // mapper 60 with 64k prg and 32k chr
+ device.option_add_internal("bmc_reset42", NES_BMC_42IN1RESET); // mapper 60? or 226? or 233?
// misc multigame cart MMC3 clone boards
- SLOT_INTERFACE_INTERNAL("fk23c", NES_FK23C)
- SLOT_INTERFACE_INTERNAL("fk23ca", NES_FK23CA)
- SLOT_INTERFACE_INTERNAL("s24in1c03", NES_S24IN1SC03)
- SLOT_INTERFACE_INTERNAL("bmc_15in1", NES_BMC_15IN1)
- SLOT_INTERFACE_INTERNAL("bmc_sbig7in1", NES_BMC_SBIG7)
- SLOT_INTERFACE_INTERNAL("bmc_hik8in1", NES_BMC_HIK8)
- SLOT_INTERFACE_INTERNAL("bmc_hik4in1", NES_BMC_HIK4)
- SLOT_INTERFACE_INTERNAL("bmc_mario7in1", NES_BMC_MARIO7IN1)
- SLOT_INTERFACE_INTERNAL("bmc_gold7in1", NES_BMC_GOLD7IN1)
- SLOT_INTERFACE_INTERNAL("bmc_gc6in1", NES_BMC_GC6IN1)
- SLOT_INTERFACE_INTERNAL("bmc_411120c", NES_BMC_411120C)
- SLOT_INTERFACE_INTERNAL("bmc_830118c", NES_BMC_830118C)
- SLOT_INTERFACE_INTERNAL("pjoy84", NES_PJOY84)
- SLOT_INTERFACE_INTERNAL("nocash_nochr", NES_NOCHR)
- SLOT_INTERFACE_INTERNAL("nes_action53", NES_ACTION53)
- SLOT_INTERFACE_INTERNAL("nes_2a03pur", NES_2A03PURITANS)
+ device.option_add_internal("fk23c", NES_FK23C);
+ device.option_add_internal("fk23ca", NES_FK23CA);
+ device.option_add_internal("s24in1c03", NES_S24IN1SC03);
+ device.option_add_internal("bmc_15in1", NES_BMC_15IN1);
+ device.option_add_internal("bmc_sbig7in1", NES_BMC_SBIG7);
+ device.option_add_internal("bmc_hik8in1", NES_BMC_HIK8);
+ device.option_add_internal("bmc_hik4in1", NES_BMC_HIK4);
+ device.option_add_internal("bmc_mario7in1", NES_BMC_MARIO7IN1);
+ device.option_add_internal("bmc_gold7in1", NES_BMC_GOLD7IN1);
+ device.option_add_internal("bmc_gc6in1", NES_BMC_GC6IN1);
+ device.option_add_internal("bmc_411120c", NES_BMC_411120C);
+ device.option_add_internal("bmc_830118c", NES_BMC_830118C);
+ device.option_add_internal("pjoy84", NES_PJOY84);
+ device.option_add_internal("nocash_nochr", NES_NOCHR);
+ device.option_add_internal("nes_action53", NES_ACTION53);
+ device.option_add_internal("nes_2a03pur", NES_2A03PURITANS);
// other unsupported...
- SLOT_INTERFACE_INTERNAL("ninjaryu", NES_NROM) // mapper 111 - UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("unl_dance", NES_NROM) // UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("onebus", NES_NROM) // UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("pec586", NES_NROM) // UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("coolboy", NES_NROM) // UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("bmc_f15", NES_NROM) // UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("bmc_hp898f", NES_NROM) // UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("bmc_8in1", NES_NROM) // UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("unl_eh8813a", NES_NROM) // UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("unl_158b", NES_NROM) // UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("unl_drgnfgt", NES_NROM) // UNSUPPORTED
+ device.option_add_internal("ninjaryu", NES_NROM); // mapper 111 - UNSUPPORTED
+ device.option_add_internal("unl_dance", NES_NROM); // UNSUPPORTED
+ device.option_add_internal("onebus", NES_NROM); // UNSUPPORTED
+ device.option_add_internal("pec586", NES_NROM); // UNSUPPORTED
+ device.option_add_internal("coolboy", NES_NROM); // UNSUPPORTED
+ device.option_add_internal("bmc_f15", NES_NROM); // UNSUPPORTED
+ device.option_add_internal("bmc_hp898f", NES_NROM); // UNSUPPORTED
+ device.option_add_internal("bmc_8in1", NES_NROM); // UNSUPPORTED
+ device.option_add_internal("unl_eh8813a", NES_NROM); // UNSUPPORTED
+ device.option_add_internal("unl_158b", NES_NROM); // UNSUPPORTED
+ device.option_add_internal("unl_drgnfgt", NES_NROM); // UNSUPPORTED
// are there dumps of games with these boards?
- SLOT_INTERFACE_INTERNAL("bmc_hik_kof", NES_NROM) // mapper 251 - UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("bmc_13in1jy110", NES_NROM) // [mentioned in FCEUMM source - we need more info] - UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("bmc_gk_192", NES_NROM) // [mentioned in FCEUMM source - we need more info] - UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("konami_qtai", NES_NROM) // [mentioned in FCEUMM source - we need more info] - UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("unl_3d_block", NES_NROM) // [mentioned in FCEUMM source - we need more info] - UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("unl_c_n22m", NES_NROM) // [mentioned in FCEUMM source - we need more info] - UNSUPPORTED
- SLOT_INTERFACE_INTERNAL("a9746", NES_NROM) // mapper 219 - UNSUPPORTED (no dump available)
+ device.option_add_internal("bmc_hik_kof", NES_NROM); // mapper 251 - UNSUPPORTED
+ device.option_add_internal("bmc_13in1jy110", NES_NROM); // [mentioned in FCEUMM source - we need more info] - UNSUPPORTED
+ device.option_add_internal("bmc_gk_192", NES_NROM); // [mentioned in FCEUMM source - we need more info] - UNSUPPORTED
+ device.option_add_internal("konami_qtai", NES_NROM); // [mentioned in FCEUMM source - we need more info] - UNSUPPORTED
+ device.option_add_internal("unl_3d_block", NES_NROM); // [mentioned in FCEUMM source - we need more info] - UNSUPPORTED
+ device.option_add_internal("unl_c_n22m", NES_NROM); // [mentioned in FCEUMM source - we need more info] - UNSUPPORTED
+ device.option_add_internal("a9746", NES_NROM); // mapper 219 - UNSUPPORTED (no dump available);
// legacy boards for FFE copier mappers (are there images available to fix/improve emulation?)
- SLOT_INTERFACE_INTERNAL("ffe3", NES_FFE3)
- SLOT_INTERFACE_INTERNAL("ffe4", NES_FFE4)
- SLOT_INTERFACE_INTERNAL("ffe8", NES_FFE8)
- SLOT_INTERFACE_INTERNAL("test", NES_NROM)
+ device.option_add_internal("ffe3", NES_FFE3);
+ device.option_add_internal("ffe4", NES_FFE4);
+ device.option_add_internal("ffe8", NES_FFE8);
+ device.option_add_internal("test", NES_NROM);
//
- SLOT_INTERFACE_INTERNAL("unknown", NES_NROM) // a few pirate dumps uses the wrong mapper...
-SLOT_INTERFACE_END
+ device.option_add_internal("unknown", NES_NROM); // a few pirate dumps uses the wrong mapper...
+}
-SLOT_INTERFACE_START(disksys_only)
+void disksys_only(device_slot_interface &device)
+{
// RAM expansion + Disk System add-on
- SLOT_INTERFACE("disksys", NES_DISKSYS)
-SLOT_INTERFACE_END
+ device.option_add("disksys", NES_DISKSYS);
+}
diff --git a/src/devices/bus/nes/nes_carts.h b/src/devices/bus/nes/nes_carts.h
index 421a5b12386..8114129be86 100644
--- a/src/devices/bus/nes/nes_carts.h
+++ b/src/devices/bus/nes/nes_carts.h
@@ -13,7 +13,7 @@
// supported devices
-SLOT_INTERFACE_EXTERN(nes_cart);
-SLOT_INTERFACE_EXTERN(disksys_only);
+void nes_cart(device_slot_interface &device);
+void disksys_only(device_slot_interface &device);
#endif // MAME_BUS_NES_NES_CARTS_H
diff --git a/src/devices/bus/nes/sunsoft_dcs.cpp b/src/devices/bus/nes/sunsoft_dcs.cpp
index 5f2643865dd..a933fdcfb5b 100644
--- a/src/devices/bus/nes/sunsoft_dcs.cpp
+++ b/src/devices/bus/nes/sunsoft_dcs.cpp
@@ -273,9 +273,10 @@ READ8_MEMBER(nes_sunsoft_dcs_device::read_m)
}
-static SLOT_INTERFACE_START(ntb_cart)
- SLOT_INTERFACE_INTERNAL("ntbrom", NES_NTB_ROM)
-SLOT_INTERFACE_END
+static void ntb_cart(device_slot_interface &device)
+{
+ device.option_add_internal("ntbrom", NES_NTB_ROM);
+}
diff --git a/src/devices/bus/nes_ctrl/ctrl.cpp b/src/devices/bus/nes_ctrl/ctrl.cpp
index ef491efc889..7618f89dbd7 100644
--- a/src/devices/bus/nes_ctrl/ctrl.cpp
+++ b/src/devices/bus/nes_ctrl/ctrl.cpp
@@ -165,45 +165,50 @@ void nes_control_port_device::write(uint8_t data)
// SLOT_INTERFACE( nes_control_port_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( nes_control_port1_devices )
- SLOT_INTERFACE("joypad", NES_JOYPAD)
- SLOT_INTERFACE("zapper", NES_ZAPPER)
- SLOT_INTERFACE("4score_p1p3", NES_4SCORE_P1P3)
- SLOT_INTERFACE("miracle_piano", NES_MIRACLE)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( nes_control_port2_devices )
- SLOT_INTERFACE("joypad", NES_JOYPAD)
- SLOT_INTERFACE("zapper", NES_ZAPPER)
- SLOT_INTERFACE("vaus", NES_ARKPADDLE)
- SLOT_INTERFACE("powerpad", NES_POWERPAD)
- SLOT_INTERFACE("4score_p2p4", NES_4SCORE_P2P4)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( fc_control_port1_devices )
- SLOT_INTERFACE("joypad", NES_JOYPAD)
- SLOT_INTERFACE("ccpad_left", NES_CCPAD_LEFT)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( fc_control_port2_devices )
- SLOT_INTERFACE("joypad", NES_JOYPAD)
- SLOT_INTERFACE("joypad_old", NES_FCPAD_P2)
- SLOT_INTERFACE("ccpad_right", NES_CCPAD_RIGHT)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( fc_expansion_devices )
- SLOT_INTERFACE("joypad", NES_JOYPAD)
- SLOT_INTERFACE("arcstick", NES_ARCSTICK)
- SLOT_INTERFACE("fc_keyboard", NES_FCKEYBOARD)
- SLOT_INTERFACE("zapper", NES_ZAPPER)
- SLOT_INTERFACE("vaus", NES_ARKPADDLE_FC)
- SLOT_INTERFACE("family_trainer", NES_FTRAINER)
- SLOT_INTERFACE("konamihs", NES_KONAMIHS)
- SLOT_INTERFACE("mj_panel", NES_MJPANEL)
- SLOT_INTERFACE("pachinko", NES_PACHINKO)
- SLOT_INTERFACE("partytap", NES_PARTYTAP)
- SLOT_INTERFACE("hori_twin", NES_HORITWIN)
- SLOT_INTERFACE("hori_4p", NES_HORI4P)
- SLOT_INTERFACE("barcode_battler", NES_BARCODE_BATTLER)
- SLOT_INTERFACE("subor_keyboard", NES_SUBORKEYBOARD)
-SLOT_INTERFACE_END
+void nes_control_port1_devices(device_slot_interface &device)
+{
+ device.option_add("joypad", NES_JOYPAD);
+ device.option_add("zapper", NES_ZAPPER);
+ device.option_add("4score_p1p3", NES_4SCORE_P1P3);
+ device.option_add("miracle_piano", NES_MIRACLE);
+}
+
+void nes_control_port2_devices(device_slot_interface &device)
+{
+ device.option_add("joypad", NES_JOYPAD);
+ device.option_add("zapper", NES_ZAPPER);
+ device.option_add("vaus", NES_ARKPADDLE);
+ device.option_add("powerpad", NES_POWERPAD);
+ device.option_add("4score_p2p4", NES_4SCORE_P2P4);
+}
+
+void fc_control_port1_devices(device_slot_interface &device)
+{
+ device.option_add("joypad", NES_JOYPAD);
+ device.option_add("ccpad_left", NES_CCPAD_LEFT);
+}
+
+void fc_control_port2_devices(device_slot_interface &device)
+{
+ device.option_add("joypad", NES_JOYPAD);
+ device.option_add("joypad_old", NES_FCPAD_P2);
+ device.option_add("ccpad_right", NES_CCPAD_RIGHT);
+}
+
+void fc_expansion_devices(device_slot_interface &device)
+{
+ device.option_add("joypad", NES_JOYPAD);
+ device.option_add("arcstick", NES_ARCSTICK);
+ device.option_add("fc_keyboard", NES_FCKEYBOARD);
+ device.option_add("zapper", NES_ZAPPER);
+ device.option_add("vaus", NES_ARKPADDLE_FC);
+ device.option_add("family_trainer", NES_FTRAINER);
+ device.option_add("konamihs", NES_KONAMIHS);
+ device.option_add("mj_panel", NES_MJPANEL);
+ device.option_add("pachinko", NES_PACHINKO);
+ device.option_add("partytap", NES_PARTYTAP);
+ device.option_add("hori_twin", NES_HORITWIN);
+ device.option_add("hori_4p", NES_HORI4P);
+ device.option_add("barcode_battler", NES_BARCODE_BATTLER);
+ device.option_add("subor_keyboard", NES_SUBORKEYBOARD);
+}
diff --git a/src/devices/bus/nes_ctrl/ctrl.h b/src/devices/bus/nes_ctrl/ctrl.h
index a0ca47d4d36..44b029a0042 100644
--- a/src/devices/bus/nes_ctrl/ctrl.h
+++ b/src/devices/bus/nes_ctrl/ctrl.h
@@ -93,11 +93,11 @@ DECLARE_DEVICE_TYPE(NES_CONTROL_PORT, nes_control_port_device)
downcast<nes_control_port_device &>(*device).set_brightpixel_callback(nesctrl_brightpixel_delegate(&_class::_method, #_class "::" #_method, this));
-SLOT_INTERFACE_EXTERN( nes_control_port1_devices );
-SLOT_INTERFACE_EXTERN( nes_control_port2_devices );
-SLOT_INTERFACE_EXTERN( fc_control_port1_devices );
-SLOT_INTERFACE_EXTERN( fc_control_port2_devices );
-SLOT_INTERFACE_EXTERN( fc_expansion_devices );
+void nes_control_port1_devices(device_slot_interface &device);
+void nes_control_port2_devices(device_slot_interface &device);
+void fc_control_port1_devices(device_slot_interface &device);
+void fc_control_port2_devices(device_slot_interface &device);
+void fc_expansion_devices(device_slot_interface &device);
#endif // MAME_BUS_NES_CTRL_CTRL_H
diff --git a/src/devices/bus/nes_ctrl/hori.cpp b/src/devices/bus/nes_ctrl/hori.cpp
index 9710c33deeb..80e7dd835aa 100644
--- a/src/devices/bus/nes_ctrl/hori.cpp
+++ b/src/devices/bus/nes_ctrl/hori.cpp
@@ -49,9 +49,10 @@ ioport_constructor nes_hori4p_device::device_input_ports() const
}
-static SLOT_INTERFACE_START( hori_adapter )
- SLOT_INTERFACE("joypad", NES_JOYPAD)
-SLOT_INTERFACE_END
+static void hori_adapter(device_slot_interface &device)
+{
+ device.option_add("joypad", NES_JOYPAD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/nes_ctrl/joypad.cpp b/src/devices/bus/nes_ctrl/joypad.cpp
index 96a22ac1f66..dd1f2272e97 100644
--- a/src/devices/bus/nes_ctrl/joypad.cpp
+++ b/src/devices/bus/nes_ctrl/joypad.cpp
@@ -144,9 +144,10 @@ ioport_constructor nes_arcstick_device::device_input_ports() const
-static SLOT_INTERFACE_START( arcstick_daisy )
- SLOT_INTERFACE("arcstick", NES_ARCSTICK)
-SLOT_INTERFACE_END
+static void arcstick_daisy(device_slot_interface &device)
+{
+ device.option_add("arcstick", NES_ARCSTICK);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/newbrain/exp.cpp b/src/devices/bus/newbrain/exp.cpp
index 7a27758764a..b4675c3b89f 100644
--- a/src/devices/bus/newbrain/exp.cpp
+++ b/src/devices/bus/newbrain/exp.cpp
@@ -137,7 +137,8 @@ void newbrain_expansion_slot_device::iorq_w(address_space &space, offs_t offset,
#include "eim.h"
#include "fdc.h"
-SLOT_INTERFACE_START( newbrain_expansion_cards )
- SLOT_INTERFACE("eim", NEWBRAIN_EIM)
- SLOT_INTERFACE("fdc", NEWBRAIN_FDC)
-SLOT_INTERFACE_END
+void newbrain_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("eim", NEWBRAIN_EIM);
+ device.option_add("fdc", NEWBRAIN_FDC);
+}
diff --git a/src/devices/bus/newbrain/exp.h b/src/devices/bus/newbrain/exp.h
index 219c819d575..e3ab89a35ef 100644
--- a/src/devices/bus/newbrain/exp.h
+++ b/src/devices/bus/newbrain/exp.h
@@ -117,7 +117,7 @@ protected:
DECLARE_DEVICE_TYPE(NEWBRAIN_EXPANSION_SLOT, newbrain_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( newbrain_expansion_cards );
+void newbrain_expansion_cards(device_slot_interface &device);
diff --git a/src/devices/bus/newbrain/fdc.cpp b/src/devices/bus/newbrain/fdc.cpp
index 9d59cd672bc..524bbbbeaec 100644
--- a/src/devices/bus/newbrain/fdc.cpp
+++ b/src/devices/bus/newbrain/fdc.cpp
@@ -94,9 +94,10 @@ void newbrain_fdc_device::newbrain_fdc_io(address_map &map)
// newbrain_floppies
//-------------------------------------------------
-static SLOT_INTERFACE_START( newbrain_floppies )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
-SLOT_INTERFACE_END
+static void newbrain_floppies(device_slot_interface &device)
+{
+ device.option_add("525dd", FLOPPY_525_DD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/bootbug.cpp b/src/devices/bus/nubus/bootbug.cpp
index af507307918..e22da015577 100644
--- a/src/devices/bus/nubus/bootbug.cpp
+++ b/src/devices/bus/nubus/bootbug.cpp
@@ -18,10 +18,11 @@
#include "bus/rs232/null_modem.h"
#include "screen.h"
-static SLOT_INTERFACE_START(isa_com)
- SLOT_INTERFACE("terminal", SERIAL_TERMINAL)
- SLOT_INTERFACE("null_modem", NULL_MODEM)
-SLOT_INTERFACE_END
+static void isa_com(device_slot_interface &device)
+{
+ device.option_add("terminal", SERIAL_TERMINAL);
+ device.option_add("null_modem", NULL_MODEM);
+}
#define BOOTBUG_ROM_REGION "btbug_rom"
diff --git a/src/devices/bus/nubus/quadralink.cpp b/src/devices/bus/nubus/quadralink.cpp
index e8375b181e8..461b8e69257 100644
--- a/src/devices/bus/nubus/quadralink.cpp
+++ b/src/devices/bus/nubus/quadralink.cpp
@@ -13,10 +13,11 @@
#include "bus/rs232/null_modem.h"
#include "screen.h"
-static SLOT_INTERFACE_START(isa_com)
- SLOT_INTERFACE("terminal", SERIAL_TERMINAL)
- SLOT_INTERFACE("null_modem", NULL_MODEM)
-SLOT_INTERFACE_END
+static void isa_com(device_slot_interface &device)
+{
+ device.option_add("terminal", SERIAL_TERMINAL);
+ device.option_add("null_modem", NULL_MODEM);
+}
#define QUADRALINK_ROM_REGION "qdlink_rom"
diff --git a/src/devices/bus/odyssey2/slot.cpp b/src/devices/bus/odyssey2/slot.cpp
index b75ccdb92e2..417bb27a38b 100644
--- a/src/devices/bus/odyssey2/slot.cpp
+++ b/src/devices/bus/odyssey2/slot.cpp
@@ -244,10 +244,11 @@ WRITE8_MEMBER(o2_cart_slot_device::io_write)
#include "bus/odyssey2/chess.h"
#include "bus/odyssey2/voice.h"
-SLOT_INTERFACE_START(o2_cart)
- SLOT_INTERFACE_INTERNAL("o2_rom", O2_ROM_STD)
- SLOT_INTERFACE_INTERNAL("o2_rom12", O2_ROM_12K)
- SLOT_INTERFACE_INTERNAL("o2_rom16", O2_ROM_16K)
- SLOT_INTERFACE_INTERNAL("o2_chess", O2_ROM_CHESS)
- SLOT_INTERFACE_INTERNAL("o2_voice", O2_ROM_VOICE)
-SLOT_INTERFACE_END
+void o2_cart(device_slot_interface &device)
+{
+ device.option_add_internal("o2_rom", O2_ROM_STD);
+ device.option_add_internal("o2_rom12", O2_ROM_12K);
+ device.option_add_internal("o2_rom16", O2_ROM_16K);
+ device.option_add_internal("o2_chess", O2_ROM_CHESS);
+ device.option_add_internal("o2_voice", O2_ROM_VOICE);
+}
diff --git a/src/devices/bus/odyssey2/slot.h b/src/devices/bus/odyssey2/slot.h
index 992d55abad5..28192aa3457 100644
--- a/src/devices/bus/odyssey2/slot.h
+++ b/src/devices/bus/odyssey2/slot.h
@@ -118,6 +118,6 @@ DECLARE_DEVICE_TYPE(O2_CART_SLOT, o2_cart_slot_device)
MCFG_DEVICE_ADD(_tag, O2_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-SLOT_INTERFACE_EXTERN(o2_cart);
+void o2_cart(device_slot_interface &device);
#endif // MAME_BUS_ODYSSEY2_SLOT_H
diff --git a/src/devices/bus/oricext/jasmin.cpp b/src/devices/bus/oricext/jasmin.cpp
index 557960f5b76..7621b0adf8e 100644
--- a/src/devices/bus/oricext/jasmin.cpp
+++ b/src/devices/bus/oricext/jasmin.cpp
@@ -15,9 +15,10 @@ FLOPPY_FORMATS_MEMBER( jasmin_device::floppy_formats )
FLOPPY_ORIC_DSK_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( jasmin_floppies )
- SLOT_INTERFACE( "3dsdd", FLOPPY_3_DSDD )
-SLOT_INTERFACE_END
+static void jasmin_floppies(device_slot_interface &device)
+{
+ device.option_add("3dsdd", FLOPPY_3_DSDD);
+}
INPUT_PORTS_START( jasmin )
PORT_START("JASMIN")
diff --git a/src/devices/bus/oricext/microdisc.cpp b/src/devices/bus/oricext/microdisc.cpp
index 6f3330d7109..4254ea2b571 100644
--- a/src/devices/bus/oricext/microdisc.cpp
+++ b/src/devices/bus/oricext/microdisc.cpp
@@ -15,9 +15,10 @@ FLOPPY_FORMATS_MEMBER( microdisc_device::floppy_formats )
FLOPPY_ORIC_DSK_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( microdisc_floppies )
- SLOT_INTERFACE( "3dsdd", FLOPPY_3_DSDD )
-SLOT_INTERFACE_END
+static void microdisc_floppies(device_slot_interface &device)
+{
+ device.option_add("3dsdd", FLOPPY_3_DSDD);
+}
void microdisc_device::map(address_map &map)
{
diff --git a/src/devices/bus/oricext/oricext.cpp b/src/devices/bus/oricext/oricext.cpp
index feb7f821c69..f5623e4548a 100644
--- a/src/devices/bus/oricext/oricext.cpp
+++ b/src/devices/bus/oricext/oricext.cpp
@@ -85,7 +85,8 @@ WRITE_LINE_MEMBER(oricext_device::irq_w)
connector->irq_w(state);
}
-SLOT_INTERFACE_START(oricext_intf)
- SLOT_INTERFACE("jasmin", JASMIN)
- SLOT_INTERFACE("microdisc", MICRODISC)
-SLOT_INTERFACE_END
+void oricext_intf(device_slot_interface &device)
+{
+ device.option_add("jasmin", JASMIN);
+ device.option_add("microdisc", MICRODISC);
+}
diff --git a/src/devices/bus/oricext/oricext.h b/src/devices/bus/oricext/oricext.h
index e914ceeefb7..febcc9384e0 100644
--- a/src/devices/bus/oricext/oricext.h
+++ b/src/devices/bus/oricext/oricext.h
@@ -62,6 +62,6 @@ protected:
DECLARE_DEVICE_TYPE(ORICEXT_CONNECTOR, oricext_connector)
-SLOT_INTERFACE_EXTERN( oricext_intf );
+void oricext_intf(device_slot_interface &device);
#endif // MAME_BUS_ORICEXT_ORICEXT_H
diff --git a/src/devices/bus/pc1512/mouse.cpp b/src/devices/bus/pc1512/mouse.cpp
index 0ad17623d90..882284e89d2 100644
--- a/src/devices/bus/pc1512/mouse.cpp
+++ b/src/devices/bus/pc1512/mouse.cpp
@@ -113,6 +113,7 @@ ioport_constructor pc1512_mouse_device::device_input_ports() const
// SLOT_INTERFACE( pc1512_mouse_port_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( pc1512_mouse_port_devices )
- SLOT_INTERFACE("mouse", PC1512_MOUSE)
-SLOT_INTERFACE_END
+void pc1512_mouse_port_devices(device_slot_interface &device)
+{
+ device.option_add("mouse", PC1512_MOUSE);
+}
diff --git a/src/devices/bus/pc1512/mouse.h b/src/devices/bus/pc1512/mouse.h
index 36cf22ce9bd..ca98296f53d 100644
--- a/src/devices/bus/pc1512/mouse.h
+++ b/src/devices/bus/pc1512/mouse.h
@@ -133,6 +133,6 @@ DECLARE_DEVICE_TYPE(PC1512_MOUSE, pc1512_mouse_device)
// slot devices
-SLOT_INTERFACE_EXTERN( pc1512_mouse_port_devices );
+void pc1512_mouse_port_devices(device_slot_interface &device);
#endif // MAME_BUS_PC1512_MOUSE_H
diff --git a/src/devices/bus/pc_joy/pc_joy.cpp b/src/devices/bus/pc_joy/pc_joy.cpp
index e71395e84fe..b790af3ee4c 100644
--- a/src/devices/bus/pc_joy/pc_joy.cpp
+++ b/src/devices/bus/pc_joy/pc_joy.cpp
@@ -91,7 +91,8 @@ pc_basic_joy_device::pc_basic_joy_device(const machine_config &mconfig, const ch
{
}
-SLOT_INTERFACE_START(pc_joysticks)
- SLOT_INTERFACE("basic_joy", PC_BASIC_JOY)
- SLOT_INTERFACE("mssw_pad", PC_MSSW_PAD)
-SLOT_INTERFACE_END
+void pc_joysticks(device_slot_interface &device)
+{
+ device.option_add("basic_joy", PC_BASIC_JOY);
+ device.option_add("mssw_pad", PC_MSSW_PAD);
+}
diff --git a/src/devices/bus/pc_joy/pc_joy.h b/src/devices/bus/pc_joy/pc_joy.h
index 39a32816a82..eb7d489b9b0 100644
--- a/src/devices/bus/pc_joy/pc_joy.h
+++ b/src/devices/bus/pc_joy/pc_joy.h
@@ -18,7 +18,7 @@
MCFG_DEVICE_ADD(_tag, PC_JOY, 0) \
MCFG_DEVICE_SLOT_INTERFACE(pc_joysticks, "basic_joy", false)
-SLOT_INTERFACE_EXTERN(pc_joysticks);
+void pc_joysticks(device_slot_interface &device);
class device_pc_joy_interface : public device_slot_card_interface
{
diff --git a/src/devices/bus/pc_kbd/keyboards.cpp b/src/devices/bus/pc_kbd/keyboards.cpp
index c9bc4c33acd..7c9d32501fc 100644
--- a/src/devices/bus/pc_kbd/keyboards.cpp
+++ b/src/devices/bus/pc_kbd/keyboards.cpp
@@ -11,18 +11,20 @@
#include "pcxt83.h"
#include "pcat84.h"
-SLOT_INTERFACE_START(pc_xt_keyboards)
- SLOT_INTERFACE(STR_KBD_KEYTRONIC_PC3270, PC_KBD_KEYTRONIC_PC3270)
- SLOT_INTERFACE(STR_KBD_IBM_PC_83, PC_KBD_IBM_PC_83)
- SLOT_INTERFACE(STR_KBD_IBM_PC_XT_83, PC_KBD_IBM_PC_XT_83)
- SLOT_INTERFACE(STR_KBD_EC_1841, PC_KBD_EC_1841)
- SLOT_INTERFACE(STR_KBD_ISKR_1030, PC_KBD_ISKR_1030)
-SLOT_INTERFACE_END
+void pc_xt_keyboards(device_slot_interface &device)
+{
+ device.option_add(STR_KBD_KEYTRONIC_PC3270, PC_KBD_KEYTRONIC_PC3270);
+ device.option_add(STR_KBD_IBM_PC_83, PC_KBD_IBM_PC_83);
+ device.option_add(STR_KBD_IBM_PC_XT_83, PC_KBD_IBM_PC_XT_83);
+ device.option_add(STR_KBD_EC_1841, PC_KBD_EC_1841);
+ device.option_add(STR_KBD_ISKR_1030, PC_KBD_ISKR_1030);
+}
-SLOT_INTERFACE_START(pc_at_keyboards)
- SLOT_INTERFACE(STR_KBD_KEYTRONIC_PC3270, PC_KBD_KEYTRONIC_PC3270_AT)
- SLOT_INTERFACE(STR_KBD_MICROSOFT_NATURAL, PC_KBD_MICROSOFT_NATURAL)
- SLOT_INTERFACE(STR_KBD_IBM_PC_AT_84, PC_KBD_IBM_PC_AT_84)
- SLOT_INTERFACE(STR_KBD_IBM_3270PC_122, PC_KBD_IBM_3270PC_122)
-SLOT_INTERFACE_END
+void pc_at_keyboards(device_slot_interface &device)
+{
+ device.option_add(STR_KBD_KEYTRONIC_PC3270, PC_KBD_KEYTRONIC_PC3270_AT);
+ device.option_add(STR_KBD_MICROSOFT_NATURAL, PC_KBD_MICROSOFT_NATURAL);
+ device.option_add(STR_KBD_IBM_PC_AT_84, PC_KBD_IBM_PC_AT_84);
+ device.option_add(STR_KBD_IBM_3270PC_122, PC_KBD_IBM_3270PC_122);
+}
diff --git a/src/devices/bus/pc_kbd/keyboards.h b/src/devices/bus/pc_kbd/keyboards.h
index a2a375f96ed..a4dc98432c7 100644
--- a/src/devices/bus/pc_kbd/keyboards.h
+++ b/src/devices/bus/pc_kbd/keyboards.h
@@ -19,7 +19,7 @@
#define STR_KBD_EC_1841 "ec1841"
#define STR_KBD_ISKR_1030 "iskr1030"
-SLOT_INTERFACE_EXTERN(pc_xt_keyboards);
+void pc_xt_keyboards(device_slot_interface &device);
// PC AT protocol keyboards
// Reuses STR_KBD_KEYTRONIC_PC3270 (same keyboard in AT protocol mode by default)
@@ -28,6 +28,6 @@ SLOT_INTERFACE_EXTERN(pc_xt_keyboards);
#define STR_KBD_IBM_PC_AT_84 "pcat"
#define STR_KBD_IBM_3270PC_122 "3270pc"
-SLOT_INTERFACE_EXTERN(pc_at_keyboards);
+void pc_at_keyboards(device_slot_interface &device);
#endif // MAME_BUS_PC_KBD_KEYBOARDS_H
diff --git a/src/devices/bus/pet/2joysnd.cpp b/src/devices/bus/pet/2joysnd.cpp
index 8234878e025..db492cef523 100644
--- a/src/devices/bus/pet/2joysnd.cpp
+++ b/src/devices/bus/pet/2joysnd.cpp
@@ -97,7 +97,7 @@ MACHINE_CONFIG_START(pet_userport_joystick_and_sound_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/devices/bus/pet/cass.cpp b/src/devices/bus/pet/cass.cpp
index 67e600d71a7..52b501b68b4 100644
--- a/src/devices/bus/pet/cass.cpp
+++ b/src/devices/bus/pet/cass.cpp
@@ -98,7 +98,8 @@ WRITE_LINE_MEMBER( pet_datassette_port_device::read_w ) { m_read_handler(state);
// SLOT_INTERFACE( cbm_datassette_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( cbm_datassette_devices )
- SLOT_INTERFACE("c2n", C2N)
- SLOT_INTERFACE("c1530", C1530)
-SLOT_INTERFACE_END
+void cbm_datassette_devices(device_slot_interface &device)
+{
+ device.option_add("c2n", C2N);
+ device.option_add("c1530", C1530);
+}
diff --git a/src/devices/bus/pet/cass.h b/src/devices/bus/pet/cass.h
index c906f83754b..c843f58282b 100644
--- a/src/devices/bus/pet/cass.h
+++ b/src/devices/bus/pet/cass.h
@@ -105,6 +105,6 @@ protected:
DECLARE_DEVICE_TYPE(PET_DATASSETTE_PORT, pet_datassette_port_device)
-SLOT_INTERFACE_EXTERN( cbm_datassette_devices );
+void cbm_datassette_devices(device_slot_interface &device);
#endif // MAME_BUS_PET_CASS_H
diff --git a/src/devices/bus/pet/cb2snd.cpp b/src/devices/bus/pet/cb2snd.cpp
index a81bef5dbef..1aa6e67ea8f 100644
--- a/src/devices/bus/pet/cb2snd.cpp
+++ b/src/devices/bus/pet/cb2snd.cpp
@@ -30,7 +30,7 @@ MACHINE_CONFIG_START(pet_userport_cb2_sound_device::device_add_mconfig)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/devices/bus/pet/exp.cpp b/src/devices/bus/pet/exp.cpp
index 90157752444..ab7cc9e04dd 100644
--- a/src/devices/bus/pet/exp.cpp
+++ b/src/devices/bus/pet/exp.cpp
@@ -208,9 +208,10 @@ int pet_expansion_slot_device::phi2()
#include "hsg.h"
#include "superpet.h"
-SLOT_INTERFACE_START( pet_expansion_cards )
- SLOT_INTERFACE("64k", PET_64K)
- SLOT_INTERFACE("hsga", CBM8000_HSG_A)
- SLOT_INTERFACE("hsgb", CBM8000_HSG_B)
- SLOT_INTERFACE("superpet", SUPERPET)
-SLOT_INTERFACE_END
+void pet_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("64k", PET_64K);
+ device.option_add("hsga", CBM8000_HSG_A);
+ device.option_add("hsgb", CBM8000_HSG_B);
+ device.option_add("superpet", SUPERPET);
+}
diff --git a/src/devices/bus/pet/exp.h b/src/devices/bus/pet/exp.h
index 3e941985b16..0bf7db60f05 100644
--- a/src/devices/bus/pet/exp.h
+++ b/src/devices/bus/pet/exp.h
@@ -133,6 +133,6 @@ protected:
DECLARE_DEVICE_TYPE(PET_EXPANSION_SLOT, pet_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( pet_expansion_cards );
+void pet_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_PET_EXP_H
diff --git a/src/devices/bus/pet/user.cpp b/src/devices/bus/pet/user.cpp
index 95b98bad5bf..d0f889db0b6 100644
--- a/src/devices/bus/pet/user.cpp
+++ b/src/devices/bus/pet/user.cpp
@@ -125,9 +125,10 @@ device_pet_user_port_interface::~device_pet_user_port_interface()
#include "cb2snd.h"
#include "2joysnd.h"
-SLOT_INTERFACE_START( pet_user_port_cards )
- SLOT_INTERFACE("diag", PET_USERPORT_DIAGNOSTIC_CONNECTOR)
- SLOT_INTERFACE("petuja", PET_USERPORT_JOYSTICK_ADAPTER)
- SLOT_INTERFACE("cb2snd", PET_USERPORT_CB2_SOUND_DEVICE)
- SLOT_INTERFACE("2joysnd", PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE)
-SLOT_INTERFACE_END
+void pet_user_port_cards(device_slot_interface &device)
+{
+ device.option_add("diag", PET_USERPORT_DIAGNOSTIC_CONNECTOR);
+ device.option_add("petuja", PET_USERPORT_JOYSTICK_ADAPTER);
+ device.option_add("cb2snd", PET_USERPORT_CB2_SOUND_DEVICE);
+ device.option_add("2joysnd", PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE);
+}
diff --git a/src/devices/bus/pet/user.h b/src/devices/bus/pet/user.h
index 04034c492e0..d7753ad23f1 100644
--- a/src/devices/bus/pet/user.h
+++ b/src/devices/bus/pet/user.h
@@ -226,6 +226,6 @@ protected:
};
-SLOT_INTERFACE_EXTERN( pet_user_port_cards );
+void pet_user_port_cards(device_slot_interface &device);
#endif // MAME_BUS_PET_USER_H
diff --git a/src/devices/bus/plus4/c1551.cpp b/src/devices/bus/plus4/c1551.cpp
index 5ca191c0b44..d698dae475d 100644
--- a/src/devices/bus/plus4/c1551.cpp
+++ b/src/devices/bus/plus4/c1551.cpp
@@ -325,9 +325,10 @@ void c1551_device::c1551_mem(address_map &map)
// SLOT_INTERFACE( c1551_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( c1551_floppies )
- SLOT_INTERFACE( "525ssqd", FLOPPY_525_SSQD )
-SLOT_INTERFACE_END
+static void c1551_floppies(device_slot_interface &device)
+{
+ device.option_add("525ssqd", FLOPPY_525_SSQD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/plus4/exp.cpp b/src/devices/bus/plus4/exp.cpp
index 79326a5aef1..d9ee8642eba 100644
--- a/src/devices/bus/plus4/exp.cpp
+++ b/src/devices/bus/plus4/exp.cpp
@@ -200,10 +200,11 @@ void plus4_expansion_slot_device::cd_w(address_space &space, offs_t offset, uint
#include "sid.h"
#include "std.h"
-SLOT_INTERFACE_START( plus4_expansion_cards )
- SLOT_INTERFACE("c1551", C1551)
- SLOT_INTERFACE("sid", PLUS4_SID)
+void plus4_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("c1551", C1551);
+ device.option_add("sid", PLUS4_SID);
// the following need ROMs from the software list
- SLOT_INTERFACE_INTERNAL("standard", PLUS4_STD)
-SLOT_INTERFACE_END
+ device.option_add_internal("standard", PLUS4_STD);
+}
diff --git a/src/devices/bus/plus4/exp.h b/src/devices/bus/plus4/exp.h
index 4a4d583dd5b..9aa7be4d74d 100644
--- a/src/devices/bus/plus4/exp.h
+++ b/src/devices/bus/plus4/exp.h
@@ -179,6 +179,6 @@ protected:
DECLARE_DEVICE_TYPE(PLUS4_EXPANSION_SLOT, plus4_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( plus4_expansion_cards );
+void plus4_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_PLUS4_EXP_H
diff --git a/src/devices/bus/plus4/user.cpp b/src/devices/bus/plus4/user.cpp
index aa0e04d9452..ad02afdc08c 100644
--- a/src/devices/bus/plus4/user.cpp
+++ b/src/devices/bus/plus4/user.cpp
@@ -17,7 +17,8 @@
#include "diag264_lb_user.h"
#include "bus/vic20/vic1011.h"
-SLOT_INTERFACE_START( plus4_user_port_cards )
- SLOT_INTERFACE("diag264", DIAG264_USER_PORT_LOOPBACK)
- SLOT_INTERFACE("rs232", VIC1011)
-SLOT_INTERFACE_END
+void plus4_user_port_cards(device_slot_interface &device)
+{
+ device.option_add("diag264", DIAG264_USER_PORT_LOOPBACK);
+ device.option_add("rs232", VIC1011);
+}
diff --git a/src/devices/bus/plus4/user.h b/src/devices/bus/plus4/user.h
index 8aac44235de..1f398a102ae 100644
--- a/src/devices/bus/plus4/user.h
+++ b/src/devices/bus/plus4/user.h
@@ -28,6 +28,6 @@
#include "bus/vic20/user.h"
-SLOT_INTERFACE_EXTERN( plus4_user_port_cards );
+void plus4_user_port_cards(device_slot_interface &device);
#endif // MAME_BUS_PLUS4_USER_H
diff --git a/src/devices/bus/pofo/ccm.cpp b/src/devices/bus/pofo/ccm.cpp
index 9619be68712..9562ddfecd6 100644
--- a/src/devices/bus/pofo/ccm.cpp
+++ b/src/devices/bus/pofo/ccm.cpp
@@ -104,7 +104,8 @@ std::string portfolio_memory_card_slot_device::get_default_card_software(get_def
#include "ram.h"
#include "rom.h"
-SLOT_INTERFACE_START( portfolio_memory_cards )
- SLOT_INTERFACE("ram", PORTFOLIO_RAM_CARD)
- SLOT_INTERFACE("rom", PORTFOLIO_ROM_CARD)
-SLOT_INTERFACE_END
+void portfolio_memory_cards(device_slot_interface &device)
+{
+ device.option_add("ram", PORTFOLIO_RAM_CARD);
+ device.option_add("rom", PORTFOLIO_ROM_CARD);
+}
diff --git a/src/devices/bus/pofo/ccm.h b/src/devices/bus/pofo/ccm.h
index a71ac4de544..b7deab09c69 100644
--- a/src/devices/bus/pofo/ccm.h
+++ b/src/devices/bus/pofo/ccm.h
@@ -145,7 +145,7 @@ protected:
DECLARE_DEVICE_TYPE(PORTFOLIO_MEMORY_CARD_SLOT, portfolio_memory_card_slot_device)
-SLOT_INTERFACE_EXTERN( portfolio_memory_cards );
+void portfolio_memory_cards(device_slot_interface &device);
diff --git a/src/devices/bus/pofo/exp.cpp b/src/devices/bus/pofo/exp.cpp
index 37991dd8989..f8a892fbe6c 100644
--- a/src/devices/bus/pofo/exp.cpp
+++ b/src/devices/bus/pofo/exp.cpp
@@ -96,9 +96,10 @@ void portfolio_expansion_slot_device::device_reset()
#include "hpc102.h"
#include "hpc104.h"
-SLOT_INTERFACE_START( portfolio_expansion_cards )
- SLOT_INTERFACE("lpt", POFO_HPC101)
- SLOT_INTERFACE("uart", POFO_HPC102)
- SLOT_INTERFACE("ram", POFO_HPC104)
- SLOT_INTERFACE("ram2", POFO_HPC104_2)
-SLOT_INTERFACE_END
+void portfolio_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("lpt", POFO_HPC101);
+ device.option_add("uart", POFO_HPC102);
+ device.option_add("ram", POFO_HPC104);
+ device.option_add("ram2", POFO_HPC104_2);
+}
diff --git a/src/devices/bus/pofo/exp.h b/src/devices/bus/pofo/exp.h
index fadf724b68f..08db6ef24ee 100644
--- a/src/devices/bus/pofo/exp.h
+++ b/src/devices/bus/pofo/exp.h
@@ -156,6 +156,6 @@ protected:
DECLARE_DEVICE_TYPE(PORTFOLIO_EXPANSION_SLOT, portfolio_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( portfolio_expansion_cards );
+void portfolio_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_POFO_EXP_H
diff --git a/src/devices/bus/psi_kbd/psi_kbd.cpp b/src/devices/bus/psi_kbd/psi_kbd.cpp
index 2b6ad60f90e..36a29518213 100644
--- a/src/devices/bus/psi_kbd/psi_kbd.cpp
+++ b/src/devices/bus/psi_kbd/psi_kbd.cpp
@@ -106,7 +106,8 @@ device_psi_keyboard_interface::~device_psi_keyboard_interface()
// SLOT INTERFACE
//**************************************************************************
-SLOT_INTERFACE_START( psi_keyboard_devices )
- SLOT_INTERFACE("ergoline", ERGOLINE_KEYBOARD)
- SLOT_INTERFACE("hle", PSI_HLE_KEYBOARD)
-SLOT_INTERFACE_END
+void psi_keyboard_devices(device_slot_interface &device)
+{
+ device.option_add("ergoline", ERGOLINE_KEYBOARD);
+ device.option_add("hle", PSI_HLE_KEYBOARD);
+}
diff --git a/src/devices/bus/psi_kbd/psi_kbd.h b/src/devices/bus/psi_kbd/psi_kbd.h
index 2381ccc97be..1b35adca1c6 100644
--- a/src/devices/bus/psi_kbd/psi_kbd.h
+++ b/src/devices/bus/psi_kbd/psi_kbd.h
@@ -109,7 +109,7 @@ protected:
DECLARE_DEVICE_TYPE(PSI_KEYBOARD_INTERFACE, psi_keyboard_bus_device)
// supported devices
-SLOT_INTERFACE_EXTERN( psi_keyboard_devices );
+void psi_keyboard_devices(device_slot_interface &device);
#endif // MAME_BUS_PSI_KBD_PSI_KBD_H
diff --git a/src/devices/bus/psx/ctlrport.cpp b/src/devices/bus/psx/ctlrport.cpp
index 328c338c45f..2c9dd6ee957 100644
--- a/src/devices/bus/psx/ctlrport.cpp
+++ b/src/devices/bus/psx/ctlrport.cpp
@@ -58,18 +58,20 @@ void psxcontrollerports_device::device_start()
// add controllers to define so they can be connected to the multitap
#define PSX_CONTROLLERS \
- SLOT_INTERFACE("digital_pad", PSX_STANDARD_CONTROLLER) \
- SLOT_INTERFACE("dualshock_pad", PSX_DUALSHOCK) \
- SLOT_INTERFACE("analog_joystick", PSX_ANALOG_JOYSTICK)
+ device.option_add("digital_pad", PSX_STANDARD_CONTROLLER); \
+ device.option_add("dualshock_pad", PSX_DUALSHOCK); \
+ device.option_add("analog_joystick", PSX_ANALOG_JOYSTICK);
-SLOT_INTERFACE_START(psx_controllers)
+void psx_controllers(device_slot_interface &device)
+{
PSX_CONTROLLERS
- SLOT_INTERFACE("multitap", PSX_MULTITAP)
-SLOT_INTERFACE_END
+ device.option_add("multitap", PSX_MULTITAP);
+}
-SLOT_INTERFACE_START(psx_controllers_nomulti)
+void psx_controllers_nomulti(device_slot_interface &device)
+{
PSX_CONTROLLERS
-SLOT_INTERFACE_END
+}
WRITE_LINE_MEMBER(psxcontrollerports_device::write_dtr)
{
diff --git a/src/devices/bus/psx/ctlrport.h b/src/devices/bus/psx/ctlrport.h
index 55c8d4473d3..3c6a44da0eb 100644
--- a/src/devices/bus/psx/ctlrport.h
+++ b/src/devices/bus/psx/ctlrport.h
@@ -12,7 +12,7 @@
MCFG_DEVICE_ADD(_tag, PSX_CONTROLLER_PORT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-SLOT_INTERFACE_EXTERN(psx_controllers);
+void psx_controllers(device_slot_interface &device);
DECLARE_DEVICE_TYPE(PSXCONTROLLERPORTS, psxcontrollerports_device)
DECLARE_DEVICE_TYPE(PSX_CONTROLLER_PORT, psx_controller_port_device)
diff --git a/src/devices/bus/psx/gamebooster.cpp b/src/devices/bus/psx/gamebooster.cpp
index 9b50b4754a0..230ebfea49b 100644
--- a/src/devices/bus/psx/gamebooster.cpp
+++ b/src/devices/bus/psx/gamebooster.cpp
@@ -117,37 +117,38 @@ WRITE16_MEMBER(psx_gamebooster_device::exp_w)
}
}
-static SLOT_INTERFACE_START(gb_cart)
- SLOT_INTERFACE_INTERNAL("rom", GB_STD_ROM)
- SLOT_INTERFACE_INTERNAL("rom_mbc1", GB_ROM_MBC1)
- SLOT_INTERFACE_INTERNAL("rom_mbc1col", GB_ROM_MBC1)
- SLOT_INTERFACE_INTERNAL("rom_mbc2", GB_ROM_MBC2)
- SLOT_INTERFACE_INTERNAL("rom_mbc3", GB_ROM_MBC3)
- SLOT_INTERFACE_INTERNAL("rom_huc1", GB_ROM_MBC3)
- SLOT_INTERFACE_INTERNAL("rom_huc3", GB_ROM_MBC3)
- SLOT_INTERFACE_INTERNAL("rom_mbc5", GB_ROM_MBC5)
- SLOT_INTERFACE_INTERNAL("rom_mbc6", GB_ROM_MBC6)
- SLOT_INTERFACE_INTERNAL("rom_mbc7", GB_ROM_MBC7)
- SLOT_INTERFACE_INTERNAL("rom_tama5", GB_ROM_TAMA5)
- SLOT_INTERFACE_INTERNAL("rom_mmm01", GB_ROM_MMM01)
- SLOT_INTERFACE_INTERNAL("rom_m161", GB_ROM_M161)
- SLOT_INTERFACE_INTERNAL("rom_sachen1", GB_ROM_SACHEN1)
- SLOT_INTERFACE_INTERNAL("rom_sachen2", GB_ROM_SACHEN2)
- SLOT_INTERFACE_INTERNAL("rom_wisdom", GB_ROM_WISDOM)
- SLOT_INTERFACE_INTERNAL("rom_yong", GB_ROM_YONG)
- SLOT_INTERFACE_INTERNAL("rom_lasama", GB_ROM_LASAMA)
- SLOT_INTERFACE_INTERNAL("rom_atvrac", GB_ROM_ATVRAC)
- SLOT_INTERFACE_INTERNAL("rom_camera", GB_STD_ROM)
- SLOT_INTERFACE_INTERNAL("rom_188in1", GB_ROM_188IN1)
- SLOT_INTERFACE_INTERNAL("rom_sintax", GB_ROM_SINTAX)
- SLOT_INTERFACE_INTERNAL("rom_chong", GB_ROM_CHONGWU)
- SLOT_INTERFACE_INTERNAL("rom_licheng", GB_ROM_LICHENG)
- SLOT_INTERFACE_INTERNAL("rom_digimon", GB_ROM_DIGIMON)
- SLOT_INTERFACE_INTERNAL("rom_rock8", GB_ROM_ROCKMAN8)
- SLOT_INTERFACE_INTERNAL("rom_sm3sp", GB_ROM_SM3SP)
-// SLOT_INTERFACE_INTERNAL("rom_dkong5", GB_ROM_DKONG5)
-// SLOT_INTERFACE_INTERNAL("rom_unk01", GB_ROM_UNK01)
-SLOT_INTERFACE_END
+static void gb_cart(device_slot_interface &device)
+{
+ device.option_add_internal("rom", GB_STD_ROM);
+ device.option_add_internal("rom_mbc1", GB_ROM_MBC1);
+ device.option_add_internal("rom_mbc1col", GB_ROM_MBC1);
+ device.option_add_internal("rom_mbc2", GB_ROM_MBC2);
+ device.option_add_internal("rom_mbc3", GB_ROM_MBC3);
+ device.option_add_internal("rom_huc1", GB_ROM_MBC3);
+ device.option_add_internal("rom_huc3", GB_ROM_MBC3);
+ device.option_add_internal("rom_mbc5", GB_ROM_MBC5);
+ device.option_add_internal("rom_mbc6", GB_ROM_MBC6);
+ device.option_add_internal("rom_mbc7", GB_ROM_MBC7);
+ device.option_add_internal("rom_tama5", GB_ROM_TAMA5);
+ device.option_add_internal("rom_mmm01", GB_ROM_MMM01);
+ device.option_add_internal("rom_m161", GB_ROM_M161);
+ device.option_add_internal("rom_sachen1", GB_ROM_SACHEN1);
+ device.option_add_internal("rom_sachen2", GB_ROM_SACHEN2);
+ device.option_add_internal("rom_wisdom", GB_ROM_WISDOM);
+ device.option_add_internal("rom_yong", GB_ROM_YONG);
+ device.option_add_internal("rom_lasama", GB_ROM_LASAMA);
+ device.option_add_internal("rom_atvrac", GB_ROM_ATVRAC);
+ device.option_add_internal("rom_camera", GB_STD_ROM);
+ device.option_add_internal("rom_188in1", GB_ROM_188IN1);
+ device.option_add_internal("rom_sintax", GB_ROM_SINTAX);
+ device.option_add_internal("rom_chong", GB_ROM_CHONGWU);
+ device.option_add_internal("rom_licheng", GB_ROM_LICHENG);
+ device.option_add_internal("rom_digimon", GB_ROM_DIGIMON);
+ device.option_add_internal("rom_rock8", GB_ROM_ROCKMAN8);
+ device.option_add_internal("rom_sm3sp", GB_ROM_SM3SP);
+// device.option_add_internal("rom_dkong5", GB_ROM_DKONG5);
+// device.option_add_internal("rom_unk01", GB_ROM_UNK01);
+}
MACHINE_CONFIG_START(psx_gamebooster_device::device_add_mconfig)
/* cartslot */
diff --git a/src/devices/bus/psx/multitap.h b/src/devices/bus/psx/multitap.h
index e4b40f1caf1..0ac7e6626f7 100644
--- a/src/devices/bus/psx/multitap.h
+++ b/src/devices/bus/psx/multitap.h
@@ -5,7 +5,7 @@
#include "ctlrport.h"
-SLOT_INTERFACE_EXTERN(psx_controllers_nomulti);
+void psx_controllers_nomulti(device_slot_interface &device);
class psx_multitap_device : public device_t,
public device_psx_controller_interface
diff --git a/src/devices/bus/psx/parallel.cpp b/src/devices/bus/psx/parallel.cpp
index 4fa5b29da66..b7947e11921 100644
--- a/src/devices/bus/psx/parallel.cpp
+++ b/src/devices/bus/psx/parallel.cpp
@@ -108,7 +108,8 @@ WRITE16_MEMBER(psx_parallel_slot_device::exp_w)
// slot devices
#include "gamebooster.h"
-SLOT_INTERFACE_START( psx_parallel_devices )
- SLOT_INTERFACE("gamebooster", PSX_GAMEBOOSTER)
-SLOT_INTERFACE_END
+void psx_parallel_devices(device_slot_interface &device)
+{
+ device.option_add("gamebooster", PSX_GAMEBOOSTER);
+}
diff --git a/src/devices/bus/psx/parallel.h b/src/devices/bus/psx/parallel.h
index 4ef05c52233..129b123ba3f 100644
--- a/src/devices/bus/psx/parallel.h
+++ b/src/devices/bus/psx/parallel.h
@@ -68,7 +68,7 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(PSX_PARALLEL_SLOT, psx_parallel_slot_device)
-SLOT_INTERFACE_EXTERN( psx_parallel_devices );
+void psx_parallel_devices(device_slot_interface &device);
#endif // MAME_BUS_PSX_PARALLEL_H
diff --git a/src/devices/bus/ql/exp.cpp b/src/devices/bus/ql/exp.cpp
index 89c73d4a08a..24b62b08015 100644
--- a/src/devices/bus/ql/exp.cpp
+++ b/src/devices/bus/ql/exp.cpp
@@ -89,23 +89,24 @@ void ql_expansion_slot_device::device_start()
#include "sandy_superqboard.h"
#include "trumpcard.h"
-SLOT_INTERFACE_START( ql_expansion_cards )
- SLOT_INTERFACE("qdisc", CST_QL_DISC_INTERFACE)
- SLOT_INTERFACE("qplus4", CST_Q_PLUS4)
- SLOT_INTERFACE("cumanafdi", CUMANA_FLOPPY_DISK_INTERFACE)
- SLOT_INTERFACE("kdi", KEMPSTON_DISK_INTERFACE)
- SLOT_INTERFACE("mpfdi", MICRO_PERIPHERALS_FLOPPY_DISK_INTERFACE)
- SLOT_INTERFACE("gold", MIRACLE_GOLD_CARD)
- SLOT_INTERFACE("pcmlqdi", PCML_Q_DISK_INTERFACE)
- SLOT_INTERFACE("qubide", QUBIDE)
- SLOT_INTERFACE("sdisk", SANDY_SUPER_DISK)
- SLOT_INTERFACE("sqboard", SANDY_SUPERQBOARD)
- SLOT_INTERFACE("sqboard512k", SANDY_SUPERQBOARD_512K)
- SLOT_INTERFACE("sqmouse", SANDY_SUPERQMOUSE)
- SLOT_INTERFACE("sqmouse512k", SANDY_SUPERQMOUSE_512K)
- SLOT_INTERFACE("opdbasic", OPD_BASIC_MASTER)
- SLOT_INTERFACE("trump", QL_TRUMP_CARD)
- SLOT_INTERFACE("trump256k", QL_TRUMP_CARD_256K)
- SLOT_INTERFACE("trump512k", QL_TRUMP_CARD_512K)
- SLOT_INTERFACE("trump768k", QL_TRUMP_CARD_768K)
-SLOT_INTERFACE_END
+void ql_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("qdisc", CST_QL_DISC_INTERFACE);
+ device.option_add("qplus4", CST_Q_PLUS4);
+ device.option_add("cumanafdi", CUMANA_FLOPPY_DISK_INTERFACE);
+ device.option_add("kdi", KEMPSTON_DISK_INTERFACE);
+ device.option_add("mpfdi", MICRO_PERIPHERALS_FLOPPY_DISK_INTERFACE);
+ device.option_add("gold", MIRACLE_GOLD_CARD);
+ device.option_add("pcmlqdi", PCML_Q_DISK_INTERFACE);
+ device.option_add("qubide", QUBIDE);
+ device.option_add("sdisk", SANDY_SUPER_DISK);
+ device.option_add("sqboard", SANDY_SUPERQBOARD);
+ device.option_add("sqboard512k", SANDY_SUPERQBOARD_512K);
+ device.option_add("sqmouse", SANDY_SUPERQMOUSE);
+ device.option_add("sqmouse512k", SANDY_SUPERQMOUSE_512K);
+ device.option_add("opdbasic", OPD_BASIC_MASTER);
+ device.option_add("trump", QL_TRUMP_CARD);
+ device.option_add("trump256k", QL_TRUMP_CARD_256K);
+ device.option_add("trump512k", QL_TRUMP_CARD_512K);
+ device.option_add("trump768k", QL_TRUMP_CARD_768K);
+}
diff --git a/src/devices/bus/ql/exp.h b/src/devices/bus/ql/exp.h
index bdb9e98808a..e8aa5ea3570 100644
--- a/src/devices/bus/ql/exp.h
+++ b/src/devices/bus/ql/exp.h
@@ -141,7 +141,7 @@ protected:
DECLARE_DEVICE_TYPE(QL_EXPANSION_SLOT, ql_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( ql_expansion_cards );
+void ql_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_QL_EXP_H
diff --git a/src/devices/bus/ql/rom.cpp b/src/devices/bus/ql/rom.cpp
index 27d46b5c47b..2edf6c36cf8 100644
--- a/src/devices/bus/ql/rom.cpp
+++ b/src/devices/bus/ql/rom.cpp
@@ -117,9 +117,10 @@ std::string ql_rom_cartridge_slot_device::get_default_card_software(get_default_
#include "miracle_hd.h"
#include "std.h"
-SLOT_INTERFACE_START( ql_rom_cartridge_cards )
- SLOT_INTERFACE("mhd", MIRACLE_HARD_DISK)
+void ql_rom_cartridge_cards(device_slot_interface &device)
+{
+ device.option_add("mhd", MIRACLE_HARD_DISK);
// the following need ROMs from the software list
- SLOT_INTERFACE_INTERNAL("standard", QL_STANDARD_ROM_CARTRIDGE)
-SLOT_INTERFACE_END
+ device.option_add_internal("standard", QL_STANDARD_ROM_CARTRIDGE);
+}
diff --git a/src/devices/bus/ql/rom.h b/src/devices/bus/ql/rom.h
index 72b4d75dc2f..20774d7c3ba 100644
--- a/src/devices/bus/ql/rom.h
+++ b/src/devices/bus/ql/rom.h
@@ -117,6 +117,6 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(QL_ROM_CARTRIDGE_SLOT, ql_rom_cartridge_slot_device)
-SLOT_INTERFACE_EXTERN( ql_rom_cartridge_cards );
+void ql_rom_cartridge_cards(device_slot_interface &device);
#endif // MAME_BUS_QL_ROM_H
diff --git a/src/devices/bus/ql/sandy_superdisk.cpp b/src/devices/bus/ql/sandy_superdisk.cpp
index 5419a4f22a1..b224ae8afc0 100644
--- a/src/devices/bus/ql/sandy_superdisk.cpp
+++ b/src/devices/bus/ql/sandy_superdisk.cpp
@@ -52,9 +52,10 @@ const tiny_rom_entry *sandy_super_disk_device::device_rom_region() const
// SLOT_INTERFACE( sandy_super_disk_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( sandy_super_disk_floppies )
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
-SLOT_INTERFACE_END
+static void sandy_super_disk_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/ql/sandy_superqboard.cpp b/src/devices/bus/ql/sandy_superqboard.cpp
index 3965736bd01..92d4435aeb3 100644
--- a/src/devices/bus/ql/sandy_superqboard.cpp
+++ b/src/devices/bus/ql/sandy_superqboard.cpp
@@ -64,10 +64,11 @@ const tiny_rom_entry *sandy_superqboard_device::device_rom_region() const
// SLOT_INTERFACE( sandy_superqboard_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( sandy_superqboard_floppies )
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
- SLOT_INTERFACE( "35hd", FLOPPY_35_HD )
-SLOT_INTERFACE_END
+static void sandy_superqboard_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD);
+ device.option_add("35hd", FLOPPY_35_HD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/ql/trumpcard.cpp b/src/devices/bus/ql/trumpcard.cpp
index e1079b1826b..a853bc63fa7 100644
--- a/src/devices/bus/ql/trumpcard.cpp
+++ b/src/devices/bus/ql/trumpcard.cpp
@@ -67,9 +67,10 @@ const tiny_rom_entry *ql_trump_card_device::device_rom_region() const
// SLOT_INTERFACE( ql_trump_card_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( ql_trump_card_floppies )
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
-SLOT_INTERFACE_END
+static void ql_trump_card_floppies(device_slot_interface &device)
+{
+ device.option_add("35dd", FLOPPY_35_DD);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/rs232/rs232.cpp b/src/devices/bus/rs232/rs232.cpp
index c61bb9676fd..1db03002775 100644
--- a/src/devices/bus/rs232/rs232.cpp
+++ b/src/devices/bus/rs232/rs232.cpp
@@ -168,14 +168,15 @@ device_rs232_port_interface::~device_rs232_port_interface()
#include "terminal.h"
#include "ie15.h"
-SLOT_INTERFACE_START( default_rs232_devices )
- SLOT_INTERFACE("keyboard", SERIAL_KEYBOARD)
- SLOT_INTERFACE("loopback", RS232_LOOPBACK)
- SLOT_INTERFACE("dec_loopback", DEC_RS232_LOOPBACK)
- SLOT_INTERFACE("null_modem", NULL_MODEM)
- SLOT_INTERFACE("printer", SERIAL_PRINTER)
- SLOT_INTERFACE("terminal", SERIAL_TERMINAL)
- SLOT_INTERFACE("pty", PSEUDO_TERMINAL)
- SLOT_INTERFACE("sunkbd", SUN_KBD_ADAPTOR)
- SLOT_INTERFACE("ie15", SERIAL_TERMINAL_IE15)
-SLOT_INTERFACE_END
+void default_rs232_devices(device_slot_interface &device)
+{
+ device.option_add("keyboard", SERIAL_KEYBOARD);
+ device.option_add("loopback", RS232_LOOPBACK);
+ device.option_add("dec_loopback", DEC_RS232_LOOPBACK);
+ device.option_add("null_modem", NULL_MODEM);
+ device.option_add("printer", SERIAL_PRINTER);
+ device.option_add("terminal", SERIAL_TERMINAL);
+ device.option_add("pty", PSEUDO_TERMINAL);
+ device.option_add("sunkbd", SUN_KBD_ADAPTOR);
+ device.option_add("ie15", SERIAL_TERMINAL_IE15);
+}
diff --git a/src/devices/bus/rs232/rs232.h b/src/devices/bus/rs232/rs232.h
index b73a7d817bf..1f459ec3860 100644
--- a/src/devices/bus/rs232/rs232.h
+++ b/src/devices/bus/rs232/rs232.h
@@ -119,12 +119,20 @@
class device_rs232_port_interface;
-class rs232_port_device : public device_t,
- public device_slot_interface
+class rs232_port_device : public device_t, public device_slot_interface
{
friend class device_rs232_port_interface;
public:
+ template <typename T>
+ rs232_port_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt)
+ : rs232_port_device(mconfig, tag, owner, 0)
+ {
+ option_reset();
+ opts(*this);
+ set_default_option(dflt);
+ set_fixed(false);
+ }
rs232_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~rs232_port_device();
@@ -313,6 +321,6 @@ protected:
DECLARE_DEVICE_TYPE(RS232_PORT, rs232_port_device)
-SLOT_INTERFACE_EXTERN( default_rs232_devices );
+void default_rs232_devices(device_slot_interface &device);
#endif // MAME_BUS_RS232_RS232_H
diff --git a/src/devices/bus/s100/dj2db.cpp b/src/devices/bus/s100/dj2db.cpp
index 78ac2ae6ad8..808abeb5a0b 100644
--- a/src/devices/bus/s100/dj2db.cpp
+++ b/src/devices/bus/s100/dj2db.cpp
@@ -69,9 +69,10 @@ WRITE_LINE_MEMBER( s100_dj2db_device::fr_w )
// S1602 RRC/TRC
}
-static SLOT_INTERFACE_START( s100_dj2db_floppies )
- SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD )
-SLOT_INTERFACE_END
+static void s100_dj2db_floppies(device_slot_interface &device)
+{
+ device.option_add("8dsdd", FLOPPY_8_DSDD);
+}
WRITE_LINE_MEMBER( s100_dj2db_device::fdc_intrq_w )
{
diff --git a/src/devices/bus/s100/nsmdsa.cpp b/src/devices/bus/s100/nsmdsa.cpp
index a54bbc0c1a1..3a2ab33b594 100644
--- a/src/devices/bus/s100/nsmdsa.cpp
+++ b/src/devices/bus/s100/nsmdsa.cpp
@@ -47,9 +47,10 @@ const tiny_rom_entry *s100_mds_a_device::device_rom_region() const
// SLOT_INTERFACE( mds_a_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( mds_a_floppies )
- SLOT_INTERFACE( "525sd", FLOPPY_525_SD ) // Shugart SA-400
-SLOT_INTERFACE_END
+static void mds_a_floppies(device_slot_interface &device)
+{
+ device.option_add("525sd", FLOPPY_525_SD); // Shugart SA-400
+}
//-------------------------------------------------
diff --git a/src/devices/bus/s100/nsmdsad.cpp b/src/devices/bus/s100/nsmdsad.cpp
index 80c75dd935f..21c25e7dcbc 100644
--- a/src/devices/bus/s100/nsmdsad.cpp
+++ b/src/devices/bus/s100/nsmdsad.cpp
@@ -48,9 +48,10 @@ const tiny_rom_entry *s100_mds_ad_device::device_rom_region() const
// SLOT_INTERFACE( mds_ad_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( mds_ad_floppies )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) // Shugart SA-400
-SLOT_INTERFACE_END
+static void mds_ad_floppies(device_slot_interface &device)
+{
+ device.option_add("525dd", FLOPPY_525_DD); // Shugart SA-400
+}
//-------------------------------------------------
diff --git a/src/devices/bus/s100/wunderbus.cpp b/src/devices/bus/s100/wunderbus.cpp
index 4e0a68c4c6d..7e69c845be1 100644
--- a/src/devices/bus/s100/wunderbus.cpp
+++ b/src/devices/bus/s100/wunderbus.cpp
@@ -116,7 +116,7 @@ MACHINE_CONFIG_START(s100_wunderbus_device::device_add_mconfig)
MCFG_RS232_DSR_HANDLER(DEVWRITELINE(INS8250_1_TAG, ins8250_uart_device, dsr_w))
MCFG_RS232_RI_HANDLER(DEVWRITELINE(INS8250_1_TAG, ins8250_uart_device, ri_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE(INS8250_1_TAG, ins8250_uart_device, cts_w))
- MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal)
+ MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal)
MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE(INS8250_2_TAG, ins8250_uart_device, rx_w))
diff --git a/src/devices/bus/sat_ctrl/ctrl.cpp b/src/devices/bus/sat_ctrl/ctrl.cpp
index 93a09176aa4..ebe435655ab 100644
--- a/src/devices/bus/sat_ctrl/ctrl.cpp
+++ b/src/devices/bus/sat_ctrl/ctrl.cpp
@@ -125,20 +125,22 @@ uint16_t saturn_control_port_device::read_direct()
// SLOT_INTERFACE( saturn_controls )
//-------------------------------------------------
-SLOT_INTERFACE_START( saturn_controls )
- SLOT_INTERFACE("joypad", SATURN_JOY)
- SLOT_INTERFACE("racing", SATURN_WHEEL)
- SLOT_INTERFACE("analog", SATURN_ANALOG)
-// SLOT_INTERFACE("lightgun", SATURN_LIGHTGUN)
- SLOT_INTERFACE("trackball", SATURN_TRACK)
- SLOT_INTERFACE("keyboard", SATURN_KEYBD)
- SLOT_INTERFACE("joy_md3", SATURN_JOYMD3B)
- SLOT_INTERFACE("joy_md6", SATURN_JOYMD6B)
- SLOT_INTERFACE("mouse", SATURN_MOUSE)
- SLOT_INTERFACE("multitap", SATURN_MULTITAP)
- SLOT_INTERFACE("segatap", SATURN_SEGATAP)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( saturn_joys )
- SLOT_INTERFACE("joypad", SATURN_JOY)
-SLOT_INTERFACE_END
+void saturn_controls(device_slot_interface &device)
+{
+ device.option_add("joypad", SATURN_JOY);
+ device.option_add("racing", SATURN_WHEEL);
+ device.option_add("analog", SATURN_ANALOG);
+// device.option_add("lightgun", SATURN_LIGHTGUN);
+ device.option_add("trackball", SATURN_TRACK);
+ device.option_add("keyboard", SATURN_KEYBD);
+ device.option_add("joy_md3", SATURN_JOYMD3B);
+ device.option_add("joy_md6", SATURN_JOYMD6B);
+ device.option_add("mouse", SATURN_MOUSE);
+ device.option_add("multitap", SATURN_MULTITAP);
+ device.option_add("segatap", SATURN_SEGATAP);
+}
+
+void saturn_joys(device_slot_interface &device)
+{
+ device.option_add("joypad", SATURN_JOY);
+}
diff --git a/src/devices/bus/sat_ctrl/ctrl.h b/src/devices/bus/sat_ctrl/ctrl.h
index 13e30459c01..913664777c2 100644
--- a/src/devices/bus/sat_ctrl/ctrl.h
+++ b/src/devices/bus/sat_ctrl/ctrl.h
@@ -75,8 +75,8 @@ DECLARE_DEVICE_TYPE(SATURN_CONTROL_PORT, saturn_control_port_device)
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-SLOT_INTERFACE_EXTERN( saturn_controls );
-SLOT_INTERFACE_EXTERN( saturn_joys );
+void saturn_controls(device_slot_interface &device);
+void saturn_joys(device_slot_interface &device);
#endif // MAME_BUS_SAT_CTRL_CTRL_H
diff --git a/src/devices/bus/sega8/ccatch.cpp b/src/devices/bus/sega8/ccatch.cpp
index f5b82e5f2b3..cbe9840bae7 100644
--- a/src/devices/bus/sega8/ccatch.cpp
+++ b/src/devices/bus/sega8/ccatch.cpp
@@ -48,9 +48,10 @@ WRITE8_MEMBER(sega8_cardcatch_device::write_cart)
logerror("Attempt to write to MyCard\n");
}
-static SLOT_INTERFACE_START(sg1000_card)
- SLOT_INTERFACE_INTERNAL("rom", SEGA8_ROM_STD)
-SLOT_INTERFACE_END
+static void sg1000_card(device_slot_interface &device)
+{
+ device.option_add_internal("rom", SEGA8_ROM_STD);
+}
MACHINE_CONFIG_START(sega8_cardcatch_device::device_add_mconfig)
MCFG_SG1000_CARD_ADD("cardslot", sg1000_card, nullptr)
diff --git a/src/devices/bus/sega8/sega8_slot.cpp b/src/devices/bus/sega8/sega8_slot.cpp
index de02af4f279..3242654b829 100644
--- a/src/devices/bus/sega8/sega8_slot.cpp
+++ b/src/devices/bus/sega8/sega8_slot.cpp
@@ -806,54 +806,58 @@ void sega8_cart_slot_device::internal_header_logging(uint8_t *ROM, uint32_t len,
#include "ccatch.h"
#include "mgear.h"
-SLOT_INTERFACE_START(sg1000_cart)
- SLOT_INTERFACE_INTERNAL("rom", SEGA8_ROM_STD)
- SLOT_INTERFACE_INTERNAL("othello", SEGA8_ROM_OTHELLO)
- SLOT_INTERFACE_INTERNAL("castle", SEGA8_ROM_CASTLE)
- SLOT_INTERFACE_INTERNAL("terebi", SEGA8_ROM_TEREBI)
- SLOT_INTERFACE_INTERNAL("level3", SEGA8_ROM_BASIC_L3)
- SLOT_INTERFACE_INTERNAL("music_editor", SEGA8_ROM_MUSIC_EDITOR)
- SLOT_INTERFACE_INTERNAL("dahjee_typea", SEGA8_ROM_DAHJEE_TYPEA)
- SLOT_INTERFACE_INTERNAL("dahjee_typeb", SEGA8_ROM_DAHJEE_TYPEB)
- SLOT_INTERFACE_INTERNAL("cardcatcher", SEGA8_ROM_CARDCATCH)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START(sg1000mk3_cart)
- SLOT_INTERFACE_INTERNAL("rom", SEGA8_ROM_STD)
- SLOT_INTERFACE_INTERNAL("terebi", SEGA8_ROM_TEREBI)
- SLOT_INTERFACE_INTERNAL("codemasters", SEGA8_ROM_CODEMASTERS)
- SLOT_INTERFACE_INTERNAL("4pak", SEGA8_ROM_4PAK)
- SLOT_INTERFACE_INTERNAL("zemina", SEGA8_ROM_ZEMINA)
- SLOT_INTERFACE_INTERNAL("nemesis", SEGA8_ROM_NEMESIS)
- SLOT_INTERFACE_INTERNAL("janggun", SEGA8_ROM_JANGGUN)
- SLOT_INTERFACE_INTERNAL("hicom", SEGA8_ROM_HICOM)
- SLOT_INTERFACE_INTERNAL("korean", SEGA8_ROM_KOREAN)
- SLOT_INTERFACE_INTERNAL("korean_nb", SEGA8_ROM_KOREAN_NB)
- SLOT_INTERFACE_INTERNAL("seojin", SEGA8_ROM_SEOJIN)
- SLOT_INTERFACE_INTERNAL("othello", SEGA8_ROM_OTHELLO)
- SLOT_INTERFACE_INTERNAL("castle", SEGA8_ROM_CASTLE)
- SLOT_INTERFACE_INTERNAL("dahjee_typea", SEGA8_ROM_DAHJEE_TYPEA)
- SLOT_INTERFACE_INTERNAL("dahjee_typeb", SEGA8_ROM_DAHJEE_TYPEB)
+void sg1000_cart(device_slot_interface &device)
+{
+ device.option_add_internal("rom", SEGA8_ROM_STD);
+ device.option_add_internal("othello", SEGA8_ROM_OTHELLO);
+ device.option_add_internal("castle", SEGA8_ROM_CASTLE);
+ device.option_add_internal("terebi", SEGA8_ROM_TEREBI);
+ device.option_add_internal("level3", SEGA8_ROM_BASIC_L3);
+ device.option_add_internal("music_editor", SEGA8_ROM_MUSIC_EDITOR);
+ device.option_add_internal("dahjee_typea", SEGA8_ROM_DAHJEE_TYPEA);
+ device.option_add_internal("dahjee_typeb", SEGA8_ROM_DAHJEE_TYPEB);
+ device.option_add_internal("cardcatcher", SEGA8_ROM_CARDCATCH);
+}
+
+void sg1000mk3_cart(device_slot_interface &device)
+{
+ device.option_add_internal("rom", SEGA8_ROM_STD);
+ device.option_add_internal("terebi", SEGA8_ROM_TEREBI);
+ device.option_add_internal("codemasters", SEGA8_ROM_CODEMASTERS);
+ device.option_add_internal("4pak", SEGA8_ROM_4PAK);
+ device.option_add_internal("zemina", SEGA8_ROM_ZEMINA);
+ device.option_add_internal("nemesis", SEGA8_ROM_NEMESIS);
+ device.option_add_internal("janggun", SEGA8_ROM_JANGGUN);
+ device.option_add_internal("hicom", SEGA8_ROM_HICOM);
+ device.option_add_internal("korean", SEGA8_ROM_KOREAN);
+ device.option_add_internal("korean_nb", SEGA8_ROM_KOREAN_NB);
+ device.option_add_internal("seojin", SEGA8_ROM_SEOJIN);
+ device.option_add_internal("othello", SEGA8_ROM_OTHELLO);
+ device.option_add_internal("castle", SEGA8_ROM_CASTLE);
+ device.option_add_internal("dahjee_typea", SEGA8_ROM_DAHJEE_TYPEA);
+ device.option_add_internal("dahjee_typeb", SEGA8_ROM_DAHJEE_TYPEB);
// are these SC-3000 carts below actually compatible or not? remove if not!
- SLOT_INTERFACE_INTERNAL("level3", SEGA8_ROM_BASIC_L3)
- SLOT_INTERFACE_INTERNAL("music_editor", SEGA8_ROM_MUSIC_EDITOR)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START(sms_cart)
- SLOT_INTERFACE_INTERNAL("rom", SEGA8_ROM_STD)
- SLOT_INTERFACE_INTERNAL("codemasters", SEGA8_ROM_CODEMASTERS)
- SLOT_INTERFACE_INTERNAL("4pak", SEGA8_ROM_4PAK)
- SLOT_INTERFACE_INTERNAL("zemina", SEGA8_ROM_ZEMINA)
- SLOT_INTERFACE_INTERNAL("nemesis", SEGA8_ROM_NEMESIS)
- SLOT_INTERFACE_INTERNAL("janggun", SEGA8_ROM_JANGGUN)
- SLOT_INTERFACE_INTERNAL("hicom", SEGA8_ROM_HICOM)
- SLOT_INTERFACE_INTERNAL("korean", SEGA8_ROM_KOREAN)
- SLOT_INTERFACE_INTERNAL("korean_nb", SEGA8_ROM_KOREAN_NB)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START(gg_cart)
- SLOT_INTERFACE_INTERNAL("rom", SEGA8_ROM_STD)
- SLOT_INTERFACE_INTERNAL("eeprom", SEGA8_ROM_EEPROM)
- SLOT_INTERFACE_INTERNAL("codemasters", SEGA8_ROM_CODEMASTERS)
- SLOT_INTERFACE_INTERNAL("mgear", SEGA8_ROM_MGEAR)
-SLOT_INTERFACE_END
+ device.option_add_internal("level3", SEGA8_ROM_BASIC_L3);
+ device.option_add_internal("music_editor", SEGA8_ROM_MUSIC_EDITOR);
+}
+
+void sms_cart(device_slot_interface &device)
+{
+ device.option_add_internal("rom", SEGA8_ROM_STD);
+ device.option_add_internal("codemasters", SEGA8_ROM_CODEMASTERS);
+ device.option_add_internal("4pak", SEGA8_ROM_4PAK);
+ device.option_add_internal("zemina", SEGA8_ROM_ZEMINA);
+ device.option_add_internal("nemesis", SEGA8_ROM_NEMESIS);
+ device.option_add_internal("janggun", SEGA8_ROM_JANGGUN);
+ device.option_add_internal("hicom", SEGA8_ROM_HICOM);
+ device.option_add_internal("korean", SEGA8_ROM_KOREAN);
+ device.option_add_internal("korean_nb", SEGA8_ROM_KOREAN_NB);
+}
+
+void gg_cart(device_slot_interface &device)
+{
+ device.option_add_internal("rom", SEGA8_ROM_STD);
+ device.option_add_internal("eeprom", SEGA8_ROM_EEPROM);
+ device.option_add_internal("codemasters", SEGA8_ROM_CODEMASTERS);
+ device.option_add_internal("mgear", SEGA8_ROM_MGEAR);
+}
diff --git a/src/devices/bus/sega8/sega8_slot.h b/src/devices/bus/sega8/sega8_slot.h
index fa26d4bed72..9b653d4887b 100644
--- a/src/devices/bus/sega8/sega8_slot.h
+++ b/src/devices/bus/sega8/sega8_slot.h
@@ -243,9 +243,9 @@ public:
// slot interfaces
-SLOT_INTERFACE_EXTERN( sg1000_cart );
-SLOT_INTERFACE_EXTERN( sg1000mk3_cart );
-SLOT_INTERFACE_EXTERN( sms_cart );
-SLOT_INTERFACE_EXTERN( gg_cart );
+void sg1000_cart(device_slot_interface &device);
+void sg1000mk3_cart(device_slot_interface &device);
+void sms_cart(device_slot_interface &device);
+void gg_cart(device_slot_interface &device);
#endif // MAME_BUS_SEGA8_SLOT_H
diff --git a/src/devices/bus/sg1000_exp/sg1000exp.cpp b/src/devices/bus/sg1000_exp/sg1000exp.cpp
index 8c8bc53f6a4..09e6e826515 100644
--- a/src/devices/bus/sg1000_exp/sg1000exp.cpp
+++ b/src/devices/bus/sg1000_exp/sg1000exp.cpp
@@ -121,7 +121,8 @@ bool sg1000_expansion_slot_device::is_writeable(uint8_t offset)
// SLOT_INTERFACE( sg1000_expansion_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( sg1000_expansion_devices )
- SLOT_INTERFACE("sk1100", SEGA_SK1100)
- SLOT_INTERFACE("fm", SEGA_FM_UNIT)
-SLOT_INTERFACE_END
+void sg1000_expansion_devices(device_slot_interface &device)
+{
+ device.option_add("sk1100", SEGA_SK1100);
+ device.option_add("fm", SEGA_FM_UNIT);
+}
diff --git a/src/devices/bus/sg1000_exp/sg1000exp.h b/src/devices/bus/sg1000_exp/sg1000exp.h
index ce8ae982980..9a21c263407 100644
--- a/src/devices/bus/sg1000_exp/sg1000exp.h
+++ b/src/devices/bus/sg1000_exp/sg1000exp.h
@@ -84,7 +84,7 @@ protected:
DECLARE_DEVICE_TYPE(SG1000_EXPANSION_SLOT, sg1000_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( sg1000_expansion_devices );
+void sg1000_expansion_devices(device_slot_interface &device);
#endif // MAME_BUS_SG1000_EXP_SG1000EXP_H
diff --git a/src/devices/bus/sms_ctrl/smsctrl.cpp b/src/devices/bus/sms_ctrl/smsctrl.cpp
index 6d760f9bf93..30b706ad390 100644
--- a/src/devices/bus/sms_ctrl/smsctrl.cpp
+++ b/src/devices/bus/sms_ctrl/smsctrl.cpp
@@ -124,13 +124,14 @@ uint32_t sms_control_port_device::pixel_r()
// SLOT_INTERFACE( sms_control_port_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( sms_control_port_devices )
- SLOT_INTERFACE("joypad", SMS_JOYPAD)
- SLOT_INTERFACE("lphaser", SMS_LIGHT_PHASER)
- SLOT_INTERFACE("paddle", SMS_PADDLE)
- SLOT_INTERFACE("sportspad", SMS_SPORTS_PAD)
- SLOT_INTERFACE("sportspadjp", SMS_SPORTS_PAD_JP)
- SLOT_INTERFACE("rapidfire", SMS_RAPID_FIRE)
- SLOT_INTERFACE("multitap", SMS_MULTITAP)
- SLOT_INTERFACE("graphic", SMS_GRAPHIC)
-SLOT_INTERFACE_END
+void sms_control_port_devices(device_slot_interface &device)
+{
+ device.option_add("joypad", SMS_JOYPAD);
+ device.option_add("lphaser", SMS_LIGHT_PHASER);
+ device.option_add("paddle", SMS_PADDLE);
+ device.option_add("sportspad", SMS_SPORTS_PAD);
+ device.option_add("sportspadjp", SMS_SPORTS_PAD_JP);
+ device.option_add("rapidfire", SMS_RAPID_FIRE);
+ device.option_add("multitap", SMS_MULTITAP);
+ device.option_add("graphic", SMS_GRAPHIC);
+}
diff --git a/src/devices/bus/sms_ctrl/smsctrl.h b/src/devices/bus/sms_ctrl/smsctrl.h
index 71cfa2059c4..9ead03ca812 100644
--- a/src/devices/bus/sms_ctrl/smsctrl.h
+++ b/src/devices/bus/sms_ctrl/smsctrl.h
@@ -110,7 +110,7 @@ protected:
DECLARE_DEVICE_TYPE(SMS_CONTROL_PORT, sms_control_port_device)
-SLOT_INTERFACE_EXTERN( sms_control_port_devices );
+void sms_control_port_devices(device_slot_interface &device);
#endif // MAME_BUS_SMS_CTRL_SMSCTRL_H
diff --git a/src/devices/bus/sms_exp/smsexp.cpp b/src/devices/bus/sms_exp/smsexp.cpp
index 89cdf8083a8..f7c4b12c159 100644
--- a/src/devices/bus/sms_exp/smsexp.cpp
+++ b/src/devices/bus/sms_exp/smsexp.cpp
@@ -86,6 +86,7 @@ void sms_expansion_slot_device::device_start()
// SLOT_INTERFACE( sms_expansion_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( sms_expansion_devices )
- SLOT_INTERFACE("genderadp", SMS_GENDER_ADAPTER)
-SLOT_INTERFACE_END
+void sms_expansion_devices(device_slot_interface &device)
+{
+ device.option_add("genderadp", SMS_GENDER_ADAPTER);
+}
diff --git a/src/devices/bus/sms_exp/smsexp.h b/src/devices/bus/sms_exp/smsexp.h
index 5ea8a344384..b53027af51e 100644
--- a/src/devices/bus/sms_exp/smsexp.h
+++ b/src/devices/bus/sms_exp/smsexp.h
@@ -87,7 +87,7 @@ protected:
DECLARE_DEVICE_TYPE(SMS_EXPANSION_SLOT, sms_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( sms_expansion_devices );
+void sms_expansion_devices(device_slot_interface &device);
#endif // MAME_BUS_SMS_EXP_SMSEXP_H
diff --git a/src/devices/bus/snes/bsx.cpp b/src/devices/bus/snes/bsx.cpp
index 691a2898413..339cee19885 100644
--- a/src/devices/bus/snes/bsx.cpp
+++ b/src/devices/bus/snes/bsx.cpp
@@ -234,9 +234,10 @@ void sns_rom_bsx_device::bsx_base::write(uint32_t offset, uint8_t data)
}
-static SLOT_INTERFACE_START(bsx_cart)
- SLOT_INTERFACE_INTERNAL("bsmempak", SNS_BSMEMPAK)
-SLOT_INTERFACE_END
+static void bsx_cart(device_slot_interface &device)
+{
+ device.option_add_internal("bsmempak", SNS_BSMEMPAK);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/snes/sgb.cpp b/src/devices/bus/snes/sgb.cpp
index d668e96b45b..f3f150e47a3 100644
--- a/src/devices/bus/snes/sgb.cpp
+++ b/src/devices/bus/snes/sgb.cpp
@@ -154,10 +154,11 @@ WRITE8_MEMBER( sns_rom_sgb_device::gb_timer_callback )
}
-static SLOT_INTERFACE_START(supergb_cart)
- SLOT_INTERFACE_INTERNAL("rom", GB_STD_ROM)
- SLOT_INTERFACE_INTERNAL("rom_mbc1", GB_ROM_MBC1)
-SLOT_INTERFACE_END
+static void supergb_cart(device_slot_interface &device)
+{
+ device.option_add_internal("rom", GB_STD_ROM);
+ device.option_add_internal("rom_mbc1", GB_ROM_MBC1);
+}
MACHINE_CONFIG_START(sns_rom_sgb1_device::device_add_mconfig)
diff --git a/src/devices/bus/snes/snes_carts.cpp b/src/devices/bus/snes/snes_carts.cpp
index a450b7fe4c0..274b1e0af9b 100644
--- a/src/devices/bus/snes/snes_carts.cpp
+++ b/src/devices/bus/snes/snes_carts.cpp
@@ -22,46 +22,47 @@
#include "event.h"
-SLOT_INTERFACE_START(snes_cart)
- SLOT_INTERFACE_INTERNAL("lorom", SNS_LOROM)
- SLOT_INTERFACE_INTERNAL("lorom_bsx", SNS_LOROM_BSX) // LoROM + BS-X slot - unsupported
- SLOT_INTERFACE_INTERNAL("lorom_cx4", SNS_LOROM) // Cart + CX4 - unsupported
- SLOT_INTERFACE_INTERNAL("lorom_dsp", SNS_LOROM_NECDSP)
- SLOT_INTERFACE_INTERNAL("lorom_dsp4", SNS_LOROM_NECDSP)
- SLOT_INTERFACE_INTERNAL("lorom_obc1", SNS_LOROM_OBC1)
- SLOT_INTERFACE_INTERNAL("lorom_sa1", SNS_LOROM_SA1) // Cart + SA1 - unsupported
- SLOT_INTERFACE_INTERNAL("lorom_sdd1", SNS_LOROM_SDD1)
- SLOT_INTERFACE_INTERNAL("lorom_sfx", SNS_LOROM_SUPERFX)
- SLOT_INTERFACE_INTERNAL("lorom_sgb", SNS_LOROM_SUPERGB) // SuperGB base cart - unsupported
- SLOT_INTERFACE_INTERNAL("lorom_sgb2", SNS_LOROM_SUPERGB2) // SuperGB2 base cart - unsupported
- SLOT_INTERFACE_INTERNAL("lorom_st010", SNS_LOROM_SETA10)
- SLOT_INTERFACE_INTERNAL("lorom_st011", SNS_LOROM_SETA11)
- SLOT_INTERFACE_INTERNAL("lorom_st018", SNS_LOROM) // Cart + ST018 - unsupported
- SLOT_INTERFACE_INTERNAL("lorom_sufami", SNS_LOROM_SUFAMI) // Sufami Turbo base cart
- SLOT_INTERFACE_INTERNAL("hirom", SNS_HIROM)
- SLOT_INTERFACE_INTERNAL("hirom_bsx", SNS_HIROM_BSX) // HiROM + BS-X slot - unsupported
- SLOT_INTERFACE_INTERNAL("hirom_dsp", SNS_HIROM_NECDSP)
- SLOT_INTERFACE_INTERNAL("hirom_spc7110", SNS_HIROM_SPC7110)
- SLOT_INTERFACE_INTERNAL("hirom_spcrtc", SNS_HIROM_SPC7110_RTC)
- SLOT_INTERFACE_INTERNAL("hirom_srtc", SNS_HIROM_SRTC)
- SLOT_INTERFACE_INTERNAL("bsxrom", SNS_ROM_BSX) // BS-X base cart - partial support only
- SLOT_INTERFACE_INTERNAL("pfest94", SNS_PFEST94)
+void snes_cart(device_slot_interface &device)
+{
+ device.option_add_internal("lorom", SNS_LOROM);
+ device.option_add_internal("lorom_bsx", SNS_LOROM_BSX); // LoROM + BS-X slot - unsupported
+ device.option_add_internal("lorom_cx4", SNS_LOROM); // Cart + CX4 - unsupported
+ device.option_add_internal("lorom_dsp", SNS_LOROM_NECDSP);
+ device.option_add_internal("lorom_dsp4", SNS_LOROM_NECDSP);
+ device.option_add_internal("lorom_obc1", SNS_LOROM_OBC1);
+ device.option_add_internal("lorom_sa1", SNS_LOROM_SA1); // Cart + SA1 - unsupported
+ device.option_add_internal("lorom_sdd1", SNS_LOROM_SDD1);
+ device.option_add_internal("lorom_sfx", SNS_LOROM_SUPERFX);
+ device.option_add_internal("lorom_sgb", SNS_LOROM_SUPERGB); // SuperGB base cart - unsupported
+ device.option_add_internal("lorom_sgb2", SNS_LOROM_SUPERGB2); // SuperGB2 base cart - unsupported
+ device.option_add_internal("lorom_st010", SNS_LOROM_SETA10);
+ device.option_add_internal("lorom_st011", SNS_LOROM_SETA11);
+ device.option_add_internal("lorom_st018", SNS_LOROM); // Cart + ST018 - unsupported
+ device.option_add_internal("lorom_sufami", SNS_LOROM_SUFAMI); // Sufami Turbo base cart
+ device.option_add_internal("hirom", SNS_HIROM);
+ device.option_add_internal("hirom_bsx", SNS_HIROM_BSX); // HiROM + BS-X slot - unsupported
+ device.option_add_internal("hirom_dsp", SNS_HIROM_NECDSP);
+ device.option_add_internal("hirom_spc7110", SNS_HIROM_SPC7110);
+ device.option_add_internal("hirom_spcrtc", SNS_HIROM_SPC7110_RTC);
+ device.option_add_internal("hirom_srtc", SNS_HIROM_SRTC);
+ device.option_add_internal("bsxrom", SNS_ROM_BSX); // BS-X base cart - partial support only
+ device.option_add_internal("pfest94", SNS_PFEST94);
// pirate carts
- SLOT_INTERFACE_INTERNAL("lorom_poke", SNS_LOROM_POKEMON)
- SLOT_INTERFACE_INTERNAL("lorom_tekken2", SNS_LOROM_TEKKEN2)
- SLOT_INTERFACE_INTERNAL("lorom_sbld", SNS_LOROM_SOULBLAD)
- SLOT_INTERFACE_INTERNAL("lorom_mcpir1", SNS_LOROM_MCPIR1)
- SLOT_INTERFACE_INTERNAL("lorom_mcpir2", SNS_LOROM_MCPIR2)
- SLOT_INTERFACE_INTERNAL("lorom_20col", SNS_LOROM_20COL)
- SLOT_INTERFACE_INTERNAL("lorom_pija", SNS_LOROM_BANANA) // not working yet
- SLOT_INTERFACE_INTERNAL("lorom_bugs", SNS_LOROM_BUGSLIFE) // not working yet
+ device.option_add_internal("lorom_poke", SNS_LOROM_POKEMON);
+ device.option_add_internal("lorom_tekken2", SNS_LOROM_TEKKEN2);
+ device.option_add_internal("lorom_sbld", SNS_LOROM_SOULBLAD);
+ device.option_add_internal("lorom_mcpir1", SNS_LOROM_MCPIR1);
+ device.option_add_internal("lorom_mcpir2", SNS_LOROM_MCPIR2);
+ device.option_add_internal("lorom_20col", SNS_LOROM_20COL);
+ device.option_add_internal("lorom_pija", SNS_LOROM_BANANA); // not working yet
+ device.option_add_internal("lorom_bugs", SNS_LOROM_BUGSLIFE); // not working yet
// legacy slots to support DSPx games from fullpath
- SLOT_INTERFACE_INTERNAL("lorom_dsp1leg", SNS_LOROM_NECDSP1_LEG)
- SLOT_INTERFACE_INTERNAL("lorom_dsp1bleg",SNS_LOROM_NECDSP1B_LEG)
- SLOT_INTERFACE_INTERNAL("lorom_dsp2leg", SNS_LOROM_NECDSP2_LEG)
- SLOT_INTERFACE_INTERNAL("lorom_dsp3leg", SNS_LOROM_NECDSP3_LEG)
- SLOT_INTERFACE_INTERNAL("lorom_dsp4leg", SNS_LOROM_NECDSP4_LEG)
- SLOT_INTERFACE_INTERNAL("hirom_dsp1leg", SNS_HIROM_NECDSP1_LEG)
- SLOT_INTERFACE_INTERNAL("lorom_st10leg", SNS_LOROM_SETA10_LEG)
- SLOT_INTERFACE_INTERNAL("lorom_st11leg", SNS_LOROM_SETA11_LEG)
-SLOT_INTERFACE_END
+ device.option_add_internal("lorom_dsp1leg", SNS_LOROM_NECDSP1_LEG);
+ device.option_add_internal("lorom_dsp1bleg",SNS_LOROM_NECDSP1B_LEG);
+ device.option_add_internal("lorom_dsp2leg", SNS_LOROM_NECDSP2_LEG);
+ device.option_add_internal("lorom_dsp3leg", SNS_LOROM_NECDSP3_LEG);
+ device.option_add_internal("lorom_dsp4leg", SNS_LOROM_NECDSP4_LEG);
+ device.option_add_internal("hirom_dsp1leg", SNS_HIROM_NECDSP1_LEG);
+ device.option_add_internal("lorom_st10leg", SNS_LOROM_SETA10_LEG);
+ device.option_add_internal("lorom_st11leg", SNS_LOROM_SETA11_LEG);
+}
diff --git a/src/devices/bus/snes/snes_carts.h b/src/devices/bus/snes/snes_carts.h
index 9778bba903f..9c140899734 100644
--- a/src/devices/bus/snes/snes_carts.h
+++ b/src/devices/bus/snes/snes_carts.h
@@ -13,6 +13,6 @@
// supported devices
-SLOT_INTERFACE_EXTERN(snes_cart);
+void snes_cart(device_slot_interface &device);
#endif // MAME_BUS_SNES_SNES_CARTS_H
diff --git a/src/devices/bus/snes/sufami.cpp b/src/devices/bus/snes/sufami.cpp
index 9eb2236161c..1812b61e0fe 100644
--- a/src/devices/bus/snes/sufami.cpp
+++ b/src/devices/bus/snes/sufami.cpp
@@ -46,9 +46,10 @@ void sns_rom_strom_device::device_start()
}
-static SLOT_INTERFACE_START(sufamiturbo_cart)
- SLOT_INTERFACE_INTERNAL("strom", SNS_STROM)
-SLOT_INTERFACE_END
+static void sufamiturbo_cart(device_slot_interface &device)
+{
+ device.option_add_internal("strom", SNS_STROM);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/snes_ctrl/ctrl.cpp b/src/devices/bus/snes_ctrl/ctrl.cpp
index b0cf145072f..09079bd9c91 100644
--- a/src/devices/bus/snes_ctrl/ctrl.cpp
+++ b/src/devices/bus/snes_ctrl/ctrl.cpp
@@ -126,13 +126,14 @@ void snes_control_port_device::port_poll()
// SLOT_INTERFACE( snes_control_port_devices )
//-------------------------------------------------
-SLOT_INTERFACE_START( snes_control_port_devices )
- SLOT_INTERFACE("joypad", SNES_JOYPAD)
- SLOT_INTERFACE("mouse", SNES_MOUSE)
- SLOT_INTERFACE("multitap", SNES_MULTITAP)
- SLOT_INTERFACE("pachinko", SNES_PACHINKO)
- SLOT_INTERFACE("sscope", SNES_SUPERSCOPE)
- SLOT_INTERFACE("twintap", SNES_TWINTAP)
- SLOT_INTERFACE("barcode_battler", SNES_BARCODE_BATTLER)
- SLOT_INTERFACE("miracle_piano", SNES_MIRACLE)
-SLOT_INTERFACE_END
+void snes_control_port_devices(device_slot_interface &device)
+{
+ device.option_add("joypad", SNES_JOYPAD);
+ device.option_add("mouse", SNES_MOUSE);
+ device.option_add("multitap", SNES_MULTITAP);
+ device.option_add("pachinko", SNES_PACHINKO);
+ device.option_add("sscope", SNES_SUPERSCOPE);
+ device.option_add("twintap", SNES_TWINTAP);
+ device.option_add("barcode_battler", SNES_BARCODE_BATTLER);
+ device.option_add("miracle_piano", SNES_MIRACLE);
+}
diff --git a/src/devices/bus/snes_ctrl/ctrl.h b/src/devices/bus/snes_ctrl/ctrl.h
index 1e23d1a5ae4..ee139752f28 100644
--- a/src/devices/bus/snes_ctrl/ctrl.h
+++ b/src/devices/bus/snes_ctrl/ctrl.h
@@ -94,7 +94,7 @@ DECLARE_DEVICE_TYPE(SNES_CONTROL_PORT, snes_control_port_device)
downcast<snes_control_port_device &>(*device).set_gunlatch_callback(snesctrl_gunlatch_delegate(&_class::_method, #_class "::" #_method, this));
-SLOT_INTERFACE_EXTERN( snes_control_port_devices );
+void snes_control_port_devices(device_slot_interface &device);
#endif // MAME_BUS_SNES_CTRL_CTRL_H
diff --git a/src/devices/bus/snes_ctrl/multitap.cpp b/src/devices/bus/snes_ctrl/multitap.cpp
index 01c91cb8687..262ef56fd26 100644
--- a/src/devices/bus/snes_ctrl/multitap.cpp
+++ b/src/devices/bus/snes_ctrl/multitap.cpp
@@ -36,10 +36,11 @@ ioport_constructor snes_multitap_device::device_input_ports() const
}
-static SLOT_INTERFACE_START( snes_multitap )
- SLOT_INTERFACE("joypad", SNES_JOYPAD)
- SLOT_INTERFACE("twintap", SNES_TWINTAP)
-SLOT_INTERFACE_END
+static void snes_multitap(device_slot_interface &device)
+{
+ device.option_add("joypad", SNES_JOYPAD);
+ device.option_add("twintap", SNES_TWINTAP);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/spc1000/fdd.cpp b/src/devices/bus/spc1000/fdd.cpp
index 7d8f94e2653..21d28f2710a 100644
--- a/src/devices/bus/spc1000/fdd.cpp
+++ b/src/devices/bus/spc1000/fdd.cpp
@@ -71,9 +71,10 @@ void spc1000_fdd_exp_device::sd725_io(address_map &map)
map(0xfc, 0xff).rw("d8255_master", FUNC(i8255_device::read), FUNC(i8255_device::write));
}
-static SLOT_INTERFACE_START( sd725_floppies )
- SLOT_INTERFACE("sd320", EPSON_SD_320)
-SLOT_INTERFACE_END
+static void sd725_floppies(device_slot_interface &device)
+{
+ device.option_add("sd320", EPSON_SD_320);
+}
//-------------------------------------------------
// device_add_mconfig
diff --git a/src/devices/bus/spectrum/exp.cpp b/src/devices/bus/spectrum/exp.cpp
index 06a338ffd8a..c885bfde089 100644
--- a/src/devices/bus/spectrum/exp.cpp
+++ b/src/devices/bus/spectrum/exp.cpp
@@ -169,28 +169,31 @@ WRITE8_MEMBER(spectrum_expansion_slot_device::mreq_w)
#include "uspeech.h"
-SLOT_INTERFACE_START( spectrum_expansion_devices )
- SLOT_INTERFACE("intf1", SPECTRUM_INTF1)
- SLOT_INTERFACE("intf2", SPECTRUM_INTF2)
- SLOT_INTERFACE("fuller", SPECTRUM_FULLER)
- SLOT_INTERFACE("kempjoy", SPECTRUM_KEMPJOY)
- SLOT_INTERFACE("melodik", SPECTRUM_MELODIK)
- SLOT_INTERFACE("mikroplus", SPECTRUM_MIKROPLUS)
- SLOT_INTERFACE("protek", SPECTRUM_PROTEK)
- SLOT_INTERFACE("uslot", SPECTRUM_USLOT)
- SLOT_INTERFACE("usource", SPECTRUM_USOURCE)
- SLOT_INTERFACE("uspeech", SPECTRUM_USPEECH)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( spec128_expansion_devices )
- SLOT_INTERFACE("intf1", SPECTRUM_INTF1)
- SLOT_INTERFACE("intf2", SPECTRUM_INTF2)
- SLOT_INTERFACE("kempjoy", SPECTRUM_KEMPJOY)
- SLOT_INTERFACE("mikroplus", SPECTRUM_MIKROPLUS)
- SLOT_INTERFACE("plus2test", SPECTRUM_PLUS2TEST)
- SLOT_INTERFACE("protek", SPECTRUM_PROTEK)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( specpls3_expansion_devices )
-SLOT_INTERFACE_END
+void spectrum_expansion_devices(device_slot_interface &device)
+{
+ device.option_add("intf1", SPECTRUM_INTF1);
+ device.option_add("intf2", SPECTRUM_INTF2);
+ device.option_add("fuller", SPECTRUM_FULLER);
+ device.option_add("kempjoy", SPECTRUM_KEMPJOY);
+ device.option_add("melodik", SPECTRUM_MELODIK);
+ device.option_add("mikroplus", SPECTRUM_MIKROPLUS);
+ device.option_add("protek", SPECTRUM_PROTEK);
+ device.option_add("uslot", SPECTRUM_USLOT);
+ device.option_add("usource", SPECTRUM_USOURCE);
+ device.option_add("uspeech", SPECTRUM_USPEECH);
+}
+
+void spec128_expansion_devices(device_slot_interface &device)
+{
+ device.option_add("intf1", SPECTRUM_INTF1);
+ device.option_add("intf2", SPECTRUM_INTF2);
+ device.option_add("kempjoy", SPECTRUM_KEMPJOY);
+ device.option_add("mikroplus", SPECTRUM_MIKROPLUS);
+ device.option_add("plus2test", SPECTRUM_PLUS2TEST);
+ device.option_add("protek", SPECTRUM_PROTEK);
+}
+
+void specpls3_expansion_devices(device_slot_interface &device)
+{
+}
diff --git a/src/devices/bus/spectrum/exp.h b/src/devices/bus/spectrum/exp.h
index 1110a3e7021..80c6859fdda 100644
--- a/src/devices/bus/spectrum/exp.h
+++ b/src/devices/bus/spectrum/exp.h
@@ -137,9 +137,9 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(SPECTRUM_EXPANSION_SLOT, spectrum_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( spectrum_expansion_devices );
-SLOT_INTERFACE_EXTERN( spec128_expansion_devices );
-SLOT_INTERFACE_EXTERN( specpls3_expansion_devices );
+void spectrum_expansion_devices(device_slot_interface &device);
+void spec128_expansion_devices(device_slot_interface &device);
+void specpls3_expansion_devices(device_slot_interface &device);
#endif // MAME_BUS_SPECTRUM_EXP_H
diff --git a/src/devices/bus/ss50/interface.cpp b/src/devices/bus/ss50/interface.cpp
index 3d51f76ba53..2beb4e85770 100644
--- a/src/devices/bus/ss50/interface.cpp
+++ b/src/devices/bus/ss50/interface.cpp
@@ -213,10 +213,11 @@ ss50_card_interface::ss50_card_interface(const machine_config &mconfig, device_t
{
}
-SLOT_INTERFACE_START(ss50_default_2rs_devices)
- SLOT_INTERFACE("mpc", SS50_MPC)
- //SLOT_INTERFACE("mpl", SS50_MPL)
- //SLOT_INTERFACE("mpn", SS50_MPN)
- SLOT_INTERFACE("mps", SS50_MPS)
- //SLOT_INTERFACE("mpt", SS50_MPT)
-SLOT_INTERFACE_END
+void ss50_default_2rs_devices(device_slot_interface &device)
+{
+ device.option_add("mpc", SS50_MPC);
+ //device.option_add("mpl", SS50_MPL);
+ //device.option_add("mpn", SS50_MPN);
+ device.option_add("mps", SS50_MPS);
+ //device.option_add("mpt", SS50_MPT);
+}
diff --git a/src/devices/bus/ss50/interface.h b/src/devices/bus/ss50/interface.h
index b6917ba5f7b..5b79e00894c 100644
--- a/src/devices/bus/ss50/interface.h
+++ b/src/devices/bus/ss50/interface.h
@@ -104,7 +104,7 @@ private:
// device type definition
DECLARE_DEVICE_TYPE(SS50_INTERFACE, ss50_interface_port_device)
-SLOT_INTERFACE_EXTERN(ss50_default_2rs_devices);
-//SLOT_INTERFACE_EXTERN(ss50_default_4rs_devices);
+void ss50_default_2rs_devices(device_slot_interface &device);
+//void ss50_default_4rs_devices(device_slot_interface &device);
#endif
diff --git a/src/devices/bus/ss50/mpc.cpp b/src/devices/bus/ss50/mpc.cpp
index e78697be390..146556fc853 100644
--- a/src/devices/bus/ss50/mpc.cpp
+++ b/src/devices/bus/ss50/mpc.cpp
@@ -113,7 +113,7 @@ MACHINE_CONFIG_START(ss50_mpc_device::device_add_mconfig)
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "terminal")
MCFG_RS232_RXD_HANDLER(WRITELINE(ss50_mpc_device, serial_input_w))
- MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal)
+ MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal)
MCFG_INPUT_MERGER_ALL_HIGH("outgate")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
diff --git a/src/devices/bus/ss50/mps.cpp b/src/devices/bus/ss50/mps.cpp
index 57ef58e10f5..1650ddc89c9 100644
--- a/src/devices/bus/ss50/mps.cpp
+++ b/src/devices/bus/ss50/mps.cpp
@@ -104,7 +104,7 @@ MACHINE_CONFIG_START(ss50_mps_device::device_add_mconfig)
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "terminal")
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rxd))
- MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal)
+ MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal)
MACHINE_CONFIG_END
diff --git a/src/devices/bus/sunkbd/sunkbd.cpp b/src/devices/bus/sunkbd/sunkbd.cpp
index 63f7509ef61..2ac0eb65b4c 100644
--- a/src/devices/bus/sunkbd/sunkbd.cpp
+++ b/src/devices/bus/sunkbd/sunkbd.cpp
@@ -91,11 +91,12 @@ device_sun_keyboard_port_interface::~device_sun_keyboard_port_interface()
#include "hlekbd.h"
-SLOT_INTERFACE_START( default_sun_keyboard_devices )
- SLOT_INTERFACE("type3hle", SUN_TYPE3_HLE_KEYBOARD)
- SLOT_INTERFACE("type4hle", SUN_TYPE4_HLE_KEYBOARD)
- SLOT_INTERFACE("type5hle", SUN_TYPE5_HLE_KEYBOARD)
- SLOT_INTERFACE("type5gbhle", SUN_TYPE5_GB_HLE_KEYBOARD)
- SLOT_INTERFACE("type5sehle", SUN_TYPE5_SE_HLE_KEYBOARD)
- SLOT_INTERFACE("type5jphle", SUN_TYPE5_JP_HLE_KEYBOARD)
-SLOT_INTERFACE_END
+void default_sun_keyboard_devices(device_slot_interface &device)
+{
+ device.option_add("type3hle", SUN_TYPE3_HLE_KEYBOARD);
+ device.option_add("type4hle", SUN_TYPE4_HLE_KEYBOARD);
+ device.option_add("type5hle", SUN_TYPE5_HLE_KEYBOARD);
+ device.option_add("type5gbhle", SUN_TYPE5_GB_HLE_KEYBOARD);
+ device.option_add("type5sehle", SUN_TYPE5_SE_HLE_KEYBOARD);
+ device.option_add("type5jphle", SUN_TYPE5_JP_HLE_KEYBOARD);
+}
diff --git a/src/devices/bus/sunkbd/sunkbd.h b/src/devices/bus/sunkbd/sunkbd.h
index 9693e95cd4e..f0a0daeeb08 100644
--- a/src/devices/bus/sunkbd/sunkbd.h
+++ b/src/devices/bus/sunkbd/sunkbd.h
@@ -76,6 +76,6 @@ protected:
DECLARE_DEVICE_TYPE(SUNKBD_PORT, sun_keyboard_port_device)
-SLOT_INTERFACE_EXTERN( default_sun_keyboard_devices );
+void default_sun_keyboard_devices(device_slot_interface &device);
#endif // MAME_DEVICES_SUNKBD_SUNKBD_H
diff --git a/src/devices/bus/svi3x8/expander/modules.cpp b/src/devices/bus/svi3x8/expander/modules.cpp
index 1fde553ae63..e701353833e 100644
--- a/src/devices/bus/svi3x8/expander/modules.cpp
+++ b/src/devices/bus/svi3x8/expander/modules.cpp
@@ -13,8 +13,9 @@
#include "sv602.h"
#include "sv603.h"
-SLOT_INTERFACE_START( svi_expander_modules )
- SLOT_INTERFACE("sv601", SV601)
- SLOT_INTERFACE("sv602", SV602)
- SLOT_INTERFACE("sv603", SV603)
-SLOT_INTERFACE_END
+void svi_expander_modules(device_slot_interface &device)
+{
+ device.option_add("sv601", SV601);
+ device.option_add("sv602", SV602);
+ device.option_add("sv603", SV603);
+}
diff --git a/src/devices/bus/svi3x8/expander/modules.h b/src/devices/bus/svi3x8/expander/modules.h
index 2534b7713f1..1c1b94d01f1 100644
--- a/src/devices/bus/svi3x8/expander/modules.h
+++ b/src/devices/bus/svi3x8/expander/modules.h
@@ -11,6 +11,6 @@
#pragma once
-SLOT_INTERFACE_EXTERN( svi_expander_modules );
+void svi_expander_modules(device_slot_interface &device);
#endif // MAME_BUS_SVI3X8_EXPANDER_MODULES_H
diff --git a/src/devices/bus/svi3x8/slot/cards.cpp b/src/devices/bus/svi3x8/slot/cards.cpp
index 5d0192f91ea..f445162b83b 100644
--- a/src/devices/bus/svi3x8/slot/cards.cpp
+++ b/src/devices/bus/svi3x8/slot/cards.cpp
@@ -17,21 +17,23 @@
#include "sv807.h"
-SLOT_INTERFACE_START( svi_slot_cards )
- SLOT_INTERFACE("sv801", SV801)
- SLOT_INTERFACE("sv802", SV802)
- SLOT_INTERFACE("sv803", SV803)
- SLOT_INTERFACE("sv805", SV805)
- SLOT_INTERFACE("sv806", SV806)
- SLOT_INTERFACE("sv807", SV807)
-SLOT_INTERFACE_END
+void svi_slot_cards(device_slot_interface &device)
+{
+ device.option_add("sv801", SV801);
+ device.option_add("sv802", SV802);
+ device.option_add("sv803", SV803);
+ device.option_add("sv805", SV805);
+ device.option_add("sv806", SV806);
+ device.option_add("sv807", SV807);
+}
// The single slot expander doesn't support the disk controller, since
// it requires its own power supply to power the disk drives
-SLOT_INTERFACE_START( sv602_slot_cards )
- SLOT_INTERFACE("sv802", SV802)
- SLOT_INTERFACE("sv803", SV803)
- SLOT_INTERFACE("sv805", SV805)
- SLOT_INTERFACE("sv806", SV806)
- SLOT_INTERFACE("sv807", SV807)
-SLOT_INTERFACE_END
+void sv602_slot_cards(device_slot_interface &device)
+{
+ device.option_add("sv802", SV802);
+ device.option_add("sv803", SV803);
+ device.option_add("sv805", SV805);
+ device.option_add("sv806", SV806);
+ device.option_add("sv807", SV807);
+}
diff --git a/src/devices/bus/svi3x8/slot/cards.h b/src/devices/bus/svi3x8/slot/cards.h
index 6bca329078b..a6bbb382804 100644
--- a/src/devices/bus/svi3x8/slot/cards.h
+++ b/src/devices/bus/svi3x8/slot/cards.h
@@ -11,7 +11,7 @@
#pragma once
-SLOT_INTERFACE_EXTERN( svi_slot_cards );
-SLOT_INTERFACE_EXTERN( sv602_slot_cards );
+void svi_slot_cards(device_slot_interface &device);
+void sv602_slot_cards(device_slot_interface &device);
#endif // MAME_BUS_SVI3X8_SLOT_CARDS_H
diff --git a/src/devices/bus/svi3x8/slot/sv801.cpp b/src/devices/bus/svi3x8/slot/sv801.cpp
index c7137d3d8d6..c47bdaf370f 100644
--- a/src/devices/bus/svi3x8/slot/sv801.cpp
+++ b/src/devices/bus/svi3x8/slot/sv801.cpp
@@ -22,9 +22,10 @@ FLOPPY_FORMATS_MEMBER( sv801_device::floppy_formats )
FLOPPY_SVI_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( svi_floppies )
- SLOT_INTERFACE("dd", FLOPPY_525_DD)
-SLOT_INTERFACE_END
+static void svi_floppies(device_slot_interface &device)
+{
+ device.option_add("dd", FLOPPY_525_DD);
+}
//-------------------------------------------------
// device_add_mconfig - add device configuration
diff --git a/src/devices/bus/ti8x/ti8x.cpp b/src/devices/bus/ti8x/ti8x.cpp
index e998ded593c..1490c76755b 100644
--- a/src/devices/bus/ti8x/ti8x.cpp
+++ b/src/devices/bus/ti8x/ti8x.cpp
@@ -612,10 +612,11 @@ void device_ti8x_link_port_byte_interface::bit_received(bool data)
#include "teeconn.h"
#include "tispeaker.h"
-SLOT_INTERFACE_START(default_ti8x_link_devices)
- SLOT_INTERFACE("bitsock", TI8X_BIT_SOCKET)
- SLOT_INTERFACE("glinkhle", TI8X_GRAPH_LINK_HLE)
- SLOT_INTERFACE("tee", TI8X_TEE_CONNECTOR)
- SLOT_INTERFACE("monospkr", TI8X_SPEAKER_MONO)
- SLOT_INTERFACE("stereospkr", TI8X_SPEAKER_STEREO)
-SLOT_INTERFACE_END
+void default_ti8x_link_devices(device_slot_interface &device)
+{
+ device.option_add("bitsock", TI8X_BIT_SOCKET);
+ device.option_add("glinkhle", TI8X_GRAPH_LINK_HLE);
+ device.option_add("tee", TI8X_TEE_CONNECTOR);
+ device.option_add("monospkr", TI8X_SPEAKER_MONO);
+ device.option_add("stereospkr", TI8X_SPEAKER_STEREO);
+}
diff --git a/src/devices/bus/ti8x/ti8x.h b/src/devices/bus/ti8x/ti8x.h
index 91b86806885..8b90a99b843 100644
--- a/src/devices/bus/ti8x/ti8x.h
+++ b/src/devices/bus/ti8x/ti8x.h
@@ -200,6 +200,6 @@ private:
};
-SLOT_INTERFACE_EXTERN( default_ti8x_link_devices );
+void default_ti8x_link_devices(device_slot_interface &device);
#endif // MAME_DEVICES_BUS_TI8X_TI8X_H
diff --git a/src/devices/bus/ti99/colorbus/colorbus.cpp b/src/devices/bus/ti99/colorbus/colorbus.cpp
index 993371f5fcd..097f4c49924 100644
--- a/src/devices/bus/ti99/colorbus/colorbus.cpp
+++ b/src/devices/bus/ti99/colorbus/colorbus.cpp
@@ -64,6 +64,7 @@ void device_ti99_colorbus_interface::interface_config_complete()
} } } // end namespace bus::ti99::colorbus
-SLOT_INTERFACE_START( ti99_colorbus_port )
- SLOT_INTERFACE("busmouse", TI99_BUSMOUSE)
-SLOT_INTERFACE_END
+void ti99_colorbus_port(device_slot_interface &device)
+{
+ device.option_add("busmouse", TI99_BUSMOUSE);
+}
diff --git a/src/devices/bus/ti99/colorbus/colorbus.h b/src/devices/bus/ti99/colorbus/colorbus.h
index 7d7dea7620c..05f69aea0c5 100644
--- a/src/devices/bus/ti99/colorbus/colorbus.h
+++ b/src/devices/bus/ti99/colorbus/colorbus.h
@@ -59,7 +59,7 @@ private:
} } } // end namespace bus::ti99::colorbus
-SLOT_INTERFACE_EXTERN(ti99_colorbus_port);
+void ti99_colorbus_port(device_slot_interface &device);
#define MCFG_COLORBUS_MOUSE_ADD( _tag ) \
MCFG_DEVICE_ADD(_tag, TI99_COLORBUS, 0) \
diff --git a/src/devices/bus/ti99/gromport/gromport.cpp b/src/devices/bus/ti99/gromport/gromport.cpp
index 0a18076ebf8..f1b4c27f788 100644
--- a/src/devices/bus/ti99/gromport/gromport.cpp
+++ b/src/devices/bus/ti99/gromport/gromport.cpp
@@ -285,13 +285,15 @@ void cartridge_connector_device::device_config_complete()
} } } // end namespace bus::ti99::gromport
-SLOT_INTERFACE_START( gromport4 )
- SLOT_INTERFACE("single", TI99_GROMPORT_SINGLE)
- SLOT_INTERFACE("multi", TI99_GROMPORT_MULTI)
- SLOT_INTERFACE("gkracker", TI99_GROMPORT_GK)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( gromport8 )
- SLOT_INTERFACE("single", TI99_GROMPORT_SINGLE)
- SLOT_INTERFACE("multi", TI99_GROMPORT_MULTI)
-SLOT_INTERFACE_END
+void gromport4(device_slot_interface &device)
+{
+ device.option_add("single", TI99_GROMPORT_SINGLE);
+ device.option_add("multi", TI99_GROMPORT_MULTI);
+ device.option_add("gkracker", TI99_GROMPORT_GK);
+}
+
+void gromport8(device_slot_interface &device)
+{
+ device.option_add("single", TI99_GROMPORT_SINGLE);
+ device.option_add("multi", TI99_GROMPORT_MULTI);
+}
diff --git a/src/devices/bus/ti99/gromport/gromport.h b/src/devices/bus/ti99/gromport/gromport.h
index 1206b231ce8..09b4a72bcde 100644
--- a/src/devices/bus/ti99/gromport/gromport.h
+++ b/src/devices/bus/ti99/gromport/gromport.h
@@ -92,8 +92,8 @@ protected:
} } } // end namespace bus::ti99::gromport
-SLOT_INTERFACE_EXTERN(gromport4);
-SLOT_INTERFACE_EXTERN(gromport8);
+void gromport4(device_slot_interface &device);
+void gromport8(device_slot_interface &device);
#define MCFG_GROMPORT4_ADD( _tag ) \
MCFG_DEVICE_ADD(_tag, TI99_GROMPORT, 0) \
diff --git a/src/devices/bus/ti99/internal/ioport.cpp b/src/devices/bus/ti99/internal/ioport.cpp
index a7964d30406..1c9714c6682 100644
--- a/src/devices/bus/ti99/internal/ioport.cpp
+++ b/src/devices/bus/ti99/internal/ioport.cpp
@@ -167,11 +167,13 @@ WRITE_LINE_MEMBER(ioport_attached_device::set_ready)
} } } // end namespace bus::ti99::internal
-SLOT_INTERFACE_START( ti99_io_port )
- SLOT_INTERFACE("peb", TI99_PERIBOX)
-SLOT_INTERFACE_END
+void ti99_io_port(device_slot_interface &device)
+{
+ device.option_add("peb", TI99_PERIBOX);
+}
-SLOT_INTERFACE_START( ti99_io_port_ev )
- SLOT_INTERFACE("peb", TI99_PERIBOX_EV)
-SLOT_INTERFACE_END
+void ti99_io_port_ev(device_slot_interface &device)
+{
+ device.option_add("peb", TI99_PERIBOX_EV);
+}
diff --git a/src/devices/bus/ti99/internal/ioport.h b/src/devices/bus/ti99/internal/ioport.h
index f63518705d4..4c21a11651e 100644
--- a/src/devices/bus/ti99/internal/ioport.h
+++ b/src/devices/bus/ti99/internal/ioport.h
@@ -87,8 +87,8 @@ private:
DECLARE_DEVICE_TYPE_NS(TI99_IOPORT, bus::ti99::internal, ioport_device)
-SLOT_INTERFACE_EXTERN(ti99_io_port);
-SLOT_INTERFACE_EXTERN(ti99_io_port_ev);
+void ti99_io_port(device_slot_interface &device);
+void ti99_io_port_ev(device_slot_interface &device);
#define MCFG_IOPORT_ADD( _tag ) \
MCFG_DEVICE_ADD(_tag, TI99_IOPORT, 0) \
diff --git a/src/devices/bus/ti99/joyport/joyport.cpp b/src/devices/bus/ti99/joyport/joyport.cpp
index 806d04e6df1..76173bf1e10 100644
--- a/src/devices/bus/ti99/joyport/joyport.cpp
+++ b/src/devices/bus/ti99/joyport/joyport.cpp
@@ -104,18 +104,21 @@ void device_ti99_joyport_interface::interface_config_complete()
} } } // end namespace bus::ti99::joyport
-SLOT_INTERFACE_START( ti99_joystick_port )
- SLOT_INTERFACE("twinjoy", TI99_JOYSTICK)
- SLOT_INTERFACE("mecmouse", TI99_MECMOUSE)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( ti99_joystick_port_gen )
- SLOT_INTERFACE("twinjoy", TI99_JOYSTICK)
-SLOT_INTERFACE_END
-
-SLOT_INTERFACE_START( ti99_joystick_port_994 )
- SLOT_INTERFACE("twinjoy", TI99_JOYSTICK)
- SLOT_INTERFACE("mecmouse", TI99_MECMOUSE)
- SLOT_INTERFACE("handset", TI99_HANDSET)
-SLOT_INTERFACE_END
+void ti99_joystick_port(device_slot_interface &device)
+{
+ device.option_add("twinjoy", TI99_JOYSTICK);
+ device.option_add("mecmouse", TI99_MECMOUSE);
+}
+
+void ti99_joystick_port_gen(device_slot_interface &device)
+{
+ device.option_add("twinjoy", TI99_JOYSTICK);
+}
+
+void ti99_joystick_port_994(device_slot_interface &device)
+{
+ device.option_add("twinjoy", TI99_JOYSTICK);
+ device.option_add("mecmouse", TI99_MECMOUSE);
+ device.option_add("handset", TI99_HANDSET);
+}
diff --git a/src/devices/bus/ti99/joyport/joyport.h b/src/devices/bus/ti99/joyport/joyport.h
index bf3f5bcf1f3..c455058c387 100644
--- a/src/devices/bus/ti99/joyport/joyport.h
+++ b/src/devices/bus/ti99/joyport/joyport.h
@@ -68,9 +68,9 @@ private:
} } } // end namespace bus::ti99::joyport
-SLOT_INTERFACE_EXTERN(ti99_joystick_port);
-SLOT_INTERFACE_EXTERN(ti99_joystick_port_994);
-SLOT_INTERFACE_EXTERN(ti99_joystick_port_gen);
+void ti99_joystick_port(device_slot_interface &device);
+void ti99_joystick_port_994(device_slot_interface &device);
+void ti99_joystick_port_gen(device_slot_interface &device);
DECLARE_DEVICE_TYPE_NS(TI99_JOYPORT, bus::ti99::joyport, joyport_device)
diff --git a/src/devices/bus/ti99/peb/bwg.cpp b/src/devices/bus/ti99/peb/bwg.cpp
index 6e51624d92c..36cd378860f 100644
--- a/src/devices/bus/ti99/peb/bwg.cpp
+++ b/src/devices/bus/ti99/peb/bwg.cpp
@@ -682,11 +682,12 @@ FLOPPY_FORMATS_MEMBER(snug_bwg_device::floppy_formats)
FLOPPY_TI99_TDF_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( bwg_floppies )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) // 40 tracks
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) // 80 tracks
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD ) // 80 tracks
-SLOT_INTERFACE_END
+static void bwg_floppies(device_slot_interface &device)
+{
+ device.option_add("525dd", FLOPPY_525_DD); // 40 tracks
+ device.option_add("525qd", FLOPPY_525_QD); // 80 tracks
+ device.option_add("35dd", FLOPPY_35_DD); // 80 tracks
+}
ROM_START( bwg_fdc )
ROM_REGION(0x8000, TI99_DSRROM, 0)
diff --git a/src/devices/bus/ti99/peb/hfdc.cpp b/src/devices/bus/ti99/peb/hfdc.cpp
index 4ff37fe8da3..0721f0d6a3b 100644
--- a/src/devices/bus/ti99/peb/hfdc.cpp
+++ b/src/devices/bus/ti99/peb/hfdc.cpp
@@ -1051,19 +1051,21 @@ FLOPPY_FORMATS_MEMBER(myarc_hfdc_device::floppy_formats)
FLOPPY_TI99_TDF_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( hfdc_floppies )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) // 40 tracks
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) // 80 tracks
- SLOT_INTERFACE( "35dd", FLOPPY_35_DD ) // 80 tracks
- SLOT_INTERFACE( "35hd", FLOPPY_35_HD ) // 80 tracks 1.4 MiB
-SLOT_INTERFACE_END
-
-static SLOT_INTERFACE_START( hfdc_harddisks )
- SLOT_INTERFACE( "generic", MFMHD_GENERIC ) // Generic hard disk (self-adapting to image)
- SLOT_INTERFACE( "st213", MFMHD_ST213 ) // Seagate ST-213 (10 MB)
- SLOT_INTERFACE( "st225", MFMHD_ST225 ) // Seagate ST-225 (20 MB)
- SLOT_INTERFACE( "st251", MFMHD_ST251 ) // Seagate ST-251 (40 MB)
-SLOT_INTERFACE_END
+static void hfdc_floppies(device_slot_interface &device)
+{
+ device.option_add("525dd", FLOPPY_525_DD); // 40 tracks
+ device.option_add("525qd", FLOPPY_525_QD); // 80 tracks
+ device.option_add("35dd", FLOPPY_35_DD); // 80 tracks
+ device.option_add("35hd", FLOPPY_35_HD); // 80 tracks 1.4 MiB
+}
+
+static void hfdc_harddisks(device_slot_interface &device)
+{
+ device.option_add("generic", MFMHD_GENERIC); // Generic hard disk (self-adapting to image)
+ device.option_add("st213", MFMHD_ST213); // Seagate ST-213 (10 MB)
+ device.option_add("st225", MFMHD_ST225); // Seagate ST-225 (20 MB)
+ device.option_add("st251", MFMHD_ST251); // Seagate ST-251 (40 MB)
+}
ROM_START( ti99_hfdc )
ROM_REGION(0x4000, TI99_DSRROM, 0)
diff --git a/src/devices/bus/ti99/peb/peribox.cpp b/src/devices/bus/ti99/peb/peribox.cpp
index be2d8e0e0d2..1ada6e9a75f 100644
--- a/src/devices/bus/ti99/peb/peribox.cpp
+++ b/src/devices/bus/ti99/peb/peribox.cpp
@@ -486,21 +486,22 @@ void peribox_device::device_config_complete()
m_ready_flag = 0;
}
-SLOT_INTERFACE_START( peribox_slot )
- SLOT_INTERFACE("32kmem", TI99_32KMEM)
- SLOT_INTERFACE("myarcmem", TI99_MYARCMEM)
- SLOT_INTERFACE("samsmem", TI99_SAMSMEM)
- SLOT_INTERFACE("pcode", TI99_P_CODE)
- SLOT_INTERFACE("hsgpl", TI99_HSGPL)
- SLOT_INTERFACE("tirs232", TI99_RS232)
- SLOT_INTERFACE("speech", TI99_SPEECH)
- SLOT_INTERFACE("horizon", TI99_HORIZON)
- SLOT_INTERFACE("ide", TI99_IDE)
- SLOT_INTERFACE("usbsm", TI99_USBSM)
- SLOT_INTERFACE("bwg", TI99_BWG)
- SLOT_INTERFACE("hfdc", TI99_HFDC)
- SLOT_INTERFACE("tifdc", TI99_FDC)
-SLOT_INTERFACE_END
+void peribox_slot(device_slot_interface &device)
+{
+ device.option_add("32kmem", TI99_32KMEM);
+ device.option_add("myarcmem", TI99_MYARCMEM);
+ device.option_add("samsmem", TI99_SAMSMEM);
+ device.option_add("pcode", TI99_P_CODE);
+ device.option_add("hsgpl", TI99_HSGPL);
+ device.option_add("tirs232", TI99_RS232);
+ device.option_add("speech", TI99_SPEECH);
+ device.option_add("horizon", TI99_HORIZON);
+ device.option_add("ide", TI99_IDE);
+ device.option_add("usbsm", TI99_USBSM);
+ device.option_add("bwg", TI99_BWG);
+ device.option_add("hfdc", TI99_HFDC);
+ device.option_add("tifdc", TI99_FDC);
+}
MACHINE_CONFIG_START(peribox_device::device_add_mconfig)
MCFG_PERIBOX_SLOT_ADD( PEBSLOT2, peribox_slot )
@@ -522,22 +523,23 @@ peribox_ev_device::peribox_ev_device(const machine_config &mconfig, const char *
m_address_prefix = 0x70000;
}
-SLOT_INTERFACE_START( peribox_slotv )
- SLOT_INTERFACE("evpc", TI99_EVPC )
- SLOT_INTERFACE("32kmem", TI99_32KMEM)
- SLOT_INTERFACE("myarcmem", TI99_MYARCMEM)
- SLOT_INTERFACE("samsmem", TI99_SAMSMEM)
- SLOT_INTERFACE("pcode", TI99_P_CODE)
- SLOT_INTERFACE("hsgpl", TI99_HSGPL)
- SLOT_INTERFACE("tirs232", TI99_RS232)
- SLOT_INTERFACE("speech", TI99_SPEECH)
- SLOT_INTERFACE("horizon", TI99_HORIZON)
- SLOT_INTERFACE("ide", TI99_IDE)
- SLOT_INTERFACE("usbsm", TI99_USBSM)
- SLOT_INTERFACE("bwg", TI99_BWG)
- SLOT_INTERFACE("hfdc", TI99_HFDC)
- SLOT_INTERFACE("tifdc", TI99_FDC)
-SLOT_INTERFACE_END
+void peribox_slotv(device_slot_interface &device)
+{
+ device.option_add("evpc", TI99_EVPC);
+ device.option_add("32kmem", TI99_32KMEM);
+ device.option_add("myarcmem", TI99_MYARCMEM);
+ device.option_add("samsmem", TI99_SAMSMEM);
+ device.option_add("pcode", TI99_P_CODE);
+ device.option_add("hsgpl", TI99_HSGPL);
+ device.option_add("tirs232", TI99_RS232);
+ device.option_add("speech", TI99_SPEECH);
+ device.option_add("horizon", TI99_HORIZON);
+ device.option_add("ide", TI99_IDE);
+ device.option_add("usbsm", TI99_USBSM);
+ device.option_add("bwg", TI99_BWG);
+ device.option_add("hfdc", TI99_HFDC);
+ device.option_add("tifdc", TI99_FDC);
+}
MACHINE_CONFIG_START(peribox_ev_device::device_add_mconfig)
MCFG_PERIBOX_SLOT_ADD_DEF( PEBSLOT2, peribox_slotv, "evpc" )
@@ -565,16 +567,17 @@ peribox_gen_device::peribox_gen_device(const machine_config &mconfig, const char
// The BwG controller will not run with the Geneve due to its wait state
// logic (see bwg.c)
-SLOT_INTERFACE_START( peribox_slotg )
- SLOT_INTERFACE("memex", TI99_MEMEX)
- SLOT_INTERFACE("tirs232", TI99_RS232)
- SLOT_INTERFACE("speech", TI99_SPEECH)
- SLOT_INTERFACE("horizon", TI99_HORIZON)
- SLOT_INTERFACE("ide", TI99_IDE)
- SLOT_INTERFACE("usbsm", TI99_USBSM)
- SLOT_INTERFACE("hfdc", TI99_HFDC)
- SLOT_INTERFACE("tifdc", TI99_FDC)
-SLOT_INTERFACE_END
+void peribox_slotg(device_slot_interface &device)
+{
+ device.option_add("memex", TI99_MEMEX);
+ device.option_add("tirs232", TI99_RS232);
+ device.option_add("speech", TI99_SPEECH);
+ device.option_add("horizon", TI99_HORIZON);
+ device.option_add("ide", TI99_IDE);
+ device.option_add("usbsm", TI99_USBSM);
+ device.option_add("hfdc", TI99_HFDC);
+ device.option_add("tifdc", TI99_FDC);
+}
MACHINE_CONFIG_START(peribox_gen_device::device_add_mconfig)
MCFG_PERIBOX_SLOT_ADD( PEBSLOT2, peribox_slotg )
@@ -596,21 +599,22 @@ peribox_sg_device::peribox_sg_device(const machine_config &mconfig, const char *
m_address_prefix = 0x70000;
}
-SLOT_INTERFACE_START( peribox_slotp )
- SLOT_INTERFACE("evpc", TI99_EVPC )
- SLOT_INTERFACE("myarcmem", TI99_MYARCMEM)
- SLOT_INTERFACE("samsmem", TI99_SAMSMEM)
- SLOT_INTERFACE("pcode", TI99_P_CODE)
- SLOT_INTERFACE("hsgpl", TI99_HSGPL)
- SLOT_INTERFACE("tirs232", TI99_RS232)
- SLOT_INTERFACE("speech", TI99_SPEECH)
- SLOT_INTERFACE("horizon", TI99_HORIZON)
- SLOT_INTERFACE("ide", TI99_IDE)
- SLOT_INTERFACE("usbsm", TI99_USBSM)
- SLOT_INTERFACE("bwg", TI99_BWG)
- SLOT_INTERFACE("hfdc", TI99_HFDC)
- SLOT_INTERFACE("tifdc", TI99_FDC)
-SLOT_INTERFACE_END
+void peribox_slotp(device_slot_interface &device)
+{
+ device.option_add("evpc", TI99_EVPC);
+ device.option_add("myarcmem", TI99_MYARCMEM);
+ device.option_add("samsmem", TI99_SAMSMEM);
+ device.option_add("pcode", TI99_P_CODE);
+ device.option_add("hsgpl", TI99_HSGPL);
+ device.option_add("tirs232", TI99_RS232);
+ device.option_add("speech", TI99_SPEECH);
+ device.option_add("horizon", TI99_HORIZON);
+ device.option_add("ide", TI99_IDE);
+ device.option_add("usbsm", TI99_USBSM);
+ device.option_add("bwg", TI99_BWG);
+ device.option_add("hfdc", TI99_HFDC);
+ device.option_add("tifdc", TI99_FDC);
+}
MACHINE_CONFIG_START(peribox_sg_device::device_add_mconfig)
MCFG_PERIBOX_SLOT_ADD_DEF( PEBSLOT2, peribox_slotp, "evpc" )
diff --git a/src/devices/bus/ti99/peb/ti_fdc.cpp b/src/devices/bus/ti99/peb/ti_fdc.cpp
index b1bad0dcc9c..3bc4e297c28 100644
--- a/src/devices/bus/ti99/peb/ti_fdc.cpp
+++ b/src/devices/bus/ti99/peb/ti_fdc.cpp
@@ -439,9 +439,10 @@ FLOPPY_FORMATS_MEMBER(ti_fdc_device::floppy_formats)
FLOPPY_TI99_TDF_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( tifdc_floppies )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
-SLOT_INTERFACE_END
+static void tifdc_floppies(device_slot_interface &device)
+{
+ device.option_add("525dd", FLOPPY_525_DD);
+}
ROM_START( ti_fdc )
ROM_REGION(0x2000, TI99_DSRROM, 0)
diff --git a/src/devices/bus/tiki100/exp.cpp b/src/devices/bus/tiki100/exp.cpp
index d0bc91bc8bc..95aff70d106 100644
--- a/src/devices/bus/tiki100/exp.cpp
+++ b/src/devices/bus/tiki100/exp.cpp
@@ -204,7 +204,8 @@ device_tiki100bus_card_interface::device_tiki100bus_card_interface(const machine
#include "8088.h"
#include "hdc.h"
-SLOT_INTERFACE_START( tiki100_cards )
- SLOT_INTERFACE("8088", TIKI100_8088)
- SLOT_INTERFACE("hdc", TIKI100_HDC)
-SLOT_INTERFACE_END
+void tiki100_cards(device_slot_interface &device)
+{
+ device.option_add("8088", TIKI100_8088);
+ device.option_add("hdc", TIKI100_HDC);
+}
diff --git a/src/devices/bus/tiki100/exp.h b/src/devices/bus/tiki100/exp.h
index 78b2dceaa9f..f849a8c5fb5 100644
--- a/src/devices/bus/tiki100/exp.h
+++ b/src/devices/bus/tiki100/exp.h
@@ -186,6 +186,6 @@ DECLARE_DEVICE_TYPE(TIKI100_BUS, tiki100_bus_device)
-SLOT_INTERFACE_EXTERN( tiki100_cards );
+void tiki100_cards(device_slot_interface &device);
#endif // MAME_BUS_TIKI100_EXP_H
diff --git a/src/devices/bus/tmc600/euro.cpp b/src/devices/bus/tmc600/euro.cpp
index 08324160bde..aae96b0591a 100644
--- a/src/devices/bus/tmc600/euro.cpp
+++ b/src/devices/bus/tmc600/euro.cpp
@@ -59,19 +59,20 @@ void tmc600_euro_bus_slot_t::device_start()
// SLOT_INTERFACE( tmc600_euro_bus_cards )
//-------------------------------------------------
-SLOT_INTERFACE_START( tmc600_euro_bus_cards )
- //SLOT_INTERFACE("tmc710", TMC710) // 5-way expander
- //SLOT_INTERFACE("tmc720", TMC720) // 5-way expander (new model)
- //SLOT_INTERFACE("tmce200", TMCE200) // 8 KB RAM (CMOS)
- //SLOT_INTERFACE("tmce220", TMCE220) // 16/32 KB RAM/EPROM
- //SLOT_INTERFACE("tmce225", TMCE225) // 16 KB RAM (CMOS)
- //SLOT_INTERFACE("tmce250", TMCE250) // 32-way input/output
- //SLOT_INTERFACE("tmce260", TMCE260) // RS-232
- //SLOT_INTERFACE("tmce270", TMCE270) // generic ADC card (RCA CA3162 or CA3300, Teledyne 8700/01/02/03/04/05)
- //SLOT_INTERFACE("tmce2701", TMCE2701) // TMCE-270 with CA3162
- //SLOT_INTERFACE("tmce2702", TMCE2702) // TMCE-270 with CA3300
- //SLOT_INTERFACE("tmce280", TMCE280) // floppy disc controller for 3x 5.25" and 4x 8"
- //SLOT_INTERFACE("tmce285", TMCE285) // monochrome CRT controller (min. 80 cps)
- //SLOT_INTERFACE("tmce300", TMCE300) // slave computer with parallel I/O
- //SLOT_INTERFACE("tmce305", TMCE304) // slave computer with serial I/O
-SLOT_INTERFACE_END
+void tmc600_euro_bus_cards(device_slot_interface &device)
+{
+ //device.option_add("tmc710", TMC710); // 5-way expander
+ //device.option_add("tmc720", TMC720); // 5-way expander (new model)
+ //device.option_add("tmce200", TMCE200); // 8 KB RAM (CMOS)
+ //device.option_add("tmce220", TMCE220); // 16/32 KB RAM/EPROM
+ //device.option_add("tmce225", TMCE225); // 16 KB RAM (CMOS)
+ //device.option_add("tmce250", TMCE250); // 32-way input/output
+ //device.option_add("tmce260", TMCE260); // RS-232
+ //device.option_add("tmce270", TMCE270); // generic ADC card (RCA CA3162 or CA3300, Teledyne 8700/01/02/03/04/05)
+ //device.option_add("tmce2701", TMCE2701); // TMCE-270 with CA3162
+ //device.option_add("tmce2702", TMCE2702); // TMCE-270 with CA3300
+ //device.option_add("tmce280", TMCE280); // floppy disc controller for 3x 5.25" and 4x 8"
+ //device.option_add("tmce285", TMCE285); // monochrome CRT controller (min. 80 cps)
+ //device.option_add("tmce300", TMCE300); // slave computer with parallel I/O
+ //device.option_add("tmce305", TMCE304); // slave computer with serial I/O
+}
diff --git a/src/devices/bus/tmc600/euro.h b/src/devices/bus/tmc600/euro.h
index 8e7f4c7cfe8..7fe8c3c0ff6 100644
--- a/src/devices/bus/tmc600/euro.h
+++ b/src/devices/bus/tmc600/euro.h
@@ -111,7 +111,7 @@ protected:
DECLARE_DEVICE_TYPE(TMC600_EURO_BUS_SLOT, tmc600_euro_bus_slot_t)
-SLOT_INTERFACE_EXTERN( tmc600_euro_bus_cards );
+void tmc600_euro_bus_cards(device_slot_interface &device);
typedef device_type_iterator<tmc600_euro_bus_slot_t> tmc600_euro_bus_slot_t_iterator;
diff --git a/src/devices/bus/tvc/hbf.cpp b/src/devices/bus/tvc/hbf.cpp
index 90dc378056b..de73cb1712a 100644
--- a/src/devices/bus/tvc/hbf.cpp
+++ b/src/devices/bus/tvc/hbf.cpp
@@ -18,9 +18,10 @@ FLOPPY_FORMATS_MEMBER( tvc_hbf_device::floppy_formats )
FLOPPY_TVC_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( tvc_hbf_floppies )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
-SLOT_INTERFACE_END
+static void tvc_hbf_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD);
+}
ROM_START( tvc_hbf )
ROM_REGION(0x4000, "hbf", 0)
diff --git a/src/devices/bus/vcs_ctrl/ctrl.cpp b/src/devices/bus/vcs_ctrl/ctrl.cpp
index f25ef4f6545..c4f735aacb6 100644
--- a/src/devices/bus/vcs_ctrl/ctrl.cpp
+++ b/src/devices/bus/vcs_ctrl/ctrl.cpp
@@ -74,11 +74,12 @@ void vcs_control_port_device::device_start()
#include "paddles.h"
#include "wheel.h"
-SLOT_INTERFACE_START( vcs_control_port_devices )
- SLOT_INTERFACE("joy", VCS_JOYSTICK)
- SLOT_INTERFACE("pad", VCS_PADDLES)
- SLOT_INTERFACE("lp", VCS_LIGHTPEN)
- SLOT_INTERFACE("joybstr", VCS_JOYSTICK_BOOSTER)
- SLOT_INTERFACE("wheel", VCS_WHEEL)
- SLOT_INTERFACE("keypad", VCS_KEYPAD)
-SLOT_INTERFACE_END
+void vcs_control_port_devices(device_slot_interface &device)
+{
+ device.option_add("joy", VCS_JOYSTICK);
+ device.option_add("pad", VCS_PADDLES);
+ device.option_add("lp", VCS_LIGHTPEN);
+ device.option_add("joybstr", VCS_JOYSTICK_BOOSTER);
+ device.option_add("wheel", VCS_WHEEL);
+ device.option_add("keypad", VCS_KEYPAD);
+}
diff --git a/src/devices/bus/vcs_ctrl/ctrl.h b/src/devices/bus/vcs_ctrl/ctrl.h
index 972dab7ec5e..4e098548329 100644
--- a/src/devices/bus/vcs_ctrl/ctrl.h
+++ b/src/devices/bus/vcs_ctrl/ctrl.h
@@ -114,6 +114,6 @@ private:
// device type definition
DECLARE_DEVICE_TYPE(VCS_CONTROL_PORT, vcs_control_port_device)
-SLOT_INTERFACE_EXTERN( vcs_control_port_devices );
+void vcs_control_port_devices(device_slot_interface &device);
#endif // MAME_BUS_CVS_CTRL_CTRL_H
diff --git a/src/devices/bus/vic10/exp.cpp b/src/devices/bus/vic10/exp.cpp
index 0cb8e6deffb..e3af1609567 100644
--- a/src/devices/bus/vic10/exp.cpp
+++ b/src/devices/bus/vic10/exp.cpp
@@ -233,8 +233,9 @@ WRITE_LINE_MEMBER( vic10_expansion_slot_device::p0_w ) { if (m_card != nullptr)
#include "std.h"
#include "multimax.h"
-SLOT_INTERFACE_START( vic10_expansion_cards )
+void vic10_expansion_cards(device_slot_interface &device)
+{
// the following need ROMs from the software list
- SLOT_INTERFACE_INTERNAL("standard", VIC10_STD)
- SLOT_INTERFACE_INTERNAL("multimax", VIC10_MULTIMAX)
-SLOT_INTERFACE_END
+ device.option_add_internal("standard", VIC10_STD);
+ device.option_add_internal("multimax", VIC10_MULTIMAX);
+}
diff --git a/src/devices/bus/vic10/exp.h b/src/devices/bus/vic10/exp.h
index dc63a62a936..05b07924b48 100644
--- a/src/devices/bus/vic10/exp.h
+++ b/src/devices/bus/vic10/exp.h
@@ -176,6 +176,6 @@ protected:
DECLARE_DEVICE_TYPE(VIC10_EXPANSION_SLOT, vic10_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( vic10_expansion_cards );
+void vic10_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_VIC10_EXP_H
diff --git a/src/devices/bus/vic20/exp.cpp b/src/devices/bus/vic20/exp.cpp
index 93f00290a27..7bd09ca74f8 100644
--- a/src/devices/bus/vic20/exp.cpp
+++ b/src/devices/bus/vic20/exp.cpp
@@ -218,18 +218,18 @@ void vic20_expansion_slot_device::cd_w(address_space &space, offs_t offset, uint
#include "videopak.h"
#include "speakeasy.h"
-SLOT_INTERFACE_START( vic20_expansion_cards )
- SLOT_INTERFACE("exp", VIC1010)
- SLOT_INTERFACE("3k", VIC1210)
- SLOT_INTERFACE("8k", VIC1110)
- SLOT_INTERFACE("16k", VIC1111)
- SLOT_INTERFACE("fe3", VIC20_FE3)
- SLOT_INTERFACE("speakez", VIC20_SPEAKEASY)
- SLOT_INTERFACE("videopak", VIC20_VIDEO_PAK)
+void vic20_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("exp", VIC1010);
+ device.option_add("3k", VIC1210);
+ device.option_add("8k", VIC1110);
+ device.option_add("16k", VIC1111);
+ device.option_add("fe3", VIC20_FE3);
+ device.option_add("speakez", VIC20_SPEAKEASY);
+ device.option_add("videopak", VIC20_VIDEO_PAK);
// the following need ROMs from the software list
- SLOT_INTERFACE_INTERNAL("standard", VIC20_STD)
- SLOT_INTERFACE_INTERNAL("ieee488", VIC1112)
- MCFG_SLOT_OPTION_CLOCK("ieee488", DERIVED_CLOCK(1, 1))
- SLOT_INTERFACE_INTERNAL("megacart", VIC20_MEGACART)
-SLOT_INTERFACE_END
+ device.option_add_internal("standard", VIC20_STD);
+ device.option_add_internal("ieee488", VIC1112).clock(DERIVED_CLOCK(1, 1));
+ device.option_add_internal("megacart", VIC20_MEGACART);
+}
diff --git a/src/devices/bus/vic20/exp.h b/src/devices/bus/vic20/exp.h
index 695db050936..fddc500e665 100644
--- a/src/devices/bus/vic20/exp.h
+++ b/src/devices/bus/vic20/exp.h
@@ -164,6 +164,6 @@ protected:
DECLARE_DEVICE_TYPE(VIC20_EXPANSION_SLOT, vic20_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( vic20_expansion_cards );
+void vic20_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_VIC20_EXP_H
diff --git a/src/devices/bus/vic20/user.cpp b/src/devices/bus/vic20/user.cpp
index cf8f1f3c817..998f45d80cc 100644
--- a/src/devices/bus/vic20/user.cpp
+++ b/src/devices/bus/vic20/user.cpp
@@ -17,7 +17,8 @@
#include "4cga.h"
#include "vic1011.h"
-SLOT_INTERFACE_START( vic20_user_port_cards )
- SLOT_INTERFACE("4cga", C64_4CGA)
- SLOT_INTERFACE("rs232", VIC1011)
-SLOT_INTERFACE_END
+void vic20_user_port_cards(device_slot_interface &device)
+{
+ device.option_add("4cga", C64_4CGA);
+ device.option_add("rs232", VIC1011);
+}
diff --git a/src/devices/bus/vic20/user.h b/src/devices/bus/vic20/user.h
index a53fec7124b..dced07a424b 100644
--- a/src/devices/bus/vic20/user.h
+++ b/src/devices/bus/vic20/user.h
@@ -28,6 +28,6 @@
#include "bus/pet/user.h"
-SLOT_INTERFACE_EXTERN( vic20_user_port_cards );
+void vic20_user_port_cards(device_slot_interface &device);
#endif // MAME_BUS_VIC20_USER_H
diff --git a/src/devices/bus/vidbrain/exp.cpp b/src/devices/bus/vidbrain/exp.cpp
index ebd4a541da0..c490c0605b2 100644
--- a/src/devices/bus/vidbrain/exp.cpp
+++ b/src/devices/bus/vidbrain/exp.cpp
@@ -188,8 +188,9 @@ void videobrain_expansion_slot_device::bo_w(address_space &space, offs_t offset,
#include "money_minder.h"
#include "timeshare.h"
-SLOT_INTERFACE_START( vidbrain_expansion_cards )
- SLOT_INTERFACE_INTERNAL("standard", VB_STD)
- SLOT_INTERFACE_INTERNAL("moneyminder", VB_MONEY_MINDER)
- SLOT_INTERFACE_INTERNAL("timeshare", VB_TIMESHARE)
-SLOT_INTERFACE_END
+void vidbrain_expansion_cards(device_slot_interface &device)
+{
+ device.option_add_internal("standard", VB_STD);
+ device.option_add_internal("moneyminder", VB_MONEY_MINDER);
+ device.option_add_internal("timeshare", VB_TIMESHARE);
+}
diff --git a/src/devices/bus/vidbrain/exp.h b/src/devices/bus/vidbrain/exp.h
index 60d1f90ec32..b7f3f5cad7a 100644
--- a/src/devices/bus/vidbrain/exp.h
+++ b/src/devices/bus/vidbrain/exp.h
@@ -159,6 +159,6 @@ protected:
DECLARE_DEVICE_TYPE(VIDEOBRAIN_EXPANSION_SLOT, videobrain_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( vidbrain_expansion_cards );
+void vidbrain_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_VIDBRAIN_EXP_H
diff --git a/src/devices/bus/vip/byteio.cpp b/src/devices/bus/vip/byteio.cpp
index c44c4825abb..7b908dad442 100644
--- a/src/devices/bus/vip/byteio.cpp
+++ b/src/devices/bus/vip/byteio.cpp
@@ -84,7 +84,8 @@ WRITE_LINE_MEMBER( vip_byteio_port_device::q_w ) { if (m_cart != nullptr) m_cart
// SLOT_INTERFACE( vip_byteio_cards )
//-------------------------------------------------
-SLOT_INTERFACE_START( vip_byteio_cards )
- //SLOT_INTERFACE("exp2", VP576_BYTEIO)
- SLOT_INTERFACE("ascii", VP620)
-SLOT_INTERFACE_END
+void vip_byteio_cards(device_slot_interface &device)
+{
+ //device.option_add("exp2", VP576_BYTEIO);
+ device.option_add("ascii", VP620);
+}
diff --git a/src/devices/bus/vip/byteio.h b/src/devices/bus/vip/byteio.h
index 08b435ac705..d2190214a2d 100644
--- a/src/devices/bus/vip/byteio.h
+++ b/src/devices/bus/vip/byteio.h
@@ -124,6 +124,6 @@ DECLARE_DEVICE_TYPE(VIP_BYTEIO_PORT, vip_byteio_port_device)
// slot devices
#include "vp620.h"
-SLOT_INTERFACE_EXTERN( vip_byteio_cards );
+void vip_byteio_cards(device_slot_interface &device);
#endif // MAME_BUS_VIP_BYTEIO_H
diff --git a/src/devices/bus/vip/exp.cpp b/src/devices/bus/vip/exp.cpp
index 5430dd482ed..3b9fce990ec 100644
--- a/src/devices/bus/vip/exp.cpp
+++ b/src/devices/bus/vip/exp.cpp
@@ -204,15 +204,16 @@ WRITE_LINE_MEMBER( vip_expansion_slot_device::run_w ) { if (m_card != nullptr) m
#include "vp595.h"
#include "vp700.h"
-SLOT_INTERFACE_START( vip_expansion_cards )
- SLOT_INTERFACE("super", VP550)
- //SLOT_INTERFACE("eprom", VP560)
- //SLOT_INTERFACE("eprommer", VP565)
- SLOT_INTERFACE("ram", VP570)
- SLOT_INTERFACE("exp", VP575)
- //SLOT_INTERFACE("exp2", VP576_EXP)
- SLOT_INTERFACE("keypad", VP585)
- SLOT_INTERFACE("color", VP590)
- SLOT_INTERFACE("simple", VP595)
- SLOT_INTERFACE("basic", VP700)
-SLOT_INTERFACE_END
+void vip_expansion_cards(device_slot_interface &device)
+{
+ device.option_add("super", VP550);
+ //device.option_add("eprom", VP560);
+ //device.option_add("eprommer", VP565);
+ device.option_add("ram", VP570);
+ device.option_add("exp", VP575);
+ //device.option_add("exp2", VP576_EXP);
+ device.option_add("keypad", VP585);
+ device.option_add("color", VP590);
+ device.option_add("simple", VP595);
+ device.option_add("basic", VP700);
+}
diff --git a/src/devices/bus/vip/exp.h b/src/devices/bus/vip/exp.h
index 4e864fc0430..98eda45bdbe 100644
--- a/src/devices/bus/vip/exp.h
+++ b/src/devices/bus/vip/exp.h
@@ -158,6 +158,6 @@ protected:
DECLARE_DEVICE_TYPE(VIP_EXPANSION_SLOT, vip_expansion_slot_device)
-SLOT_INTERFACE_EXTERN( vip_expansion_cards );
+void vip_expansion_cards(device_slot_interface &device);
#endif // MAME_BUS_VIP_EXP_H
diff --git a/src/devices/bus/vme/vme.cpp b/src/devices/bus/vme/vme.cpp
index d7d549bb34c..166b1d9781f 100644
--- a/src/devices/bus/vme/vme.cpp
+++ b/src/devices/bus/vme/vme.cpp
@@ -185,18 +185,20 @@ WRITE8_MEMBER(vme_slot_device::write8)
/* The following two slot collections be combined once we intriduce capabilities for each board */
/* Usually a VME firmware supports only a few boards so it will have its own slot collection defined */
// Controller capable boards that can go into slot1 ( or has an embedded VME bus )
-SLOT_INTERFACE_START( vme_slot1 )
-// SLOT_INTERFACE("mzr8105", VME_MZR8105)
-SLOT_INTERFACE_END
+void vme_slot1(device_slot_interface &device)
+{
+// device.option_add("mzr8105", VME_MZR8105);
+}
#endif
// All boards that can be non-controller boards, eg not driving the VME CLK etc
-SLOT_INTERFACE_START( vme_slots )
- SLOT_INTERFACE("mzr8300", VME_MZR8300)
- SLOT_INTERFACE("mvme350", VME_MVME350)
- SLOT_INTERFACE("fcisio1", VME_FCISIO1)
- SLOT_INTERFACE("fcscsi1", VME_FCSCSI1)
-SLOT_INTERFACE_END
+void vme_slots(device_slot_interface &device)
+{
+ device.option_add("mzr8300", VME_MZR8300);
+ device.option_add("mvme350", VME_MVME350);
+ device.option_add("fcisio1", VME_FCISIO1);
+ device.option_add("fcscsi1", VME_FCSCSI1);
+}
//
// VME device P1
diff --git a/src/devices/bus/vme/vme.h b/src/devices/bus/vme/vme.h
index 7fd1a24f9c8..8f86d90bd29 100644
--- a/src/devices/bus/vme/vme.h
+++ b/src/devices/bus/vme/vme.h
@@ -61,8 +61,8 @@
#define MCFG_VME_J1_CB(_devcb) \
devcb = &downcast<vme_slot_device &>(*device).set_vme_j1_callback(DEVCB_##_devcb);
-//SLOT_INTERFACE_EXTERN(vme_slot1); // Disabled until we know how to combine a board driver and a slot device.
-SLOT_INTERFACE_EXTERN(vme_slots);
+//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);
class device_vme_card_interface; // This interface is standardized
diff --git a/src/devices/bus/vme/vme_fcscsi.cpp b/src/devices/bus/vme/vme_fcscsi.cpp
index 807d799917d..9cc50e5eb76 100644
--- a/src/devices/bus/vme/vme_fcscsi.cpp
+++ b/src/devices/bus/vme/vme_fcscsi.cpp
@@ -205,9 +205,10 @@ FLOPPY_FORMATS_MEMBER( vme_fcscsi1_card_device::floppy_formats )
FLOPPY_PC_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( fcscsi_floppies )
- SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
-SLOT_INTERFACE_END
+static void fcscsi_floppies(device_slot_interface &device)
+{
+ device.option_add("525qd", FLOPPY_525_QD);
+}
/* ROM definitions */
diff --git a/src/devices/bus/vtech/ioexp/carts.cpp b/src/devices/bus/vtech/ioexp/carts.cpp
index ae579ba23e5..86209ad35f8 100644
--- a/src/devices/bus/vtech/ioexp/carts.cpp
+++ b/src/devices/bus/vtech/ioexp/carts.cpp
@@ -13,7 +13,8 @@
#include "printer.h"
-SLOT_INTERFACE_START( vtech_ioexp_slot_carts )
- SLOT_INTERFACE("joystick", VTECH_JOYSTICK_INTERFACE)
- SLOT_INTERFACE("printer", VTECH_PRINTER_INTERFACE)
-SLOT_INTERFACE_END
+void vtech_ioexp_slot_carts(device_slot_interface &device)
+{
+ device.option_add("joystick", VTECH_JOYSTICK_INTERFACE);
+ device.option_add("printer", VTECH_PRINTER_INTERFACE);
+}
diff --git a/src/devices/bus/vtech/ioexp/carts.h b/src/devices/bus/vtech/ioexp/carts.h
index a6195747389..dc7047a27d1 100644
--- a/src/devices/bus/vtech/ioexp/carts.h
+++ b/src/devices/bus/vtech/ioexp/carts.h
@@ -12,6 +12,6 @@
#pragma once
-SLOT_INTERFACE_EXTERN( vtech_ioexp_slot_carts );
+void vtech_ioexp_slot_carts(device_slot_interface &device);
#endif // MAME_BUS_VTECH_IOEXP_CARTS_H
diff --git a/src/devices/bus/vtech/memexp/carts.cpp b/src/devices/bus/vtech/memexp/carts.cpp
index 9ca95b56dee..41bd9d42c0f 100644
--- a/src/devices/bus/vtech/memexp/carts.cpp
+++ b/src/devices/bus/vtech/memexp/carts.cpp
@@ -16,13 +16,14 @@
#include "wordpro.h"
-SLOT_INTERFACE_START( vtech_memexp_carts )
- SLOT_INTERFACE("floppy", VTECH_FLOPPY_CONTROLLER)
- SLOT_INTERFACE("laser110_16k", VTECH_LASER110_16K)
- SLOT_INTERFACE("laser210_16k", VTECH_LASER210_16K)
- SLOT_INTERFACE("laser310_16k", VTECH_LASER310_16K)
- SLOT_INTERFACE("laser_64k", VTECH_LASER_64K)
- SLOT_INTERFACE("rs232", VTECH_RS232_INTERFACE)
- SLOT_INTERFACE("rtty", VTECH_RTTY_INTERFACE)
- SLOT_INTERFACE("wordpro", VTECH_WORDPRO)
-SLOT_INTERFACE_END
+void vtech_memexp_carts(device_slot_interface &device)
+{
+ device.option_add("floppy", VTECH_FLOPPY_CONTROLLER);
+ device.option_add("laser110_16k", VTECH_LASER110_16K);
+ device.option_add("laser210_16k", VTECH_LASER210_16K);
+ device.option_add("laser310_16k", VTECH_LASER310_16K);
+ device.option_add("laser_64k", VTECH_LASER_64K);
+ device.option_add("rs232", VTECH_RS232_INTERFACE);
+ device.option_add("rtty", VTECH_RTTY_INTERFACE);
+ device.option_add("wordpro", VTECH_WORDPRO);
+}
diff --git a/src/devices/bus/vtech/memexp/carts.h b/src/devices/bus/vtech/memexp/carts.h
index f8baa314256..b0ab76dd4d8 100644
--- a/src/devices/bus/vtech/memexp/carts.h
+++ b/src/devices/bus/vtech/memexp/carts.h
@@ -11,6 +11,6 @@
#pragma once
-SLOT_INTERFACE_EXTERN( vtech_memexp_carts );
+void vtech_memexp_carts(device_slot_interface &device);
#endif // MAME_BUS_VTECH_MEMEXP_CARTS_H
diff --git a/src/devices/bus/vtech/memexp/floppy.cpp b/src/devices/bus/vtech/memexp/floppy.cpp
index 0788a653012..51410184e6c 100644
--- a/src/devices/bus/vtech/memexp/floppy.cpp
+++ b/src/devices/bus/vtech/memexp/floppy.cpp
@@ -45,9 +45,10 @@ const tiny_rom_entry *vtech_floppy_controller_device::device_rom_region() const
// device_add_mconfig - add device configuration
//-------------------------------------------------
-static SLOT_INTERFACE_START( laser_floppies )
- SLOT_INTERFACE("525", FLOPPY_525_SSSD)
-SLOT_INTERFACE_END
+static void laser_floppies(device_slot_interface &device)
+{
+ device.option_add("525", FLOPPY_525_SSSD);
+}
MACHINE_CONFIG_START(vtech_floppy_controller_device::device_add_mconfig)
MCFG_MEMEXP_SLOT_ADD("mem")
diff --git a/src/devices/bus/wangpc/wangpc.cpp b/src/devices/bus/wangpc/wangpc.cpp
index b7acf07f94c..36ed25bfdff 100644
--- a/src/devices/bus/wangpc/wangpc.cpp
+++ b/src/devices/bus/wangpc/wangpc.cpp
@@ -262,13 +262,14 @@ device_wangpcbus_card_interface::device_wangpcbus_card_interface(const machine_c
#include "tig.h"
#include "wdc.h"
-SLOT_INTERFACE_START( wangpc_cards )
- SLOT_INTERFACE("emb", WANGPC_EMB) // extended memory board
- SLOT_INTERFACE("lic", WANGPC_LIC) // local interconnect option card
- SLOT_INTERFACE("lvc", WANGPC_LVC) // low-resolution video controller
- SLOT_INTERFACE("mcc", WANGPC_MCC) // multiport communications controller
- SLOT_INTERFACE("mvc", WANGPC_MVC) // medium-resolution video controller
- SLOT_INTERFACE("rtc", WANGPC_RTC) // remote telecommunications controller
- SLOT_INTERFACE("tig", WANGPC_TIG) // text/image/graphics controller
- SLOT_INTERFACE("wdc", WANGPC_WDC) // Winchester disk controller
-SLOT_INTERFACE_END
+void wangpc_cards(device_slot_interface &device)
+{
+ device.option_add("emb", WANGPC_EMB); // extended memory board
+ device.option_add("lic", WANGPC_LIC); // local interconnect option card
+ device.option_add("lvc", WANGPC_LVC); // low-resolution video controller
+ device.option_add("mcc", WANGPC_MCC); // multiport communications controller
+ device.option_add("mvc", WANGPC_MVC); // medium-resolution video controller
+ device.option_add("rtc", WANGPC_RTC); // remote telecommunications controller
+ device.option_add("tig", WANGPC_TIG); // text/image/graphics controller
+ device.option_add("wdc", WANGPC_WDC); // Winchester disk controller
+}
diff --git a/src/devices/bus/wangpc/wangpc.h b/src/devices/bus/wangpc/wangpc.h
index b39c79f12f2..1510eba9fbf 100644
--- a/src/devices/bus/wangpc/wangpc.h
+++ b/src/devices/bus/wangpc/wangpc.h
@@ -223,6 +223,6 @@ private:
};
-SLOT_INTERFACE_EXTERN( wangpc_cards );
+void wangpc_cards(device_slot_interface &device);
#endif // MAME_BUS_WANGPC_WANGPC_H
diff --git a/src/devices/cpu/e132xs/e132xs.cpp b/src/devices/cpu/e132xs/e132xs.cpp
index 773a240612f..f23a5a6c8e9 100644
--- a/src/devices/cpu/e132xs/e132xs.cpp
+++ b/src/devices/cpu/e132xs/e132xs.cpp
@@ -228,6 +228,10 @@ hyperstone_device::hyperstone_device(const machine_config &mconfig, const char *
{
}
+hyperstone_device::~hyperstone_device()
+{
+}
+
//-------------------------------------------------
// e116t_device - constructor
diff --git a/src/devices/cpu/e132xs/e132xs.h b/src/devices/cpu/e132xs/e132xs.h
index 31fbd483f00..57cd7516d6e 100644
--- a/src/devices/cpu/e132xs/e132xs.h
+++ b/src/devices/cpu/e132xs/e132xs.h
@@ -114,6 +114,8 @@ class hyperstone_device : public cpu_device, public hyperstone_disassembler::con
friend class e132xs_frontend;
public:
+ virtual ~hyperstone_device() override;
+
inline void ccfunc_unimplemented();
inline void ccfunc_print();
inline void ccfunc_total_cycles();
diff --git a/src/devices/cpu/mb86235/mb86235.cpp b/src/devices/cpu/mb86235/mb86235.cpp
index da543bdb92f..6fad9a71636 100644
--- a/src/devices/cpu/mb86235/mb86235.cpp
+++ b/src/devices/cpu/mb86235/mb86235.cpp
@@ -274,6 +274,10 @@ mb86235_device::mb86235_device(const machine_config &mconfig, const char *tag, d
{
}
+mb86235_device::~mb86235_device()
+{
+}
+
device_memory_interface::space_config_vector mb86235_device::memory_space_config() const
{
return space_config_vector {
diff --git a/src/devices/cpu/mb86235/mb86235.h b/src/devices/cpu/mb86235/mb86235.h
index dc583dd9b84..f0a394bed5b 100644
--- a/src/devices/cpu/mb86235/mb86235.h
+++ b/src/devices/cpu/mb86235/mb86235.h
@@ -35,6 +35,7 @@ class mb86235_device : public cpu_device
public:
// construction/destruction
mb86235_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t clock);
+ virtual ~mb86235_device() override;
void set_fifoin_tag(const char *tag) { m_fifoin.set_tag(tag); }
void set_fifoout0_tag(const char *tag) { m_fifoout0.set_tag(tag); }
diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h
index bc89a287a53..97c7ed631ae 100644
--- a/src/devices/cpu/powerpc/ppc.h
+++ b/src/devices/cpu/powerpc/ppc.h
@@ -210,6 +210,8 @@ protected:
ppc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int address_bits, int data_bits, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor, address_map_constructor internal_map);
public:
+ virtual ~ppc_device() override;
+
void set_bus_frequency(uint32_t bus_frequency) { c_bus_frequency = bus_frequency; }
void set_bus_frequency(const XTAL &xtal) { set_bus_frequency(xtal.value()); }
diff --git a/src/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp
index c0ed33f610b..1d4b92ad549 100644
--- a/src/devices/cpu/powerpc/ppccom.cpp
+++ b/src/devices/cpu/powerpc/ppccom.cpp
@@ -231,6 +231,10 @@ ppc_device::ppc_device(const machine_config &mconfig, device_type type, const ch
set_vtlb_fixed_entries(PPC603_FIXED_TLB_ENTRIES);
}
+ppc_device::~ppc_device()
+{
+}
+
//ppc403_device::ppc403_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
// : ppc_device(mconfig, PPC403, "PPC403", tag, owner, clock, "ppc403", 32?, 64?)
//{
diff --git a/src/devices/cpu/rsp/rsp.cpp b/src/devices/cpu/rsp/rsp.cpp
index cf04e8a2bf5..1037f33d845 100644
--- a/src/devices/cpu/rsp/rsp.cpp
+++ b/src/devices/cpu/rsp/rsp.cpp
@@ -144,6 +144,10 @@ rsp_device::rsp_device(const machine_config &mconfig, const char *tag, device_t
{
}
+rsp_device::~rsp_device()
+{
+}
+
device_memory_interface::space_config_vector rsp_device::memory_space_config() const
{
return space_config_vector {
diff --git a/src/devices/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h
index 2dfa97d2cfb..8c3604473da 100644
--- a/src/devices/cpu/rsp/rsp.h
+++ b/src/devices/cpu/rsp/rsp.h
@@ -108,6 +108,7 @@ class rsp_device : public cpu_device
public:
// construction/destruction
rsp_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
+ virtual ~rsp_device() override;
void resolve_cb();
template <class Object> devcb_base &set_dp_reg_r_callback(Object &&cb) { return m_dp_reg_r_func.set_callback(std::forward<Object>(cb)); }
diff --git a/src/devices/cpu/sh/sh2.cpp b/src/devices/cpu/sh/sh2.cpp
index 58e5596a7f5..38f2998841d 100644
--- a/src/devices/cpu/sh/sh2.cpp
+++ b/src/devices/cpu/sh/sh2.cpp
@@ -159,6 +159,10 @@ sh2_device::sh2_device(const machine_config &mconfig, const char *tag, device_t
{
}
+sh2_device::~sh2_device()
+{
+}
+
void sh2_device::device_stop()
{
diff --git a/src/devices/cpu/sh/sh2.h b/src/devices/cpu/sh/sh2.h
index 431c9831870..75f46d2bf48 100644
--- a/src/devices/cpu/sh/sh2.h
+++ b/src/devices/cpu/sh/sh2.h
@@ -71,6 +71,7 @@ public:
// construction/destruction
sh2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~sh2_device() override;
void set_is_slave(int slave) { m_is_slave = slave; }
template <typename Object> void set_dma_kludge_callback(Object &&cb) { m_dma_kludge_cb = std::forward<Object>(cb); }
@@ -157,12 +158,12 @@ private:
uint32_t m_debugger_temp;
- inline uint8_t RB(offs_t A) override;
- inline uint16_t RW(offs_t A) override;
- inline uint32_t RL(offs_t A) override;
- inline void WB(offs_t A, uint8_t V) override;
- inline void WW(offs_t A, uint16_t V) override;
- inline void WL(offs_t A, uint32_t V) override;
+ virtual uint8_t RB(offs_t A) override;
+ virtual uint16_t RW(offs_t A) override;
+ virtual uint32_t RL(offs_t A) override;
+ virtual void WB(offs_t A, uint8_t V) override;
+ virtual void WW(offs_t A, uint16_t V) override;
+ virtual void WL(offs_t A, uint32_t V) override;
virtual void LDCMSR(const uint16_t opcode) override;
virtual void LDCSR(const uint16_t opcode) override;
diff --git a/src/devices/cpu/sharc/sharc.cpp b/src/devices/cpu/sharc/sharc.cpp
index 3bdbba6ad47..617f5be79a8 100644
--- a/src/devices/cpu/sharc/sharc.cpp
+++ b/src/devices/cpu/sharc/sharc.cpp
@@ -91,6 +91,10 @@ adsp21062_device::adsp21062_device(const machine_config &mconfig, const char *ta
{
}
+adsp21062_device::~adsp21062_device()
+{
+}
+
device_memory_interface::space_config_vector adsp21062_device::memory_space_config() const
{
return space_config_vector {
diff --git a/src/devices/cpu/sharc/sharc.h b/src/devices/cpu/sharc/sharc.h
index 91455cb3b6c..797899ef98e 100644
--- a/src/devices/cpu/sharc/sharc.h
+++ b/src/devices/cpu/sharc/sharc.h
@@ -94,6 +94,7 @@ public:
// construction/destruction
adsp21062_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
+ virtual ~adsp21062_device() override;
// configuration helpers
void set_boot_mode(const sharc_boot_mode boot_mode) { m_boot_mode = boot_mode; }
diff --git a/src/devices/machine/ataintf.cpp b/src/devices/machine/ataintf.cpp
index a6d075217ec..972dadd94d3 100644
--- a/src/devices/machine/ataintf.cpp
+++ b/src/devices/machine/ataintf.cpp
@@ -204,10 +204,11 @@ WRITE_LINE_MEMBER( abstract_ata_interface_device::write_dmack )
elem->dev()->write_dmack(state);
}
-SLOT_INTERFACE_START(ata_devices)
- SLOT_INTERFACE("hdd", IDE_HARDDISK)
- SLOT_INTERFACE("cdrom", ATAPI_CDROM)
-SLOT_INTERFACE_END
+void ata_devices(device_slot_interface &device)
+{
+ device.option_add("hdd", IDE_HARDDISK);
+ device.option_add("cdrom", ATAPI_CDROM);
+}
abstract_ata_interface_device::abstract_ata_interface_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
diff --git a/src/devices/machine/ataintf.h b/src/devices/machine/ataintf.h
index d68e4d78340..8a9f05fb846 100644
--- a/src/devices/machine/ataintf.h
+++ b/src/devices/machine/ataintf.h
@@ -55,7 +55,7 @@ DECLARE_DEVICE_TYPE(ATA_SLOT, ata_slot_device)
#define MCFG_ATA_INTERFACE_DASP_HANDLER(_devcb) \
devcb = &downcast<abstract_ata_interface_device &>(*device).set_dasp_handler(DEVCB_##_devcb);
-SLOT_INTERFACE_EXTERN(ata_devices);
+void ata_devices(device_slot_interface &device);
/***************************************************************************
DEVICE CONFIGURATION MACROS
diff --git a/src/devices/machine/fdc37c93x.cpp b/src/devices/machine/fdc37c93x.cpp
index fe620389342..9ddd01fd8d1 100644
--- a/src/devices/machine/fdc37c93x.cpp
+++ b/src/devices/machine/fdc37c93x.cpp
@@ -219,12 +219,13 @@ void fdc37c93x_device::update_dreq_mapping(int dreq, int logical)
dreq_mapping[dreq] = logical;
}
-static SLOT_INTERFACE_START(pc_hd_floppies)
- SLOT_INTERFACE("525hd", FLOPPY_525_HD)
- SLOT_INTERFACE("35hd", FLOPPY_35_HD)
- SLOT_INTERFACE("525dd", FLOPPY_525_DD)
- SLOT_INTERFACE("35dd", FLOPPY_35_DD)
-SLOT_INTERFACE_END
+static void pc_hd_floppies(device_slot_interface &device)
+{
+ device.option_add("525hd", FLOPPY_525_HD);
+ device.option_add("35hd", FLOPPY_35_HD);
+ device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("35dd", FLOPPY_35_DD);
+}
FLOPPY_FORMATS_MEMBER(fdc37c93x_device::floppy_formats)
FLOPPY_PC_FORMAT,
diff --git a/src/devices/machine/pdc.cpp b/src/devices/machine/pdc.cpp
index e09f9ff1777..0c828df743d 100644
--- a/src/devices/machine/pdc.cpp
+++ b/src/devices/machine/pdc.cpp
@@ -226,20 +226,22 @@ INPUT_PORTS_END
// SLOT_INTERFACE( pdc_floppies )
//-------------------------------------------------
-static SLOT_INTERFACE_START( pdc_floppies )
- SLOT_INTERFACE( "35hd", FLOPPY_35_HD )
-SLOT_INTERFACE_END
+static void pdc_floppies(device_slot_interface &device)
+{
+ device.option_add("35hd", FLOPPY_35_HD);
+}
//-------------------------------------------------
// SLOT_INTERFACE( pdc_harddisks )
//-------------------------------------------------
-static SLOT_INTERFACE_START( pdc_harddisks )
- SLOT_INTERFACE( "generic", MFMHD_GENERIC ) // Generic hard disk (self-adapting to image)
- SLOT_INTERFACE( "st213", MFMHD_ST213 ) // Seagate ST-213 (10 MB)
- SLOT_INTERFACE( "st225", MFMHD_ST225 ) // Seagate ST-225 (20 MB)
- SLOT_INTERFACE( "st251", MFMHD_ST251 ) // Seagate ST-251 (40 MB)
-SLOT_INTERFACE_END
+static void pdc_harddisks(device_slot_interface &device)
+{
+ device.option_add("generic", MFMHD_GENERIC); // Generic hard disk (self-adapting to image)
+ device.option_add("st213", MFMHD_ST213); // Seagate ST-213 (10 MB)
+ device.option_add("st225", MFMHD_ST225); // Seagate ST-225 (20 MB)
+ device.option_add("st251", MFMHD_ST251); // Seagate ST-251 (40 MB)
+}
//-------------------------------------------------
// FLOPPY_FORMATS( floppy_formats )
diff --git a/src/devices/machine/roc10937.h b/src/devices/machine/roc10937.h
index 4f67cd975cd..41b468c719e 100644
--- a/src/devices/machine/roc10937.h
+++ b/src/devices/machine/roc10937.h
@@ -103,29 +103,29 @@ private:
class roc10937_device : public rocvfd_device {
public:
- roc10937_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ roc10937_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 60);
};
class msc1937_device : public rocvfd_device {
public:
- msc1937_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msc1937_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 60);
};
class mic10937_device : public rocvfd_device {
public:
- mic10937_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mic10937_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 60);
};
class roc10957_device : public rocvfd_device {
public:
- roc10957_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ roc10957_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 60);
void write_char(int data);
};
class s16lf01_device : public rocvfd_device {
public:
- s16lf01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ s16lf01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 60);
};
diff --git a/src/devices/sound/ad1848.cpp b/src/devices/sound/ad1848.cpp
index 30a0e59da2a..e434302b554 100644
--- a/src/devices/sound/ad1848.cpp
+++ b/src/devices/sound/ad1848.cpp
@@ -26,8 +26,8 @@ MACHINE_CONFIG_START(ad1848_device::device_add_mconfig)
MCFG_SOUND_ADD("ldac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) // unknown DAC
MCFG_SOUND_ADD("rdac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
- MCFG_SOUND_ROUTE_EX(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
diff --git a/src/devices/sound/pokey.cpp b/src/devices/sound/pokey.cpp
index 6664e684933..46e686befc7 100644
--- a/src/devices/sound/pokey.cpp
+++ b/src/devices/sound/pokey.cpp
@@ -163,6 +163,7 @@
static const int clock_divisors[3] = {1, DIV_64, DIV_15};
+constexpr unsigned pokey_device::FREQ_17_EXACT;
diff --git a/src/emu/devcb.h b/src/emu/devcb.h
index fee31ce1ca4..2fd6e53ae19 100644
--- a/src/emu/devcb.h
+++ b/src/emu/devcb.h
@@ -26,11 +26,6 @@ namespace emu { namespace detail {
template <typename Delegate> struct devcb_delegate_initialiser
{
- template <typename T> struct is_device_implementation
- { static constexpr bool value = std::is_base_of<device_t, T>::value; };
- template <typename T> struct is_device_interface
- { static constexpr bool value = std::is_base_of<device_interface, T>::value && !is_device_implementation<T>::value; };
-
devcb_delegate_initialiser(char const *tag, Delegate &&delegate) : m_base(nullptr), m_delegate(std::move(delegate))
{
}
@@ -53,9 +48,9 @@ template <typename Delegate> struct devcb_delegate_initialiser
inline char const *devcb_delegate_get_tag(char const *tag) { return tag; }
template <typename T>
-inline std::enable_if_t<devcb_delegate_initialiser<bool>::is_device_implementation<T>::value, char const *> devcb_delegate_get_tag(T &device) { return DEVICE_SELF; }
+inline std::enable_if_t<is_device_implementation<T>::value, char const *> devcb_delegate_get_tag(T &device) { return DEVICE_SELF; }
template <typename T>
-inline std::enable_if_t<devcb_delegate_initialiser<bool>::is_device_interface<T>::value, char const *> devcb_delegate_get_tag(T &interface) { return DEVICE_SELF; }
+inline std::enable_if_t<is_device_interface<T>::value, char const *> devcb_delegate_get_tag(T &interface) { return DEVICE_SELF; }
template <typename DeviceClass, bool Required>
inline char const *devcb_delegate_get_tag(device_finder<DeviceClass, Required> const &finder) { return finder.finder_tag(); }
@@ -191,14 +186,12 @@ protected:
template <callback_type Type> struct tag_desc
{
- constexpr tag_desc(device_t *base, char const *tag) : m_base(base), m_tag(tag) { }
device_t *m_base;
char const *m_tag;
};
template <callback_type Type> struct line_desc
{
- constexpr line_desc(device_t *base, char const *tag, int inputnum) : m_base(base), m_tag(tag), m_inputnum(inputnum) { }
device_t *m_base;
char const *m_tag;
int m_inputnum;
diff --git a/src/emu/devfind.h b/src/emu/devfind.h
index 1e61ad1c866..9bd5ad48fde 100644
--- a/src/emu/devfind.h
+++ b/src/emu/devfind.h
@@ -540,17 +540,12 @@ public:
}
private:
- template <typename T> struct is_device_implementation
- { static constexpr bool value = std::is_base_of<device_t, T>::value; };
- template <typename T> struct is_device_interface
- { static constexpr bool value = std::is_base_of<device_interface, T>::value && !is_device_implementation<T>::value; };
-
/// \brief Check that device implementation has expected tag
/// \param [in] device Reference to device.
/// \return True if supplied device matches the configured target
/// tag, or false otherwise.
template <typename T>
- std::enable_if_t<is_device_implementation<T>::value, bool> is_expected_tag(T const &device) const
+ std::enable_if_t<emu::detail::is_device_implementation<T>::value, bool> is_expected_tag(T const &device) const
{
return this->m_base.get().subtag(this->m_tag) == device.tag();
}
@@ -560,7 +555,7 @@ private:
/// \return True if supplied mixin matches the configured target
/// tag, or false otherwise.
template <typename T>
- std::enable_if_t<is_device_interface<T>::value, bool> is_expected_tag(T const &interface) const
+ std::enable_if_t<emu::detail::is_device_interface<T>::value, bool> is_expected_tag(T const &interface) const
{
return this->m_base.get().subtag(this->m_tag) == interface.device().tag();
}
diff --git a/src/emu/device.h b/src/emu/device.h
index 3dbaa5f4e37..cc8b5209945 100644
--- a/src/emu/device.h
+++ b/src/emu/device.h
@@ -75,6 +75,17 @@ namespace emu { namespace detail {
class device_type_impl_base;
+template <typename T> struct is_device_implementation
+{
+ static constexpr bool value = std::is_base_of<device_t, T>::value;
+};
+
+template <typename T> struct is_device_interface
+{
+ static constexpr bool value = std::is_base_of<device_interface, T>::value && !is_device_implementation<T>::value;
+};
+
+
struct device_feature
{
enum type : u32
@@ -203,6 +214,8 @@ private:
device_type_impl_base *m_next;
public:
+ using exposed_type = device_t;
+
device_type_impl_base(std::nullptr_t)
: m_creator(nullptr)
, m_type(typeid(std::nullptr_t))
@@ -252,6 +265,10 @@ public:
{
return m_creator(*this, mconfig, tag, owner, clock);
}
+ std::unique_ptr<device_t> create(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) const
+ {
+ return m_creator(*this, mconfig, tag, owner, clock);
+ }
explicit operator bool() const { return bool(m_creator); }
bool operator==(device_type_impl_base const &that) const { return &that == this; }
@@ -263,9 +280,20 @@ template <class DeviceClass>
class device_type_impl : public device_type_impl_base
{
public:
+ using exposed_type = DeviceClass;
+
using device_type_impl_base::device_type_impl_base;
- template <typename... Params> DeviceClass &operator()(machine_config &config, char const *tag, Params &&... args) const;
- template <typename Exposed, bool Required, typename... Params> DeviceClass &operator()(machine_config &config, device_finder<Exposed, Required> &finder, Params &&... args) const;
+ using device_type_impl_base::create;
+ using device_type_impl_base::operator();
+
+ template <typename... Params>
+ std::unique_ptr<DeviceClass> create(machine_config &mconfig, char const *tag, device_t *owner, Params &&... args) const
+ {
+ return make_unique_clear<DeviceClass>(mconfig, tag, owner, std::forward<Params>(args)...);
+ }
+
+ template <typename... Params> DeviceClass &operator()(machine_config &mconfig, char const *tag, Params &&... args) const;
+ template <typename Exposed, bool Required, typename... Params> DeviceClass &operator()(machine_config &mconfig, device_finder<Exposed, Required> &finder, Params &&... args) const;
};
diff --git a/src/emu/device.ipp b/src/emu/device.ipp
index 848223dd0c7..4fa6b2fe1ec 100644
--- a/src/emu/device.ipp
+++ b/src/emu/device.ipp
@@ -31,17 +31,17 @@ typedef device_delegate<void (u32)> clock_update_delegate;
namespace emu { namespace detail {
template <class DeviceClass> template <typename... Params>
-DeviceClass &device_type_impl<DeviceClass>::operator()(machine_config &config, char const *tag, Params &&... args) const
+inline DeviceClass &device_type_impl<DeviceClass>::operator()(machine_config &mconfig, char const *tag, Params &&... args) const
{
- return dynamic_cast<DeviceClass &>(*config.device_add(tag, *this, std::forward<Params>(args)...));
+ return dynamic_cast<DeviceClass &>(*mconfig.device_add(tag, *this, std::forward<Params>(args)...));
}
template <class DeviceClass> template <typename Exposed, bool Required, typename... Params>
-DeviceClass &device_type_impl<DeviceClass>::operator()(machine_config &config, device_finder<Exposed, Required> &finder, Params &&... args) const
+inline DeviceClass &device_type_impl<DeviceClass>::operator()(machine_config &mconfig, device_finder<Exposed, Required> &finder, Params &&... args) const
{
std::pair<device_t &, char const *> const target(finder.finder_target());
- assert(&config.current_device() == &target.first);
- DeviceClass &result(dynamic_cast<DeviceClass &>(*config.device_add(target.second, *this, std::forward<Params>(args)...)));
+ assert(&mconfig.current_device() == &target.first);
+ DeviceClass &result(dynamic_cast<DeviceClass &>(*mconfig.device_add(target.second, *this, std::forward<Params>(args)...)));
return finder = result;
}
diff --git a/src/emu/dislot.cpp b/src/emu/dislot.cpp
index e89fd8b77bd..37acf1dfddd 100644
--- a/src/emu/dislot.cpp
+++ b/src/emu/dislot.cpp
@@ -15,8 +15,8 @@
// ctor
// -------------------------------------------------
-device_slot_interface::device_slot_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device, "slot"),
+device_slot_interface::device_slot_interface(const machine_config &mconfig, device_t &device) :
+ device_interface(device, "slot"),
m_default_option(nullptr),
m_fixed(false),
m_card_device(nullptr)
@@ -37,10 +37,10 @@ device_slot_interface::~device_slot_interface()
// device_slot_option ctor
// -------------------------------------------------
-device_slot_option::device_slot_option(const char *name, const device_type &devtype):
+device_slot_interface::slot_option::slot_option(const char *name, const device_type &devtype, bool selectable) :
m_name(name),
m_devtype(devtype),
- m_selectable(true),
+ m_selectable(selectable),
m_default_bios(nullptr),
m_machine_config(nullptr),
m_input_device_defaults(nullptr),
@@ -53,14 +53,33 @@ device_slot_option::device_slot_option(const char *name, const device_type &devt
// option_add
// -------------------------------------------------
-void device_slot_interface::option_add(const char *name, const device_type &devtype)
+device_slot_interface::slot_option &device_slot_interface::option_add(const char *name, const device_type &devtype)
{
- device_slot_option *slot_option = option(name);
+ const slot_option *const existing = option(name);
+ if (existing)
+ throw emu_fatalerror("slot '%s' duplicate option '%s'\n", device().tag(), name);
+
+ if (m_options.count(name))
+ throw tag_add_exception(name);
+
+ return *m_options.emplace(name, std::make_unique<slot_option>(name, devtype, true)).first->second;
+}
+
+
+// -------------------------------------------------
+// option_add_internal
+// -------------------------------------------------
- if (slot_option != nullptr)
+device_slot_interface::slot_option &device_slot_interface::option_add_internal(const char *name, const device_type &devtype)
+{
+ const slot_option *const existing = option(name);
+ if (existing)
throw emu_fatalerror("slot '%s' duplicate option '%s'\n", device().tag(), name);
- if (m_options.count(name) != 0) throw tag_add_exception(name);
- m_options.emplace(std::make_pair(name, std::make_unique<device_slot_option>(name, devtype)));
+
+ if (m_options.count(name))
+ throw tag_add_exception(name);
+
+ return *m_options.emplace(name, std::make_unique<slot_option>(name, devtype, false)).first->second;
}
@@ -68,14 +87,13 @@ void device_slot_interface::option_add(const char *name, const device_type &devt
// option
// -------------------------------------------------
-device_slot_option *device_slot_interface::config_option(const char *name)
+device_slot_interface::slot_option *device_slot_interface::config_option(const char *name)
{
- device_slot_option *slot_option = option(name);
-
- if (slot_option == nullptr)
- throw emu_fatalerror("slot '%s' has no option '%s'\n", device().tag(), name);
+ auto const search = m_options.find(name);
+ if (search != m_options.end())
+ return search->second.get();
- return slot_option;
+ throw emu_fatalerror("slot '%s' has no option '%s'\n", device().tag(), name);
}
@@ -99,16 +117,15 @@ bool device_slot_interface::has_selectable_options() const
// option
// -------------------------------------------------
-device_slot_option *device_slot_interface::option(const char *name) const
+const device_slot_interface::slot_option *device_slot_interface::option(const char *name) const
{
- device_slot_option *result = nullptr;
if (name)
{
- auto search = m_options.find(name);
+ auto const search = m_options.find(name);
if (search != m_options.end())
- result = search->second.get();
+ return search->second.get();
}
- return result;
+ return nullptr;
}
diff --git a/src/emu/dislot.h b/src/emu/dislot.h
index f8f1d5a8a70..be10da760cd 100644
--- a/src/emu/dislot.h
+++ b/src/emu/dislot.h
@@ -13,17 +13,7 @@
//